0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-18 07:09:16 +00:00

fix(osd): 屏显诊断重缓冲计数按引擎正确分派,IJK 不再恒为 0

PlayerOsdController.getDiagnostics() 的分派条件写成了「是否 MPV」:
  int rebufferCount = player.isMpv() ? player.getRebufferCount() : snapshot.rebufferCount();
而真实前提是「有没有 Exo analytics 快照」(即是否 Exo)。非 Exo 时 snapshot 为
Snapshot.empty(),于是 IJK 落到快照分支,重缓冲次数与总时长恒为 0。

PlayerManager.getRebufferCount()/getRebufferTotalMs() 本身是引擎无关的
(PlaybackBufferingTracker + MPV disc 计数),非 Exo 早有可用取数器,只是 IJK 没走到。
改为按 isExo() 分派:Exo 行为不变,IJK/MPV 读引擎无关追踪器。这是排查工具读数错误而非
播放缺陷——本系列排查「转圈」时曾据该读数给出无效建议,修掉后诊断面板对三种内核都可信。

Verification: :app:compileMobileArm64_v8aDebugJavaWithJavac 成功;:app:testMobileArm64_v8aDebugUnitTest
定向跑 PlayerDisplaySettingSyncTest 7/7(含新增 playerOsdDiagnosticsReadRebufferCountPerEngine)、
VideoActivityLayoutTest 154/154、TmdbDetailActivityLayoutTest 130/130 全绿。新断言对 base 源码必然
变红(base 表达式含 player.isMpv() 而不含 player.isExo())。过程中自查 git diff 发现并修回了新增
用例时误将签名与首行拼接成一行的问题。

Task-Guard: OSD-REBUFFER-ENGINE-BRANCH-20261009

Verification: compileMobileArm64_v8aDebugJavaWithJavac OK; PlayerDisplaySettingSyncTest 7/7 (incl. new playerOsdDiagnosticsReadRebufferCountPerEngine), VideoActivityLayoutTest 154/154, TmdbDetailActivityLayoutTest 130/130 all green; new assertion provably red at base (expression used player.isMpv()); accidental joined-line regression found via diff review and repaired before verification

Task-Guard: OSD-REBUFFER-ENGINE-BRANCH-20261009
This commit is contained in:
Silent1566 2026-10-09 18:11:09 +08:00
commit f2ccce36c9
3 changed files with 86 additions and 3 deletions