Camx-查看sensor mode 和效果参数

参考文档:80-NK872-13 QUALCOMM SPECTRA CAMERA ISP TUNING GUIDE

sensor 匹配

vendor/qcom/proprietary/chi-cdk/core/chiframework/chxsensorselectmode.cpp

c 复制代码
ChiSensorModeInfo* ChxSensorModeSelect::FindBestSensorMode(
    UINT32                   cameraId,
    const DesiredSensorMode* pDesiredSensorMode)
{
		pSelectedMode = &pAllModes[pSelectedMode->modeIndex]; //update pSelectedMode

        CHX_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

效果参数调用的地方,还有别的文件也有这个函数,有时候调用不一样

c 复制代码
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:

c 复制代码
I CHIUSECASE: [VERBOSE] chxutils.cpp:1916 FillTuningModeData() SensorMode 0 UC 0 feature 0 0 scene 0 effect 0

**关键词2:PopulateGeneralTuningMetadata

这里是dump 效果参数

log:

c 复制代码
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

实际生效

c 复制代码
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

c 复制代码
#ifndef CHITUNINGMODEPARAM_H
#define CHITUNINGMODEPARAM_H

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

static 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;
    /// feature1
    ChiModeFeature1SubModeType feature1;

    /// feature2
    ChiModeFeature2SubModeType feature2;
    /// scene
    ChiModeSceneSubModeType    scene;
    /// effect
    ChiModeEffectSubModeType   effect;
};

struct ChiTuningMode
{
    ChiModeType        mode;
    ChiModeSubModeType subMode;
};

struct ChiTuningModeParameter
{
    UINT32         noOfSelectionParameter;
    ChiTuningMode  TuningMode[MaxTuningMode];
};

#ifdef __cplusplus
}
#endif // __cplusplus

#endif // CHITUNINGMODEPARAM_H
相关推荐
观熵2 天前
Android 相机系统全景架构图解
android·数码相机·架构·camera·影像
c枫_撸码的日子9 天前
Camx-常用接口
camera
c枫_撸码的日子15 天前
CamX-骁龙相机修改
camera
Godspeed Zhao19 天前
自动驾驶中的传感器技术17——Camera(8)
人工智能·机器学习·自动驾驶·camera·cis
Godspeed Zhao20 天前
自动驾驶中的传感器技术24——Camera(15)
人工智能·机器学习·自动驾驶·camera·摄像头
Godspeed Zhao23 天前
自动驾驶中的传感器技术13——Camera(4)
人工智能·机器学习·自动驾驶·camera·摄像头
Godspeed Zhao24 天前
自动驾驶中的传感器技术14——Camera(5)
人工智能·机器学习·自动驾驶·camera·摄像头
干一行,爱一行1 个月前
如何在android framewrok dump camera data
android·camera
点云兔子1 个月前
激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
camera·lidar·calib·fisheye