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
相关推荐
Godspeed Zhao2 天前
自动驾驶中的传感器技术13——Camera(4)
人工智能·机器学习·自动驾驶·camera·摄像头
Godspeed Zhao2 天前
自动驾驶中的传感器技术14——Camera(5)
人工智能·机器学习·自动驾驶·camera·摄像头
干一行,爱一行7 天前
如何在android framewrok dump camera data
android·camera
点云兔子8 天前
激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
camera·lidar·calib·fisheye
Logcater11 天前
Linux和Windows基于V4L2和TCP的QT监控
linux·c++·qt·嵌入式·camera·v4l2
伊织code16 天前
OpenCV 官翻 4 - 相机标定与三维重建
人工智能·opencv·3d·相机标定·camera·三维重建
星空梦想plus16 天前
小谈相机的学习过程
数码相机·学习·camera
菠萝加点糖1 个月前
Android Camera2 + OpenGL离屏渲染示例
android·opengl·camera
EucliwoodXT2 个月前
【Unity】相机 Cameras
unity·游戏引擎·相机·camera