
一 背景回顾上篇立了 flag19.5fps 到 30fps 靠流水线优化。这篇填坑——profiling 做完发现模型相关预处理推理后处理一共只跑 8.71ms真正的瓶颈根本不在推理二 Profiling 过程插桩打印这些阶段耗时如下阶段耗时(ms)占比视频解码13.8530%颜色空间转换(NV12-RGB)4.239%手掌模型预处理1.483%手掌检测推理0.712%手掌检测后处理0.041%关键点模型预处理3.457%关键点检测1.172%关键点后处理1.94%显示提交18.6441%这彻底颠覆我之前的想象模型相关预处理推理后处理一共 8.71ms占不到 20%时间主要花费在显示提交和视频解码部分。三 显示提交-同步等待改异步屏幕设置是 2K/60Hz显示提交时间花费原因是为快速实现上屏验证我用单 buffer提交同步等待60Hz 的 vsync 大概 16.67ms同步提交需要等显示控制器扫描 buffer 到下一个 vsync 到来才返回。改用显示双缓冲 buffer异步提交等待现在满足 30fps 要求。四 优化前后对照显示双缓冲 buffer异步提交等待机制把时间从 18.64 降到 4.15ms同时在画面上叠加了各阶段耗时和帧率的 OSD 信息下面是抓取第 100 帧和 230 帧的结果图1第100帧解码视频dump图2第230帧解码视频dump可以看到帧率稳定在 30fps同时解码时间dec仍比较大下一步继续优化。五 总结和后续显示双缓冲 buffer异步提交等待解决了显示时间长的问题对视频解码耗时分解后发现解码那 13.85ms 里我们又发现了新东西——真解码只占零头大头花在了一个意想不到的地方下期细讲目标 60fps