150、实时性与延迟优化:从Sensor到Display的端到端延迟控制

150、实时性与延迟优化:从Sensor到Display的端到端延迟控制
150、实时性与延迟优化:从Sensor到Display的端到端延迟控制一、一个让我失眠三天的延迟问题去年做一款高端旗舰机的影像系统,客户反馈了一个极其诡异的问题:在暗光环境下开启夜景模式,按下快门后,取景画面会“卡”住大约200ms,然后才恢复正常。测试团队一开始以为是算法处理太慢,但仔细排查后发现,算法实际只用了80ms,问题出在别的地方。我带着示波器蹲在实验室,从Sensor的VSYNC信号开始,一路追到Display的刷新。最终发现,罪魁祸首是ISP pipeline里一个不起眼的buffer管理策略——我们用了double buffering,但没处理好frame skip的边界条件。当Sensor帧率(30fps)和Display刷新率(60fps)不是整数倍关系时,偶尔会出现一个frame被“吞掉”的情况。这个案例让我意识到,端到端延迟优化,从来不是某个模块的独角戏,而是整个链条的协同作战。二、延迟的“五段式”解剖2.1 Sensor端:曝光与读出的博弈Sensor的延迟主要来自两部分:曝光时间和读出时间。曝光时间由场景亮度决定,这是物理限制。但读出时间是可以优化的。传统CMOS Sensor采用逐行读出,一帧数据全部读出需要的时间大约是帧周期的80%-90%。这里有个常见的坑——很多人以为Sensor的帧率就是1/帧周期,但实际上,如果曝光时间过长,会侵占读出时间,导致帧率