1.8 KiB
1.8 KiB
Phase 6 性能改动与证据
已采用
- 事件驱动渲染更新:
render.cpp不再每 16ms 无条件调用mpv_render_context_update,只在 mpv callback/窗口事件唤醒时更新;为避免个别会话漏回调,最多每 250ms 做一次安全探测。5 次 startup 的 update 累计从优化前 617 降到最终实现 364,且 20 次 startup 未复现永久 BUFFERING。 - 核心快照合并:
PlaybackEngine对 100ms 内的重复get_snapshot/get_tracks/get_media_info/get_network_info做合并,动作仍立即提交到 MPV,状态最多延迟一个合并窗口。200 次 play/pause 末次面板显示coreSyncSkipped=239;无 error,状态为 PAUSED。 - NAPI 诊断轮询降频:Playback Lab 面板由 250ms 调整为 500ms;播放控制、音频 callback 和渲染线程不依赖该轮询。这样减少纯 UI 诊断序列化,不改变 MPV 时钟。旧/新间隔在
Index.ets可审计,运行中由getStateCalls、serializeUsTotal记录。 - session id 原子读取:渲染线程不再为每次唤醒获取
PlaybackEngine快照互斥锁,session 更新仍由核心快照写入 release/acquire atomic;首帧 session 隔离 smoke 和 stress 均通过。
未采用
- 不做主动丢帧、降低音频采样率或缩小视频分辨率;这些会改变播放质量。
- 不做 GPU mapper、OHCodec 直出或 FFmpeg-Harmony 源码改动;实体设备 capability 和 fence 证据不足。
- 不把 PSS、heap、CPU permille、2 小时长跑结果伪装成已测数据。
回归与开销
默认构建、软件构建和 FFmpeg-Harmony 构建均通过。默认 HAP 在模拟器上完成 startup/seek/audio 状态面板、load/stop 100 次和 play/pause 100 次。release/profile 构建未启用持续 tracing;诊断仅累加轻量计数和受控序列化时间。