/* 
 | 
 * 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_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 
 |