082、视频 ISP 的实时性挑战:30和60FPS 下的 ISP Pipe 耗时预算与并行化策略
082、视频 ISP 的实时性挑战:30和60FPS 下的 ISP Pipe 耗时预算与并行化策略
一、一个让我熬夜三天的Bug
去年做某款旗舰机的前置摄像头调试,客户要求60FPS视频预览下开启HDR+美颜+超级夜景。我天真地以为ISP Pipeline跑满就行,结果一上板子,预览画面卡成PPT,帧率直接掉到22FPS。更诡异的是,log里ISP处理时间明明只有14ms,但整体帧间隔却达到了45ms。
后来用DS-5 Trace一抓,发现罪魁祸首是CPU侧的3A统计回读——ISP硬件处理完一帧,CPU要等DMA传输完统计数据才能开始下一帧的AE/AWB计算。这个同步等待,硬生生把流水线变成了串行。那三天我盯着示波器看VSYNC波形,差点把眼睛看瞎。
这个教训让我意识到:视频ISP的实时性,从来不是单个模块跑多快的问题,而是整个Pipeline的“木桶效应”——最慢的那块板子,决定了帧率的底线。
2. 30FPS vs 60FPS:两个完全不同的战场
先算一笔账。30FPS下,每帧可用时间是33.3ms;60FPS下,只有16.7ms。但别以为把处理时间砍半就行——实际工程中,60FPS的挑战远不止于此。
30FPS的舒适区:大部分ISP硬件(比如高通Spectra、联发科Imagiq)的Bayer处理、去马赛克、降噪等模块,单帧处理时间在8-12ms。加上3A计算、统计回读、CPU
