xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser/RkAiqCalibDbTypesIsp20.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #ifndef _RK_AIQ_CALIB_TYPES_ISP20_H_
2 #define _RK_AIQ_CALIB_TYPES_ISP20_H_
3 
4 #include "adpcc/rk_aiq_types_adpcc_ext.h"
5 
6 #pragma pack(4)
7 
8 #define CALIBDB_MAX_ISO_LEVEL 13
9 #define CALIBDB_NR_SHARP_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
10 #define CALIBDB_DPCC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
11 #define CALIBDB_BLC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
12 #define CALIBDB_NR_SHARP_SETTING_LEVEL 6
13 #define CALIBDB_MAX_MODE_NUM 5
14 #define CALIBDB_MAX_MODE_NAME_LENGTH (20)
15 //TODO: define max size as 256 temporarily
16 //#define CALIBDB_ZOOM_FOCUS_TBL_SIZE 10240
17 #define CALIBDB_ZOOM_FOCUS_TBL_SIZE 256
18 #define CALIBDB_DEGAMMA_CRUVE_KNOTS 17
19 
20 #define CALIBDB_MAX_SCENE_NAME_LENGTH (10)
21 /*****************************************************************************/
22 /**
23  * @brief   ISP2.0 AEC Algo Params
24  */
25 /*****************************************************************************/
26 
27 #define AEC_ECM_SCHEME_NAME         ( 20U )
28 typedef char                        AecEcmSchemeName_t[AEC_ECM_SCHEME_NAME];
29 
30 #define AEC_ECM_PROFILE_NAME        ( 20U )
31 typedef char                        AecEcmProfileName_t[AEC_ECM_PROFILE_NAME];
32 
33 #define AEC_DYNAMIC_SETPOINT_NAME   ( 20U )
34 typedef char                        AecDynamicSetpointName_t[AEC_DYNAMIC_SETPOINT_NAME];
35 
36 #define AEC_EXP_SEPARATE_NAME       ( 20U )
37 typedef char                        AecExpSeparateName_t[AEC_EXP_SEPARATE_NAME];
38 
39 #define AEC_RAWAEBIG_WIN_NUM (15*15)
40 #define AEC_RAWAELITE_WIN_NUM (5*5)
41 
42 typedef enum _CalibDb_HdrAeRatioType_e {
43     RKAIQ_HDRAE_RATIOTYPE_MODE_INVALID    = 0,
44     RKAIQ_HDRAE_RATIOTYPE_MODE_AUTO   = 1,
45     RKAIQ_HDRAE_RATIOTYPE_MODE_FIX    = 2,
46     RKAIQ_HDRAE_RATIOTYPE_MODE_MAX
47 } CalibDb_HdrAeRatioType_t;
48 
49 typedef enum _CalibDb_AeStrategyMode_e {
50     RKAIQ_AEC_STRATEGY_MODE_AUTO    = 0,
51     RKAIQ_AEC_STRATEGY_MODE_LOWLIGHT_PRIOR     = 1,
52     RKAIQ_AEC_STRATEGY_MODE_HIGHLIGHT_PRIOR    = 2,
53     RKAIQ_AEC_STRATEGY_MODE_MAX
54 } CalibDb_AeStrategyMode_t;
55 
56 typedef enum _CalibDb_AeHdrLongFrmMode_e {
57     RKAIQ_AEC_HDR_LONGFRMMODE_NORMAL             = 0,
58     RKAIQ_AEC_HDR_LONGFRMMODE_AUTO_LONG_FRAME    = 1,
59     RKAIQ_AEC_HDR_LONGFRMMODE_LONG_FRAME         = 2,
60 } CalibDb_AeHdrLongFrmMode_t;
61 
62 typedef enum _CalibDb_AecDayNightMode_e {
63     AEC_DNMODE_MIN = -1,
64     AEC_DNMODE_DAY = 0,
65     AEC_DNMODE_NIGHT = 1, /*night mode or IR night-vision mode*/
66     AEC_DNMODE_MAX = 2,
67 } CalibDb_AecDayNightMode_t;
68 
69 /*****************************************************************************/
70 /**
71  *          AecSemMode_t
72  *
73  * @brief   mode type of AEC Scene Evaluation
74  *
75  */
76 /*****************************************************************************/
77 typedef enum _CalibDb_AecSemMode_e {
78     AEC_SCENE_EVALUATION_INVALID    = 0,        /* invalid (only used for initialization) */
79     AEC_SCENE_EVALUATION_DISABLED   = 1,        /* Scene Evaluation disabled (fix setpoint) */
80     AEC_SCENE_EVALUATION_FIX        = 2,        /* Scene Evaluation fix (static ROI) */
81     AEC_SCENE_EVALUATION_ADAPTIVE   = 3,        /* Scene Evaluation adaptive (ROI caluclated by Scene Evaluation */
82     AEC_SCENE_EVALUATION_MAX
83 } CalibDb_AecSemMode_t;
84 /*****************************************************************************/
85 /**
86  *          AecBackLitMode_t
87  *
88  * @brief   mode type of AEC-BackLit
89  *
90  */
91 /*****************************************************************************/
92 typedef enum _CalibDb_AecMeasAreaMode_e {
93     AEC_MEASURE_AREA_AUTO    = 0,
94     AEC_MEASURE_AREA_UP,
95     AEC_MEASURE_AREA_BOTTOM,
96     AEC_MEASURE_AREA_LEFT,
97     AEC_MEASURE_AREA_RIGHT,
98     AEC_MEASURE_AREA_CENTER,
99 } CalibDb_AecMeasAreaMode_t;
100 
101 /*****************************************************************************/
102 typedef enum _CalibDb_AecECMMode_e {
103     AEC_ECM_MODE_INVALID     = 0,    /**< invalid exposure conversion module */
104     AEC_ECM_MODE_1   = 1,  /* the original exposure conversion module ,   minimize the value of gain   */
105     AEC_ECM_MODE_2    = 2,    /* the newl exposure conversion module ,imcrease the frame rate */
106     AEC_ECM_MODE_MAX,
107 } CalibDb_AecECMMode_t;
108 
109 typedef enum _CalibDb_FlickerFreq_e {
110     AEC_FLICKER_FREQUENCY_OFF   = 0,
111     AEC_FLICKER_FREQUENCY_50HZ = 1,
112     AEC_FLICKER_FREQUENCY_60HZ = 2,
113 } CalibDb_FlickerFreq_t;
114 
115 typedef enum _CalibDb_AntiFlickerMode_e {
116     AEC_ANTIFLICKER_NORMAL_MODE = 0,
117     AEC_ANTIFLICKER_AUTO_MODE = 1,
118 } CalibDb_AntiFlickerMode_t;
119 
120 typedef enum _CalibDb_IrisType_e {
121     IRIS_DC_TYPE = 0,
122     IRIS_P_TYPE = 1,
123     IRIS_HDC_TYPE = 2,
124     IRIS_INVALID_TYPE,
125 } CalibDb_IrisType_t;
126 
127 /*****************************************************************************/
128 /**
129  * @brief   Enumeration type to configure CamerIC ISP exposure measuring mode.
130  *
131  *****************************************************************************/
132 typedef enum _CalibDb_CamYRangeMode_e {
133     CAM_YRANGE_MODE_INVALID    = 0,    /**< invalid y range mode   */
134     CAM_YRANGE_MODE_FULL          = 1,    /**< Y = 0.299 * R + 0.587 * G + 0.114 * B,full range BT601*/
135     CAM_YRANGE_MODE_LIMITED          = 2,    /**< Y = 16 + 0.25R + 0.5G + 0.1094B,limited range*/
136     CAM_YRANGE_MODE_MAX,
137 } CalibDb_CamYRangeMode_t;
138 
139 typedef enum _CalibDb_CamRawStatsMode_e {
140     CAM_RAWSTATS_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
141     CAM_RAWSTATS_MODE_R             = 1,    /**< R channel */
142     CAM_RAWSTATS_MODE_G             = 2,    /**< G channel */
143     CAM_RAWSTATS_MODE_B             = 3,    /**< B channel */
144     CAM_RAWSTATS_MODE_Y             = 4,    /**< luminance channel */
145     CAM_RAWSTATS_MODE_MAX,                                  /**< upper border (only for an internal evaluation) */
146 } CalibDb_CamRawStatsMode_t;
147 
148 typedef enum _CalibDb_CamHistStatsMode_e {
149     CAM_HIST_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
150     CAM_HIST_MODE_RGB_COMBINED  = 1,    /**< RGB combined histogram, only available for SiHist */
151     CAM_HIST_MODE_R             = 2,    /**< R histogram */
152     CAM_HIST_MODE_G             = 3,    /**< G histogram */
153     CAM_HIST_MODE_B             = 4,    /**< B histogram */
154     CAM_HIST_MODE_Y             = 5,    /**< Y luminance histogram */
155     CAM_HIST_MODE_MAX,                  /**< upper border (only for an internal evaluation) */
156 } CalibDb_CamHistStatsMode_t;
157 
158 typedef struct CalibDb_Aec_Win_s {
159     unsigned short h_offs;
160     unsigned short v_offs;
161     unsigned short h_size;
162     unsigned short v_size;
163 } CalibDb_Aec_Win_t;
164 
165 /*****************************************************************************/
166 /**
167  * @brief   ISP2.0 AEC API Exp-Route Params
168  */
169 /*****************************************************************************/
170 #define AEC_ROUTE_MAX_NODES (10)
171 typedef struct CalibDb_LinAeRoute_Attr_s {
172     AecExpSeparateName_t     name;                       /**name */
173     float                    TimeDot[AEC_ROUTE_MAX_NODES];
174     float                    GainDot[AEC_ROUTE_MAX_NODES];
175     float                    IspgainDot[AEC_ROUTE_MAX_NODES];
176     int                      PIrisGainDot[AEC_ROUTE_MAX_NODES];
177     int                      array_size;
178 } CalibDb_LinAeRoute_Attr_t;
179 
180 typedef struct CalibDb_HdrAeRoute_Attr_s {
181     AecExpSeparateName_t     name;                       /**name */
182     float                    HdrTimeDot[3][AEC_ROUTE_MAX_NODES];
183     float                    HdrGainDot[3][AEC_ROUTE_MAX_NODES];
184     float                    HdrIspDGainDot[3][AEC_ROUTE_MAX_NODES];
185     int                      PIrisGainDot[AEC_ROUTE_MAX_NODES];
186     int                      array_size;
187 } CalibDb_HdrAeRoute_Attr_t;
188 
189 typedef struct CalibDb_AeRoute_Attr_s {
190     CalibDb_LinAeRoute_Attr_t LinAeSeperate[AEC_DNMODE_MAX];
191     CalibDb_HdrAeRoute_Attr_t HdrAeSeperate[AEC_DNMODE_MAX];
192 } CalibDb_AeRoute_Attr_t;
193 
194 typedef struct CalibDb_AeEnvLvCalib_s {
195     float CalibFN;
196     float RealFN;
197     Cam2x1FloatMatrix_t Curve;
198 } CalibDb_AeEnvLvCalib_t;
199 
200 
201 //2). Auto exposure
202 typedef struct CalibDb_AeSpeed_s {
203     bool                    SmoothEn;
204     bool                    DyDampEn;
205     float                   DampOver;
206     float                   DampUnder;
207     float                   DampDark2Bright;
208     float                   DampBright2Dark;
209 } CalibDb_AeSpeed_t;
210 
211 typedef struct CalibDb_AeRange_s {
212     float                   Min;
213     float                   Max;
214 } CalibDb_AeRange_t;
215 
216 typedef struct CalibDb_LinAeRange_s {
217     CalibDb_AeRange_t      stExpTimeRange;
218     CalibDb_AeRange_t      stGainRange;
219     CalibDb_AeRange_t      stIspDGainRange;
220     CalibDb_AeRange_t      stPIrisRange;
221 } CalibDb_LinAeRange_t;
222 
223 typedef struct CalibDb_HdrAeRange_s {
224     CalibDb_AeRange_t      stExpTimeRange[3];
225     CalibDb_AeRange_t      stGainRange[3];
226     CalibDb_AeRange_t      stIspDGainRange[3];
227     CalibDb_AeRange_t      stPIrisRange;
228 } CalibDb_HdrAeRange_t;
229 
230 typedef struct CalibDb_AeFrmRateAttr_s {
231     bool             isFpsFix;
232     float            FpsValue;
233 } CalibDb_AeFrmRateAttr_t;
234 
235 typedef struct CalibDb_AntiFlickerAttr_s {
236     bool                           enable;
237     CalibDb_FlickerFreq_t          Frequency;
238     CalibDb_AntiFlickerMode_t      Mode;
239 } CalibDb_AntiFlickerAttr_t;
240 
241 //3.) Init expsore
242 typedef struct CalibDb_LinExpInitExp_s {
243     float                   InitTimeValue;
244     float                   InitGainValue;
245     float                   InitIspDGainValue;
246     int                     InitPIrisGainValue;
247     int                     InitDCIrisDutyValue;
248     int                     InitHDCIrisTargetValue;
249     int                     array_size;
250 } CalibDb_LinExpInitExp_t;
251 
252 typedef struct CalibDb_HdrExpInitExp_s {
253     Cam3x1FloatMatrix_t     InitTimeValue;
254     Cam3x1FloatMatrix_t     InitGainValue;
255     Cam3x1FloatMatrix_t     InitIspDGainValue;
256     int                     InitPIrisGainValue;
257     int                     InitDCIrisDutyValue;
258     int                     InitHDCIrisTargetValue;
259     int                     array_size;
260 } CalibDb_HdrExpInitExp_t;
261 
262 typedef struct CalibDb_ExpInitExp_s {
263     CalibDb_LinExpInitExp_t         stLinExpInitExp;
264     CalibDb_HdrExpInitExp_t         stHdrExpInitExp;
265 } CalibDb_ExpInitExp_t;
266 
267 typedef struct CalibDb_AeAttr_s {
268 
269     CalibDb_AeSpeed_t        stAeSpeed;
270     //DelayFrmNum
271     uint8_t                  BlackDelayFrame;
272     uint8_t                  WhiteDelayFrame;
273     //AeRange
274     bool                     SetAeRangeEn;
275     CalibDb_LinAeRange_t     stLinAeRange;
276     CalibDb_HdrAeRange_t     stHdrAeRange;
277     //Auto/Fixed fps
278     CalibDb_AeFrmRateAttr_t  stFrmRate;
279 
280 } CalibDb_AeAttr_t;
281 //manual exposure
282 typedef struct CalibDb_LinMeAttr_s {
283     bool                 ManualTimeEn;
284     bool                 ManualGainEn;
285     bool                 ManualIspDgainEn;
286     bool                 ManualIrisEn;
287     float                TimeValue;
288     float                GainValue;
289     float                IspDGainValue;
290     int                  PIrisGainValue;
291     int                  DCIrisValue;
292     int                  HDCIrisValue;
293 } CalibDb_LinMeAttr_t;
294 
295 typedef struct CalibDb_HdrMeAttr_s {
296     bool                    ManualTimeEn;
297     bool                    ManualGainEn;
298     bool                    ManualIspDgainEn;
299     bool                    ManualIrisEn;
300     Cam3x1FloatMatrix_t     TimeValue;
301     Cam3x1FloatMatrix_t     GainValue;
302     Cam3x1FloatMatrix_t     IspDGainValue;
303     int                     PIrisGainValue;
304     int                     DCIrisValue;
305     int                     HDCIrisValue;
306 } CalibDb_HdrMeAttr_t;
307 
308 typedef struct CalibDb_MeAttr_s {
309     CalibDb_LinMeAttr_t     stLinMe;
310     CalibDb_HdrMeAttr_t     stHdrMe;
311 } CalibDb_MeAttr_t;
312 
313 // DayorNight Switch
314 typedef struct CalibDb_IRNightMode_s {
315     uint8_t                 enable;
316     float                   IRRgain;
317     float                   IRBgain;
318     float                   MaxWbDis;
319     uint8_t                 Night2DayFrmCnt;
320     float                   Night2DayFacTh;
321     float                   VbPercent;
322 } CalibDb_IRNightMode_t;
323 
324 typedef struct CalibDb_VBNightMode_s {
325     uint8_t                 enable;
326     float                   Night2DayFacTh;
327     uint8_t                 Night2DayFrmCnt;
328 } CalibDb_VBNightMode_t;
329 
330 typedef struct CalibDb_DNSwitch_Attr_s {
331     uint8_t                     DNTrigger;
332     CalibDb_AecDayNightMode_t   DNMode;
333     uint8_t                     FillLightMode;
334     float                       Day2NightFacTh;
335     uint8_t                     Day2NightFrmCnt;
336     CalibDb_VBNightMode_t       stVBNightMode;
337     CalibDb_IRNightMode_t       stIRNightMode;
338 } CalibDb_DNSwitch_Attr_t;
339 
340 //Aec-Sync-Test used for debug
341 #define AEC_ALTER_EXP_MAX_NUM (10)
342 
343 typedef struct CalibDb_LinAlterExp_s {
344     float                    TimeValue[AEC_ALTER_EXP_MAX_NUM];
345     float                    GainValue[AEC_ALTER_EXP_MAX_NUM];
346     float                    IspgainValue[AEC_ALTER_EXP_MAX_NUM];
347     int                      PIrisGainValue[AEC_ALTER_EXP_MAX_NUM];
348     int                      DcgMode[AEC_ALTER_EXP_MAX_NUM];
349     int                      array_size;
350 } CalibDb_LinAlterExp_t;
351 
352 typedef struct CalibDb_HdrAlterExp_s {
353     float                    TimeValue[AEC_ALTER_EXP_MAX_NUM][3];
354     float                    GainValue[AEC_ALTER_EXP_MAX_NUM][3];
355     float                    IspDGainValue[AEC_ALTER_EXP_MAX_NUM][3];
356     int                      PIrisGainValue[AEC_ALTER_EXP_MAX_NUM];
357     int                      DcgMode[AEC_ALTER_EXP_MAX_NUM][3];
358     int                      array_size;
359 } CalibDb_HdrAlterExp_t;
360 
361 typedef struct CalibDb_AeSyncTest_s {
362     uint8_t                     enable;
363     int                         IntervalFrm;
364     CalibDb_LinAlterExp_t       LinAlterExp;
365     CalibDb_HdrAlterExp_t       HdrAlterExp;
366 } CalibDb_AeSyncTest_t;
367 
368 //AecIrisCtrl
369 #define AEC_PIRIS_STAP_TABLE_MAX (1024)
370 typedef struct CalibDb_PIris_Attr_s {
371     uint16_t              TotalStep;
372     uint16_t              EffcStep;
373     bool                  ZeroIsMax;
374     uint16_t              StepTable[AEC_PIRIS_STAP_TABLE_MAX];
375 } CalibDb_PIris_Attr_t;
376 
377 typedef struct CalibDb_DCIris_Attr_s {
378     float       Kp;
379     float       Ki;
380     float       Kd;
381     int         MinPwmDuty;
382     int         MaxPwmDuty;
383     int         OpenPwmDuty;
384     int         ClosePwmDuty;
385 } CalibDb_DCIris_Attr_t;
386 
387 #define AEC_HDCIRIS_DOT_MAX_NUM (256)
388 typedef struct CalibDb_HDCIris_Attr_s {
389     float       DampOver;
390     float       DampUnder;
391     bool        ZeroIsMax;
392     int         MinTarget;
393     int         MaxTarget;
394     int         ZoomTargetDot[AEC_HDCIRIS_DOT_MAX_NUM];
395     int         ZoomDot[AEC_HDCIRIS_DOT_MAX_NUM];
396     int         IrisTargetDot[AEC_HDCIRIS_DOT_MAX_NUM];
397     int         GainDot[AEC_HDCIRIS_DOT_MAX_NUM];
398     int         zoom_array_size;
399     int         iris_array_size;
400 } CalibDb_HDCIris_Attr_t;
401 
402 typedef struct CalibDb_AecIrisCtrl_s {
403     uint8_t                     enable;
404     CalibDb_IrisType_t          IrisType;
405     CalibDb_PIris_Attr_t        PIrisAttr;
406     CalibDb_DCIris_Attr_t       DCIrisAttr;
407     CalibDb_HDCIris_Attr_t      HDCIrisAttr;
408 } CalibDb_AecIrisCtrl_t;
409 
410 typedef struct CalibDb_AecCommon_Attr_s {
411     uint8_t                          enable;
412     uint8_t                          AecRunInterval;
413     RKAiqOPMode_t                    AecOpType;
414     CalibDb_CamRawStatsMode_t        RawStatsMode;
415     CalibDb_CamHistStatsMode_t       HistStatsMode;
416     CalibDb_CamYRangeMode_t          YRangeMode;
417     //GridWeight
418     Cam15x15UCharMatrix_t            DayGridWeights;
419     int                              DayWeightNum;
420     Cam15x15UCharMatrix_t            NightGridWeights;
421     int                              NightWeightNum;
422 
423     CalibDb_AecIrisCtrl_t            stIris;
424 
425     CalibDb_AeSyncTest_t             stSyncTest;
426     //envlv calibration
427     CalibDb_AeEnvLvCalib_t           stEnvLvCalib;
428     //antiflicker
429     CalibDb_AntiFlickerAttr_t        stAntiFlicker;
430     //initial exp
431     CalibDb_ExpInitExp_t             stInitExp;
432     //DayOrNight switch
433     CalibDb_DNSwitch_Attr_t          stDNSwitch;
434     //ExpSeperate
435     CalibDb_AeRoute_Attr_t           stAeRoute;
436     //manual expvalue
437     CalibDb_MeAttr_t                 stManual;
438     CalibDb_AeAttr_t                 stAuto;
439 } CalibDb_AecCommon_Attr_t;
440 
441 /*****************************************************************************/
442 /**
443  * @brief   ISP2.0 AEC API algo Config Params(private)
444  */
445 /*****************************************************************************/
446 
447 #ifndef AEC_SETPOINT_MAX_NODES
448 #define AEC_SETPOINT_MAX_NODES 10
449 #endif
450 typedef struct CalibDb_AecDynamicSetpoint_s {
451     AecDynamicSetpointName_t      name;                       /**name */
452     float ExpValue[AEC_SETPOINT_MAX_NODES];
453     float DySetpoint[AEC_SETPOINT_MAX_NODES];
454     int   array_size;
455 } CalibDb_AecDynamicSetpoint_t;
456 
457 
458 typedef struct CalibDb_AecBacklight_s {
459     uint8_t                     enable;
460     float                       StrBias;
461     CalibDb_AecMeasAreaMode_t   MeasArea;
462     float                       OEROILowTh;
463     float                       LumaDistTh;
464     float                       LvLowTh;
465     float                       LvHightTh;
466     Cam1x6FloatMatrix_t         ExpLevel;
467     Cam1x6FloatMatrix_t         NonOEPdfTh;
468     Cam1x6FloatMatrix_t         LowLightPdfTh;
469     Cam1x6FloatMatrix_t         TargetLLLuma;
470 } CalibDb_AecBacklight_t;
471 
472 typedef struct CalibDb_AecOverExpCtrl_s {
473     uint8_t                     enable;
474     float                       StrBias;
475     float                       MaxWeight;
476     float                       HighLightTh;
477     float                       LowLightTh;
478     Cam1x6FloatMatrix_t         OEpdf;
479     Cam1x6FloatMatrix_t         LowLightWeight;
480     Cam1x6FloatMatrix_t         HighLightWeight;
481 
482 } CalibDb_AecOverExpCtrl_t;
483 
484 
485 typedef struct CalibDb_LinearAE_Attr_s {
486     uint8_t                 RawStatsEn;
487     float                   SetPoint;                   /**< set point to hit by the ae control system */
488     float                   NightSetPoint;
489     float                   ToleranceIn;
490     float                   ToleranceOut;
491     float                   Evbias;
492     CalibDb_AeStrategyMode_t        StrategyMode;
493     bool                    DySetPointEn;
494     CalibDb_AecDynamicSetpoint_t DySetpoint[AEC_DNMODE_MAX];
495 
496     CalibDb_AecBacklight_t  BackLightConf;
497     CalibDb_AecOverExpCtrl_t OverExpCtrl;
498 } CalibDb_LinearAE_Attr_t;
499 
500 typedef struct CalibDb_LFrameCtrl_s
501 {
502     //LframeCtrl
503     float                   OEROILowTh;
504     float                   LvLowTh;
505     float                   LvHighTh;
506     Cam1x6FloatMatrix_t     LExpLevel;
507     Cam1x6FloatMatrix_t     LSetPoint;
508     Cam1x6FloatMatrix_t     TargetLLLuma;
509     Cam1x6FloatMatrix_t     NonOEPdfTh;
510     Cam1x6FloatMatrix_t     LowLightPdfTh;
511 } CalibDb_LFrameCtrl_t;
512 
513 typedef struct CalibDb_MFrameCtrl_s
514 {
515     //MframeCtrl
516     Cam1x6FloatMatrix_t     MExpLevel;
517     Cam1x6FloatMatrix_t     MSetPoint;
518 } CalibDb_MFrameCtrl_t;
519 
520 typedef struct CalibDb_SFrameCtrl_s
521 {
522     //SframeCtrl
523     float                   HLLumaTolerance;
524     Cam1x6FloatMatrix_t     SExpLevel;
525     Cam1x6FloatMatrix_t     TargetHLLuma;
526     Cam1x6FloatMatrix_t     SSetPoint;
527     bool                    HLROIExpandEn;
528 } CalibDb_SFrameCtrl_t;
529 
530 typedef struct CalibDb_HdrAE_Attr_s {
531     float                           ToleranceIn;
532     float                           ToleranceOut;
533     CalibDb_AeHdrLongFrmMode_t      LongfrmMode;
534     uint16_t                        SfrmMinLine;
535     float                           LfrmModeExpTh;
536     CalibDb_AeStrategyMode_t        StrategyMode;
537     float                           Evbias;
538     //ExpRatioCtrl
539     CalibDb_HdrAeRatioType_t        ExpRatioType;
540     Cam1x6FloatMatrix_t             RatioExpDot;
541     Cam1x6FloatMatrix_t             M2SRatioFix;
542     Cam1x6FloatMatrix_t             L2MRatioFix;
543     Cam1x6FloatMatrix_t             M2SRatioMax;
544     Cam1x6FloatMatrix_t             L2MRatioMax;
545 
546     float                           LumaDistTh; //used for area-growing
547     CalibDb_LFrameCtrl_t            LframeCtrl;
548     CalibDb_MFrameCtrl_t            MframeCtrl;
549     CalibDb_SFrameCtrl_t            SframeCtrl;
550 
551 } CalibDb_HdrAE_Attr_t;
552 
553 /*****************************************************************************/
554 /**
555  * @brief   Global AEC calibration structure of isp2.0
556  */
557 /*****************************************************************************/
558 typedef struct CalibDb_Aec_Para_s {
559     CalibDb_AecCommon_Attr_t      CommCtrl;
560     CalibDb_LinearAE_Attr_t       LinearAeCtrl;
561     CalibDb_HdrAE_Attr_t          HdrAeCtrl;
562 } CalibDb_Aec_Para_t;
563 
564 #define CALD_AEC_GAIN_RANGE_MAX_LEN  350
565 typedef enum _CalibDb_ExpGainMode_e {
566     RKAIQ_EXPGAIN_MODE_NONLINEAR_DB   = 0,
567     RKAIQ_EXPGAIN_MODE_LINEAR         = 1,
568     RKAIQ_EXPGAIN_MODE_MAX            = 2
569 } CalibDb_ExpGainMode_t;
570 
571 typedef struct CalibDb_AecGainRange_s {
572     bool    IsLinear;
573     int     array_size;
574     float   pGainRange[CALD_AEC_GAIN_RANGE_MAX_LEN];
575     CalibDb_ExpGainMode_t     GainMode;
576 } CalibDb_AecGainRange_t;
577 
578 typedef struct CalibDb_Sensor_Para_s {
579     //Exp RealValue 2 RegValue
580     CalibDb_AecGainRange_t  GainRange;
581     float                   TimeFactor[4];
582     //ExpSeperateCtrl
583     Cam2x1FloatMatrix_t     CISHdrTimeRegSumFac;
584     Cam2x1FloatMatrix_t     CISLinTimeRegMaxFac;
585     Cam2x1FloatMatrix_t     CISTimeRegOdevity;
586     Cam2x1FloatMatrix_t     CISHdrTimeRegOdevity;
587     uint16_t                CISTimeRegMin;
588     uint16_t                CISHdrTimeRegMin;
589     Cam1x3ShortMatrix_t     CISHdrTimeRegMax;
590     uint8_t                 CISTimeRegUnEqualEn;
591     float                   CISMinFps;
592     CalibDb_AeRange_t       CISAgainRange; //sensor Again or LCG range
593     CalibDb_AeRange_t       CISExtraAgainRange; //add for HDR-DCG MODE, HCG range
594     CalibDb_AeRange_t       CISDgainRange; //sensor Dgain
595     CalibDb_AeRange_t       CISIspDgainRange; //Isp Dgain
596 
597     //bit 0: for hdr gain should use the same value;
598     //bit 1: support use different gain value
599     uint8_t                 CISHdrGainIndSetEn; //only used for hdr-stagger mode
600     // bit 0 : mirror
601     // bit 1 : flip
602     uint8_t                 flip; // this will change the sensor output image orientation
603 } CalibDb_Sensor_Para_t;
604 
605 typedef struct CalibDb_Module_Info_s {
606     float FNumber;
607     float EFL;
608     float LensT;
609     float IRCutT;
610 } CalibDb_Module_Info_t;
611 
612 #define CALD_AWB_LS_NUM_MAX 14
613 #define CALD_AWB_WINDOW_NUM_MAX 8
614 #define CALD_AWB_EXCRANGE_NUM_MAX 7
615 #define CALD_AWB_RRES_NUM_MAX 5
616 #define CALD_AWB_LV_NUM_MAX 16
617 #define CALD_AWB_SGC_NUM_MAX 16
618 #define CALD_AWB_ILLUMINATION_NAME       ( 20U )
619 #define CALD_AWB_RES_NAME       ( 20U )
620 #define CALD_AWB_TEMPORAL_GAIN_SIZE_MAX 4
621 #define CALD_AWB_XY_TYPE_MAX_V201 2
622 #define CALD_AWB_GRID_NUM_TOTAL 225
623 #define CALD_AWB_CT_GRID_NUM_MAX 10
624 #define CALD_AWB_CRI_GRID_NUM_MAX 10
625 #define CALD_AWB_CT_LV_NUM_MAX 5
626 #define CALD_AWB_CT_CLIP_GRID_NUM_MAX 14
627 #define CALD_AWB_LV_NUM_FOR_TOLERANCE 4
628 #define CALD_AWB_LV_NUM_FOR_RUNINTERVAL 8
629 
630 typedef struct _CalibDb_ExcRange_s {
631     unsigned char domain;/*0uv domain,1 xy domain*/
632     unsigned char mode;
633     int xu[2];//left right
634     int yv[2];//top bottom
635 } CalibDb_ExcRange_t;
636 
637 typedef struct _CalibDb_Rgb2TcsParam_s {
638     float pseudoLuminanceWeight[3];
639     float rotationMat[9];
640 } CalibDb_Rgb2TcsParam_t;
641 
642 typedef struct CalibDb_Yuv3D_Range_Ill_s {
643     int b_uv;           //17+0 s
644     int slope_inv_neg_uv; //9+10s //-1/k
645     int slope_factor_uv; //9+10s // 1/(-1/k+k)
646     int slope_ydis;     //9+10s //k
647     int b_ydis;         //17+0s
648     unsigned char ref_u;          //8u
649     unsigned char ref_v;            //8u
650     unsigned short  dis[6];//8+4 u
651     unsigned char th[6]; //8u
652 } CalibDb_Yuv3D_Range_Ill_t;
653 
654 typedef struct CalibDb_Yuv3D_2_Range_Ill_s {
655     float thcurve_u[6];
656     float thcure_th[6];
657     float line[6];
658     //float lineP1[3];
659     //float lineP2[3];
660 } CalibDb_Yuv3D_2_Range_Ill_t;
661 
662 typedef struct CalibDb_UV_Range_Ill_s {
663     float  pu_region[5];
664     float  pv_region[5];
665 } CalibDb_UV_Range_Ill_t;
666 
667 typedef struct CalibDb_Tcs_Range_Ill_s {
668     float xleft;
669     float xright;
670     float ytop;
671     float ybottom;
672 } CalibDb_Tcs_Range_Ill_t;
673 
674 typedef struct CalibDb_Awb_Light_Info_s {
675     char light_name[16];
676     CalibDb_UV_Range_Ill_t uvRange_param;
677     CalibDb_UV_Range_Ill_t uvRange_param_small;
678     CalibDb_Tcs_Range_Ill_t normalRange;
679     CalibDb_Tcs_Range_Ill_t bigRange;
680     CalibDb_Tcs_Range_Ill_t smallRange;
681     CalibDb_Yuv3D_Range_Ill_t   yuv3DRange_param;
682     CalibDb_Yuv3D_2_Range_Ill_t yuv3D2Range_param;
683 } CalibDb_Awb_Light_Info_t;
684 
685 typedef struct CalibDb_Awb_Light_Info2_s {
686     char light_name[CALD_AWB_ILLUMINATION_NAME];
687     unsigned char staWeight[CALD_AWB_LV_NUM_MAX];
688     unsigned int spatialGain_LV_THH;//threshold for  spatial gain calculation in different illuminant
689     unsigned int spatialGain_LV_THL;//
690     unsigned char xyType2Enable;
691     float weightCurve_ratio[4];
692     float weightCurve_weight[4];
693 } CalibDb_Awb_Light_Info2_t;
694 
695 typedef struct CalibDb_StatWindow_s {
696     int mode;
697     int  resNum;
698     char resName[CALD_AWB_RRES_NUM_MAX][CALD_AWB_RES_NAME];
699     uint16_t window[CALD_AWB_RRES_NUM_MAX][4];
700 } CalibDb_StatWindow_t;
701 typedef struct CalibDb_tcs_range_ill_s {
702     float NorrangeX[2];//left right
703     float NorrangeY[2];//top bottom
704     float SperangeX[2];
705     float SperangeY[2];
706     float SmalrangeX[2];
707     float SmalrangeY[2];
708 } CalibDb_tcs_range_ill_t;
709 
710 typedef struct CalibDb_Awb_Cct_Clip_Cfg_s {
711     float outdoor_cct_min;
712     int grid_num;
713     float cct[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
714     float cri_bound_up[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
715     float cri_bound_low[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
716 }  CalibDb_Awb_Cct_Clip_Cfg_t;
717 typedef struct CalibDb_limit_range_s {
718     int lumaNum;
719     float lumaValue[CALD_AWB_LV_NUM_MAX];
720     unsigned short      maxR[CALD_AWB_LV_NUM_MAX];
721     unsigned short      minR[CALD_AWB_LV_NUM_MAX];
722     unsigned short      maxG[CALD_AWB_LV_NUM_MAX];
723     unsigned short      minG[CALD_AWB_LV_NUM_MAX];
724     unsigned short      maxB[CALD_AWB_LV_NUM_MAX];
725     unsigned short      minB[CALD_AWB_LV_NUM_MAX];
726     unsigned short      maxY[CALD_AWB_LV_NUM_MAX];
727     unsigned short      minY[CALD_AWB_LV_NUM_MAX];
728 } CalibDb_limit_range_t;
729 
730 typedef struct CalibDb_Awb_Calib_Para_V200_s {
731     struct list_head           listHead;
732     char                scene[CALIBDB_MAX_SCENE_NAME_LENGTH];
733     unsigned char       hdrFrameChooseMode;
734     unsigned char       hdrFrameChoose;
735     bool                lscBypEnable;
736     bool                uvDetectionEnable;
737     bool                xyDetectionEnable;
738     bool                yuvDetectionEnable;
739     bool                wpDiffWeiEnable;
740     bool                wbGainClipEn;
741     bool                wbGainDaylightClipEn;
742     bool                blkWeightEnable;//the different weight in WP sum
743     bool                blkStatisticsEnable;
744     int                 lsUsedForYuvDetNum;
745     char                lsUsedForYuvDet[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
746     unsigned char       dsMode;
747     unsigned char       blkMeasureMode;
748     CalibDb_StatWindow_t measeureWindow;
749     bool                multiwindow_en;
750     unsigned char       lightNum;
751     char                lightName[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
752     unsigned char       doorType[CALD_AWB_LS_NUM_MAX];
753     float               standardGainValue[CALD_AWB_LS_NUM_MAX][4];//rggb
754     CalibDb_limit_range_t limitRange;
755     //uv_range_ill_t        uvRange_param[7];//big range
756     //uv_range_ill_t        uvRange_param_small[7];//small range
757     CalibDb_Rgb2TcsParam_t     rgb2tcs_param;
758     //tcs_range_ill_t     xyRangeLight[7];//HZ A TL84 CWF D50 D65 D75
759     //yuv3d_range_ill_t yuv3DRange_param[7];
760     //yuv3d_2_range_ill_t yuv3D2Range_param[7];
761     //several window in pixel domain
762     //CalibDb_Awb_Light_Info_t    awb_light_info[CALD_AWB_LS_NUM_MAX];
763     CalibDb_UV_Range_Ill_t uvRange_param[CALD_AWB_LS_NUM_MAX];
764     CalibDb_UV_Range_Ill_t uvRange_param_small[CALD_AWB_LS_NUM_MAX];
765     CalibDb_tcs_range_ill_t xyRangeLight[CALD_AWB_LS_NUM_MAX];
766     CalibDb_Yuv3D_Range_Ill_t   yuv3DRange_param[CALD_AWB_LS_NUM_MAX];
767 
768 
769     unsigned short multiwindow[CALD_AWB_WINDOW_NUM_MAX][4];//8  windows in pixel domain ,hOffset,vOffser,hSize,vSize;
770     //several winow in uv or xy domain
771     CalibDb_ExcRange_t excludeWpRange[CALD_AWB_EXCRANGE_NUM_MAX];
772     float spatialGain_H[4];//spatial gain
773     float spatialGain_L[4];
774     float temporalDefaultGain[4];
775     float ca_targetGain[4];
776     //single color
777     unsigned short      sSelColorNUM;
778     unsigned short      sIndSelColor[CALD_AWB_SGC_NUM_MAX];
779     float               sMeanCh[2][CALD_AWB_SGC_NUM_MAX];
780     float               srGain[CALD_AWB_LS_NUM_MAX];
781     float               sbGain[CALD_AWB_LS_NUM_MAX];
782     unsigned short      sIllEstNum;
783     char                sNameIllEst[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
784     float               sAlpha;
785     float lineRgBg[3];
786     float lineRgProjCCT[3];
787     //wbgain clip
788     CalibDb_Awb_Cct_Clip_Cfg_t cct_clip_cfg;
789 } CalibDb_Awb_Calib_Para_V200_t;
790 
791 
792 typedef struct CalibDb_Awb_line_s {
793     float a;
794     float b;
795     float c;
796 } CalibDb_Awb_line_t;
797 
798 typedef struct CalibDb_Awb_Cct_Lut_Cfg_Lv_s {
799     float lv;
800     int ct_grid_num;
801     int cri_grid_num;
802     float ct_range[2];//min,max, equal distance sapmle
803     float cri_range[2];//min,max
804     float ct_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX];
805     float cri_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX];
806 }  CalibDb_Awb_Cct_Lut_Cfg_Lv_t;
807 
808 
809 typedef struct CalibDb_Awb_gain_offset_cfg_s {
810     bool enable;
811     float offset[4];
812 } CalibDb_Awb_gain_offset_cfg_t;
813 
814 typedef struct rk_aiq_wb_awb_runinterval_s {
815     int num;
816     float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
817     float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
818 }  CalibDb_Awb_runinterval_t;
819 
820 typedef struct rk_aiq_wb_awb_tolerance_s {
821     int num;
822     float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
823     float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
824 }  CalibDb_Awb_tolerance_t;
825 
826 typedef struct CalibDb_Awb_Remosaic_Para_s
827 {
828     bool enable;
829     float sensor_awb_gain[4];
830 } CalibDb_Awb_Remosaic_Para_t;
831 
832 typedef struct CalibDb_Awb_Wp_Th_s {
833     int num;
834     float lumaValue[CALD_AWB_LV_NUM_MAX];
835     float WP_THH[CALD_AWB_LV_NUM_MAX];
836     float WP_THL[CALD_AWB_LV_NUM_MAX];
837 }  CalibDb_Awb_Wp_Th_t;
838 
839 typedef struct CalibDb_Awb_XyReionSelect_WpNumTh_s {
840     int num;
841     float lumaValue[CALD_AWB_LV_NUM_MAX];
842     float wpNumThForBigType[CALD_AWB_LV_NUM_MAX];
843     float wpNumThForExtraType[CALD_AWB_LV_NUM_MAX];
844 
845 }  CalibDb_Awb_XyReionSelect_WpNumTh_t;
846 
847 
848 typedef struct CalibDb_Awb_Adjust_Para_s {
849     struct list_head           listHead;
850     char                scene[CALIBDB_MAX_SCENE_NAME_LENGTH];
851     bool                wbBypass;
852     bool                awbEnable;
853     unsigned char lightNum;
854     bool ca_enable;
855     bool wbGainAdjustEn;
856     char lsForFirstFrame[CALD_AWB_ILLUMINATION_NAME];
857     //multiwindow
858     unsigned char multiwindowMode;
859     bool uvRange_small_enable;
860     CalibDb_Awb_tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function
861     CalibDb_Awb_runinterval_t runInterval;
862     //wbgain damp
863     float dFStep;
864     float dFMin;
865     float dFMax;
866     int LvIIRsize;
867     float LvVarTh;
868 
869     int LV_NUM;
870     unsigned int LVMatrix[CALD_AWB_LV_NUM_MAX];
871     unsigned int LV_THL;
872     unsigned int LV_THL2;
873     unsigned int LV_THH;
874     unsigned int LV_THH2;
875     CalibDb_Awb_Wp_Th_t WP_TH;
876     float proDis_THL; //threshold for distance probality calculation
877     float proDis_THH;
878     unsigned int proLV_Indoor_THL;// threshold for luminance probality calculation
879     unsigned int proLV_Indoor_THH;
880     unsigned int proLV_Outdoor_THL;
881     unsigned int proLV_Outdoor_THH;
882     unsigned char temporalCalGainSetSize;
883     unsigned char temporalGainSetWeight[CALD_AWB_TEMPORAL_GAIN_SIZE_MAX];//ËÄÖ¡µÄ±ÈÀý0-100×ܺÍΪ100//gainPer[0]Ϊ-1Ö¡£¬gainPer[1]is -2,gainPer[2] is -3 gainPer[3] is -4
884     float  wpNumPercTh;//ÎÞЧ°×µããÐÖµ£¬°×µãÊýÁ¿ÉÙʱÈÏΪ¸Ã°×µãÎÞЧ
885     unsigned char tempWeight[CALD_AWB_LV_NUM_MAX];
886 
887 
888     //color adaptation
889     float ca_LACalcFactor;
890 
891 
892     //wb gain shift 2 //to do  from xml
893     int cct_lut_cfg_num;
894     CalibDb_Awb_Cct_Lut_Cfg_Lv_t cct_lut_cfg[CALD_AWB_CT_LV_NUM_MAX];
895     CalibDb_Awb_gain_offset_cfg_t wbGainOffset;
896 
897 
898     float convergedVarTh;
899 
900 
901 
902     //make  xyTypeSelect stable
903     int xyTypeListSize;// xyTypeListSize ==0 will disable this function
904     float varianceLumaTh;
905     CalibDb_Awb_XyReionSelect_WpNumTh_t wpNumTh;
906     CalibDb_Awb_Light_Info2_t    awb_light_info[CALD_AWB_LS_NUM_MAX];
907 
908     bool xyType2ForColBalEnable;// to do for awb2.1
909 
910     CalibDb_Awb_Remosaic_Para_t remosaic_cfg;
911 } CalibDb_Awb_Adjust_Para_t;
912 
913 
914 typedef struct CalibDb_Awb_Para_s
915 {
916     CalibDb_Awb_Calib_Para_V200_t calib_para_v200;
917     CalibDb_Awb_Adjust_Para_t adjust_para;
918 } CalibDb_Awb_Para_t;
919 
920 typedef struct GlobalLuma_s
921 {
922     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
923     float GlobalLumaMode;
924     float envLevel[13];
925     float ISO[13];
926     float Tolerance;
927     float globalLuma[13];
928 } GlobalLuma_t;
929 
930 typedef struct DetailsHighLight_s
931 {
932     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
933     float DetailsHighLightMode;
934     float OEPdf[13];
935     float EnvLv[13];
936     float Tolerance;
937     float detailsHighLight[13];
938 } DetailsHighLight_t;
939 
940 typedef struct DetailsLowLight_s
941 {
942     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
943     float DetailsLowLightMode;
944     float FocusLuma[13];
945     float DarkPdf[13];
946     float ISO[13];
947     float Tolerance;
948     float detailsLowLight[13];
949 } DetailsLowLight_t;
950 
951 typedef struct LocalTMO_s
952 {
953     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
954     float LocalTMOMode;
955     float DynamicRange[13];
956     float EnvLv[13];
957     float Tolerance;
958     float Strength[13];
959 } LocalTMO_t;
960 
961 typedef struct GlobaTMO_s
962 {
963     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
964     float en;
965     float iir;
966     float mode;
967     float DynamicRange[13];
968     float EnvLv[13];
969     float Tolerance;
970     float Strength[13];
971 } GlobaTMO_t;
972 
973 typedef struct TMO_en_s
974 {
975     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
976     float en;
977 } TMO_en_t;
978 
979 typedef struct CalibDb_Amerge_Para_s {
980     float envLevel[13];
981     float oeCurve_smooth[13];
982     float oeCurve_offset[13];
983     float moveCoef[13];
984     float mdCurveLm_smooth[13];
985     float mdCurveLm_offset[13];
986     float mdCurveMs_smooth[13];
987     float mdCurveMs_offset[13];
988     float oeCurve_damp;
989     float mdCurveLm_damp;
990     float mdCurveMs_damp;
991 } CalibDb_Amerge_Para_t;
992 
993 typedef struct CalibDb_Atmo_Para_s {
994     TMO_en_t en[CALIBDB_MAX_MODE_NUM];
995     GlobalLuma_t luma[CALIBDB_MAX_MODE_NUM];
996     DetailsHighLight_t HighLight[CALIBDB_MAX_MODE_NUM];
997     DetailsLowLight_t LowLight[CALIBDB_MAX_MODE_NUM];
998     LocalTMO_t LocalTMO[CALIBDB_MAX_MODE_NUM];
999     GlobaTMO_t GlobaTMO[CALIBDB_MAX_MODE_NUM];
1000     float damp;
1001 } CalibDb_Atmo_Para_t;
1002 
1003 
1004 
1005 typedef struct CalibDb_Blc_ModeCell_s {
1006     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1007     float iso[CALIBDB_BLC_MAX_ISO_LEVEL];
1008     float level[4][CALIBDB_BLC_MAX_ISO_LEVEL];
1009 } CalibDb_Blc_ModeCell_t;
1010 
1011 typedef struct CalibDb_Blc_s {
1012     int enable;
1013     CalibDb_Blc_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1014 } CalibDb_Blc_t;
1015 
1016 typedef struct CalibDb_Dpcc_set_RK_s {
1017     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1018     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1019     unsigned char rb_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
1020     unsigned char g_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
1021     unsigned char sw_dis_scale_min[CALIBDB_DPCC_MAX_ISO_LEVEL];
1022     unsigned char sw_dis_scale_max[CALIBDB_DPCC_MAX_ISO_LEVEL];
1023 } CalibDb_Dpcc_set_RK_t;
1024 
1025 typedef struct CalibDb_Dpcc_set_LC_s {
1026     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1027     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1028     unsigned char rb_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
1029     unsigned char g_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
1030     unsigned char rb_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1031     unsigned char g_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1032 } CalibDb_Dpcc_set_LC_t;
1033 
1034 typedef struct CalibDb_Dpcc_set_PG_s {
1035     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1036     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1037     unsigned char rb_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1038     unsigned char g_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1039 } CalibDb_Dpcc_set_PG_t;
1040 
1041 typedef struct CalibDb_Dpcc_set_RND_s {
1042     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1043     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1044     unsigned char rb_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
1045     unsigned char g_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
1046     unsigned char rb_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
1047     unsigned char g_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
1048 } CalibDb_Dpcc_set_RND_t;
1049 
1050 typedef struct CalibDb_Dpcc_set_RG_s {
1051     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1052     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1053     unsigned char rb_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1054     unsigned char g_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
1055 } CalibDb_Dpcc_set_RG_t;
1056 
1057 typedef struct CalibDb_Dpcc_set_RO_s {
1058     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1059     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1060     unsigned char rb_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
1061     unsigned char g_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
1062 } CalibDb_Dpcc_set_RO_t;
1063 
1064 typedef struct CalibDb_Dpcc_set_s {
1065     CalibDb_Dpcc_set_RK_t rk;
1066     CalibDb_Dpcc_set_LC_t lc;
1067     CalibDb_Dpcc_set_PG_t pg;
1068     CalibDb_Dpcc_set_RND_t rnd;
1069     CalibDb_Dpcc_set_RG_t rg;
1070     CalibDb_Dpcc_set_RO_t ro;
1071 } CalibDb_Dpcc_set_t;
1072 
1073 typedef struct CalibDb_Dpcc_Pdaf_s {
1074     unsigned char en;
1075     unsigned char point_en[16];
1076     unsigned short int offsetx;
1077     unsigned short int offsety;
1078     unsigned char wrapx;
1079     unsigned char wrapy;
1080     unsigned short int wrapx_num;
1081     unsigned short int wrapy_num;
1082     unsigned char point_x[16];
1083     unsigned char point_y[16];
1084     unsigned char forward_med;
1085 } CalibDb_Dpcc_Pdaf_t;
1086 
1087 typedef struct CalibDb_Dpcc_Expert_Mode_s {
1088     float iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
1089     unsigned char stage1_Enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
1090     unsigned char grayscale_mode;
1091     unsigned char rk_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
1092     unsigned char dpcc_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
1093     unsigned char stage1_rb_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
1094     unsigned char stage1_g_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
1095     unsigned char stage1_inc_rb_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
1096     unsigned char stage1_inc_g_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
1097     unsigned char stage1_use_fix_set[CALIBDB_DPCC_MAX_ISO_LEVEL];
1098     unsigned char stage1_use_set3[CALIBDB_DPCC_MAX_ISO_LEVEL];
1099     unsigned char stage1_use_set2[CALIBDB_DPCC_MAX_ISO_LEVEL];
1100     unsigned char stage1_use_set1[CALIBDB_DPCC_MAX_ISO_LEVEL];
1101     CalibDb_Dpcc_set_t set[3];
1102 } CalibDb_Dpcc_Expert_Mode_t;
1103 
1104 typedef struct CalibDb_Dpcc_s {
1105     int enable;
1106     char version[64];
1107     CalibDb_Dpcc_Fast_Mode_t fast;
1108     CalibDb_Dpcc_Expert_Mode_t expert;
1109     CalibDb_Dpcc_Pdaf_t pdaf;
1110     CalibDb_Dpcc_Sensor_t sensor_dpcc;
1111 } CalibDb_Dpcc_t;
1112 
1113 #define CALIBDB_NR_SHARP_NAME_LENGTH 64
1114 #define CALIBDB_NR_SHARP_MODE_LENGTH 64
1115 
1116 typedef struct CalibDb_BayerNR_Params_s {
1117     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1118     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1119     float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1120     float filtPara[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1121     float luLevel[8];
1122     float luLevelVal[8];
1123     float luRatio[8][CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1124     float fixW[4][CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1125     float lamda;
1126     unsigned char gauss_en;
1127     float RGainOff;
1128     float RGainFilp;
1129     float BGainOff;
1130     float BGainFilp;
1131     float edgeSoftness;
1132     float gaussWeight0;
1133     float gaussWeight1;
1134     float bilEdgeFilter;
1135     float bilFilterStreng[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1136     float bilEdgeSoft;
1137     float bilEdgeSoftRatio;
1138     float bilRegWgt;
1139 } CalibDb_BayerNR_Params_t;
1140 
1141 typedef struct CalibDb_BayerNr_ModeCell_s {
1142     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1143     CalibDb_BayerNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1144 } CalibDb_BayerNr_ModeCell_t;
1145 
1146 typedef struct CalibDb_BayerNr_s {
1147     int enable;
1148     char version[64];
1149     CalibDb_BayerNr_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1150 } CalibDb_BayerNr_t;
1151 
1152 typedef struct CalibDb_BayerNr_2_s {
1153     int enable;
1154     char version[64];
1155     CalibDb_BayerNr_ModeCell_t *mode_cell;
1156     int mode_num;
1157 } CalibDb_BayerNr_2_t;
1158 
1159 
1160 #define CIFISP_LSC_DATA_TBL_SIZE_ISP20  289
1161 #define CIFISP_LSC_GRAD_TBL_SIZE_ISP20  8
1162 #define CIFISP_LSC_SIZE_TBL_SIZE_ISP20  8
1163 #define LSC_GRAD_TBL_SIZE_ISP20         8
1164 #define LSC_ILLUMINATION_MAX            10
1165 typedef enum  CalibDb_Used_For_Case_e {
1166     USED_FOR_CASE_NORMAL = 0,
1167     USED_FOR_CASE_FLASH,
1168     USED_FOR_CASE_GRAY,
1169     USED_FOR_CASE_3,
1170     USED_FOR_CASE_MAX
1171 } CalibDb_Used_For_Case_t;
1172 
1173 #define LSC_RESOLUTION_NAME         ( 15U )
1174 typedef char                        CalibDb_ResolutionName_t[LSC_RESOLUTION_NAME];
1175 #define LSC_PROFILE_NAME            ( 25U )
1176 typedef char                        CalibDb_Lsc_ProfileName_t[LSC_PROFILE_NAME];
1177 #define LSC_ILLUMINATION_NAME       ( 20U )
1178 typedef char                        CalibDb_IlluminationName_t[LSC_ILLUMINATION_NAME];
1179 #ifndef LSC_PROFILES_NUM_MAX
1180 #define LSC_PROFILES_NUM_MAX         ( 5 )
1181 #endif
1182 #ifndef LSC_RESOLUTIONS_NUM_MAX
1183 #define LSC_RESOLUTIONS_NUM_MAX      ( 4 )
1184 #endif
1185 typedef enum Cam4ChColorComponent_e
1186 {
1187     CAM_4CH_COLOR_COMPONENT_RED     = 0,
1188     CAM_4CH_COLOR_COMPONENT_GREENR  = 1,
1189     CAM_4CH_COLOR_COMPONENT_GREENB  = 2,
1190     CAM_4CH_COLOR_COMPONENT_BLUE    = 3,
1191     CAM_4CH_COLOR_COMPONENT_MAX
1192 } Cam4ChColorComponent_t;
1193 
1194 typedef struct CamLscMatrix_s
1195 {
1196     Cam17x17UShortMatrix_t  LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX];
1197 } CamLscMatrix_t;
1198 
1199 typedef struct CamVignettingCurve_s {
1200     uint16_t    arraySize;
1201     float      pSensorGain[4];//change to pointer
1202     float      pVignetting[4];
1203 } CamVignettingCurve_t;
1204 
1205 typedef struct CalibDb_AlscCof_ill_s {
1206     char illuName[25];
1207     float awbGain[2];
1208     int tableUsedNO;
1209     CalibDb_Lsc_ProfileName_t tableUsed[LSC_PROFILES_NUM_MAX];
1210     CamVignettingCurve_t vignettingCurve;
1211 } CalibDb_AlscCof_ill_t;
1212 
1213 typedef struct CalibDb_AlscCof_s {
1214     int   lscResNum;
1215     CalibDb_ResolutionName_t  lscResName[LSC_RESOLUTIONS_NUM_MAX];// type CalibDb_ResolutionName_t
1216     int   illuNum[USED_FOR_CASE_MAX];
1217     CalibDb_AlscCof_ill_t illAll[USED_FOR_CASE_MAX][LSC_ILLUMINATION_MAX];
1218     int usedForCaseAll[USED_FOR_CASE_MAX * LSC_ILLUMINATION_MAX]; //for write xml
1219 } CalibDb_AlscCof_t;
1220 
1221 
1222 typedef struct CalibDb_LscTableProfile_s {
1223     CalibDb_Lsc_ProfileName_t     name;                                   /**< profile name */
1224     CalibDb_ResolutionName_t     resolution;                             /**< resolution link */
1225     CalibDb_IlluminationName_t   illumination;                           /**< illumination link */
1226     float                   vignetting;                             /**< vignetting value */
1227 
1228     uint16_t                LscSectors;
1229     uint16_t                LscNo;
1230     uint16_t                LscXo;
1231     uint16_t                LscYo;
1232 
1233     uint16_t                LscXGradTbl[LSC_GRAD_TBL_SIZE_ISP20];
1234     uint16_t                LscYGradTbl[LSC_GRAD_TBL_SIZE_ISP20];
1235     uint16_t                LscXSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20];
1236     uint16_t                LscYSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20];
1237 
1238     Cam17x17UShortMatrix_t  LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX];     /**< matrix for different color channels */
1239 } CalibDb_LscTableProfile_t;
1240 
1241 typedef struct CalibDb_Lsc_s {
1242     bool enable;
1243     bool damp_enable;
1244     CalibDb_AlscCof_t aLscCof;
1245     int tableAllNum;
1246     CalibDb_LscTableProfile_t *tableAll; //type  CalibDb_LscTableProfile_t;
1247 } CalibDb_Lsc_t;
1248 
1249 
1250 typedef struct CalibDb_RKDM_s {
1251     unsigned char debayer_en;
1252     signed char debayer_filter1[5];
1253     signed char debayer_filter2[5];
1254     unsigned char debayer_gain_offset;
1255     int ISO[9];
1256     unsigned char sharp_strength[9];
1257     unsigned short debayer_hf_offset[9];
1258     unsigned char debayer_offset;
1259     unsigned char debayer_clip_en;
1260     unsigned char debayer_filter_g_en;
1261     unsigned char debayer_filter_c_en;
1262     unsigned char debayer_thed0;
1263     unsigned char debayer_thed1;
1264     unsigned char debayer_dist_scale;
1265     unsigned char debayer_cnr_strength;
1266     unsigned char debayer_shift_num;
1267 } CalibDb_RKDM_t;
1268 
1269 #define CCM_ILLUMINATION_MAX               7
1270 #define CCM_PROFILE_NAME            ( 25U )
1271 typedef char                        CalibDb_Ccm_ProfileName_t[CCM_PROFILE_NAME];
1272 #define CCM_ILLUMINATION_NAME       ( 20U )
1273 // typedef char                        CalibDb_IlluminationName_t[CCM_ILLUMINATION_NAME];
1274 #define CCM_PROFILES_NUM_MAX         ( 5 )
1275 #define CCM_RESOLUTIONS_NUM_MAX      ( 4 )
1276 #define CALIBDB_ISO_NUM              ( 9 )
1277 typedef enum Cam3ChColorComponent_e
1278 {
1279     CAM_3CH_COLOR_COMPONENT_RED     = 0,
1280     CAM_3CH_COLOR_COMPONENT_GREEN   = 1,
1281     CAM_3CH_COLOR_COMPONENT_BLUE    = 2,
1282     CAM_3CH_COLOR_COMPONENT_MAX
1283 } Cam3ChColorComponent_t;
1284 
1285 typedef struct CamSaturationCurve_s {
1286     uint16_t    arraySize;
1287     float      pSensorGain[4];//change to pointer
1288     float      pSaturation[4];
1289 } CamSaturationCurve_t;
1290 
1291 typedef struct CalibDb_AccmCof_ill_s {
1292     char illuName[25];
1293     float awbGain[2];
1294     int matrixUsedNO;
1295     CalibDb_Ccm_ProfileName_t matrixUsed[CCM_PROFILES_NUM_MAX];
1296     CamSaturationCurve_t saturationCurve;
1297 } CalibDb_AccmCof_ill_t;
1298 
1299 typedef struct CalibDb_AccmCof_s {
1300     int   illuNum;
1301     CalibDb_AccmCof_ill_t illAll[CCM_ILLUMINATION_MAX];
1302 } CalibDb_AccmCof_t;
1303 
1304 typedef struct CalibDb_CcmMatrixProfile_s
1305 {
1306     CalibDb_Ccm_ProfileName_t  name;                   /**< profile name */
1307     CalibDb_IlluminationName_t illumination;
1308     float                   saturation;             /**< saturation value */
1309     Cam3x3FloatMatrix_t     CrossTalkCoeff;         /**< CrossTalk matrix coefficients */
1310     Cam1x3FloatMatrix_t     CrossTalkOffset;        /**< CrossTalk offsets */
1311 } CalibDb_CcmMatrixProfile_t;
1312 
1313 typedef struct CalibDb_LUMA_CCM_s {
1314     float rgb2y_para[3];
1315     float low_bound_pos_bit;
1316     float y_alpha_curve[17];
1317     int gain_scale_cure_size;
1318     float alpha_gain[9];//change to pointer
1319     float alpha_scale[9];
1320 } CalibDb_LUMA_CCM_t;
1321 
1322 typedef struct CalibDb_Ccm_ModeCell_s {
1323     bool valid;
1324     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1325     bool  damp_enable;
1326     CalibDb_AccmCof_t aCcmCof;
1327     CalibDb_LUMA_CCM_t   luma_ccm;
1328     int matrixAllNum;
1329     CalibDb_CcmMatrixProfile_t matrixAll[CCM_RESOLUTIONS_NUM_MAX * CCM_ILLUMINATION_MAX * CCM_PROFILES_NUM_MAX]; //type  CalibDb_CcmMatrixProfile_t;
1330 } CalibDb_Ccm_ModeCell_t;
1331 
1332 typedef enum  CalibDb_CcmHdrNormalMode_e {
1333     CCM_FOR_MODE_NORMAL = 0,
1334     CCM_FOR_MODE_HDR,
1335     CCM_FOR_MODE_MAX,
1336 } CalibDb_CcmHdrNormalMode_t;
1337 
1338 
1339 typedef struct CalibDb_Ccm_s {
1340     int modecellNum;
1341     bool enable;
1342     CalibDb_Ccm_ModeCell_t mode_cell[CCM_FOR_MODE_MAX];
1343 } CalibDb_Ccm_t;
1344 
1345 typedef struct CalibDb_UVNR_Params_s {
1346     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1347     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1348     float ISO[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1349     float step0_uvgrad_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1350     float step0_uvgrad_offset[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1351     float step1_nonMed1[4];
1352     float step1_nonBf1[4];
1353     float step1_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1354     float step1_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1355     float step1_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1356     float step1_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1357     float step1_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1358     float step1_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1359     float step1_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1360     float step1_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1361     float step1_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1362     float step1_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1363     float step1_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1364     float step1_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1365     float step1_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1366     float step2_nonExt_block[4];
1367     float step2_nonMed[4];
1368     float step2_nonBf[4];
1369     float step2_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1370     float step2_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1371     float step2_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1372     float step2_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1373     float step2_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1374     float step2_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1375     float step2_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1376     float step2_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1377     float step2_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1378     float step2_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1379     float step2_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1380     float step2_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1381     float step2_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1382     float step3_nonBf3[4];
1383     float step3_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1384     float step3_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1385     float step3_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1386     float step3_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1387     float step3_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1388     float step3_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1389     float step3_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1390     float kernel_3x3[3];
1391     float kernel_5x5[5];
1392     float kernel_9x9[8];
1393     float kernel_9x9_num;
1394     float sigma_adj_luma[9];
1395     float sigma_adj_ratio[9];
1396     float threshold_adj_luma[9];
1397     float threshold_adj_thre[9];
1398 } CalibDb_UVNR_Params_t;
1399 
1400 typedef struct CalibDb_UVNR_ModeCell_s {
1401     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1402     CalibDb_UVNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1403 } CalibDb_UVNR_ModeCell_t;
1404 
1405 typedef struct CalibDb_UVNR_s {
1406     int enable;
1407     char version[64];
1408     CalibDb_UVNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1409 } CalibDb_UVNR_t;
1410 
1411 typedef struct CalibDb_UVNR_2_s {
1412     int enable;
1413     char version[64];
1414     CalibDb_UVNR_ModeCell_t *mode_cell;
1415     int mode_num;
1416 } CalibDb_UVNR_2_t;
1417 
1418 
1419 typedef struct CalibDb_Gamma_s {
1420     unsigned char gamma_en;
1421     unsigned char gamma_out_segnum;
1422     unsigned char gamma_out_offset;
1423     float curve_normal[45];
1424     float curve_hdr[45];
1425     float curve_night[45];
1426 } CalibDb_Gamma_t;
1427 
1428 typedef struct CalibDb_Degamma_para_s {
1429     unsigned char degamma_scene_en;
1430     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1431     float X_axis[CALIBDB_DEGAMMA_CRUVE_KNOTS];
1432     float curve_R[CALIBDB_DEGAMMA_CRUVE_KNOTS];
1433     float curve_G[CALIBDB_DEGAMMA_CRUVE_KNOTS];
1434     float curve_B[CALIBDB_DEGAMMA_CRUVE_KNOTS];
1435 } CalibDb_Degamma_para_t;
1436 
1437 typedef struct CalibDb_Degamma_s {
1438     unsigned char degamma_en;
1439     CalibDb_Degamma_para_t mode[3];
1440 } CalibDb_Degamma_t;
1441 
1442 typedef struct CalibDb_YNR_ISO_s {
1443     float iso;
1444     double sigma_curve[5];
1445     float ynr_lci[4];
1446     float ynr_lhci[4];
1447     float ynr_hlci[4];
1448     float ynr_hhci[4];
1449     float lo_lumaPoint[6];
1450     float lo_lumaRatio[6];
1451     float lo_directionStrength;
1452     float lo_bfScale[4];
1453     float imerge_ratio;
1454     float imerge_bound;
1455     float denoise_weight[4];
1456     float hi_lumaPoint[6];
1457     float hi_lumaRatio[6];
1458     float hi_bfScale[4];
1459     float hwith_d[4];
1460     float hi_denoiseStrength;
1461     float hi_detailMinAdjDnW;
1462     float hi_denoiseWeight[4];
1463     float y_luma_point[6];
1464     float hgrad_y_level1[6];
1465     float hgrad_y_level2[6];
1466     float hgrad_y_level3[6];
1467     float hgrad_y_level4[6];
1468     float hi_soft_thresh_scale[4];
1469 } CalibDb_YNR_ISO_t;
1470 
1471 typedef struct CalibDb_YNR_Setting_s {
1472     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1473     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1474     CalibDb_YNR_ISO_t ynr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1475 } CalibDb_YNR_Setting_t;
1476 
1477 typedef struct CalibDb_YNR_ModeCell_s {
1478     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1479     CalibDb_YNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1480 } CalibDb_YNR_ModeCell_t;
1481 
1482 typedef struct CalibDb_YNR_s {
1483     int enable;
1484     char version[64];
1485     CalibDb_YNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1486 } CalibDb_YNR_t;
1487 
1488 typedef struct CalibDb_YNR_2_s {
1489     int enable;
1490     char version[64];
1491     CalibDb_YNR_ModeCell_t *mode_cell;
1492     int mode_num;
1493 } CalibDb_YNR_2_t;
1494 
1495 
1496 typedef struct CalibDb_Gic_setting_v20_s {
1497     float iso[CALIBDB_ISO_NUM];
1498     float min_busy_thre[CALIBDB_ISO_NUM];
1499     float min_grad_thr1[CALIBDB_ISO_NUM];
1500     float min_grad_thr2[CALIBDB_ISO_NUM] ;
1501     float k_grad1[CALIBDB_ISO_NUM];
1502     float k_grad2[CALIBDB_ISO_NUM] ;
1503     float gb_thre[CALIBDB_ISO_NUM] ;
1504     float maxCorV[CALIBDB_ISO_NUM] ;
1505     float maxCorVboth[CALIBDB_ISO_NUM];
1506     float dark_thre[CALIBDB_ISO_NUM];
1507     float dark_threHi[CALIBDB_ISO_NUM];
1508     float k_grad1_dark[CALIBDB_ISO_NUM];
1509     float k_grad2_dark[CALIBDB_ISO_NUM] ;
1510     float min_grad_thr_dark1[CALIBDB_ISO_NUM];
1511     float min_grad_thr_dark2[CALIBDB_ISO_NUM] ;
1512     float noiseCurve_0[CALIBDB_ISO_NUM];
1513     float noiseCurve_1[CALIBDB_ISO_NUM];
1514     float GValueLimitLo[CALIBDB_ISO_NUM] ;
1515     float GValueLimitHi[CALIBDB_ISO_NUM];
1516     float textureStrength[CALIBDB_ISO_NUM] ;
1517     float ScaleLo[CALIBDB_ISO_NUM] ;
1518     float ScaleHi[CALIBDB_ISO_NUM] ;
1519     float globalStrength[CALIBDB_ISO_NUM];
1520     float noise_coea[CALIBDB_ISO_NUM] ;
1521     float noise_coeb[CALIBDB_ISO_NUM];
1522     float diff_clip[CALIBDB_ISO_NUM];
1523 } CalibDb_Gic_setting_v20_t;
1524 
1525 typedef struct CalibDb_Gic_ModeCell_v20_s {
1526     char scene[CALIBDB_MAX_MODE_NAME_LENGTH];
1527     unsigned char gic_en;
1528     unsigned char edge_en;
1529     unsigned char gr_ration;
1530     unsigned char noise_cut_en;
1531     CalibDb_Gic_setting_v20_t setting;
1532 } CalibDb_Gic_ModeCell_v20_t;
1533 
1534 typedef struct CalibDb_Gic_s {
1535     CalibDb_Gic_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM];
1536     CalibDb_Gic_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM];
1537 } CalibDb_Gic_t;
1538 
1539 struct CalibDb_awb_uv_ratio_s {
1540     char illum[9];
1541     float ratio[2];
1542 };
1543 
1544 struct CalibDb_MFNR_ISO_s {
1545     float iso;
1546     float weight_limit_y[4];
1547     float weight_limit_uv[3];
1548     float ratio_frq[4];
1549     float luma_w_in_chroma[3];
1550     double noise_curve[5];
1551     double noise_curve_x00;
1552     float y_lo_noiseprofile[4];
1553     float y_hi_noiseprofile[4];
1554     float y_lo_denoiseweight[4];
1555     float y_hi_denoiseweight[4];
1556     float y_lo_bfscale[4];
1557     float y_hi_bfscale[4];
1558     float y_lumanrpoint[6];
1559     float y_lumanrcurve[6];
1560     float y_denoisestrength;
1561     float y_lo_lvl0_gfdelta[6];
1562     float y_hi_lvl0_gfdelta[6];
1563     float y_lo_lvl1_gfdelta[3];
1564     float y_hi_lvl1_gfdelta[3];
1565     float y_lo_lvl2_gfdelta[3];
1566     float y_hi_lvl2_gfdelta[3];
1567     float y_lo_lvl3_gfdelta[3];
1568     float y_hi_lvl3_gfdelta[3];
1569     float uv_lo_noiseprofile[3];
1570     float uv_hi_noiseprofile[3];
1571     float uv_lo_denoiseweight[3];
1572     float uv_hi_denoiseweight[3];
1573     float uv_lo_bfscale[3];
1574     float uv_hi_bfscale[3];
1575     float uv_lumanrpoint[6];
1576     float uv_lumanrcurve[6];
1577     float uv_denoisestrength;
1578     float uv_lo_lvl0_gfdelta[6];
1579     float uv_hi_lvl0_gfdelta[6];
1580     float uv_lo_lvl1_gfdelta[3];
1581     float uv_hi_lvl1_gfdelta[3];
1582     float uv_lo_lvl2_gfdelta[3];
1583     float uv_hi_lvl2_gfdelta[3];
1584     float lvl0_gfsigma[6];
1585     float lvl1_gfsigma[3];
1586     float lvl2_gfsigma[3];
1587     float lvl3_gfsigma[3];
1588 };
1589 
1590 typedef struct CalibDb_MFNR_Setting_s {
1591     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1592     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1593     struct CalibDb_MFNR_ISO_s mfnr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1594 } CalibDb_MFNR_Setting_t;
1595 
1596 typedef struct CalibDb_MFNR_Dynamic_s {
1597     int enable;
1598     float lowth_iso;
1599     float lowth_time;
1600     float highth_iso;
1601     float highth_time;
1602 } CalibDb_MFNR_Dynamic_t;
1603 
1604 typedef struct CalibDb_MFNR_Motion_s {
1605     int enable;
1606     float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1607     float sigmaHScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1608     float sigmaLScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1609     float lightClp[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1610     float uvWeight[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1611     float mfnrSigmaScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1612     float yuvnrGainScale0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1613     float yuvnrGainScale1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1614     float yuvnrGainScale2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1615     float reserved0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1616     float reserved1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1617     float reserved2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1618     float reserved3[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1619     float reserved4[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1620     float reserved5[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1621     float reserved6[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1622     float reserved7[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1623     float frame_limit_uv[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1624     float frame_limit_y[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1625 } CalibDb_MFNR_Motion_t;
1626 
1627 typedef struct CalibDb_MFNR_ModeCell_s {
1628     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1629     CalibDb_MFNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1630     CalibDb_MFNR_Dynamic_t dynamic;
1631     CalibDb_MFNR_Motion_t  motion;
1632 } CalibDb_MFNR_ModeCell_t;
1633 
1634 typedef struct CalibDb_MFNR_s {
1635     int enable;
1636     char version[64];
1637     unsigned char local_gain_en;
1638     unsigned char motion_detect_en;
1639     unsigned char mode_3to1;
1640     unsigned char max_level;
1641     unsigned char max_level_uv;
1642     unsigned char back_ref_num;
1643     struct CalibDb_awb_uv_ratio_s uv_ratio[4];
1644     CalibDb_MFNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1645 } CalibDb_MFNR_t;
1646 
1647 typedef struct CalibDb_MFNR_2_s {
1648     int enable;
1649     char version[64];
1650     unsigned char local_gain_en;
1651     unsigned char motion_detect_en;
1652     unsigned char mode_3to1;
1653     unsigned char max_level;
1654     unsigned char max_level_uv;
1655     unsigned char back_ref_num;
1656     struct CalibDb_awb_uv_ratio_s uv_ratio[4];
1657     CalibDb_MFNR_ModeCell_t *mode_cell;
1658     int mode_num;
1659 } CalibDb_MFNR_2_t;
1660 
1661 
1662 struct CalibDb_Sharp_ISO_s {
1663     float iso;
1664     float hratio;
1665     float lratio;
1666     float mf_sharp_ratio;
1667     float hf_sharp_ratio;
1668     float luma_sigma[8];
1669     float pbf_gain;
1670     float pbf_ratio;
1671     float pbf_add;
1672     float mf_clip_pos[8];
1673     float mf_clip_neg[8];
1674     float hf_clip[8];
1675     float mbf_gain;
1676     float hbf_gain;
1677     float hbf_ratio;
1678     float mbf_add;
1679     float hbf_add;
1680     float local_sharp_strength;
1681     float pbf_coeff_percent;
1682     float rf_m_coeff_percent;
1683     float rf_h_coeff_percent;
1684     float hbf_coeff_percent;
1685 };
1686 
1687 typedef struct CalibDb_Sharp_Setting_s {
1688     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1689     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1690     struct CalibDb_Sharp_ISO_s sharp_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1691 } CalibDb_Sharp_Setting_t;
1692 
1693 typedef struct CalibDb_Sharp_ModeCell_s {
1694     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1695     float gauss_luma_coeff[9];
1696     float mbf_coeff[221];
1697 #if 0
1698     float pbf_coeff[9];
1699     float rf_m_coeff[25];
1700     float rf_h_coeff[25];
1701     float hbf_coeff[9];
1702 #else
1703     //v2
1704     float pbf_coeff_l[9];
1705     float pbf_coeff_h[9];
1706     float rf_m_coeff_l[25];
1707     float rf_m_coeff_h[25];
1708     float rf_h_coeff_l[25];
1709     float rf_h_coeff_h[25];
1710     float hbf_coeff_l[9];
1711     float hbf_coeff_h[9];
1712 #endif
1713     CalibDb_Sharp_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1714 } CalibDb_Sharp_ModeCell_t;
1715 
1716 typedef struct CalibDb_Sharp_s {
1717     int enable;
1718     char version[64];
1719     float luma_point[8];
1720     CalibDb_Sharp_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1721 } CalibDb_Sharp_t;
1722 
1723 typedef struct CalibDb_Sharp_2_s {
1724     int enable;
1725     char version[64];
1726     float luma_point[8];
1727     CalibDb_Sharp_ModeCell_t* mode_cell;
1728     int mode_num;
1729 } CalibDb_Sharp_2_t;
1730 
1731 
1732 struct CalibDb_EdgeFilter_ISO_s {
1733     float iso;
1734     float edge_thed;
1735     float src_wgt;
1736     unsigned char alpha_adp_en;
1737     float local_alpha;
1738     float global_alpha;
1739     float noise_clip[8];
1740     float dog_clip_pos[8];
1741     float dog_clip_neg[8];
1742     float dog_alpha[8];
1743     float direct_filter_coeff[5];
1744     float dog_kernel_row0[5];
1745     float dog_kernel_row1[5];
1746     float dog_kernel_row2[5];
1747     float dog_kernel_row3[5];
1748     float dog_kernel_row4[5];
1749     float dog_kernel_percent;
1750 };
1751 
1752 typedef struct CalibDb_EdgeFilter_Setting_s {
1753     char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
1754     char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
1755     struct CalibDb_EdgeFilter_ISO_s edgeFilter_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
1756 } CalibDb_EdgeFilter_Setting_t;
1757 
1758 typedef struct CalibDb_EdgeFilter_ModeCell_s {
1759     char name[CALIBDB_MAX_MODE_NAME_LENGTH];
1760     float dog_kernel_l[25];
1761     float dog_kernel_h[25];
1762     CalibDb_EdgeFilter_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
1763 } CalibDb_EdgeFilter_ModeCell_t;
1764 
1765 typedef struct CalibDb_EdgeFilter_s {
1766     int enable;
1767     char version[64];
1768     float luma_point[8];
1769     CalibDb_EdgeFilter_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
1770 } CalibDb_EdgeFilter_t;
1771 
1772 typedef struct CalibDb_EdgeFilter_2_s {
1773     int enable;
1774     char version[64];
1775     float luma_point[8];
1776     CalibDb_EdgeFilter_ModeCell_t *mode_cell;
1777     int mode_num;
1778 } CalibDb_EdgeFilter_2_t;
1779 
1780 typedef struct CalibDb_IIR_setting_v20_s {
1781     float stab_fnum;
1782     float sigma;
1783     float wt_sigma;
1784     float air_sigma;
1785     float tmax_sigma;
1786 } CalibDb_IIR_setting_v20_t;
1787 
1788 typedef struct CalibDb_Dehaze_Setting_v20_s {
1789     float en;
1790     float iso[9];
1791     float dc_min_th[9];
1792     float dc_max_th[9];
1793     float yhist_th[9];
1794     float yblk_th[9];
1795     float dark_th[9];
1796     float bright_min[9];
1797     float bright_max[9];
1798     float wt_max[9];
1799     float air_min[9];
1800     float air_max[9];
1801     float tmax_base[9];
1802     float tmax_off[9];
1803     float tmax_max[9];
1804     float cfg_wt[9];
1805     float cfg_air[9];
1806     float cfg_tmax[9];
1807     float dc_thed[9];
1808     float dc_weitcur[9];
1809     float air_thed[9];
1810     float air_weitcur[9];
1811     CalibDb_IIR_setting_v20_t IIR_setting;
1812 } CalibDb_Dehaze_Setting_v20_t;
1813 
1814 typedef struct CalibDb_Enhance_Setting_v20_s {
1815     float en;
1816     float iso[9];
1817     float enhance_value[9];
1818 } CalibDb_Enhance_Setting_v20_t;
1819 
1820 typedef struct CalibDb_Hist_setting_v20_s {
1821     float en;
1822     float iso[9];
1823     unsigned char  hist_channel[9];
1824     unsigned char  hist_para_en[9];
1825     float hist_gratio[9];
1826     float hist_th_off[9];
1827     float hist_k[9];
1828     float hist_min[9];
1829     float hist_scale[9];
1830     float cfg_gratio[9];
1831 } CalibDb_Hist_setting_v20_t;
1832 
1833 typedef struct CalibDb_Dehaze_ModeCell_v20_s {
1834     char scene[CALIBDB_MAX_MODE_NAME_LENGTH];
1835     float en;
1836     float cfg_alpha;
1837     CalibDb_Dehaze_Setting_v20_t dehaze_setting;
1838     CalibDb_Enhance_Setting_v20_t enhance_setting;
1839     CalibDb_Hist_setting_v20_t hist_setting;
1840 } CalibDb_Dehaze_ModeCell_v20_t;
1841 
1842 typedef struct CalibDb_Dehaze_s {
1843     CalibDb_Dehaze_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM];
1844     CalibDb_Dehaze_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM];
1845 
1846 } CalibDb_Dehaze_t;
1847 
1848 typedef enum CalibDb_Af_SearchDir_s {
1849     CAM_AFM_POSITIVE_SEARCH     = 0,
1850     CAM_AFM_NEGATIVE_SEARCH     = 1,
1851     CAM_AFM_ADAPTIVE_SEARCH     = 2
1852 } CalibDb_Af_SearchDir_t;
1853 
1854 typedef enum CalibDb_Af_SS_s {
1855     CAM_AFM_FSS_INVALID         = 0,
1856     CAM_AFM_FSS_FULLRANGE       = 1,    /**< scan the full focus range to find the point of best focus */
1857     CAM_AFM_FSS_HILLCLIMBING    = 2,    /**< use hillclimbing search */
1858     CAM_AFM_FSS_ADAPTIVE_RANGE  = 3,    /**< similar to full range search, but with multiple subsequent scans
1859                                          with decreasing range and step size will be performed. */
1860     CAM_AFM_FSS_MUTIWINDOW    = 4,    /**< search by muti-window statistics */
1861     CAM_AFM_FSS_MAX
1862 } CalibDb_Af_SS_t;
1863 
1864 typedef struct CalibDb_Af_Contrast_s {
1865     unsigned char           enable;
1866     CalibDb_Af_SS_t         Afss;                         /**< enumeration type for search strategy */
1867     CalibDb_Af_SearchDir_t  FullDir;
1868     unsigned char           FullSteps;
1869     unsigned short          FullRangeTbl[65];                 /**< full range search table*/
1870     CalibDb_Af_SearchDir_t  AdaptiveDir;
1871     unsigned char           AdaptiveSteps;
1872     unsigned short          AdaptRangeTbl[65];                /**< adaptive range search table*/
1873     float                   TrigThers;                    /**< AF trigger threshold */
1874     float                   LumaTrigThers;
1875 
1876     float                   StableThers;                  /**< AF stable threshold */
1877     unsigned short          StableFrames;                 /**< AF stable  status must hold frames */
1878     unsigned short          StableTime;                   /**< AF stable status must hold time */
1879 
1880     unsigned char           SceneDiffEnable;
1881     float                   SceneDiffThers;
1882     unsigned short          SceneDiffBlkThers;
1883     float                   CenterSceneDiffThers;
1884 
1885     float                   ValidMaxMinRatio;
1886     float                   ValidValueThers;
1887 
1888     float                   OutFocusValue;                /**< out of focus vlaue*/
1889     unsigned short          OutFocusPos;                  /**< out of focus position*/
1890 
1891     unsigned char           WeightEnable;
1892     unsigned short          Weight[225];                  /**< weight */
1893 
1894     unsigned char           SearchPauseLumaEnable;
1895     float                   SearchPauseLumaThers;
1896     unsigned short          SearchLumaStableFrames;
1897     float                   SearchLumaStableThers;
1898 
1899     float                   FlatValue;
1900 } CalibDb_Af_Contrast_t;
1901 
1902 typedef struct CalibDb_Af_Laser_s {
1903     unsigned char enable;
1904     float vcmDot[7];
1905     float distanceDot[7];
1906 } CalibDb_Af_Laser_t;
1907 
1908 typedef struct CalibDb_Af_Pdaf_s {
1909     unsigned char enable;
1910 } CalibDb_Af_Pdaf_t;
1911 
1912 typedef struct CalibDb_Af_VcmCfg_s {
1913     int start_current;
1914     int rated_current;
1915     int step_mode;
1916     int extra_delay;
1917 } CalibDb_Af_VcmCfg_t;
1918 
1919 typedef struct CalibDb_Af_MeasIsoCfg_s {
1920     int iso;
1921     unsigned short afmThres;
1922     unsigned short gammaY[17];
1923     unsigned char gaussWeight[3];
1924 } CalibDb_Af_MeasIsoCfg_t;
1925 
1926 typedef struct CalibDb_Af_DefCode_s {
1927     unsigned char code;
1928 } CalibDb_Af_DefCode_t;
1929 
1930 typedef struct CalibDb_Af_ZoomFocusTbl_s {
1931     int tbl_len;
1932     float focal_length[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
1933     int zoom_pos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
1934     int focus_infpos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
1935     int focus_macropos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
1936 } CalibDb_Af_ZoomFocusTbl_t;
1937 
1938 typedef struct CalibDb_AF_s {
1939     signed char af_mode;
1940     unsigned short win_h_offs;
1941     unsigned short win_v_offs;
1942     unsigned short win_h_size;
1943     unsigned short win_v_size;
1944     CalibDb_Af_DefCode_t fixed_mode;
1945     CalibDb_Af_DefCode_t macro_mode;
1946     CalibDb_Af_DefCode_t infinity_mode;
1947     CalibDb_Af_Contrast_t contrast_af;
1948     CalibDb_Af_Laser_t laser_af;
1949     CalibDb_Af_Pdaf_t pdaf;
1950     CalibDb_Af_VcmCfg_t vcmcfg;
1951     CalibDb_Af_MeasIsoCfg_t measiso_cfg[CALIBDB_MAX_ISO_LEVEL];
1952     CalibDb_Af_ZoomFocusTbl_t zoomfocus_tbl;
1953 } CalibDb_AF_t;
1954 
1955 typedef struct CalibDb_ORB_s {
1956     unsigned char orb_en;
1957 } CalibDb_ORB_t;
1958 
1959 typedef struct CalibDb_LUMA_DETECT_s {
1960     unsigned char luma_detect_en;
1961     int fixed_times;
1962     float mutation_threshold;
1963     float mutation_threshold_level2;
1964 } CalibDb_LUMA_DETECT_t;
1965 
1966 typedef struct CalibDb_FEC_s {
1967     unsigned char fec_en;
1968     char meshfile[256];
1969     int correct_level;
1970     double light_center[2]; // light center
1971     double coefficient[4]; // the distortion coefficient of the fisheye lens
1972 } CalibDb_FEC_t;
1973 
1974 typedef struct CalibDb_EIS_s {
1975     unsigned char eis_en;
1976     // TODO(Cody): Add EIS specific calib data
1977 } CalibDb_EIS_t;
1978 
1979 typedef struct CalibDb_LDCH_s {
1980     unsigned char ldch_en;
1981     char meshfile[256];
1982     int correct_level;
1983     int correct_level_max;
1984     double light_center[2]; // light center
1985     double coefficient[4]; // the distortion coefficient of the fisheye lens
1986 } CalibDb_LDCH_t;
1987 typedef struct {
1988     bool enable;
1989     unsigned short look_up_table_r[729];
1990     unsigned short look_up_table_g[729];
1991     unsigned short look_up_table_b[729];
1992 } CalibDb_Lut3d_t;
1993 
1994 typedef struct {
1995     bool          support_en;
1996     RKAiqOPMode_t dcg_optype;
1997     Cam1x3IntMatrix_t dcg_mode;
1998     float         dcg_ratio;
1999     bool          gainCtrl_en;
2000     bool          envCtrl_en;
2001     bool          sync_switch;
2002     float         lcg2hcg_gain_th;
2003     float         lcg2hcg_env_th;
2004     float         hcg2lcg_gain_th;
2005     float         hcg2lcg_env_th;
2006 } CalibDb_Dcg_Params_t;
2007 
2008 typedef struct {
2009     CalibDb_Dcg_Params_t Hdr;
2010     CalibDb_Dcg_Params_t Normal;
2011 } CalibDb_Dcg_t;
2012 
2013 typedef struct {
2014     uint8_t       support_en;
2015     /* default mode
2016      * 0: auto
2017      * 1: manual
2018      */
2019     int32_t      mode;
2020     /* force gray if cpsl on */
2021     uint8_t        gray;
2022     /* default cpsl source
2023      * 0: led
2024      * 1: ir
2025      * 2: mix
2026      */
2027     int32_t      lght_src;
2028     /* auto mode default params */
2029     float         ajust_sens;
2030     uint32_t      sw_interval;
2031     uint32_t      on2off_th;
2032     uint32_t      off2on_th;
2033     /* manual mode default params */
2034     uint8_t       cpsl_on;
2035     float         strength;
2036 } CalibDb_Cpsl_t;
2037 
2038 typedef struct {
2039     int time_delay;
2040     int gain_delay;
2041     int dcg_delay;
2042 } CalibDb_ExpDelay_t;
2043 
2044 typedef struct {
2045     CalibDb_ExpDelay_t Hdr;
2046     CalibDb_ExpDelay_t Normal;
2047 } CalibDb_ExpDelay_comb_t;
2048 
2049 typedef struct {
2050 #define HDR_MODE_2_FRAME_STR        "MODE_2_FRAME"
2051 #define HDR_MODE_2_LINE_STR         "MODE_2_LINE"
2052 #define HDR_MODE_3_FRAME_STR        "MODE_3_FRAME"
2053 #define HDR_MODE_3_LINE_STR         "MODE_3_LINE"
2054 #define HDR_LINE_MODE_DCG_STR       "DCG"
2055 #define HDR_LINE_MODE_STAGGER_STR   "STAGGER"
2056 
2057     unsigned char hdr_en;
2058     rk_aiq_isp_hdr_mode_t hdr_mode;
2059     rk_aiq_sensor_hdr_line_mode_t line_mode;
2060     CalibDb_Dcg_t dcg;
2061     CalibDb_ExpDelay_comb_t exp_delay;
2062 } CalibDb_System_t;
2063 
2064 typedef struct {
2065     char parse_version[16];
2066     char date[16];
2067     char author[32];
2068     char sensor_name[32];
2069     char sample_name[64];
2070     char gen_verion[16];
2071     uint32_t magic_code;
2072 } CalibDb_Header_t;
2073 
2074 typedef struct CalibDb_ColorAsGrey_s {
2075     int enable;
2076 } CalibDb_ColorAsGrey_t;
2077 
2078 
2079 typedef struct CalibDb_cProc_s {
2080     uint8_t enable;
2081     uint8_t brightness;
2082     uint8_t contrast;
2083     uint8_t saturation;
2084     uint8_t hue;
2085 } CalibDb_cProc_t;
2086 
2087 typedef struct CalibDb_IE_s {
2088     int enable;
2089     int mode;
2090 } CalibDb_IE_t;
2091 
2092 typedef struct CamCalibDbContextIsp20_s {
2093     CalibDb_Header_t header;
2094     struct list_head awb_calib_para_v200;
2095     struct list_head awb_adjust_para;
2096     CalibDb_Lut3d_t lut3d;
2097     CalibDb_Aec_Para_t aec;
2098     CalibDb_AF_t af;
2099     CalibDb_Amerge_Para_t amerge;
2100     CalibDb_Atmo_Para_t atmo;
2101     CalibDb_Blc_t blc;
2102     CalibDb_Dpcc_t dpcc;
2103     CalibDb_BayerNr_2_t bayerNr;
2104     CalibDb_Lsc_t lsc;
2105     CalibDb_RKDM_t dm;
2106     CalibDb_Ccm_t ccm;
2107     CalibDb_UVNR_2_t uvnr;
2108     CalibDb_Gamma_t gamma;
2109     CalibDb_Degamma_t degamma;
2110     CalibDb_YNR_2_t ynr;
2111     CalibDb_Gic_t gic;
2112     CalibDb_MFNR_2_t mfnr;
2113     CalibDb_Sharp_2_t sharp;
2114     CalibDb_EdgeFilter_2_t edgeFilter;
2115     CalibDb_Dehaze_t dehaze;
2116     CalibDb_FEC_t afec;
2117     CalibDb_EIS_t aeis;
2118     CalibDb_LDCH_t aldch;
2119     CalibDb_LUMA_DETECT_t lumaDetect;
2120     CalibDb_ORB_t orb;
2121     CalibDb_Sensor_Para_t sensor;
2122     CalibDb_Module_Info_t module;
2123     CalibDb_Cpsl_t cpsl;
2124     CalibDb_ColorAsGrey_t colorAsGrey;
2125     CalibDb_cProc_t cProc;
2126     CalibDb_IE_t    ie;
2127     CalibDb_System_t  sysContrl;
2128 } CamCalibDbContextIsp20_t;
2129 
2130 #pragma pack()
2131 
2132 #endif
2133