xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/aec_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * aec_head.h
3  *
4  *  Copyright (c) 2021 Rockchip Corporation
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 
20 #ifndef __CALIBDBV2_AEC_HEAD_H__
21 #define __CALIBDBV2_AEC_HEAD_H__
22 
23 #include "rk_aiq_comm.h"
24 
25 RKAIQ_BEGIN_DECLARE
26 
27 // #define M4_STRUCT_DESC(ALIAS, SIZE, UI_MODULE)
28 // #define M4_NUMBER_DESC(ALIAS, TYPE, SIZE, RANGE, DEFAULT)
29 // #define M4_STRING_DESC(ALIAS, SIZE, RANGE, DEFAULT)
30 // #define M4_ENUM_DESC(ALIAS, ENUM, DEFAULT)
31 
32 #define AECV2_PIRIS_STEP_TABLE_MAX (1024)
33 #define AECV2_MAX_GRIDWEIGHT_NUM (225)
34 #define AECV2_MAX_HDRFRAME_NUM (3)
35 #define AECV2_HDCIRIS_DOT_MAX_NUM (256)
36 
37 /*****************************************************************************/
38 /**
39  * @brief   ISP2.0 AEC enum Params
40  */
41 /*****************************************************************************/
42 typedef enum _CalibDb_HdrAeRatioTypeV2_e {
43     AECV2_HDR_RATIOTYPE_MODE_AUTO,
44     AECV2_HDR_RATIOTYPE_MODE_FIX,
45 } CalibDb_HdrAeRatioTypeV2_t;
46 
47 typedef enum _CalibDb_AeStrategyModeV2_e {
48     AECV2_STRATEGY_MODE_LOWLIGHT,
49     AECV2_STRATEGY_MODE_HIGHLIGHT,
50 } CalibDb_AeStrategyModeV2_t;
51 
52 typedef enum _CalibDb_AeHdrLongFrmModeV2_e {
53     AECV2_HDR_LONGFRMMODE_DISABLE             = 0,
54     AECV2_HDR_LONGFRMMODE_AUTO                = 1,
55     AECV2_HDR_LONGFRMMODE_ENABLE              = 2,
56 } CalibDb_AeHdrLongFrmModeV2_t;
57 
58 typedef enum _CalibDb_AecMeasAreaModeV2_e {
59     AECV2_MEASURE_AREA_AUTO    = 0,
60     AECV2_MEASURE_AREA_UP,
61     AECV2_MEASURE_AREA_BOTTOM,
62     AECV2_MEASURE_AREA_LEFT,
63     AECV2_MEASURE_AREA_RIGHT,
64     AECV2_MEASURE_AREA_CENTER,
65 } CalibDb_AecMeasAreaModeV2_t;
66 
67 typedef enum _CalibDb_FlickerFreqV2_e {
68     AECV2_FLICKER_FREQUENCY_OFF   = 0,
69     AECV2_FLICKER_FREQUENCY_50HZ = 1,
70     AECV2_FLICKER_FREQUENCY_60HZ = 2,
71     AECV2_FLICKER_FREQUENCY_AUTO = 3,
72 } CalibDb_FlickerFreqV2_t;
73 
74 typedef enum _CalibDb_AntiFlickerModeV2_e {
75     AECV2_ANTIFLICKER_AUTO_MODE,
76     AECV2_ANTIFLICKER_NORMAL_MODE,
77 } CalibDb_AntiFlickerModeV2_t;
78 
79 typedef enum _CalibDb_IrisTypeV2_e {
80     IRISV2_DC_TYPE  = 0,
81     IRISV2_P_TYPE   = 1,
82     IRISV2_HDC_TYPE = 2,
83 } CalibDb_IrisTypeV2_t;
84 
85 typedef enum _CalibDb_DelayTypeV2_e {
86     DELAY_TYPE_FRAME = 0,
87     DELAY_TYPE_TIME = 1,
88 } CalibDb_DelayTypeV2_t;
89 
90 typedef enum _CalibDb_CamYRangeModeV2_e {
91     CAM_YRANGEV2_MODE_INVALID    = 0,    /**< invalid y range mode   */
92     CAM_YRANGEV2_MODE_FULL,              /**< Y = 0.299 * R + 0.587 * G + 0.114 * B,full range BT601*/
93     CAM_YRANGEV2_MODE_LIMITED,           /**< Y = 16 + 0.25R + 0.5G + 0.1094B,limited range*/
94     CAM_YRANGEV2_MODE_MAX,
95 } CalibDb_CamYRangeModeV2_t;
96 
97 typedef enum _CalibDb_CamRawStatsModeV2_e {
98     CAM_RAWSTATSV2_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
99     CAM_RAWSTATSV2_MODE_R,                 /**< R channel */
100     CAM_RAWSTATSV2_MODE_G,                 /**< G channel */
101     CAM_RAWSTATSV2_MODE_B,                 /**< B channel */
102     CAM_RAWSTATSV2_MODE_Y,                 /**< luminance channel */
103     CAM_RAWSTATSV2_MODE_MAX,                  /**< upper border (only for an internal evaluation) */
104 } CalibDb_CamRawStatsModeV2_t;
105 
106 typedef enum _CalibDb_CamHistStatsModeV2_e {
107     CAM_HISTV2_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
108     CAM_HISTV2_MODE_RGB_COMBINED  = 1,    /**< RGB combined histogram, only available for SiHist */
109     CAM_HISTV2_MODE_R             = 2,    /**< R histogram */
110     CAM_HISTV2_MODE_G             = 3,    /**< G histogram */
111     CAM_HISTV2_MODE_B             = 4,    /**< B histogram */
112     CAM_HISTV2_MODE_Y             = 5,    /**< Y luminance histogram */
113     CAM_HISTV2_MODE_MAX,                                  /**< upper border (only for an internal evaluation) */
114 } CalibDb_CamHistStatsModeV2_t;
115 
116 /*****************************************************************************/
117 /**
118  * @brief   ISP2.0 AEC algo CommonCtrl Config Params
119  */
120 /*****************************************************************************/
121 typedef struct CalibDb_AeDelayFrmNumV2_s {
122     // M4_ENUM_DESC("DelayType", "CalibDb_DelayTypeV2_t","DELAY_TYPE_FRAME")
123     CalibDb_DelayTypeV2_t   DelayType;
124 
125     // M4_NUMBER_DESC("BlackDelay", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
126     uint8_t                 BlackDelay;
127 
128     // M4_NUMBER_DESC("WhiteDelay", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
129     uint8_t                 WhiteDelay;
130 
131 } CalibDb_AeDelayFrmNumV2_t;
132 
133 typedef struct CalibDb_AeDyDamp_s {
134     // M4_BOOL_DESC("DyDampEn", "1")
135     bool                    DyDampEn;
136 
137     // M4_ENUM_DESC("SlowOPType", "RKAiqOPMode_t","RK_AIQ_OP_MODE_AUTO")
138     RKAiqOPMode_t           SlowOPType;
139 
140     // M4_NUMBER_DESC("SlowRange", "f32", M4_RANGE(0,100), "15", M4_DIGIT(2),M4_HIDE(0))
141     float                   SlowRange;
142 
143     // M4_NUMBER_DESC("SlowDamp", "f32", M4_RANGE(0,1), "0.95", M4_DIGIT(2),M4_HIDE(0))
144     float                   SlowDamp;
145 
146 } CalibDb_AeDyDamp_t;
147 
148 
149 typedef struct CalibDb_AeSpeedV2_s {
150     // M4_BOOL_DESC("SmoothEn", "1")
151     bool                    SmoothEn;
152 
153     // M4_NUMBER_DESC("DampOver", "f32", M4_RANGE(0,1.00), "0.15", M4_DIGIT(2),M4_HIDE(0))
154     float                   DampOver;
155 
156     // M4_NUMBER_DESC("DampUnder", "f32", M4_RANGE(0,1.00), "0.45", M4_DIGIT(2),M4_HIDE(0))
157     float                   DampUnder;
158 
159     // M4_NUMBER_DESC("DampDark2Bright", "f32", M4_RANGE(0,1.00), "0.15", M4_DIGIT(2),M4_HIDE(0))
160     float                   DampDark2Bright;
161 
162     // M4_NUMBER_DESC("DampBright2Dark", "f32", M4_RANGE(0,1.00), "0.45", M4_DIGIT(2),M4_HIDE(0))
163     float                   DampBright2Dark;
164 
165     // M4_STRUCT_DESC("DyDamp", "normal_ui_style")
166     CalibDb_AeDyDamp_t      DyDamp;
167 } CalibDb_AeSpeedV2_t;
168 
169 typedef struct CalibDb_AeFrmRateAttrV2_s {
170     // M4_BOOL_DESC("isFpsFix", "1")
171     bool                    isFpsFix;
172 
173     // M4_NUMBER_DESC("FpsValue", "f32", M4_RANGE(0,1024), "0", M4_DIGIT(1),M4_HIDE(0))
174     float                   FpsValue;
175 
176 } CalibDb_AeFrmRateAttrV2_t;
177 
178 typedef struct CalibDb_AntiFlickerAttrV2_s {
179     // M4_BOOL_DESC("enable", "1")
180     bool                           enable;
181 
182     // M4_ENUM_DESC("Frequency", "CalibDb_FlickerFreqV2_t","AECV2_FLICKER_FREQUENCY_50HZ")
183     CalibDb_FlickerFreqV2_t        Frequency;
184 
185     // M4_ENUM_DESC("Mode", "CalibDb_AntiFlickerModeV2_t","AECV2_ANTIFLICKER_AUTO_MODE")
186     CalibDb_AntiFlickerModeV2_t    Mode;
187 } CalibDb_AntiFlickerAttrV2_t;
188 
189 //manual exposure
190 typedef struct CalibDb_LinMeAttrV2_s {
191     // M4_BOOL_DESC("ManualTimeEn", "1")
192     bool                 ManualTimeEn;
193 
194     // M4_BOOL_DESC("ManualGainEn", "1")
195     bool                 ManualGainEn;
196 
197     // M4_BOOL_DESC("ManualIspDgainEn", "1")
198     bool                 ManualIspDgainEn;
199 
200     // M4_NUMBER_DESC("TimeValue", "f32", M4_RANGE(0,1), "0.003", M4_DIGIT(6),M4_HIDE(0))
201     float                TimeValue; //unit: s = 10^6 us
202 
203     // M4_NUMBER_DESC("GainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
204     float                GainValue;
205 
206     // M4_NUMBER_DESC("IspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
207     float                IspDGainValue;
208 } CalibDb_LinMeAttrV2_t;
209 
210 typedef struct CalibDb_HdrMeAttrV2_s {
211     // M4_BOOL_DESC("ManualTimeEn", "1")
212     bool                    ManualTimeEn;
213 
214     // M4_BOOL_DESC("ManualGainEn", "1")
215     bool                    ManualGainEn;
216 
217     // M4_BOOL_DESC("ManualIspDgainEn", "1")
218     bool                    ManualIspDgainEn;
219 
220     // M4_ARRAY_DESC("TimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.003", M4_DIGIT(6), M4_DYNAMIC(0))
221     float                   TimeValue[AECV2_MAX_HDRFRAME_NUM];
222 
223     // M4_ARRAY_DESC("GainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
224     float                   GainValue[AECV2_MAX_HDRFRAME_NUM];
225 
226     // M4_ARRAY_DESC("IspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
227     float                   IspDGainValue[AECV2_MAX_HDRFRAME_NUM];
228 } CalibDb_HdrMeAttrV2_t;
229 
230 typedef struct CalibDb_MeAttrV2_s {
231     // M4_STRUCT_DESC("LinearAE", "normal_ui_style")
232     CalibDb_LinMeAttrV2_t    LinearAE;
233 
234     // M4_STRUCT_DESC("HdrAE", "normal_ui_style")
235     CalibDb_HdrMeAttrV2_t    HdrAE;
236 } CalibDb_MeAttrV2_t;
237 
238 //win_scale = [h_off, v_off, h_size, v_size], range=[0,1]
239 typedef struct CalibDb_Aec_WinScale_s {
240     // M4_NUMBER_DESC("h_offs", "f32", M4_RANGE(0,1), "0", M4_DIGIT(2),M4_HIDE(0))
241     float h_offs;
242 
243     // M4_NUMBER_DESC("v_offs", "f32", M4_RANGE(0,1), "0", M4_DIGIT(2),M4_HIDE(0))
244     float v_offs;
245 
246     // M4_NUMBER_DESC("h_size", "f32", M4_RANGE(0,1), "1", M4_DIGIT(2),M4_HIDE(0))
247     float h_size;
248 
249     // M4_NUMBER_DESC("v_size", "f32", M4_RANGE(0,1), "1", M4_DIGIT(2),M4_HIDE(0))
250     float v_size;
251 } CalibDb_Aec_WinScale_t;
252 
253 typedef struct CalibDb_Aec_WinScaleV2_t {
254 
255     // M4_STRUCT_DESC("InRawWinScale", "normal_ui_style")
256     CalibDb_Aec_WinScale_t        InRawWinScale;
257 
258     // M4_STRUCT_DESC("TmoRawWinScale", "normal_ui_style")
259     CalibDb_Aec_WinScale_t        TmoRawWinScale;
260 
261     // M4_STRUCT_DESC("YuvWinScale", "normal_ui_style")
262     CalibDb_Aec_WinScale_t        YuvWinScale;
263 } CalibDb_Aec_WinScaleV2_t;
264 
265 typedef struct CalibDb_AeEnvLvCalibV2_s {
266     // M4_BOOL_DESC("Enable", "0")
267     bool         Enable;
268 
269     // M4_NUMBER_DESC("CalibFNumber", "f32", M4_RANGE(0,256), "1.6", M4_DIGIT(2),M4_HIDE(0))
270     float        CalibFNumber;
271 
272     // M4_ARRAY_DESC("CurveCoeff", "f32", M4_SIZE(1,2), M4_RANGE(-1024,1024), "1.0", M4_DIGIT(5), M4_DYNAMIC(0))
273     float        CurveCoeff[2];//y=ax+b, Coeff=[a,b]
274 } CalibDb_AeEnvLvCalibV2_t;
275 
276 typedef struct CalibDb_AecCommon_AttrV2_s {
277     // M4_BOOL_DESC("Enable", "1")
278     bool                              Enable;
279 
280     // M4_NUMBER_DESC("AecRunInterval", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0),M4_HIDE(0))
281     uint8_t                           AecRunInterval;
282 
283     // M4_ENUM_DESC("AecOpType", "RKAiqOPMode_t","RK_AIQ_OP_MODE_AUTO")
284     RKAiqOPMode_t                     AecOpType;
285 
286     // M4_ENUM_DESC("HistStatsMode", "CalibDb_CamHistStatsModeV2_t","CAM_HISTV2_MODE_G")
287     CalibDb_CamHistStatsModeV2_t      HistStatsMode;
288 
289     // M4_ENUM_DESC("RawStatsMode", "CalibDb_CamRawStatsModeV2_t","CAM_RAWSTATSV2_MODE_G")
290     CalibDb_CamRawStatsModeV2_t       RawStatsMode;
291 
292     // M4_ENUM_DESC("YRangeMode", "CalibDb_CamYRangeModeV2_t","CAM_YRANGEV2_MODE_FULL")
293     CalibDb_CamYRangeModeV2_t         YRangeMode;
294 
295     // M4_ARRAY_DESC("AecGridWeight", "u8", M4_SIZE(15,15), M4_RANGE(0,32), "1", M4_DIGIT(0), M4_DYNAMIC(0))
296     uint8_t                           AecGridWeight[AECV2_MAX_GRIDWEIGHT_NUM];
297 
298     // M4_STRUCT_DESC("AecManualCtrl", "normal_ui_style")
299     CalibDb_MeAttrV2_t                AecManualCtrl;
300 
301     // M4_STRUCT_DESC("AecSpeed", "normal_ui_style")
302     CalibDb_AeSpeedV2_t               AecSpeed;
303 
304     // M4_STRUCT_DESC("AecDelay", "normal_ui_style")
305     CalibDb_AeDelayFrmNumV2_t         AecDelay;
306 
307     // M4_STRUCT_DESC("AecFrameRateMode", "normal_ui_style")
308     CalibDb_AeFrmRateAttrV2_t         AecFrameRateMode;
309 
310     // M4_STRUCT_DESC("AecAntiFlicker", "normal_ui_style")
311     CalibDb_AntiFlickerAttrV2_t       AecAntiFlicker;
312 
313     // M4_STRUCT_DESC("AecEnvLvCalib", "normal_ui_style")
314     CalibDb_AeEnvLvCalibV2_t          AecEnvLvCalib;
315 
316     // M4_STRUCT_DESC("AecWinScale", "normal_ui_style")
317     CalibDb_Aec_WinScaleV2_t          AecWinScale;
318 } CalibDb_AecCommon_AttrV2_t;
319 
320 /*****************************************************************************/
321 /**
322  * @brief   ISP2.0 AEC algo LinAE Config Params
323  */
324 /*****************************************************************************/
325 typedef struct CalibDb_LinExpInitExpV2_s {
326     // M4_NUMBER_DESC("InitTimeValue", "f32", M4_RANGE(0,1), "0.003", M4_DIGIT(6),M4_HIDE(0))
327     float                   InitTimeValue;
328 
329     // M4_NUMBER_DESC("InitGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
330     float                   InitGainValue;
331 
332     // M4_NUMBER_DESC("InitIspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
333     float                   InitIspDGainValue;
334 
335     // M4_NUMBER_DESC("InitPIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
336     int                     InitPIrisGainValue;
337 
338     // M4_NUMBER_DESC("InitDCIrisDutyValue", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
339     int                     InitDCIrisDutyValue;
340 
341     // M4_NUMBER_DESC("InitHDCIrisTargetValue", "s32", M4_RANGE(0,1023), "1023", M4_DIGIT(0),M4_HIDE(0))
342     int                     InitHDCIrisTargetValue;
343 } CalibDb_LinExpInitExpV2_t;
344 
345 typedef struct CalibDb_LinAeRoute_AttrV2_s {
346     // M4_ARRAY_DESC("TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
347     float*                    TimeDot;
348     int                       TimeDot_len;
349     // M4_ARRAY_DESC("GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
350     float*                    GainDot;
351     int                       GainDot_len;
352     // M4_ARRAY_DESC("IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
353     float*                    IspDGainDot;
354     int                       IspDGainDot_len;
355     // M4_ARRAY_DESC("PIrisDot", "s32", M4_SIZE(1,6), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(1))
356     int*                      PIrisDot;
357     int                       PIrisDot_len;
358 } CalibDb_LinAeRoute_AttrV2_t;
359 
360 typedef struct CalibDb_AecDynamicSetpointV2_s {
361     // M4_ARRAY_DESC("ExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
362     float*                    ExpLevel;
363     int                       ExpLevel_len;
364     // M4_ARRAY_DESC("DySetpoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
365     float*                    DySetpoint;
366     int                       DySetpoint_len;
367 } CalibDb_AecDynamicSetpointV2_t;
368 
369 typedef struct CalibDb_BacklitSetPointV2_s {
370     // M4_ARRAY_DESC("ExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
371     float*                     ExpLevel;
372     int                        ExpLevel_len;
373     // M4_ARRAY_DESC("NonOEPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.4", M4_DIGIT(2), M4_DYNAMIC(1))
374     float*                     NonOEPdfTh;
375     int                        NonOEPdfTh_len;
376     // M4_ARRAY_DESC("LowLightPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.2", M4_DIGIT(2), M4_DYNAMIC(1))
377     float*                     LowLightPdfTh;
378     int                        LowLightPdfTh_len;
379     // M4_ARRAY_DESC("TargetLLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
380     float*                     TargetLLLuma;
381     int                        TargetLLLuma_len;
382 } CalibDb_BacklitSetPointV2_t;
383 
384 typedef struct CalibDb_AecBacklightV2_s {
385     // M4_BOOL_DESC("Enable", "0")
386     bool                        Enable;
387 
388     // M4_NUMBER_DESC("StrBias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
389     float                       StrBias;//uint: %
390 
391     // M4_ENUM_DESC("MeasArea", "CalibDb_AecMeasAreaModeV2_t","AECV2_MEASURE_AREA_AUTO")
392     CalibDb_AecMeasAreaModeV2_t MeasArea;
393 
394     // M4_NUMBER_DESC("OEROILowTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
395     float                       OEROILowTh;
396 
397     // M4_NUMBER_DESC("LumaDistTh", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
398     float                       LumaDistTh;//uint: %
399 
400     // M4_NUMBER_DESC("LvLowTh", "f32", M4_RANGE(0,100), "0.3125", M4_DIGIT(4),M4_HIDE(0))
401     float                       LvLowTh;
402 
403     // M4_NUMBER_DESC("LvHighTh", "f32", M4_RANGE(0,100), "7.5", M4_DIGIT(4),M4_HIDE(0))
404     float                       LvHighTh;
405 
406     // M4_ARRAY_TABLE_DESC("BacklitSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
407     CalibDb_BacklitSetPointV2_t BacklitSetPoint;
408 } CalibDb_AecBacklightV2_t;
409 
410 typedef struct CalibDb_OverExpSetPointV2_s {
411     // M4_ARRAY_DESC("OEpdf", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(2), M4_DYNAMIC(1))
412     float*                      OEpdf;
413     int                         OEpdf_len;
414     // M4_ARRAY_DESC("LowLightWeight", "f32", M4_SIZE(1,6), M4_RANGE(0,20), "1", M4_DIGIT(2), M4_DYNAMIC(1))
415     float*                      LowLightWeight;
416     int                         LowLightWeight_len;
417     // M4_ARRAY_DESC("HighLightWeight", "f32", M4_SIZE(1,6), M4_RANGE(0,20), "2", M4_DIGIT(2), M4_DYNAMIC(1))
418     float*                      HighLightWeight;
419     int                         HighLightWeight_len;
420 } CalibDb_OverExpSetPointV2_t;
421 
422 typedef struct CalibDb_AecOverExpCtrlV2_s {
423     // M4_BOOL_DESC("Enable", "0")
424     bool                       Enable;
425 
426     // M4_NUMBER_DESC("StrBias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
427     float                      StrBias; //uint: %
428 
429     // M4_NUMBER_DESC("MaxWeight", "f32", M4_RANGE(0,20), "8", M4_DIGIT(2),M4_HIDE(0))
430     float                      MaxWeight;
431 
432     // M4_NUMBER_DESC("HighLightTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
433     float                      HighLightTh;
434 
435     // M4_NUMBER_DESC("LowLightTh", "f32", M4_RANGE(0,255), "30", M4_DIGIT(2),M4_HIDE(0))
436     float                      LowLightTh;
437 
438     // M4_ARRAY_TABLE_DESC("OverExpSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
439     CalibDb_OverExpSetPointV2_t  OverExpSetPoint;
440 } CalibDb_AecOverExpCtrlV2_t;
441 
442 typedef struct CalibDb_LinearAE_AttrV2_s {
443     // M4_BOOL_DESC("RawStatsEn", "1")
444     bool                            RawStatsEn;
445 
446     // M4_NUMBER_DESC("ToleranceIn", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
447     float                           ToleranceIn;//uint: %
448 
449     // M4_NUMBER_DESC("ToleranceOut", "f32", M4_RANGE(0,100), "15", M4_DIGIT(2),M4_HIDE(0))
450     float                           ToleranceOut;//uint: %
451 
452     // M4_NUMBER_DESC("Evbias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(2),M4_HIDE(1))
453     float                           Evbias; //uint: %
454 
455     // M4_ENUM_DESC("StrategyMode", "CalibDb_AeStrategyModeV2_t","AECV2_STRATEGY_MODE_LOWLIGHT")
456     CalibDb_AeStrategyModeV2_t      StrategyMode;
457 
458     // M4_STRUCT_DESC("InitExp", "normal_ui_style")
459     CalibDb_LinExpInitExpV2_t       InitExp;
460 
461     // M4_ARRAY_TABLE_DESC("Route", "array_table_ui", M4_INDEX_DEFAULT)
462     CalibDb_LinAeRoute_AttrV2_t     Route;
463 
464     // M4_ARRAY_TABLE_DESC("DySetpoint", "array_table_ui", M4_INDEX_DEFAULT)
465     CalibDb_AecDynamicSetpointV2_t  DySetpoint;
466 
467     // M4_STRUCT_DESC("BackLightCtrl", "normal_ui_style")
468     CalibDb_AecBacklightV2_t        BackLightCtrl;
469 
470     // M4_STRUCT_DESC("OverExpCtrl", "normal_ui_style")
471     CalibDb_AecOverExpCtrlV2_t      OverExpCtrl;
472 } CalibDb_LinearAE_AttrV2_t;
473 
474 /*****************************************************************************/
475 /**
476  * @brief   ISP2.0 AEC algo HdrAE Config Params
477  */
478 /*****************************************************************************/
479 typedef struct CalibDb_HdrExpInitExpV2_s {
480     // M4_ARRAY_DESC("InitTimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.01", M4_DIGIT(6), M4_DYNAMIC(0))
481     float                   InitTimeValue[AECV2_MAX_HDRFRAME_NUM];
482 
483     // M4_ARRAY_DESC("InitGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
484     float                   InitGainValue[AECV2_MAX_HDRFRAME_NUM];
485 
486     // M4_ARRAY_DESC("InitIspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
487     float                   InitIspDGainValue[AECV2_MAX_HDRFRAME_NUM];
488 
489     // M4_NUMBER_DESC("InitPIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
490     int                     InitPIrisGainValue;
491 
492     // M4_NUMBER_DESC("InitDCIrisDutyValue", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
493     int                     InitDCIrisDutyValue;
494 
495     // M4_NUMBER_DESC("InitHDCIrisTargetValue", "s32", M4_RANGE(0,1023), "1023", M4_DIGIT(0),M4_HIDE(0))
496     int                     InitHDCIrisTargetValue;
497 } CalibDb_HdrExpInitExpV2_t;
498 
499 typedef struct CalibDb_ExpRatioV2_s {
500     // M4_ARRAY_DESC("RatioExpDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
501     float*            RatioExpDot;
502     int               RatioExpDot_len;
503     // M4_ARRAY_DESC("M2SRatioFix", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "8", M4_DIGIT(2), M4_DYNAMIC(1))
504     float*            M2SRatioFix;
505     int               M2SRatioFix_len;
506     // M4_ARRAY_DESC("L2MRatioFix", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "8", M4_DIGIT(2), M4_DYNAMIC(1))
507     float*            L2MRatioFix;
508     int               L2MRatioFix_len;
509     // M4_ARRAY_DESC("M2SRatioMax", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "64", M4_DIGIT(2), M4_DYNAMIC(1))
510     float*            M2SRatioMax;
511     int               M2SRatioMax_len;
512     // M4_ARRAY_DESC("L2MRatioMax", "f32", M4_SIZE(1,6), M4_RANGE(1,256), "64", M4_DIGIT(2), M4_DYNAMIC(1))
513     float*            L2MRatioMax;
514     int               L2MRatioMax_len;
515 } CalibDb_ExpRatioV2_t;
516 
517 typedef struct CalibDb_ExpRatioCtrlV2_s {
518     // M4_ENUM_DESC("ExpRatioType", "CalibDb_HdrAeRatioTypeV2_t","AECV2_HDR_RATIOTYPE_MODE_AUTO")
519     CalibDb_HdrAeRatioTypeV2_t     ExpRatioType;
520 
521     // M4_ARRAY_TABLE_DESC("ExpRatio", "array_table_ui", M4_INDEX_DEFAULT)
522     CalibDb_ExpRatioV2_t           ExpRatio;
523 } CalibDb_ExpRatioCtrlV2_t;
524 
525 typedef struct CalibDb_HdrAeRoute_AttrV2_s {
526     // M4_ARRAY_DESC("Frm0TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
527     float*                    Frm0TimeDot;
528     int                       Frm0TimeDot_len;
529     // M4_ARRAY_DESC("Frm0GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
530     float*                    Frm0GainDot;
531     int                       Frm0GainDot_len;
532     // M4_ARRAY_DESC("Frm0IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
533     float*                    Frm0IspDGainDot;
534     int                       Frm0IspDGainDot_len;
535     // M4_ARRAY_DESC("Frm1TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
536     float*                    Frm1TimeDot;
537     int                       Frm1TimeDot_len;
538     // M4_ARRAY_DESC("Frm1GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
539     float*                    Frm1GainDot;
540     int                       Frm1GainDot_len;
541     // M4_ARRAY_DESC("Frm1IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
542     float*                    Frm1IspDGainDot;
543     int                       Frm1IspDGainDot_len;
544     // M4_ARRAY_DESC("Frm2TimeDot", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0", M4_DIGIT(6), M4_DYNAMIC(1))
545     float*                    Frm2TimeDot;
546     int                       Frm2TimeDot_len;
547     // M4_ARRAY_DESC("Frm2GainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
548     float*                    Frm2GainDot;
549     int                       Frm2GainDot_len;
550     // M4_ARRAY_DESC("Frm2IspDGainDot", "f32", M4_SIZE(1,6), M4_RANGE(1,4096), "1", M4_DIGIT(3), M4_DYNAMIC(1))
551     float*                    Frm2IspDGainDot;
552     int                       Frm2IspDGainDot_len;
553     // M4_ARRAY_DESC("PIrisDot", "s32", M4_SIZE(1,6), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(1))
554     int*                      PIrisDot;
555     int                       PIrisDot_len;
556 } CalibDb_HdrAeRoute_AttrV2_t;
557 
558 typedef struct CalibDb_LfrmSetPointV2_s
559 {
560     // M4_ARRAY_DESC("LExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
561     float*                      LExpLevel;
562     int                         LExpLevel_len;
563     // M4_ARRAY_DESC("NonOEPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.4", M4_DIGIT(2), M4_DYNAMIC(1))
564     float*                      NonOEPdfTh;
565     int                         NonOEPdfTh_len;
566     // M4_ARRAY_DESC("LowLightPdfTh", "f32", M4_SIZE(1,6), M4_RANGE(0,1), "0.2", M4_DIGIT(2), M4_DYNAMIC(1))
567     float*                      LowLightPdfTh;
568     int                         LowLightPdfTh_len;
569     // M4_ARRAY_DESC("LSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
570     float*                      LSetPoint;
571     int                         LSetPoint_len;
572     // M4_ARRAY_DESC("TargetLLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
573     float*                      TargetLLLuma;
574     int                         TargetLLLuma_len;
575 } CalibDb_LfrmSetPointV2_t;
576 
577 typedef struct CalibDb_LfrmCtrlV2_s
578 {
579     // M4_NUMBER_DESC("OEROILowTh", "f32", M4_RANGE(0,255), "150", M4_DIGIT(2),M4_HIDE(0))
580     float                       OEROILowTh;
581 
582     // M4_NUMBER_DESC("LvLowTh", "f32", M4_RANGE(0,100), "0.3125", M4_DIGIT(4),M4_HIDE(0))
583     float                       LvLowTh;
584 
585     // M4_NUMBER_DESC("LvHighTh", "f32", M4_RANGE(0,100), "7.5", M4_DIGIT(4),M4_HIDE(0))
586     float                       LvHighTh;
587 
588     // M4_ARRAY_TABLE_DESC("LfrmSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
589     CalibDb_LfrmSetPointV2_t    LfrmSetPoint;
590 } CalibDb_LfrmCtrlV2_t;
591 
592 typedef struct CalibDb_MfrmCtrlV2_s
593 {
594     // M4_ARRAY_DESC("MExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(5), M4_DYNAMIC(1))
595     float*                  MExpLevel;
596     int                     MExpLevel_len;
597     // M4_ARRAY_DESC("MSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "40", M4_DIGIT(2), M4_DYNAMIC(1))
598     float*                  MSetPoint;
599     int                     MSetPoint_len;
600 } CalibDb_MfrmCtrlV2_t;
601 
602 typedef struct CalibDb_SfrmSetPointV2_s
603 {
604     // M4_ARRAY_DESC("SExpLevel", "f32", M4_SIZE(1,6), M4_RANGE(0,4096), "0", M4_DIGIT(6), M4_DYNAMIC(1))
605     float*                 SExpLevel;
606     int                    SExpLevel_len;
607     // M4_ARRAY_DESC("SSetPoint", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "20", M4_DIGIT(2), M4_DYNAMIC(1))
608     float*                 SSetPoint;
609     int                    SSetPoint_len;
610     // M4_ARRAY_DESC("TargetHLLuma", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "150", M4_DIGIT(2), M4_DYNAMIC(1))
611     float*                 TargetHLLuma;
612     int                    TargetHLLuma_len;
613 } CalibDb_SfrmSetPointV2_t;
614 
615 typedef struct CalibDb_SfrmCtrlV2_s
616 {
617     // M4_BOOL_DESC("HLROIExpandEn", "0")
618     bool                        HLROIExpandEn;
619 
620     // M4_NUMBER_DESC("HLLumaTolerance", "f32", M4_RANGE(0,100), "12", M4_DIGIT(2),M4_HIDE(0))
621     float                       HLLumaTolerance;//unit:%
622 
623     // M4_ARRAY_TABLE_DESC("SfrmSetPoint", "array_table_ui", M4_INDEX_DEFAULT)
624     CalibDb_SfrmSetPointV2_t    SfrmSetPoint;
625 } CalibDb_SfrmCtrlV2_t;
626 
627 typedef struct CalibDb_LongFrmCtrlV2_s {
628     // M4_ENUM_DESC("mode", "CalibDb_AeHdrLongFrmModeV2_t","AECV2_HDR_LONGFRMMODE_DISABLE")
629     CalibDb_AeHdrLongFrmModeV2_t    mode;
630 
631     // M4_NUMBER_DESC("SfrmMinLine", "u16", M4_RANGE(0,1024), "2", M4_DIGIT(0),M4_HIDE(0))
632     uint16_t                        SfrmMinLine;//uint:line
633 
634     // M4_NUMBER_DESC("LfrmModeExpTh", "f32", M4_RANGE(0,100), "0.62", M4_DIGIT(4),M4_HIDE(0))
635     float                           LfrmModeExpTh;
636 } CalibDb_LongFrmCtrlV2_t;
637 
638 typedef struct CalibDb_HdrAE_AttrV2_s {
639     // M4_NUMBER_DESC("ToleranceIn", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
640     float                           ToleranceIn;//unit:%
641 
642     // M4_NUMBER_DESC("ToleranceOut", "f32", M4_RANGE(0,100), "15", M4_DIGIT(2),M4_HIDE(0))
643     float                           ToleranceOut;//unit:%
644 
645     // M4_NUMBER_DESC("Evbias", "f32", M4_RANGE(-500,500), "0", M4_DIGIT(0),M4_HIDE(1))
646     float                           Evbias;
647 
648     // M4_ENUM_DESC("StrategyMode", "CalibDb_AeStrategyModeV2_t","AECV2_STRATEGY_MODE_LOWLIGHT")
649     CalibDb_AeStrategyModeV2_t      StrategyMode;
650 
651     // M4_NUMBER_DESC("LumaDistTh", "f32", M4_RANGE(0,100), "10", M4_DIGIT(2),M4_HIDE(0))
652     float                           LumaDistTh; //used for area-growing,unit:%
653 
654     // M4_STRUCT_DESC("InitExp", "normal_ui_style")
655     CalibDb_HdrExpInitExpV2_t       InitExp;
656 
657     // M4_ARRAY_TABLE_DESC("Route", "array_table_ui", M4_INDEX_DEFAULT)
658     CalibDb_HdrAeRoute_AttrV2_t     Route;
659 
660     // M4_STRUCT_DESC("ExpRatioCtrl", "normal_ui_style")
661     CalibDb_ExpRatioCtrlV2_t        ExpRatioCtrl;
662 
663     // M4_STRUCT_DESC("LongFrmMode", "normal_ui_style")
664     CalibDb_LongFrmCtrlV2_t         LongFrmMode;
665 
666     // M4_STRUCT_DESC("LframeCtrl", "normal_ui_style")
667     CalibDb_LfrmCtrlV2_t            LframeCtrl;
668 
669     // M4_ARRAY_TABLE_DESC("MframeCtrl", "array_table_ui", M4_INDEX_DEFAULT)
670     CalibDb_MfrmCtrlV2_t            MframeCtrl;
671 
672     // M4_STRUCT_DESC("SframeCtrl", "normal_ui_style")
673     CalibDb_SfrmCtrlV2_t            SframeCtrl;
674 } CalibDb_HdrAE_AttrV2_t;
675 
676 /*****************************************************************************/
677 /**
678  * @brief   ISP2.0 AEC algo SyncTest Config Params
679  */
680 /*****************************************************************************/
681 typedef struct CalibDb_LinAlterExpV2_s {
682     // M4_NUMBER_DESC("TimeValue", "f32", M4_RANGE(0,1), "0.01", M4_DIGIT(6),M4_HIDE(0))
683     float                    TimeValue;
684 
685     // M4_NUMBER_DESC("GainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
686     float                    GainValue;
687 
688     // M4_NUMBER_DESC("IspDGainValue", "f32", M4_RANGE(1,4096), "1", M4_DIGIT(3),M4_HIDE(0))
689     float                    IspDGainValue;
690 
691     // M4_NUMBER_DESC("PIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
692     int                      PIrisGainValue;
693 
694     // M4_NUMBER_DESC("DcgMode", "s32", M4_RANGE(-1,1), "0", M4_DIGIT(0),M4_HIDE(0))
695     int                      DcgMode;
696 } CalibDb_LinAlterExpV2_t;
697 
698 typedef struct CalibDb_HdrAlterExpV2_s {
699     // M4_ARRAY_DESC("TimeValue", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.01", M4_DIGIT(6), M4_DYNAMIC(0))
700     float                    TimeValue[AECV2_MAX_HDRFRAME_NUM];
701 
702     // M4_ARRAY_DESC("GainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
703     float                    GainValue[AECV2_MAX_HDRFRAME_NUM];
704 
705     // M4_ARRAY_DESC("IspDGainValue", "f32", M4_SIZE(1,3), M4_RANGE(1,4096), "1.0", M4_DIGIT(3), M4_DYNAMIC(0))
706     float                    IspDGainValue[AECV2_MAX_HDRFRAME_NUM];
707 
708     // M4_NUMBER_DESC("PIrisGainValues", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
709     int                      PIrisGainValue;
710 
711     // M4_ARRAY_DESC("DcgMode", "s32", M4_SIZE(1,3), M4_RANGE(-1,1), "0", M4_DIGIT(0), M4_DYNAMIC(0))
712     int                      DcgMode[AECV2_MAX_HDRFRAME_NUM];
713 } CalibDb_HdrAlterExpV2_t;
714 
715 typedef struct CalibDb_AlterExpV2_s {
716     // M4_STRUCT_LIST_DESC("LinearAE", M4_SIZE_DYNAMIC,"normal_ui_style")
717     CalibDb_LinAlterExpV2_t*       LinearAE;
718     int                            LinearAE_len;
719 
720     // M4_STRUCT_LIST_DESC("HdrAE", M4_SIZE_DYNAMIC,"normal_ui_style")
721     CalibDb_HdrAlterExpV2_t*       HdrAE;
722     int                            HdrAE_len;
723 } CalibDb_AlterExpV2_t;
724 
725 typedef struct CalibDb_AeSyncTestV2_s {
726     // M4_BOOL_DESC("Enable", "0")
727     bool                        Enable;
728 
729     // M4_NUMBER_DESC("IntervalFrm", "s32", M4_RANGE(0,1024), "5", M4_DIGIT(0),M4_HIDE(0))
730     int                         IntervalFrm;
731 
732     // M4_STRUCT_DESC("AlterExp", "normal_ui_style")
733     CalibDb_AlterExpV2_t        AlterExp;
734 } CalibDb_AeSyncTestV2_t;
735 
736 /*****************************************************************************/
737 /**
738  * @brief   ISP2.0 AEC algo IrisCtrl Config Params
739  */
740 /*****************************************************************************/
741 typedef struct CalibDb_MIris_AttrV2_s {
742     // M4_NUMBER_DESC("PIrisGainValue", "s32", M4_RANGE(1,4096), "1024", M4_DIGIT(0),M4_HIDE(0))
743     int                  PIrisGainValue;
744 
745     // M4_NUMBER_DESC("DCIrisHoldValue", "s32", M4_RANGE(0,100), "50", M4_DIGIT(0),M4_HIDE(0))
746     int                  DCIrisHoldValue;
747 
748     // M4_NUMBER_DESC("HDCIrisTargetValue", "s32", M4_RANGE(0,1023), "1023", M4_DIGIT(0),M4_HIDE(0))
749     int                  HDCIrisTargetValue;
750 } CalibDb_MIris_AttrV2_t;
751 
752 typedef struct CalibDb_PIris_AttrV2_s {
753     // M4_NUMBER_DESC("TotalStep", "u16", M4_RANGE(0,1024), "81", M4_DIGIT(0),M4_HIDE(0))
754     uint16_t             TotalStep;
755 
756     // M4_NUMBER_DESC("EffcStep", "u16", M4_RANGE(0,1024), "64", M4_DIGIT(0),M4_HIDE(0))
757     uint16_t             EffcStep;
758 
759     // M4_BOOL_DESC("ZeroIsMax", "1")
760     bool                 ZeroIsMax;
761 
762     // M4_ARRAY_DESC("StepTable", "u16", M4_SIZE(1,1024), M4_RANGE(1,4096), "1024", M4_DIGIT(0), M4_DYNAMIC(0))
763     uint16_t             StepTable[AECV2_PIRIS_STEP_TABLE_MAX];
764 } CalibDb_PIris_AttrV2_t;
765 
766 typedef struct CalibDb_DCIris_AttrV2_s {
767     // M4_NUMBER_DESC("Kp", "f32", M4_RANGE(0,10), "1", M4_DIGIT(2),M4_HIDE(0))
768     float       Kp;
769     // M4_NUMBER_DESC("Ki", "f32", M4_RANGE(0,10), "0.2", M4_DIGIT(2),M4_HIDE(0))
770     float       Ki;
771     // M4_NUMBER_DESC("Kd", "f32", M4_RANGE(0,10), "0.5", M4_DIGIT(2),M4_HIDE(0))
772     float       Kd;
773     // M4_NUMBER_DESC("MinPwmDuty", "s32", M4_RANGE(0,100), "0", M4_DIGIT(0),M4_HIDE(0))
774     int         MinPwmDuty;
775     // M4_NUMBER_DESC("MaxPwmDuty", "s32", M4_RANGE(0,100), "100", M4_DIGIT(0),M4_HIDE(0))
776     int         MaxPwmDuty;
777     // M4_NUMBER_DESC("OpenPwmDuty", "s32", M4_RANGE(0,100), "50", M4_DIGIT(0),M4_HIDE(0))
778     int         OpenPwmDuty;
779     // M4_NUMBER_DESC("ClosePwmDuty", "s32", M4_RANGE(0,100), "60", M4_DIGIT(0),M4_HIDE(0))
780     int         ClosePwmDuty;
781 } CalibDb_DCIris_AttrV2_t;
782 
783 typedef struct CalibDb_HDCIris_AttrV2_s {
784     // M4_NUMBER_DESC("DampOver", "f32", M4_RANGE(0,1), "0.15", M4_DIGIT(2),M4_HIDE(0))
785     float       DampOver;
786 
787     // M4_NUMBER_DESC("DampUnder", "f32", M4_RANGE(0,1), "0.45", M4_DIGIT(2),M4_HIDE(0))
788     float       DampUnder;
789 
790     // M4_BOOL_DESC("ZeroIsMax", "0")
791     bool        ZeroIsMax;
792 
793     // M4_NUMBER_DESC("MinTarget", "s32", M4_RANGE(0,1023), "0", M4_DIGIT(0),M4_HIDE(0))
794     int         MinTarget;
795 
796     // M4_NUMBER_DESC("MaxTarget", "s32", M4_RANGE(0,1023), "1023", M4_DIGIT(0),M4_HIDE(0))
797     int         MaxTarget;
798 
799     // M4_ARRAY_DESC("ZoomTargetDot", "s32", M4_SIZE(1,256), M4_RANGE(0,1023), "1023", M4_DIGIT(0), M4_DYNAMIC(1),M4_HIDE(0))
800     int         ZoomTargetDot[AECV2_HDCIRIS_DOT_MAX_NUM];
801 
802     // M4_ARRAY_DESC("ZoomDot", "s32", M4_SIZE(1,256), M4_RANGE(-32768,32767), "0", M4_DIGIT(0), M4_DYNAMIC(1),M4_HIDE(0))
803     int         ZoomDot[AECV2_HDCIRIS_DOT_MAX_NUM];
804 
805     // M4_ARRAY_DESC("TargetDot", "s32", M4_SIZE(1,256), M4_RANGE(0,1023), "1023", M4_DIGIT(0), M4_DYNAMIC(1),M4_HIDE(0))
806     int         IrisTargetDot[AECV2_HDCIRIS_DOT_MAX_NUM];
807 
808     // M4_ARRAY_DESC("GainDot", "s32", M4_SIZE(1,256), M4_RANGE(1,512), "512", M4_DIGIT(0), M4_DYNAMIC(1),M4_HIDE(0))
809     int         GainDot[AECV2_HDCIRIS_DOT_MAX_NUM];
810 
811     // M4_NUMBER_DESC("ZoomTargetDot_len", "s32", M4_RANGE(1,256), "12", M4_DIGIT(0),M4_HIDE(0))
812     int         ZoomTargetDot_len;
813 
814     // M4_NUMBER_DESC("IrisTargetDot_len", "s32", M4_RANGE(1,256), "12", M4_DIGIT(0),M4_HIDE(0))
815     int         IrisTargetDot_len;
816 } CalibDb_HDCIris_AttrV2_t;
817 
818 typedef struct CalibDb_AecIrisCtrlV2_s {
819     // M4_BOOL_DESC("Enable", "0")
820     bool                         Enable;
821 
822     // M4_ENUM_DESC("IrisType", "CalibDb_IrisTypeV2_t","IRISV2_DC_TYPE")
823     CalibDb_IrisTypeV2_t         IrisType;
824 
825     // M4_BOOL_DESC("ManualEn", "0")
826     bool                         ManualEn;
827 
828     // M4_STRUCT_DESC("ManualAttr", "normal_ui_style")
829     CalibDb_MIris_AttrV2_t       ManualAttr;
830 
831     // M4_STRUCT_DESC("InitAttr", "normal_ui_style")
832     CalibDb_MIris_AttrV2_t       InitAttr;
833 
834     // M4_STRUCT_DESC("PIrisAttr", "normal_ui_style")
835     CalibDb_PIris_AttrV2_t       PIrisAttr;
836 
837     // M4_STRUCT_DESC("DCIrisAttr", "normal_ui_style")
838     CalibDb_DCIris_AttrV2_t      DCIrisAttr;
839 
840     // M4_STRUCT_DESC("HDCIrisAttr", "normal_ui_style")
841     CalibDb_HDCIris_AttrV2_t     HDCIrisAttr;
842 } CalibDb_AecIrisCtrlV2_t;
843 
844 /*****************************************************************************/
845 /**
846  * @brief   Global AEC tuning structure of isp2.0
847  */
848 /*****************************************************************************/
849 typedef struct CalibDb_Aec_ParaV2_s {
850     // M4_STRUCT_DESC("CommCtrl", "normal_ui_style")
851     CalibDb_AecCommon_AttrV2_t          CommCtrl;
852 
853     // M4_STRUCT_DESC("LinearAeCtrl", "normal_ui_style")
854     CalibDb_LinearAE_AttrV2_t           LinearAeCtrl;
855 
856     // M4_STRUCT_DESC("HdrAeCtrl", "normal_ui_style")
857     CalibDb_HdrAE_AttrV2_t              HdrAeCtrl;
858 
859     // M4_STRUCT_DESC("IrisCtrl", "normal_ui_style")
860     CalibDb_AecIrisCtrlV2_t             IrisCtrl;
861 
862     // M4_STRUCT_DESC("SyncTest", "normal_ui_style")
863     CalibDb_AeSyncTestV2_t              SyncTest; //special module for debug
864 } CalibDb_Aec_ParaV2_t;
865 
866 RKAIQ_END_DECLARE
867 
868 #endif
869