2.7 KiB
2.7 KiB
Phase 6 状态
状态:CODE COMPLETE / EMULATOR BENCHMARKED / DEVICE BENCHMARK PENDING。
Phase 6 交付范围是可重复的 Playback Lab 性能时间线、资源采样、NAPI 诊断、四项低风险优化和模拟器回归。没有修改 GPU mapper,也没有修改 Velix-FFmpeg-Harmony。
已完成
- 启动、seek、buffering、音频、渲染、NAPI 和资源指标已接入稳定快照;未能可靠取得的 PSS、精确 heap、归一化 CPU 均明确返回
null或文档标记为 unavailable。 benchmark/runner/run_emulator.py支持 startup、seek、load/stop stress、play/pause stress,输出重复统计(min/max/avg/median/P90/P95)和逐次资源采样。- 渲染循环改为 mpv update callback 驱动,并保留 250ms 安全探测;快照同步增加 100ms 合并窗口;session id 读取改为 atomic;诊断轮询从 250ms 调整为 500ms。
- default、software、FFmpeg-Harmony 三套 AArch64 libmpv 均通过符号和 OHOS ELF 校验;Playback Lab HAP 编译、安装和模拟器启动通过。
模拟器结果
测试设备:127.0.0.1:5555,本地 H.264/AAC MP4,软件解码,ao_harmony。
| 场景 | 结果文件 | 关键结果 |
|---|---|---|
| startup_local ×20 | benchmark/results/startup_local-1787999362.json |
首帧 P50 506ms,P95 1150ms;20/20 暴露时间线,无错误 |
| seek_local ×50 | benchmark/results/seek_local-1787999663.json |
恢复 P50 277ms,P95 631ms;49/50 有恢复时间线,1 次 SEEK 命令错误 |
| play_pause ×200 | benchmark/results/play_pause-1788000475.json |
无错误;末次 RSS 213228KB、线程 39、fd 1 |
| load/stop ×100 | benchmark/results/stress_lifecycle-1788000229.json |
进程保持存活;RSS/线程/fd 采样完成,PSS 不可用 |
优化前后计数基线:同等 5 次 startup 中,渲染 update 累计由 617 降至最终版本 364;NAPI/核心同步计数通过面板快照记录。200 次 play/pause 无错误,末次 coreSyncSkipped=239,说明合并窗口实际生效。
最终 5 次 smoke 还观察到 firstAudioCallbackMs P50 256ms、audioRendererStartMs P50 720ms;这些值来自 500ms 诊断轮询,不能替代设备音频 trace。file:// 场景的 networkWaitMs 保持 -1,buffering 计数按真实状态边沿记录。
尚待实体设备
实体设备上的真实 PSS/heap、CPU 利用率、显示合成延迟、音频路由/A-V 偏差、OHCodec capability、长时间(2h)稳定性、HTTPS/HLS/鉴权/网络字幕仍未验证。Phase 7 建议先建立实体设备矩阵和受控 HTTPS/HLS fixture,再评估硬解直出和端到端 A/V 指标。
许可边界沿用 MPV LGPL/ISC;本阶段未引入新的第三方依赖或商业资源。