相机中这有自动打闪的小图标,设置为自动打闪后,比较亮的环境下也会打开闪光灯,
这时需要修改闪光灯的阀值.
相关的代码
vendor/mediatek/proprietary/hardware/mtkcam/legacy/platform/mt6735/core/featureio/pipe/aaa/ae_mgr/ae_mgr.cpp
MBOOL AeMgr::IsStrobeBVTrigger()
{
MBOOL bStrobeBVTrigger;
MINT32 i4Bv = 0;
strAETable strCurrentPreviewTable;
strAETable strCurrentCaptureTable;
strAETable strCurrentStrobeTable;
strAFPlineInfo strobeAEPlineInfo;
memset(&strCurrentCaptureTable, 0, sizeof(strAETable));
getCurrentPlineTable(strCurrentPreviewTable, strCurrentCaptureTable, strCurrentStrobeTable, strobeAEPlineInfo);
if(m_rAEInitInput.rAEPARAM.strAEParasetting.bEV0TriggerStrobe == MTRUE) { // The strobe trigger by the EV 0 index
i4Bv = m_BVvalueWOStrobe;
} else {
if(m_rAEInitInput.rAEPARAM.pEVValueArray[m_eAEEVcomp]) {
if(m_pIAeAlgo != NULL) {
i4Bv = m_BVvalueWOStrobe - m_pIAeAlgo->getSenstivityDeltaIndex(1024 *1024/ m_rAEInitInput.rAEPARAM.pEVValueArray[m_eAEEVcomp]);
} else {
i4Bv = m_BVvalueWOStrobe;
MY_LOG("[%s()] The AE algo class is NULL i4SensorDev = %d line:%d", __FUNCTION__, m_eSensorDev, __LINE__);
}
}
}
bStrobeBVTrigger = (i4Bv < strCurrentCaptureTable.i4StrobeTrigerBV)?MTRUE:MFALSE;
MY_LOG("[%s()] i4SensorDev:%d bStrobeBVTrigger:%d BV:%d %d\n", __FUNCTION__, m_eSensorDev, bStrobeBVTrigger, i4Bv, strCurrentCaptureTable.i4StrobeTrigerBV);
return bStrobeBVTrigger;
}
这时我们只需adb logcat |grep bStrobeBVTrigger打印出相应的参数,找到合适的阀值,填写到camera_AE_PLineTable_xxxxxxx.h中即可
root@www$ adb logcat |grep bStrobeBVTrigger
01-03 21:25:52.422 460 3320 D ae_mgr : [IsStrobeBVTrigger()] i4SensorDev:1 bStrobeBVTrigger:1 BV:-18 20
01-03 21:25:58.038 460 3320 D ae_mgr : [IsStrobeBVTrigger()] i4SensorDev:1 bStrobeBVTrigger:1 BV:-50 20
01-03 21:26:01.610 460 3320 D ae_mgr : [IsStrobeBVTrigger()] i4SensorDev:1 bStrobeBVTrigger:1 BV:-8 20
对于拍照使用的闪光灯的阀值对于的数组为
static strAETable g_AE_CaptureAutoTable =
{
...
-45, //u4StrobeTrigerBV
...
};
该文件用到u4StrobeTrigerBV的地方也一并修改.