1.ae custom 大概flow为:
整体分为3部分,3A managers 即 3a mgr(ae_mgr、awb_mgr、af_mgr、flash_mgr、flicker_mgr),ae客制化主要是通过ae_mgr获取参数,从而往下传递到algo、aao、pso、tsf中。
所以ae custom经过迭代优化,这边将他简单的分成如下几个
CPP:ae_mgr.cpp、aaobufmgr.cpp、psobufmgr.cpp、tsfdft.cpp、ae_tuning_cutom.cpp、
新增的参数文件、isp_tuning_custom.cpp
各cpp调用方法:
整套flow都是在init的时候完成参数的查找,所以ae_mgr.cpp:
Aeinit->setCamScenarioMode->OplusSetAEParams->isAEEnableda->getAESesorParamData
在ae_mgr中通过aeinit,往algo里传递m_rAEInitInput.eSensorDev,然后通过当前传来的ScenarioMode(preview、video、capture、custom1、custom2、custom3、custom4),去找ae_tuning_custom.cpp中的getAESesorParamData、isAEEnableda方法,完成参数调用和校验。
-------------------------------------------------------------------------------------------------------
aaobufmgr.cpp、psobufmgr.cpp、tsfdft.cpp:
通过init,获取通过ae_mgr得到的参数信息,从而完成静态信息的存储等。
-------------------------------------------------------------------------------------------------------
ae_tuning_custom.cpp:
isAEEnableda->getAESesorParamData->getAEParamData
isAEEnableda用来校验参数是否调用成功,校验参数是否调用成功需要核查2项:
1.OplusSetAEParams:AE_LOG( "[%s()] Main sensorDevID: 0x%04x m_bEnableAE:%d\n", __FUNCTION__, sInfo.sensorDevID, m_bEnableAE);
2.isAEEnableda:ALOGD("[%s] No SensorID Mapping parameters uSensorDevID:0x%04x, eSensorDev:%d\n", __FUNCTION__, uSensorDevID, eSensorDev);
这两个是否能打印出来决定是否调用成功。
getAESesorParamDatas通过这个方法来调用对应ScenarioMode的aeParamsData
getAEParamData,通过这个调用参数中的ae参数
-------------------------------------------------------------------------------------------------------
isp_tuning_custom.cpp:
ratioMapping,客制化对应的ratio,可用来调整shading。
-------------------------------------------------------------------------------------------------------
tuning_params.cpp:
isAEEnabled->getAEParamData->getAEParam
isAEEnabled用来校验参数是否调用成功,成功返回ture,否则就false,
getAEParamData->getAEParm获取参数,可通过DP查看参数是否生效。
以上就是整个ae custom flow,主要来讲ae cutom将ae_mgr和参数建立一个清晰的通道,所以之后完全可以把针对sensor的客制化按照此方法客制化出去,类似于高通extension.xml