Camx-查看sensor mode 和效果参数
参考文档:80-NK872-13 QUALCOMM SPECTRA CAMERA ISP TUNING GUIDE
sensor 匹配
vendor/qcom/proprietary/chi-cdk/core/chiframework/chxsensorselectmode.cpp
ChiSensorModeInfo* ChxSensorModeSelect::FindBestSensorMode(UINT32 cameraId,const DesiredSensorMode* pDesiredSensorMode)
{pSelectedMode = &pAllModes[pSelectedMode->modeIndex]; //update pSelectedModeCHX_LOG_DEBUG("Selected Usecase: %d,app_out(%d,%d), sensor_out(%d,%d), SelectedMode FPS:%d,"" modeIndex:%d, out_info_array.size:%d",useCase,pDesiredSensorMode->optimalWidth,pDesiredSensorMode->optimalHeight,pSelectedMode->frameDimension.width,pSelectedMode->frameDimension.height,pSelectedMode->frameRate,pSelectedMode->modeIndex,modeCount);
}
效果参数匹配
ps:修改 chxutils.cpp – 编译com.qti.chi.override
FillTuningModeData
\HLOS\vendor\qcom\proprietary\chi-cdk\core\chiutils\chxutils.cpp
效果参数调用的地方,还有别的文件也有这个函数,有时候调用不一样
VOID ChxUtils::FillTuningModeData(ChiMetadata* pMetaData,ChiModeUsecaseSubModeType usecaseMode,UINT32 sensorModeIndex,UINT32* pEffectModeValue,UINT32* pSceneModeValue,UINT32* pFeature1Value,UINT32* pFeature2Value)
{ChiTuningModeParameter chiTuningModeParameter = { 0 };chiTuningModeParameter.noOfSelectionParameter = MaxTuningMode;chiTuningModeParameter.TuningMode[0].mode = ChiModeType::Default;chiTuningModeParameter.TuningMode[0].subMode.value = 0;chiTuningModeParameter.TuningMode[1].mode = ChiModeType::Sensor;chiTuningModeParameter.TuningMode[1].subMode.value = sensorModeIndex;chiTuningModeParameter.TuningMode[2].mode = ChiModeType::Usecase;chiTuningModeParameter.TuningMode[2].subMode.usecase = usecaseMode;chiTuningModeParameter.TuningMode[3].mode = ChiModeType::Feature1;chiTuningModeParameter.TuningMode[3].subMode.feature1 = GetFeature1Mode(pMetaData, pFeature1Value);chiTuningModeParameter.TuningMode[4].mode = ChiModeType::Feature2;chiTuningModeParameter.TuningMode[4].subMode.feature2 = GetFeature2Mode(pFeature2Value);chiTuningModeParameter.TuningMode[5].mode = ChiModeType::Scene;chiTuningModeParameter.TuningMode[5].subMode.scene = GetSceneMode(pMetaData, pSceneModeValue);chiTuningModeParameter.TuningMode[6].mode = ChiModeType::Effect;chiTuningModeParameter.TuningMode[6].subMode.effect = GetEffectMode(pMetaData, pEffectModeValue);ChxUtils::SetVendorTagValue(pMetaData, VendorTag::TuningMode, sizeof(ChiTuningModeParameter), &chiTuningModeParameter);CHX_LOG_VERBOSE("m_cameraId %d SensorMode %d UC %u feature %u %d scene %d effect %d",m_cameraId,sensorModeIndex,chiTuningModeParameter.TuningMode[2].subMode.usecase,chiTuningModeParameter.TuningMode[3].subMode.feature1,chiTuningModeParameter.TuningMode[4].subMode.feature2,chiTuningModeParameter.TuningMode[5].subMode.scene,chiTuningModeParameter.TuningMode[6].subMode.effect);}
}
log:
I CHIUSECASE: [VERBOSE] chxutils.cpp:1916 FillTuningModeData() SensorMode 0 UC 0 feature 0 0 scene 0 effect 0
**关键词2:PopulateGeneralTuningMetadata
这里是dump 效果参数
log:
V CamX : [ VERB][PPROC ] camxopenode.cpp:7353 PopulateGeneralTuningMetadata() TuningMode: ReqID: 12: Default 0, Sensor 0 usecase 0 feature1 0 feature2 0 secne 0 effect 0
vendor/qcom/proprietary/camx/src/hwl/ope/camxopenode.cpp
adb
实际生效
adb root
adb shell setprop persist.vendor.camera.debugdata.enable3A TRUE
adb shell setprop persist.vendor.camera.debugdata.enableTuningMetadata TRUE
开启metadata信息,需要杀进程才能生效
相关定义
vendor/qcom/proprietary/chi-cdk/api/common/chituningmodeparam.h
#ifndef CHITUNINGMODEPARAM_H
#define CHITUNINGMODEPARAM_H#ifdef __cplusplus
extern "C"
{
#endif // __cplusplusstatic const UINT32 MaxTuningMode = 7;enum class ChiModeType
{Default = 0,Sensor = 1,Usecase = 2,Feature1 = 3,Feature2 = 4,Scene = 5,Effect = 6
};enum class ChiModeUsecaseSubModeType
{Preview = 0,Snapshot = 1,Video = 2,ZSL = 3,Liveshot = 4
};enum class ChiModeFeature1SubModeType
{None = 0,ISPHDR = 1,ADRC = 2,InSensorHDR3Exp = 3
};enum class ChiModeFeature2SubModeType
{None = 0,OISCapture = 1,HLG = 2,HDR10 = 3,MFNRBlend = 4,MFNRPostFilter = 5,AIDenoiserMFNRBlend = 6,AIDenoiserMFNRPostFilter = 7,MFSRBlend = 8,MFSRPostFilter = 9,OfflineNoiseReprocess = 10
};enum class ChiModeSceneSubModeType
{None = 0,Landscape = 1,Snow = 2,Beach = 3,Sunset = 4,Night = 5,Portrait = 6,BackLight = 7,Sports = 8,AntiShake = 9,Flowers = 10,CandleLight = 11,Fireworks = 12,Party = 13,NightPortrait = 14,Theater = 15,Action = 16,AR = 17,FacePriority = 18,Barcode = 19,BestShot = 20
};
enum class ChiModeEffectSubModeType
{None = 0,Mono = 1,Sepia = 2,Negative = 3,Solarize = 4,Posterize = 5,Aqua = 6,Emboss = 7,Sketch = 8,Neon = 9,Blackboard= 10,Whiteboard= 11
};
union ChiModeSubModeType
{UINT16 value;ChiModeUsecaseSubModeType usecase;/// feature1ChiModeFeature1SubModeType feature1;/// feature2ChiModeFeature2SubModeType feature2;/// sceneChiModeSceneSubModeType scene;/// effectChiModeEffectSubModeType effect;
};struct ChiTuningMode
{ChiModeType mode;ChiModeSubModeType subMode;
};struct ChiTuningModeParameter
{UINT32 noOfSelectionParameter;ChiTuningMode TuningMode[MaxTuningMode];
};#ifdef __cplusplus
}
#endif // __cplusplus#endif // CHITUNINGMODEPARAM_H