高通平台ISP模块触发方式和条件

更新记录:
        V1 2020.10.15 记录高通平台ISP模块触发方式和条件初稿
关键字:
        高通,Qualcomm,ISP trigger,触发方式等
本文内容:
        1.描述
        2.触发逻辑分解
        3.获取照片AEC信息
        4.实际的gain_start 和gain_end如何设置?
        5.小结
描述:
        ISP的不同的模块,其目的都不同,导致其触发方式也会根据其自身设计而调整,因此需要知晓不同的模块其触发逻辑是什么,这个逻辑是在哪里查找的,是否可以尝试去更改,
触发逻辑分解:
        具体各个模组的详细的调用:可以看camx目录下:src/hwl/ispiqmodule/camxiqinterface.cpp中的IQInterface::UpdateAECGain函数中有区分:
详细代码如下:

VOID IQInterface::UpdateAECGain(
ISPIQModuleType mType,
ISPInputData* pInputData,
FLOAT gtmPercentage)
{
FLOAT gain = pInputData->triggerData.AECShortGain;
FLOAT drc_gain = pInputData->triggerData.DRCGain;

// Gain before GTM module is triggered by short gain
pInputData->triggerData.AECGain = gain;

if (mType == ISPIQModuleType::IFEGTM ||
mType == ISPIQModuleType::IFEGamma ||
mType == ISPIQModuleType::IFECST ||
mType == ISPIQModuleType::BPSGTM ||
mType == ISPIQModuleType::BPSGamma ||
mType == ISPIQModuleType::BPSCST ||
mType == ISPIQModuleType::BPSHNR ||
mType == ISPIQModuleType::IPECAC ||
mType == ISPIQModuleType::IPEICA ||
mType == ISPIQModuleType::IPEANR ||
mType == ISPIQModuleType::IPETF ||
mType == ISPIQModuleType::IPECST ||
mType == ISPIQModuleType::IPELTM ||
mType == ISPIQModuleType::IPEHNR ||
mType == ISPIQModuleType::IPELENR)
{
// Gain betweem GTM & LTM ( includes ) will be triggered by shortGain*power(DRCGain,gtm_perc)
pInputData->triggerData.AECGain = gain * static_cast<FLOAT>(CamX::Utils::Power(drc_gain, gtmPercentage));
}

if (mType == ISPIQModuleType::IPEColorCorrection ||
mType == ISPIQModuleType::IPEGamma ||
mType == ISPIQModuleType::IPE2DLUT ||
mType == ISPIQModuleType::IPEChromaEnhancement ||
mType == ISPIQModuleType::IPEChromaSuppression ||
mType == ISPIQModuleType::IPESCE ||
mType == ISPIQModuleType::IPEASF ||
mType == ISPIQModuleType::IPEUpscaler ||
mType == ISPIQModuleType::IPEGrainAdder)
{
// Gain post LTM will be triggered by shortGain*DRCGain
pInputData->triggerData.AECGain = gain * drc_gain;
}
}

分三种方式:
        一、在GTM模块之前的模块,其AECGain的触发方式是short gain
              pInputData->triggerData.AECGain = gain;
        二、在GTM和LTM(包含)之间的模块,其AECGain的触发方式是:shortGain*power(DRCGain,gtm_perc)
              pInputData->triggerData.AECGain = gain * static_cast<FLOAT>(CamX::Utils::Power(drc_gain, gtmPercentage));
        三、在LTM之后的模块,其AECGain的触发方式:shortGain*DRCGain
              pInputData->triggerData.AECGain = gain * drc_gain;
        各个模块调试的trigger data中gain_start 和gain_end就是AECGain结果,可不是单一short gain啊;
模块
AEC gain trigger
Black level、Linearization、LSC、PDPC、ABF、GIC、Demosaic
shortgain
GTM、Gamma、CST、HNR、CAC、ICA、ANR、TF、HNR、LENR、LTM
shortGain*power(DRCGain,gtm_perc)
ColorCorrection、2DLUT、ChromaEnhancement、ChromaSuppression、SCE、ASF、Upscaler、GrainAdder
shortGain*DRCGain
        大致分别如上,有些模块在不同的ISP阶段都有,要稍微注意下区分,比如gamma
暂无优惠 永久钻石免费

已有5人支付

小结:
1.一定要知道各个模块的AECGain是如何计算的,不同的模块其触发逻辑是不同的
2.设置AEC Gain trigger要按照校准的方式来设置分段region

提供最优质的资源集合

立即查看 了解详情