/*
|
* aec_head.h
|
*
|
* Copyright (c) 2021 Rockchip Corporation
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*
|
*/
|
|
#ifndef __CALIBDBV2_AEC_HEAD_H__
|
#define __CALIBDBV2_AEC_HEAD_H__
|
|
#include "rk_aiq_comm.h"
|
|
RKAIQ_BEGIN_DECLARE
|
|
// #define M4_STRUCT_DESC(ALIAS, SIZE, UI_MODULE)
|
// #define M4_NUMBER_DESC(ALIAS, TYPE, SIZE, RANGE, DEFAULT)
|
// #define M4_STRING_DESC(ALIAS, SIZE, RANGE, DEFAULT)
|
// #define M4_ENUM_DESC(ALIAS, ENUM, DEFAULT)
|
|
#include "rk_aiq_comm.h"
|
|
#define AECV2_PIRIS_STEP_TABLE_MAX (1024)
|
#define AECV2_MAX_GRIDWEIGHT_NUM (225)
|
#define AECV2_MAX_HDRFRAME_NUM (3)
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC enum Params
|
*/
|
/*****************************************************************************/
|
typedef enum _CalibDb_HdrAeRatioTypeV2_e {
|
AECV2_HDR_RATIOTYPE_MODE_AUTO,
|
AECV2_HDR_RATIOTYPE_MODE_FIX,
|
} CalibDb_HdrAeRatioTypeV2_t;
|
|
typedef enum _CalibDb_AeStrategyModeV2_e {
|
AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR,
|
AECV2_STRATEGY_MODE_HIGHLIGHT_PRIOR,
|
} CalibDb_AeStrategyModeV2_t;
|
|
typedef enum _CalibDb_AeHdrLongFrmModeV2_e {
|
AECV2_HDR_LONGFRMMODE_NORMAL = 0,
|
AECV2_HDR_LONGFRMMODE_AUTO_LONG_FRAME = 1,
|
AECV2_HDR_LONGFRMMODE_LONG_FRAME = 2,
|
} CalibDb_AeHdrLongFrmModeV2_t;
|
|
typedef enum _CalibDb_AecMeasAreaModeV2_e {
|
AECV2_MEASURE_AREA_AUTO = 0,
|
AECV2_MEASURE_AREA_UP,
|
AECV2_MEASURE_AREA_BOTTOM,
|
AECV2_MEASURE_AREA_LEFT,
|
AECV2_MEASURE_AREA_RIGHT,
|
AECV2_MEASURE_AREA_CENTER,
|
} CalibDb_AecMeasAreaModeV2_t;
|
|
typedef enum _CalibDb_FlickerFreqV2_e {
|
AECV2_FLICKER_FREQUENCY_OFF = 0,
|
AECV2_FLICKER_FREQUENCY_50HZ = 1,
|
AECV2_FLICKER_FREQUENCY_60HZ = 2,
|
} CalibDb_FlickerFreqV2_t;
|
|
typedef enum _CalibDb_AntiFlickerModeV2_e {
|
AECV2_ANTIFLICKER_AUTO_MODE,
|
AECV2_ANTIFLICKER_NORMAL_MODE,
|
} CalibDb_AntiFlickerModeV2_t;
|
|
typedef enum _CalibDb_IrisTypeV2_e {
|
IRISV2_DC_TYPE = 0,
|
IRISV2_P_TYPE = 1,
|
} CalibDb_IrisTypeV2_t;
|
|
typedef enum _CalibDb_CamYRangeModeV2_e {
|
CAM_YRANGEV2_MODE_INVALID = 0, /**< invalid y range mode */
|
CAM_YRANGEV2_MODE_FULL, /**< Y = 0.299 * R + 0.587 * G + 0.114 * B,full range BT601*/
|
CAM_YRANGEV2_MODE_LIMITED, /**< Y = 16 + 0.25R + 0.5G + 0.1094B,limited range*/
|
CAM_YRANGEV2_MODE_MAX,
|
} CalibDb_CamYRangeModeV2_t;
|
|
typedef enum _CalibDb_CamRawStatsModeV2_e {
|
CAM_RAWSTATSV2_MODE_INVALID = 0, /**< lower border (only for an internal evaluation) */
|
CAM_RAWSTATSV2_MODE_R, /**< R channel */
|
CAM_RAWSTATSV2_MODE_G, /**< G channel */
|
CAM_RAWSTATSV2_MODE_B, /**< B channel */
|
CAM_RAWSTATSV2_MODE_Y, /**< luminance channel */
|
CAM_RAWSTATSV2_MODE_MAX, /**< upper border (only for an internal evaluation) */
|
} CalibDb_CamRawStatsModeV2_t;
|
|
typedef enum _CalibDb_CamHistStatsModeV2_e {
|
CAM_HISTV2_MODE_INVALID = 0, /**< lower border (only for an internal evaluation) */
|
CAM_HISTV2_MODE_RGB_COMBINED = 1, /**< RGB combined histogram, only available for SiHist */
|
CAM_HISTV2_MODE_R = 2, /**< R histogram */
|
CAM_HISTV2_MODE_G = 3, /**< G histogram */
|
CAM_HISTV2_MODE_B = 4, /**< B histogram */
|
CAM_HISTV2_MODE_Y = 5, /**< Y luminance histogram */
|
CAM_HISTV2_MODE_MAX, /**< upper border (only for an internal evaluation) */
|
} CalibDb_CamHistStatsModeV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC algo CommonCtrl Config Params
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_AeDelayFrmNumV2_s {
|
// M4_NUMBER_DESC("BlackDelay", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
|
uint8_t BlackDelay;
|
|
// M4_NUMBER_DESC("WhiteDelay", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
|
uint8_t WhiteDelay;
|
} CalibDb_AeDelayFrmNumV2_t;
|
|
typedef struct CalibDb_AeSpeedV2_s {
|
// M4_BOOL_DESC("SmoothEn", "1")
|
bool SmoothEn;
|
// M4_BOOL_DESC("DyDampEn", "1")
|
bool DyDampEn;
|
// M4_NUMBER_DESC("DampOver", "f32", M4_RANGE(0,1.00), "0.15", M4_DIGIT(2),M4_HIDE(0))
|
float DampOver;
|
|
// M4_NUMBER_DESC("DampUnder", "f32", M4_RANGE(0,1.00), "0.45", M4_DIGIT(2),M4_HIDE(0))
|
float DampUnder;
|
|
// M4_NUMBER_DESC("DampDark2Bright", "f32", M4_RANGE(0,1.00), "0.15", M4_DIGIT(2),M4_HIDE(0))
|
float DampDark2Bright;
|
|
// M4_NUMBER_DESC("DampBright2Dark", "f32", M4_RANGE(0,1.00), "0.45", M4_DIGIT(2),M4_HIDE(0))
|
float DampBright2Dark;
|
} CalibDb_AeSpeedV2_t;
|
|
typedef struct CalibDb_AeFrmRateAttrV2_s {
|
// M4_BOOL_DESC("isFpsFix", "1")
|
bool isFpsFix;
|
|
// M4_NUMBER_DESC("FpsValue", "f32", M4_RANGE(0,200), "0", M4_DIGIT(1),M4_HIDE(0))
|
float FpsValue;
|
} CalibDb_AeFrmRateAttrV2_t;
|
|
typedef struct CalibDb_AntiFlickerAttrV2_s {
|
// M4_BOOL_DESC("enable", "1")
|
bool enable;
|
|
// M4_ENUM_DESC("Frequency", "CalibDb_FlickerFreqV2_t","AECV2_FLICKER_FREQUENCY_50HZ")
|
CalibDb_FlickerFreqV2_t Frequency;
|
|
// M4_ENUM_DESC("Mode", "CalibDb_AntiFlickerModeV2_t","AECV2_ANTIFLICKER_AUTO_MODE")
|
CalibDb_AntiFlickerModeV2_t Mode;
|
} CalibDb_AntiFlickerAttrV2_t;
|
|
//manual exposure
|
typedef struct CalibDb_LinMeAttrV2_s {
|
// M4_BOOL_DESC("ManualTimeEn", "1")
|
bool ManualTimeEn;
|
|
// M4_BOOL_DESC("ManualGainEn", "1")
|
bool ManualGainEn;
|
|
// M4_BOOL_DESC("ManualIspDgainEn", "1")
|
bool ManualIspDgainEn;
|
|
// M4_NUMBER_DESC("TimeValue", "f32", M4_RANGE(0,1), "0.003", M4_DIGIT(6),M4_HIDE(0))
|
float TimeValue; //unit: s = 10^6 us
|
|
// M4_NUMBER_DESC("GainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float GainValue;
|
|
// M4_NUMBER_DESC("IspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float IspDGainValue;
|
} CalibDb_LinMeAttrV2_t;
|
|
typedef struct CalibDb_HdrMeAttrV2_s {
|
// M4_BOOL_DESC("ManualTimeEn", "1")
|
bool ManualTimeEn;
|
|
// M4_BOOL_DESC("ManualGainEn", "1")
|
bool ManualGainEn;
|
|
// M4_BOOL_DESC("ManualIspDgainEn", "1")
|
bool ManualIspDgainEn;
|
|
// M4_ARRAY_DESC("TimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.003", M4_DIGIT(6), M4_DYNAMIC(0))
|
float TimeValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("GainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float GainValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("IspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float IspDGainValue[AECV2_MAX_HDRFRAME_NUM];
|
} CalibDb_HdrMeAttrV2_t;
|
|
typedef struct CalibDb_MeAttrV2_s {
|
// M4_STRUCT_DESC("LinearAE", "normal_ui_style")
|
CalibDb_LinMeAttrV2_t LinearAE;
|
|
// M4_STRUCT_DESC("HdrAE", "normal_ui_style")
|
CalibDb_HdrMeAttrV2_t HdrAE;
|
} CalibDb_MeAttrV2_t;
|
|
//win_scale = [h_off, v_off, h_size, v_size], range=[0,1]
|
typedef struct CalibDb_Aec_WinScale_s {
|
// M4_NUMBER_DESC("h_offs", "f32", M4_RANGE(0,1), "0", M4_DIGIT(2),M4_HIDE(0))
|
float h_offs;
|
|
// M4_NUMBER_DESC("v_offs", "f32", M4_RANGE(0,1), "0", M4_DIGIT(2),M4_HIDE(0))
|
float v_offs;
|
|
// M4_NUMBER_DESC("h_size", "f32", M4_RANGE(0,1), "1", M4_DIGIT(2),M4_HIDE(0))
|
float h_size;
|
|
// M4_NUMBER_DESC("v_size", "f32", M4_RANGE(0,1), "1", M4_DIGIT(2),M4_HIDE(0))
|
float v_size;
|
} CalibDb_Aec_WinScale_t;
|
|
typedef struct CalibDb_Aec_WinScaleV2_t {
|
|
// M4_STRUCT_DESC("InRawWinScale", "normal_ui_style")
|
CalibDb_Aec_WinScale_t InRawWinScale;
|
|
// M4_STRUCT_DESC("TmoRawWinScale", "normal_ui_style")
|
CalibDb_Aec_WinScale_t TmoRawWinScale;
|
|
// M4_STRUCT_DESC("YuvWinScale", "normal_ui_style")
|
CalibDb_Aec_WinScale_t YuvWinScale;
|
} CalibDb_Aec_WinScaleV2_t;
|
|
typedef struct CalibDb_AeEnvLvCalibV2_s {
|
// M4_NUMBER_DESC("CalibFNumber", "f32", M4_RANGE(0,256), "1.6", M4_DIGIT(2),M4_HIDE(0))
|
float CalibFNumber;
|
|
// M4_ARRAY_DESC("CurveCoeff", "f32", M4_SIZE(1,2), M4_RANGE(-1024,1024), "1.0", M4_DIGIT(5), M4_DYNAMIC(0))
|
float CurveCoeff[2];//y=ax+b, Coeff=[a,b]
|
} CalibDb_AeEnvLvCalibV2_t;
|
|
typedef struct CalibDb_AecCommon_AttrV2_s {
|
// M4_BOOL_DESC("Enable", "1")
|
bool Enable;
|
|
// M4_NUMBER_DESC("AecRunInterval", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
|
uint8_t AecRunInterval;
|
|
// M4_ENUM_DESC("AecOpType", "RKAiqOPMode_t","RK_AIQ_OP_MODE_AUTO")
|
RKAiqOPMode_t AecOpType;
|
|
// M4_ENUM_DESC("HistStatsMode", "CalibDb_CamHistStatsModeV2_t","CAM_HISTV2_MODE_G")
|
CalibDb_CamHistStatsModeV2_t HistStatsMode;
|
|
// M4_ENUM_DESC("RawStatsMode", "CalibDb_CamRawStatsModeV2_t","CAM_RAWSTATSV2_MODE_G")
|
CalibDb_CamRawStatsModeV2_t RawStatsMode;
|
|
// M4_ENUM_DESC("YRangeMode", "CalibDb_CamYRangeModeV2_t","CAM_YRANGEV2_MODE_FULL")
|
CalibDb_CamYRangeModeV2_t YRangeMode;
|
|
// M4_ARRAY_DESC("AecGridWeight", "u8", M4_SIZE(15,15), M4_RANGE(0,32), "1", M4_DIGIT(0), M4_DYNAMIC(0))
|
uint8_t AecGridWeight[AECV2_MAX_GRIDWEIGHT_NUM];
|
|
// M4_STRUCT_DESC("AecManualCtrl", "normal_ui_style")
|
CalibDb_MeAttrV2_t AecManualCtrl;
|
|
// M4_STRUCT_DESC("AecSpeed", "normal_ui_style")
|
CalibDb_AeSpeedV2_t AecSpeed;
|
|
// M4_STRUCT_DESC("AecDelayFrmNum", "normal_ui_style")
|
CalibDb_AeDelayFrmNumV2_t AecDelayFrmNum;
|
|
// M4_STRUCT_DESC("AecFrameRateMode", "normal_ui_style")
|
CalibDb_AeFrmRateAttrV2_t AecFrameRateMode;
|
|
// M4_STRUCT_DESC("AecAntiFlicker", "normal_ui_style")
|
CalibDb_AntiFlickerAttrV2_t AecAntiFlicker;
|
|
// M4_STRUCT_DESC("AecEnvLvCalib", "normal_ui_style")
|
CalibDb_AeEnvLvCalibV2_t AecEnvLvCalib;
|
|
// M4_STRUCT_DESC("AecWinScale", "normal_ui_style")
|
CalibDb_Aec_WinScaleV2_t AecWinScale;
|
} CalibDb_AecCommon_AttrV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC algo LinAE Config Params
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_LinExpInitExpV2_s {
|
// M4_NUMBER_DESC("InitTimeValue", "f32", M4_RANGE(0,1), "0.003", M4_DIGIT(6),M4_HIDE(0))
|
float InitTimeValue;
|
|
// M4_NUMBER_DESC("InitGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float InitGainValue;
|
|
// M4_NUMBER_DESC("InitIspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float InitIspDGainValue;
|
|
// M4_NUMBER_DESC("InitPIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
|
int InitPIrisGainValue;
|
|
// M4_NUMBER_DESC("InitDCIrisDutyValue", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
|
int InitDCIrisDutyValue;
|
} CalibDb_LinExpInitExpV2_t;
|
|
typedef struct CalibDb_LinAeRoute_AttrV2_s {
|
// M4_ARRAY_DESC("TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
|
float* TimeDot;
|
int TimeDot_len;
|
// M4_ARRAY_DESC("GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* GainDot;
|
int GainDot_len;
|
// M4_ARRAY_DESC("IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* IspDGainDot;
|
int IspDGainDot_len;
|
// M4_ARRAY_DESC("PIrisDot", "s32", M4_SIZE(1,6), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(1))
|
int* PIrisDot;
|
int PIrisDot_len;
|
} CalibDb_LinAeRoute_AttrV2_t;
|
|
typedef struct CalibDb_AecDynamicSetpointV2_s {
|
// M4_ARRAY_DESC("ExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
|
float* ExpLevel;
|
int ExpLevel_len;
|
// M4_ARRAY_DESC("DySetpoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* DySetpoint;
|
int DySetpoint_len;
|
} CalibDb_AecDynamicSetpointV2_t;
|
|
typedef struct CalibDb_BacklitSetPointV2_s {
|
// M4_ARRAY_DESC("ExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
|
float* ExpLevel;
|
int ExpLevel_len;
|
// M4_ARRAY_DESC("NonOEPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.4", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* NonOEPdfTh;
|
int NonOEPdfTh_len;
|
// M4_ARRAY_DESC("LowLightPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.2", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* LowLightPdfTh;
|
int LowLightPdfTh_len;
|
// M4_ARRAY_DESC("TargetLLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* TargetLLLuma;
|
int TargetLLLuma_len;
|
} CalibDb_BacklitSetPointV2_t;
|
|
typedef struct CalibDb_AecBacklightV2_s {
|
// M4_BOOL_DESC("Enable", "0")
|
bool Enable;
|
|
// M4_NUMBER_DESC("StrBias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
|
float StrBias;//uint: %
|
|
// M4_ENUM_DESC("MeasArea", "CalibDb_AecMeasAreaModeV2_t","AECV2_MEASURE_AREA_AUTO")
|
CalibDb_AecMeasAreaModeV2_t MeasArea;
|
|
// M4_NUMBER_DESC("OEROILowTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
|
float OEROILowTh;
|
|
// M4_NUMBER_DESC("LumaDistTh", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
|
float LumaDistTh;//uint: %
|
|
// M4_NUMBER_DESC("LvLowTh", "f32", M4_RANGE(0,100), "7.5", M4_DIGIT(4),M4_HIDE(0))
|
float LvLowTh;
|
|
// M4_NUMBER_DESC("LvHighTh", "f32", M4_RANGE(0,100), "0.3125", M4_DIGIT(4),M4_HIDE(0))
|
float LvHighTh;
|
|
// M4_ARRAY_TABLE_DESC("BacklitSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_BacklitSetPointV2_t BacklitSetPoint;
|
} CalibDb_AecBacklightV2_t;
|
|
typedef struct CalibDb_OverExpSetPointV2_s {
|
// M4_ARRAY_DESC("OEpdf", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* OEpdf;
|
int OEpdf_len;
|
// M4_ARRAY_DESC("LowLightWeight", "f32", M4_SIZE(1,6), M4_RANGE(0,20), "1", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* LowLightWeight;
|
int LowLightWeight_len;
|
// M4_ARRAY_DESC("HighLightWeight", "f32", M4_SIZE(1,6), M4_RANGE(0,20), "2", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* HighLightWeight;
|
int HighLightWeight_len;
|
} CalibDb_OverExpSetPointV2_t;
|
|
typedef struct CalibDb_AecOverExpCtrlV2_s {
|
// M4_BOOL_DESC("Enable", "0")
|
bool Enable;
|
|
// M4_NUMBER_DESC("StrBias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
|
float StrBias; //uint: %
|
|
// M4_NUMBER_DESC("MaxWeight", "f32", M4_RANGE(0,20), "8", M4_DIGIT(2),M4_HIDE(0))
|
float MaxWeight;
|
|
// M4_NUMBER_DESC("HighLightTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
|
float HighLightTh;
|
|
// M4_NUMBER_DESC("LowLightTh", "f32", M4_RANGE(0,255), "30", M4_DIGIT(2),M4_HIDE(0))
|
float LowLightTh;
|
|
// M4_ARRAY_TABLE_DESC("OverExpSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_OverExpSetPointV2_t OverExpSetPoint;
|
} CalibDb_AecOverExpCtrlV2_t;
|
|
typedef struct CalibDb_LinearAE_AttrV2_s {
|
// M4_BOOL_DESC("RawStatsEn", "1")
|
bool RawStatsEn;
|
|
// M4_NUMBER_DESC("ToleranceIn", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
|
float ToleranceIn;//uint: %
|
|
// M4_NUMBER_DESC("ToleranceOut", "f32", M4_RANGE(0,100), "15", M4_DIGIT(2),M4_HIDE(0))
|
float ToleranceOut;//uint: %
|
|
// M4_NUMBER_DESC("Evbias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
|
float Evbias; //uint: %
|
|
// M4_ENUM_DESC("StrategyMode", "CalibDb_AeStrategyModeV2_t","AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR")
|
CalibDb_AeStrategyModeV2_t StrategyMode;
|
|
// M4_STRUCT_DESC("InitExp", "normal_ui_style")
|
CalibDb_LinExpInitExpV2_t InitExp;
|
|
// M4_ARRAY_TABLE_DESC("Route", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_LinAeRoute_AttrV2_t Route;
|
|
// M4_ARRAY_TABLE_DESC("DySetpoint", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_AecDynamicSetpointV2_t DySetpoint;
|
|
// M4_STRUCT_DESC("BackLightCtrl", "normal_ui_style")
|
CalibDb_AecBacklightV2_t BackLightCtrl;
|
|
// M4_STRUCT_DESC("OverExpCtrl", "normal_ui_style")
|
CalibDb_AecOverExpCtrlV2_t OverExpCtrl;
|
} CalibDb_LinearAE_AttrV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC algo HdrAE Config Params
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_HdrExpInitExpV2_s {
|
// M4_ARRAY_DESC("InitTimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.01", M4_DIGIT(6), M4_DYNAMIC(0))
|
float InitTimeValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("InitGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float InitGainValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("InitIspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float InitIspDGainValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_NUMBER_DESC("InitPIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
|
int InitPIrisGainValue;
|
|
// M4_NUMBER_DESC("InitDCIrisDutyValue", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
|
int InitDCIrisDutyValue;
|
} CalibDb_HdrExpInitExpV2_t;
|
|
typedef struct CalibDb_ExpRatioV2_s {
|
// M4_ARRAY_DESC("RatioExpDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
|
float* RatioExpDot;
|
int RatioExpDot_len;
|
// M4_ARRAY_DESC("M2SRatioFix", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "8", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* M2SRatioFix;
|
int M2SRatioFix_len;
|
// M4_ARRAY_DESC("L2MRatioFix", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "8", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* L2MRatioFix;
|
int L2MRatioFix_len;
|
// M4_ARRAY_DESC("M2SRatioMax", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "64", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* M2SRatioMax;
|
int M2SRatioMax_len;
|
// M4_ARRAY_DESC("L2MRatioMax", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "64", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* L2MRatioMax;
|
int L2MRatioMax_len;
|
} CalibDb_ExpRatioV2_t;
|
|
typedef struct CalibDb_ExpRatioCtrlV2_s {
|
// M4_ENUM_DESC("ExpRatioType", "CalibDb_HdrAeRatioTypeV2_t","AECV2_HDR_RATIOTYPE_MODE_AUTO")
|
CalibDb_HdrAeRatioTypeV2_t ExpRatioType;
|
|
// M4_ARRAY_TABLE_DESC("ExpRatio", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_ExpRatioV2_t ExpRatio;
|
} CalibDb_ExpRatioCtrlV2_t;
|
|
typedef struct CalibDb_HdrAeRoute_AttrV2_s {
|
// M4_ARRAY_DESC("Frm0TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
|
float* Frm0TimeDot;
|
int Frm0TimeDot_len;
|
// M4_ARRAY_DESC("Frm0GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm0GainDot;
|
int Frm0GainDot_len;
|
// M4_ARRAY_DESC("Frm0IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm0IspDGainDot;
|
int Frm0IspDGainDot_len;
|
// M4_ARRAY_DESC("Frm1TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
|
float* Frm1TimeDot;
|
int Frm1TimeDot_len;
|
// M4_ARRAY_DESC("Frm1GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm1GainDot;
|
int Frm1GainDot_len;
|
// M4_ARRAY_DESC("Frm1IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm1IspDGainDot;
|
int Frm1IspDGainDot_len;
|
// M4_ARRAY_DESC("Frm2TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
|
float* Frm2TimeDot;
|
int Frm2TimeDot_len;
|
// M4_ARRAY_DESC("Frm2GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm2GainDot;
|
int Frm2GainDot_len;
|
// M4_ARRAY_DESC("Frm2IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
|
float* Frm2IspDGainDot;
|
int Frm2IspDGainDot_len;
|
// M4_ARRAY_DESC("PIrisDot", "s32", M4_SIZE(1,6), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(1))
|
int* PIrisDot;
|
int PIrisDot_len;
|
} CalibDb_HdrAeRoute_AttrV2_t;
|
|
typedef struct CalibDb_LfrmSetPointV2_s
|
{
|
// M4_ARRAY_DESC("LExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
|
float* LExpLevel;
|
int LExpLevel_len;
|
// M4_ARRAY_DESC("NonOEPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.4", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* NonOEPdfTh;
|
int NonOEPdfTh_len;
|
// M4_ARRAY_DESC("LowLightPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.2", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* LowLightPdfTh;
|
int LowLightPdfTh_len;
|
// M4_ARRAY_DESC("LSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* LSetPoint;
|
int LSetPoint_len;
|
// M4_ARRAY_DESC("TargetLLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* TargetLLLuma;
|
int TargetLLLuma_len;
|
} CalibDb_LfrmSetPointV2_t;
|
|
typedef struct CalibDb_LfrmCtrlV2_s
|
{
|
// M4_NUMBER_DESC("OEROILowTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
|
float OEROILowTh;
|
|
// M4_NUMBER_DESC("LvLowTh", "f32", M4_RANGE(0,100), "7.5", M4_DIGIT(4),M4_HIDE(0))
|
float LvLowTh;
|
|
// M4_NUMBER_DESC("LvHighTh", "f32", M4_RANGE(0,100), "0.3125", M4_DIGIT(4),M4_HIDE(0))
|
float LvHighTh;
|
|
// M4_ARRAY_TABLE_DESC("LfrmSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_LfrmSetPointV2_t LfrmSetPoint;
|
} CalibDb_LfrmCtrlV2_t;
|
|
typedef struct CalibDb_MfrmCtrlV2_s
|
{
|
// M4_ARRAY_DESC("MExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
|
float* MExpLevel;
|
int MExpLevel_len;
|
// M4_ARRAY_DESC("MSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* MSetPoint;
|
int MSetPoint_len;
|
} CalibDb_MfrmCtrlV2_t;
|
|
typedef struct CalibDb_SfrmSetPointV2_s
|
{
|
// M4_ARRAY_DESC("SExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(6), M4_DYNAMIC(1))
|
float* SExpLevel;
|
int SExpLevel_len;
|
// M4_ARRAY_DESC("SSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* SSetPoint;
|
int SSetPoint_len;
|
// M4_ARRAY_DESC("TargetHLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "150", M4_DIGIT(2), M4_DYNAMIC(1))
|
float* TargetHLLuma;
|
int TargetHLLuma_len;
|
} CalibDb_SfrmSetPointV2_t;
|
|
typedef struct CalibDb_SfrmCtrlV2_s
|
{
|
// M4_BOOL_DESC("HLROIExpandEn", "0")
|
bool HLROIExpandEn;
|
|
// M4_NUMBER_DESC("HLLumaTolerance", "f32", M4_RANGE(0,100), "12", M4_DIGIT(2),M4_HIDE(0))
|
float HLLumaTolerance;//unit:%
|
|
// M4_ARRAY_TABLE_DESC("SfrmSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_SfrmSetPointV2_t SfrmSetPoint;
|
} CalibDb_SfrmCtrlV2_t;
|
|
typedef struct CalibDb_LongFrmCtrlV2_s {
|
// M4_ENUM_DESC("mode", "CalibDb_AeHdrLongFrmModeV2_t","AECV2_HDR_LONGFRMMODE_NORMAL")
|
CalibDb_AeHdrLongFrmModeV2_t mode;
|
|
// M4_NUMBER_DESC("SfrmMinLine", "u16", M4_RANGE(0,1024), "2", M4_DIGIT(0),M4_HIDE(0))
|
uint16_t SfrmMinLine;//uint:line
|
|
// M4_NUMBER_DESC("LfrmModeExpTh", "f32", M4_RANGE(0,100), "0.62", M4_DIGIT(4),M4_HIDE(0))
|
float LfrmModeExpTh;
|
} CalibDb_LongFrmCtrlV2_t;
|
|
typedef struct CalibDb_HdrAE_AttrV2_s {
|
// M4_NUMBER_DESC("ToleranceIn", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
|
float ToleranceIn;//unit:%
|
|
// M4_NUMBER_DESC("ToleranceOut", "f32", M4_RANGE(0,100), "15", M4_DIGIT(2),M4_HIDE(0))
|
float ToleranceOut;//unit:%
|
|
// M4_NUMBER_DESC("Evbias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(0),M4_HIDE(1))
|
float Evbias;
|
|
// M4_ENUM_DESC("StrategyMode", "CalibDb_AeStrategyModeV2_t","AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR")
|
CalibDb_AeStrategyModeV2_t StrategyMode;
|
|
// M4_NUMBER_DESC("LumaDistTh", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
|
float LumaDistTh; //used for area-growing,unit:%
|
|
// M4_STRUCT_DESC("InitExp", "normal_ui_style")
|
CalibDb_HdrExpInitExpV2_t InitExp;
|
|
// M4_ARRAY_TABLE_DESC("Route", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_HdrAeRoute_AttrV2_t Route;
|
|
// M4_STRUCT_DESC("ExpRatioCtrl", "normal_ui_style")
|
CalibDb_ExpRatioCtrlV2_t ExpRatioCtrl;
|
|
// M4_STRUCT_DESC("LongFrmMode", "normal_ui_style")
|
CalibDb_LongFrmCtrlV2_t LongFrmMode;
|
|
// M4_STRUCT_DESC("LframeCtrl", "normal_ui_style")
|
CalibDb_LfrmCtrlV2_t LframeCtrl;
|
|
// M4_ARRAY_TABLE_DESC("MframeCtrl", "array_table_ui", M4_INDEX_DEFAULT)
|
CalibDb_MfrmCtrlV2_t MframeCtrl;
|
|
// M4_STRUCT_DESC("SframeCtrl", "normal_ui_style")
|
CalibDb_SfrmCtrlV2_t SframeCtrl;
|
} CalibDb_HdrAE_AttrV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC algo SyncTest Config Params
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_LinAlterExpV2_s {
|
// M4_NUMBER_DESC("TimeValue", "f32", M4_RANGE(0,1), "0.01", M4_DIGIT(6),M4_HIDE(0))
|
float TimeValue;
|
|
// M4_NUMBER_DESC("GainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float GainValue;
|
|
// M4_NUMBER_DESC("IspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
|
float IspDGainValue;
|
|
// M4_NUMBER_DESC("PIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
|
int PIrisGainValue;
|
|
// M4_NUMBER_DESC("DcgMode", "s32", M4_RANGE(-1,1), "0", M4_DIGIT(0),M4_HIDE(0))
|
int DcgMode;
|
} CalibDb_LinAlterExpV2_t;
|
|
typedef struct CalibDb_HdrAlterExpV2_s {
|
// M4_ARRAY_DESC("TimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.01", M4_DIGIT(6), M4_DYNAMIC(0))
|
float TimeValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("GainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float GainValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_ARRAY_DESC("IspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
|
float IspDGainValue[AECV2_MAX_HDRFRAME_NUM];
|
|
// M4_NUMBER_DESC("PIrisGainValues", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
|
int PIrisGainValue;
|
|
// M4_ARRAY_DESC("DcgMode", "s32", M4_SIZE(1,3), M4_RANGE(-1,1), "0", M4_DIGIT(0), M4_DYNAMIC(0))
|
int DcgMode[AECV2_MAX_HDRFRAME_NUM];
|
} CalibDb_HdrAlterExpV2_t;
|
|
typedef struct CalibDb_AlterExpV2_s {
|
// M4_STRUCT_LIST_DESC("LinearAE", M4_SIZE_DYNAMIC,"normal_ui_style")
|
CalibDb_LinAlterExpV2_t* LinearAE;
|
int LinearAE_len;
|
|
// M4_STRUCT_LIST_DESC("HdrAE", M4_SIZE_DYNAMIC,"normal_ui_style")
|
CalibDb_HdrAlterExpV2_t* HdrAE;
|
int HdrAE_len;
|
} CalibDb_AlterExpV2_t;
|
|
typedef struct CalibDb_AeSyncTestV2_s {
|
// M4_BOOL_DESC("Enable", "0")
|
bool Enable;
|
|
// M4_NUMBER_DESC("IntervalFrm", "s32", M4_RANGE(0,1024), "5", M4_DIGIT(0),M4_HIDE(0))
|
int IntervalFrm;
|
|
// M4_STRUCT_DESC("AlterExp", "normal_ui_style")
|
CalibDb_AlterExpV2_t AlterExp;
|
} CalibDb_AeSyncTestV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief ISP2.0 AEC algo IrisCtrl Config Params
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_MIris_AttrV2_s {
|
// M4_NUMBER_DESC("PIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
|
int PIrisGainValue;
|
|
// M4_NUMBER_DESC("DCIrisHoldValue", "s32", M4_RANGE(0,100), "50", M4_DIGIT(0),M4_HIDE(0))
|
int DCIrisHoldValue;
|
} CalibDb_MIris_AttrV2_t;
|
|
typedef struct CalibDb_PIris_AttrV2_s {
|
// M4_NUMBER_DESC("TotalStep", "u16", M4_RANGE(0,1024), "81", M4_DIGIT(0),M4_HIDE(0))
|
uint16_t TotalStep;
|
|
// M4_NUMBER_DESC("EffcStep", "u16", M4_RANGE(0,1024), "64", M4_DIGIT(0),M4_HIDE(0))
|
uint16_t EffcStep;
|
|
// M4_BOOL_DESC("ZeroIsMax", "1")
|
bool ZeroIsMax;
|
|
// M4_ARRAY_DESC("StepTable", "u16", M4_SIZE(1,1024), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(0))
|
uint16_t StepTable[AECV2_PIRIS_STEP_TABLE_MAX];
|
} CalibDb_PIris_AttrV2_t;
|
|
typedef struct CalibDb_DCIris_AttrV2_s {
|
// M4_NUMBER_DESC("Kp", "f32", M4_RANGE(0,10), "1", M4_DIGIT(2),M4_HIDE(0))
|
float Kp;
|
// M4_NUMBER_DESC("Ki", "f32", M4_RANGE(0,10), "0.2", M4_DIGIT(2),M4_HIDE(0))
|
float Ki;
|
// M4_NUMBER_DESC("Kd", "f32", M4_RANGE(0,10), "0.5", M4_DIGIT(2),M4_HIDE(0))
|
float Kd;
|
// M4_NUMBER_DESC("MinPwmDuty", "s32", M4_RANGE(0,100), "0", M4_DIGIT(0),M4_HIDE(0))
|
int MinPwmDuty;
|
// M4_NUMBER_DESC("MaxPwmDuty", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
|
int MaxPwmDuty;
|
// M4_NUMBER_DESC("OpenPwmDuty", "s32", M4_RANGE(0,100), "50", M4_DIGIT(0),M4_HIDE(0))
|
int OpenPwmDuty;
|
// M4_NUMBER_DESC("ClosePwmDuty", "s32", M4_RANGE(0,100), "60", M4_DIGIT(0),M4_HIDE(0))
|
int ClosePwmDuty;
|
} CalibDb_DCIris_AttrV2_t;
|
|
typedef struct CalibDb_AecIrisCtrlV2_s {
|
// M4_BOOL_DESC("Enable", "0")
|
bool Enable;
|
|
// M4_ENUM_DESC("IrisType", "CalibDb_IrisTypeV2_t","IRISV2_DC_TYPE")
|
CalibDb_IrisTypeV2_t IrisType;
|
|
// M4_BOOL_DESC("ManualEn", "0")
|
bool ManualEn;
|
|
// M4_STRUCT_DESC("ManualAttr", "normal_ui_style")
|
CalibDb_MIris_AttrV2_t ManualAttr;
|
|
// M4_STRUCT_DESC("InitAttr", "normal_ui_style")
|
CalibDb_MIris_AttrV2_t InitAttr;
|
|
// M4_STRUCT_DESC("PIrisAttr", "normal_ui_style")
|
CalibDb_PIris_AttrV2_t PIrisAttr;
|
|
// M4_STRUCT_DESC("DCIrisAttr", "normal_ui_style")
|
CalibDb_DCIris_AttrV2_t DCIrisAttr;
|
} CalibDb_AecIrisCtrlV2_t;
|
|
/*****************************************************************************/
|
/**
|
* @brief Global AEC tuning structure of isp2.0
|
*/
|
/*****************************************************************************/
|
typedef struct CalibDb_Aec_ParaV2_s {
|
// M4_STRUCT_DESC("CommCtrl", "normal_ui_style")
|
CalibDb_AecCommon_AttrV2_t CommCtrl;
|
|
// M4_STRUCT_DESC("LinearAeCtrl", "normal_ui_style")
|
CalibDb_LinearAE_AttrV2_t LinearAeCtrl;
|
|
// M4_STRUCT_DESC("HdrAeCtrl", "normal_ui_style")
|
CalibDb_HdrAE_AttrV2_t HdrAeCtrl;
|
|
// M4_STRUCT_DESC("IrisCtrl", "normal_ui_style")
|
CalibDb_AecIrisCtrlV2_t IrisCtrl;
|
|
// M4_STRUCT_DESC("SyncTest", "normal_ui_style")
|
CalibDb_AeSyncTestV2_t SyncTest; //special module for debug
|
} CalibDb_Aec_ParaV2_t;
|
|
RKAIQ_END_DECLARE
|
|
#endif
|