017、海思Hi3516/Hi3559 ISP架构与MPP平台:VI/VPSS/VENC全链路调优实战 017、海思Hi3516/Hi3559 ISP架构与MPP平台VI/VPSS/VENC全链路调优实战昨晚凌晨两点一个做智能相机的客户发来一段视频画面里所有红色灯箱全部过曝成白色绿色植被糊成一片。他用的就是Hi3516DV300说ISP参数都是按SDK默认来的问我是不是传感器驱动没写好。我让他把VI通道的抓图发过来一看——RAW图正常RGB图偏色YUV图过曝。问题根本不在sensor是VI到VPSS这条链路上ISP的AE统计窗口和WDR模式没对齐。海思的ISP不像高通Spectra那样把3A算法黑盒封装它把AE/AWB/AF的统计信息全部暴露在VI模块的ISP寄存器里你可以直接读也可以让ISP硬件自动跑。但这里有个大坑Hi3516的ISP默认是10bit RAW输入如果你用12bit的sensor不修改ISP的bit宽度配置高光部分直接截断暗部细节全丢。别问我怎么知道的产线上三十台机器全部偏色最后定位到是sensor输出格式配成了RAW12而VI的ISP_CFG_INPUT还在用RAW10。VI模块的调优核心不是那些曝光、增益的初始值而是时序。海思的VI支持在线和离线两种模式在线模式sensor数据直接进ISP延迟低但调参空间小离线模式先存DDR再进ISP你可以做多帧合成、降噪但会引入两帧左右的延迟。做车载全景环视必须用在线模式延迟超过40ms驾驶员会晕做安防夜视离线模式能多拉两档增益噪点还少一半。Hi3559A的VI还多了个SDR模式专门给HDR传感器用的但SDR模式下AE统计窗口会缩小到全画面的1/4如果你还用全幅统计去调曝光高动态场景必炸。VPSS是海思平台最容易被低估的模块。很多人把它当简单的scaler用其实VPSS的NR降噪和Sharpen锐化才是画质分水岭。Hi3516的VPSS有三级NR时域NR、空域NR、3DNR。时域NR吃DDR带宽空域NR吃CPU3DNR吃NPU。默认配置下时域NR强度是60如果你跑4K30fpsDDR带宽已经占了40%再开时域NR直接带宽瓶颈帧率掉到25fps。我一般建议1080p以下开时域NR4K只开空域NR3DNR锐化强度控制在128以下超过192画面边缘会出现振铃文字区域尤其明显。VPSS还有一个隐藏功能叫FISHC鱼眼校正Hi3559A上硬件支持Hi3516上只能软件跑。做车载的兄弟注意FISHC必须在VPSS的通道0做通道1和通道2的缩放比例不能超过2倍否则校正后的图像边缘会拉伸变形。这个限制在芯片手册里只提了一句不踩坑根本记不住。VENC编码这块海思的H.264/H.265编码器质量是行业标杆但码率控制策略需要调。默认的CBR模式在画面静止时码率会降到极低一旦画面出现快速运动码率飙升但QP已经拉高画面会瞬间糊掉。我习惯用VBRMAX_BITRATE模式把目标码率设为实际带宽的70%最大码率设为120%这样既能保证平均清晰度又不会在运动场景崩坏。GOP大小也有讲究做直播用I帧间隔2秒做录像用4秒I帧间隔太长播放器拖动进度条时会卡顿。编码器的ROI感兴趣区域功能海思做得比高通细。你可以给每个ROI单独设置QP偏移比如人脸区域QP减6背景QP加4这样码率能省15%还不影响主观质量。但注意ROI区域不能超过画面面积的1/4否则编码器的码率控制会失衡整体画质反而下降。最后说一个所有平台通用的坑sensor的HDR模式和ISP的WDR模式必须匹配。Hi3516的ISP支持2帧和3帧WDR但sensor如果输出的是DOLDigital Overlap模式ISP的WDR配置必须用DOL对应模式否则合成出来的图像会有鬼影。这个匹配关系在sensor驱动里有个单独的字段很多人漏配导致HDR效果还不如普通模式。产线调优的经验我总结三条。第一永远用RAW图做第一步验证RGB和YUV都可能被ISP处理掩盖问题。第二AE的收敛速度调到中等偏慢太快会闪烁太慢会过曝这个参数在VI模块的AE_CTRL里默认值是32我一般调到24。第三VENC的码率控制不要用默认的CBR改成VBR除非你的客户明确要求恒定码率。海思的MPP平台文档写得算详细但很多关键参数藏在sample代码里不翻sample根本找不到。比如VPSS的旋转功能文档里说支持90/180/270度但实际只有通道0支持硬件旋转其他通道要软件转性能差五倍。这种坑只有踩过才知道。做海思平台建议把SDK里的sample_vi、sample_vpss、sample_venc三个例程吃透然后自己写一个全链路的测试程序把每个模块的每个参数都打出来对比不同配置下的效果。这个程序就是你的调试神器比任何文档都管用。