基础架构
所有代码来源于aealgo.c/.h,通过接口得知,他不仅有init/run/ctrl/exit,还覆盖了路线表、WDR、统计配置、平滑、Iris/DCIris、RawReplay、AEB、仿真、人脸联动等能力.
主流程框架
顺序是 参数更新检查 → 统计采集 → 防闪烁检测 → 条件早退/平滑输出 → 跑核心算法 → 下发曝光 → 写回结果。
其中,核心决策代码为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| void AE_RunAlgo(CVI_U8 sID) { #if CHECK_AE_SIM AE_HLprintf("RUN____AE\n"); #endif sID = AE_CheckSensorID(sID);
if (AeInfo[sID].stStitchAttr.enable && !AeInfo[sID].stStitchAttr.bMainPipe && pstAeExposureAttrInfo[sID]->enOpType != OP_TYPE_MANUAL) { CVI_U8 mainID = AE_SENSOR_NUM, i;
for (i = 0; i < AE_SENSOR_NUM; i++) { if (AeInfo[i].stStitchAttr.bMainPipe && AeInfo[i].stStitchAttr.u8Group == AeInfo[sID].stStitchAttr.u8Group) { mainID = i; break; } }
if (mainID != AE_SENSOR_NUM) { memcpy(AeInfo[sID].stExp, AeInfo[mainID].stExp, sizeof(AE_EXPOSURE) * AE_MAX_WDR_FRAME_NUM); AE_UpdateFps(sID, AeInfo[sID].stExp[AE_LE].u32ExpTime); return; } } AE_CalculateFrameLuma(sID); AE_AdjustTargetY(sID); AE_CalculateBvStep(sID); AE_CalFaceDetectLuma(sID); AE_CalFaceDetectBvStep(sID); AE_CalculateSmoothBvStep(sID); AE_CalCurrentLvX100(sID); if (AE_IsDCIris(sID)) { AE_RunDCIris(sID, pstAeExposureAttrInfo[sID]->enOpType); }
if (pstAeExposureAttrInfo[sID]->enOpType != OP_TYPE_MANUAL) { if (!AE_IsUseDcIris(sID)) { AE_CalculateConverge(sID); AE_ConfigExposureRoute(sID); if (AeInfo[sID].bEnableSmoothAE && !AeInfo[sID].bMeterEveryFrame) AE_ConfigSmoothExposure(sID); AE_ConfigExposure(sID); } } AE_UpdateFps(sID, AeInfo[sID].stExp[AE_LE].u32ExpTime); }
|
可落地能力
统计输入能力:读取 AE zone RGB 与直方图,计算中心亮度、全局亮度、亮四分位亮度,支持 LE/SE 双帧统计
目标亮度与误差控制:基于补偿、LV分段、WDR目标区间动态计算 target range,并将亮度误差转 BV step
收敛策略能力:支持快收敛/常规收敛、黑白延迟帧、高ISO策略、稳定判定、过冲细调,属于完整的工程化收敛器,不是单一 PID
曝光路由能力:支持 Route 与 RouteEx 两种模式(时间+总增益 / 时间+AG+DG+ISPDG),并在运行时做限幅、去重、慢快门插点
平滑曝光能力:支持 meter 周期内插值的平滑 APEX 序列,非 meter 帧也可取平滑点输出,降低闪烁感
WDR能力:支持 LE/SE 双通道主从曝光、曝光比上下限、SE时间约束、同增益/分增益模式,且结果回填 ExpRatio
防闪烁能力:有独立 flicker 检测模块,按 25/30fps 和特定快门档位做垂直亮度序列判定
Face/Smart AE能力:支持人脸区域权重融合与 SmartExposure 限制(最小/最大曝光系数、间隔等)
Iris/DCIris能力:支持 Iris 与 DC Iris 参数更新、PWM 初始化与 PID 控制(位置/增量/积分模式),并可自动启停
手动曝光能力:支持 OP_TYPE_MANUAL,手动时间/增益控制仍走全套限幅与配置流程
AEB能力:支持 Bracketing 启动、按 EV 设置、按索引设置与结束恢复
RawReplay/仿真能力:有 RAW replay、AE 仿真模式入口与日志机制,便于离线调试与回放
硬件落地细节
真正下发 sensor again/dgain table 映射、积分时间更新、增益更新、WDR比值约束、sensor真实值回填、ISPDGain补偿、调试保护流程
结果输出包含 ISO、Luma、HistError、稳定标志、WDR短帧信息、路由回传、DCF字段。
实现边界及注意点
flicker 检测对帧率和快门档位有硬条件,非 25/30 或非指定档位会直接不判定
aeCtrl 目前几乎无实质控制分支,扩展命令能力偏弱
能力虽全,但高度依赖 sensor 回调质量(fps_set/inttime_update/gains_update/calc_table)。