148、多摄同步与带宽:帧同步/曝光同步与MIPI带宽优化
一、一个让我熬夜三天的同步问题
2019年,我在某旗舰手机项目上遇到了一个至今难忘的bug。三颗后摄——主摄、广角、长焦——在视频模式下做变焦切换,画面总会有一帧的“撕裂感”。不是卡顿,是那种画面中间有一条明显的分界线,上半部分还是广角的画面,下半部分已经切到了主摄。测试妹子说“像鬼片”,产品经理说“用户会摔手机”。
我当时第一反应是“帧同步没做好”。但查了所有寄存器,三颗sensor的VSYNC都对齐了,帧率都是30fps,理论上应该完美同步。后来用示波器抓MIPI的CSI时钟,才发现问题出在带宽争抢上——主摄的RAW数据量太大,占用了MIPI DPHY的绝大部分带宽,导致广角和长焦的数据在传输过程中被“挤”到了下一个帧周期。这不是帧同步的问题,是带宽同步的问题。
从那以后,我养成了一个习惯:多摄系统的第一件事不是调图像质量,而是画一张“带宽分配表”。
二、帧同步与曝光同步:两个容易混淆的概念
很多工程师把帧同步和曝光同步混为一谈,这是调试中最大的坑。
帧同步指的是多个sensor的VSYNC信号对齐,确保每一帧的开始和结束时间一致。这是多摄融合、多摄拼接的基础。如果帧不同步,你拿到的两帧画面在时间上就有偏移,做运动物体的融合时就会出现鬼影。
曝光同步则更精细——它要求多个sensor的曝光起始时间和曝光时长完全一致。这在高动态场景下至关重要。比如