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
相关推荐
爱凤的小光7 天前
ROS之CameraInfo---个人学习篇
camera·ros1
DU_YULIN22 天前
RAW 不同比特位深度对比分析
camera
GDAL2 个月前
viewer.camera.flyTo 全面教程
cesium·camera·flyto
STCNXPARM2 个月前
Linux camera之V4L2子系统详解
android·linux·camera·v4l2架构
STCNXPARM3 个月前
Android camera之硬件架构
android·硬件架构·camera
STCNXPARM3 个月前
Linux camera之Media子系统
linux·camera·v4l2·media子系统
习惯就好zz3 个月前
地图编辑部分教程总结
godot·camera·tilemap·2d·game·tileset
故事不长丨3 个月前
安卓相机开发:Camera、Camera2与CameraX的使用对比及选型指南
android·相机·camera·camerax·camera2·移动设备·相机开发
一口Linux4 个月前
camera|16.一种修改摄像头分辨率的方法
camera·瑞芯微
jamie_chu4 个月前
显微图像采集 - 工业摄像机与图像采集软件介绍
图像处理·数码相机·camera·摄像头·图像测量·jcamerapro