xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/af_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * af_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_AF_HEADER_H__
21 #define __CALIBDBV2_AF_HEADER_H__
22 
23 #include "rk_aiq_comm.h"
24 
25 RKAIQ_BEGIN_DECLARE
26 
27 #define CALIBDBV2_MAX_ISO_LEVEL                    13
28 #define CALIBDBV2_ZOOM_FOCUS_POSITION_NUM          32
29 #define CALIBDBV2_ZOOM_FOCUS_ZOOM_MOVE_TBL_SIZE    32
30 #define CALIBDBV2_AF_CORRECT_SEARCHTBL_MAX         100
31 
32 typedef enum CalibDbV2_Af_SearchDir_s {
33     CalibDbV2_AF_POSITIVE_SEARCH     = 0,
34     CalibDbV2_AF_NEGATIVE_SEARCH     = 1,
35     CalibDbV2_AF_ADAPTIVE_SEARCH     = 2
36 } CalibDbV2_Af_SearchDir_t;
37 
38 typedef enum CalibDbV2_Af_SS_s {
39     CalibDbV2_AFSS_INVALID         = 0,
40     CalibDbV2_AFSS_FULLRANGE       = 1,    /**< scan the full focus range to find the point of best focus */
41     CalibDbV2_AFSS_HILLCLIMBING    = 2,    /**< use hillclimbing search */
42     CalibDbV2_AFSS_ADAPTIVE_RANGE  = 3,    /**< similar to full range search, but with multiple subsequent scans
43                                                 with decreasing range and step size will be performed. */
44     CalibDbV2_AFSS_MUTIWINDOW      = 4,    /**< search by muti-window statistics */
45     CalibDbV2_AFSS_MAX
46 } CalibDbV2_Af_SS_t;
47 
48 typedef enum CalibDbV2_AF_MODE_s
49 {
50     CalibDbV2_AFMODE_NOT_SET = -1,
51     CalibDbV2_AFMODE_AUTO,
52     CalibDbV2_AFMODE_MACRO,
53     CalibDbV2_AFMODE_INFINITY,
54     CalibDbV2_AFMODE_FIXED,
55     CalibDbV2_AFMODE_EDOF,
56     CalibDbV2_AFMODE_CONT_VIDEO,
57     CalibDbV2_AFMODE_CONT_PICTURE,
58     CalibDbV2_AFMODE_ZOOM_ONESHOT,
59 } CalibDbV2_AF_MODE_t;
60 
61 typedef enum CalibDbV2_PDAF_DATA_DIR_s {
62     CalibDbV2_PDAF_DIR_INVAL = 0,
63     CalibDbV2_PDAF_DIR_LEFT  = 1,
64     CalibDbV2_PDAF_DIR_RIGHT = 2,
65     CalibDbV2_PDAF_DIR_TOP   = 3,
66     CalibDbV2_PDAF_DIR_DOWN  = 4
67 } CalibDbV2_PDAF_DATA_DIR_t;
68 
69 typedef struct CalibDbV2_Af_ContrastZoom_s {
70     // M4_ARRAY_DESC("QuickFoundThersZoomIdx", "u16", M4_SIZE(1,32), M4_RANGE(0,65535), "0", M4_DIGIT(0), M4_DYNAMIC(1))
71     unsigned short          *QuickFoundThersZoomIdx;
72     int                     QuickFoundThersZoomIdx_len;
73     // M4_ARRAY_DESC("QuickFoundThers", "f32", M4_SIZE(1,32), M4_RANGE(0,1), "0.2", M4_DIGIT(3), M4_DYNAMIC(1))
74     float                   *QuickFoundThers;
75     int                     QuickFoundThers_len;
76     // M4_ARRAY_DESC("SearchStepZoomIdx", "u16", M4_SIZE(1,32), M4_RANGE(0,65535), "0", M4_DIGIT(0), M4_DYNAMIC(1))
77     unsigned short          *SearchStepZoomIdx;
78     int                     SearchStepZoomIdx_len;
79     // M4_ARRAY_DESC("SearchStep", "u16", M4_SIZE(1,32), M4_RANGE(0,65535), "16", M4_DIGIT(0), M4_DYNAMIC(1))
80     unsigned short          *SearchStep;
81     int                     SearchStep_len;
82     // M4_ARRAY_DESC("StopStepZoomIdx", "u16", M4_SIZE(1,32), M4_RANGE(0,65535), "0", M4_DIGIT(0), M4_DYNAMIC(1))
83     unsigned short          *StopStepZoomIdx;
84     int                     StopStepZoomIdx_len;
85     // M4_ARRAY_DESC("StopStep", "u16", M4_SIZE(1,32), M4_RANGE(0,65535), "4", M4_DIGIT(0), M4_DYNAMIC(1))
86     unsigned short          *StopStep;
87     int                     StopStep_len;
88     // M4_NUMBER_DESC("SkipHighPassZoomIdx", "u16", M4_RANGE(0, 65535), "10000", M4_DIGIT(0))
89     unsigned short          SkipHighPassZoomIdx;
90     // M4_NUMBER_DESC("SkipHighPassGain", "f32", M4_RANGE(0, 1000), "1000", M4_DIGIT(3))
91     float                   SkipHighPassGain;
92     // M4_NUMBER_DESC("SwitchDirZoomIdx", "u16", M4_RANGE(0, 65535), "0", M4_DIGIT(0))
93     unsigned short          SwitchDirZoomIdx;
94 
95     // M4_NUMBER_DESC("Spotlight HighlightRatio", "f32", M4_RANGE(0, 1), "0.014", M4_DIGIT(3))
96     float                   SpotlightHighlightRatio;
97     // M4_ARRAY_DESC("Spotlight LumaRatio", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "[0.3, 0.5, 0.8]", M4_DIGIT(3), M4_DYNAMIC(0))
98     float                   SpotlightLumaRatio[3];
99     // M4_ARRAY_DESC("Spotlight BlkCnt", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "[0.2, 0.5, 0.25]", M4_DIGIT(3), M4_DYNAMIC(0))
100     float                   SpotlightBlkCnt[3];
101 } CalibDbV2_Af_ContrastZoom_t;
102 
103 typedef struct CalibDbV2_Af_Contrast_s {
104     // M4_BOOL_DESC("enable", "1")
105     bool enable;
106     // M4_ENUM_DESC("SearchStrategy", "CalibDbV2_Af_SS_t", "CalibDbV2_AFSS_ADAPTIVE_RANGE")
107     CalibDbV2_Af_SS_t         Afss;                       /**< enumeration type for search strategy */
108     // M4_ENUM_DESC("FullDir", "CalibDbV2_Af_SearchDir_t", "CalibDbV2_AF_ADAPTIVE_SEARCH")
109     CalibDbV2_Af_SearchDir_t  FullDir;
110     // M4_ARRAY_DESC("FullRangeTbl", "s16", M4_SIZE(1,3), M4_RANGE(-1023,1023), "[0,1,64]", M4_DIGIT(0), M4_DYNAMIC(0))
111     short                   FullRangeTbl[3];
112     // M4_ENUM_DESC("AdaptiveDir", "CalibDbV2_Af_SearchDir_t", "CalibDbV2_AF_ADAPTIVE_SEARCH")
113     CalibDbV2_Af_SearchDir_t  AdaptiveDir;
114     // M4_ARRAY_DESC("AdaptRangeTbl", "u16", M4_SIZE(1,65), M4_RANGE(0,1023), "[0,8,16,24,32,40,48,56,64]", M4_DIGIT(0), M4_DYNAMIC(1))
115     unsigned short          *AdaptRangeTbl;            /**< adaptive range search table*/
116     int                     AdaptRangeTbl_len;
117     // M4_ARRAY_DESC("FineSearchStep", "u16", M4_SIZE(1,65), M4_RANGE(0,1023), "[4,4,4,4,4,4,4,4,4]", M4_DIGIT(0), M4_DYNAMIC(1))
118     unsigned short          *FineSearchStep;
119     int                     FineSearchStep_len;
120     // M4_NUMBER_DESC("SkipCurveFitGain", "f32", M4_RANGE(0, 1000), "0", M4_DIGIT(3))
121     float                   SkipCurveFitGain;
122     // M4_ARRAY_DESC("TrigThers", "f32", M4_SIZE(1,32), M4_RANGE(0,1), "0.075", M4_DIGIT(3), M4_DYNAMIC(1))
123     float                   *TrigThers;                    /**< AF trigger threshold */
124     int                     TrigThers_len;
125     // M4_ARRAY_DESC("TrigThersFv", "f32", M4_SIZE(1,32), M4_RANGE(0,100000000000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
126     float                   *TrigThersFv;                    /**< AF trigger threshold */
127     int                     TrigThersFv_len;
128     // M4_NUMBER_DESC("LumaTrigThers", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
129     float                   LumaTrigThers;
130     // M4_NUMBER_DESC("ExpTrigThers", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
131     float                   ExpTrigThers;
132     // M4_NUMBER_DESC("ChangedFrames", "u16", M4_RANGE(0,1000), "10", M4_DIGIT(0),M4_HIDE(0))
133     unsigned short          ChangedFrames;
134 
135     // M4_NUMBER_DESC("StableThers", "f32", M4_RANGE(0,1), "0.02", M4_DIGIT(3),M4_HIDE(0))
136     float                   StableThers;                  /**< AF stable threshold */
137     // M4_NUMBER_DESC("StableFrames", "u16", M4_RANGE(0,65535), "3", M4_DIGIT(0),M4_HIDE(0))
138     unsigned short          StableFrames;                 /**< AF stable  status must hold frames */
139     // M4_NUMBER_DESC("StableTime", "u16", M4_RANGE(0,65535), "200", M4_DIGIT(3),M4_HIDE(0))
140     unsigned short          StableTime;                   /**< AF stable status must hold time */
141 
142     // M4_NUMBER_DESC("SceneDiffEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0))
143     unsigned char           SceneDiffEnable;
144     // M4_NUMBER_DESC("SceneDiffThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
145     float                   SceneDiffThers;
146     // M4_NUMBER_DESC("SceneDiffBlkThers", "u16", M4_RANGE(0,225), "0", M4_DIGIT(0),M4_HIDE(0))
147     unsigned short          SceneDiffBlkThers;
148     // M4_NUMBER_DESC("CenterSceneDiffThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
149     float                   CenterSceneDiffThers;
150 
151     // M4_NUMBER_DESC("ValidMaxMinRatio", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
152     float                   ValidMaxMinRatio;
153     // M4_NUMBER_DESC("ValidValueThers", "f32", M4_RANGE(0,1000000), "0", M4_DIGIT(0),M4_HIDE(0))
154     float                   ValidValueThers;
155 
156     // M4_NUMBER_DESC("OutFocusValue", "f32", M4_RANGE(0,1000000), "50", M4_DIGIT(3),M4_HIDE(0))
157     float                   OutFocusValue;                /**< out of focus vlaue*/
158     // M4_NUMBER_DESC("OutFocusPos", "u16", M4_RANGE(0,65), "32", M4_DIGIT(0),M4_HIDE(0))
159     unsigned short          OutFocusPos;                  /**< out of focus position*/
160 
161     // M4_NUMBER_DESC("LowLumaValue", "f32", M4_RANGE(0,4095), "0", M4_DIGIT(3),M4_HIDE(0))
162     float                   LowLumaValue;                /**< low luma thr vlaue*/
163     // M4_NUMBER_DESC("LowLumaPos", "u16", M4_RANGE(0,1023), "64", M4_DIGIT(0),M4_HIDE(0))
164     unsigned short          LowLumaPos;                  /**< low luma focus position*/
165 
166     // M4_NUMBER_DESC("WeightEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0))
167     unsigned char           WeightEnable;
168     // M4_ARRAY_DESC("Weight", "u16", M4_SIZE(15,15), M4_RANGE(0,65535), "0", M4_DIGIT(0), M4_DYNAMIC(0))
169     unsigned short          Weight[225];                  /**< weight */
170 
171     // M4_NUMBER_DESC("SearchPauseLumaEnable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0),M4_HIDE(0))
172     unsigned char           SearchPauseLumaEnable;
173     // M4_NUMBER_DESC("SearchPauseLumaThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
174     float                   SearchPauseLumaThers;
175     // M4_NUMBER_DESC("StableFrames", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0))
176     unsigned short          SearchLumaStableFrames;
177     // M4_NUMBER_DESC("SearchLumaStableThers", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
178     float                   SearchLumaStableThers;
179 
180     // M4_NUMBER_DESC("Stage1QuickFoundThers", "f32", M4_RANGE(0,1), "0.01", M4_DIGIT(3),M4_HIDE(0))
181     float                   Stage1QuickFoundThers;
182     // M4_NUMBER_DESC("Stage2QuickFoundThers", "f32", M4_RANGE(0,1), "0.2", M4_DIGIT(3),M4_HIDE(0))
183     float                   Stage2QuickFoundThers;
184 
185     // M4_NUMBER_DESC("FlatValue", "f32", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0))
186     float                   FlatValue;
187 
188     // M4_NUMBER_DESC("PointLightLumaTh", "u16", M4_RANGE(0,65535), "4095", M4_DIGIT(0),M4_HIDE(0))
189     unsigned short          PointLightLumaTh;                 /**< point light luma threshold */
190     // M4_NUMBER_DESC("PointLightCntTh", "u16", M4_RANGE(0,65535), "225", M4_DIGIT(0),M4_HIDE(0))
191     unsigned short          PointLightCntTh;                  /**< point light count threshold */
192 
193     // M4_STRUCT_DESC("ZoomConfig", "normal_ui_style")
194     CalibDbV2_Af_ContrastZoom_t ZoomCfg;
195 } CalibDbV2_Af_Contrast_t;
196 
197 typedef struct CalibDbV2_Af_Laser_s {
198     // M4_BOOL_DESC("enable", "0")
199     bool enable;
200     // M4_ARRAY_DESC("vcmDot", "f32", M4_SIZE(1,7), M4_RANGE(0,64), "[0, 16, 32, 40, 48, 56, 64]", M4_DIGIT(0), M4_DYNAMIC(0))
201     float vcmDot[7];
202     // M4_ARRAY_DESC("distanceDot", "f32", M4_SIZE(1,7), M4_RANGE(0,65535), "[0.2, 0.24, 0.34, 0.4, 0.66, 1, 3]", M4_DIGIT(4), M4_DYNAMIC(0))
203     float distanceDot[7];
204 } CalibDbV2_Af_Laser_t;
205 
206 typedef struct CalibDbV2_Af_Pdaf_fineSearch_s {
207     // M4_NUMBER_DESC("confidence", "f32", M4_RANGE(0,1), "0.5", M4_DIGIT(3),M4_HIDE(0))
208     float confidence;
209     // M4_NUMBER_DESC("range", "s32", M4_RANGE(0,1023), "0", M4_DIGIT(0))
210     int range;
211     // M4_NUMBER_DESC("stepPos", "s32", M4_RANGE(1,1023), "1", M4_DIGIT(0))
212     int stepPos;
213 } CalibDbV2_Af_Pdaf_fineSearch_t;
214 
215 typedef struct CalibDbV2_Af_PdafIsoPara_s {
216     // M4_NUMBER_DESC("iso", "u32", M4_RANGE(0, 1000000), "50", M4_DIGIT(0))
217     int iso;
218     // M4_NUMBER_DESC("pdConfdRatio0", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
219     float pdConfdRatio0;
220     // M4_NUMBER_DESC("pdConfdRatio1", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
221     float pdConfdRatio1;
222     // M4_NUMBER_DESC("pdConfdRatio2", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
223     float pdConfdRatio2;
224     // M4_NUMBER_DESC("pdConfdRatio3", "f32", M4_RANGE(0,1), "1", M4_DIGIT(3),M4_HIDE(0))
225     float pdConfdRatio3;
226     // M4_NUMBER_DESC("pdConfdRhresh", "f32", M4_RANGE(0,1), "0.4", M4_DIGIT(3),M4_HIDE(0))
227     float pdConfdThresh;
228     // M4_NUMBER_DESC("convergedInfPdThresh", "u16", M4_RANGE(0,1023), "12", M4_DIGIT(0),M4_HIDE(0))
229     unsigned short convergedInfPdThresh;
230     // M4_NUMBER_DESC("convergedMacPdThresh", "u16", M4_RANGE(0,1023), "12", M4_DIGIT(0),M4_HIDE(0))
231     unsigned short convergedMacPdThresh;
232     // M4_NUMBER_DESC("defocusInfPdThresh", "u16", M4_RANGE(0,1023), "12", M4_DIGIT(0),M4_HIDE(0))
233     unsigned short defocusInfPdThresh;
234     // M4_NUMBER_DESC("defocusMacPdThresh", "u16", M4_RANGE(0,1023), "12", M4_DIGIT(0),M4_HIDE(0))
235     unsigned short defocusMacPdThresh;
236     // M4_NUMBER_DESC("stablePdRatio", "f32", M4_RANGE(0,255), "0.125", M4_DIGIT(3),M4_HIDE(0))
237     float stablePdRatio;
238     // M4_NUMBER_DESC("stablePdOffset", "u16", M4_RANGE(0,1023), "8", M4_DIGIT(3),M4_HIDE(0))
239     unsigned short stablePdOffset;
240     // M4_NUMBER_DESC("stableCntRatio", "f32", M4_RANGE(0,1023), "1.5", M4_DIGIT(3),M4_HIDE(0))
241     float stableCntRatio;
242     // M4_NUMBER_DESC("noconfCntThresh", "u16", M4_RANGE(0,255), "4", M4_DIGIT(0),M4_HIDE(0))
243     unsigned short noconfCntThresh;
244     // M4_NUMBER_DESC("roiBlkCntW", "u8", M4_RANGE(1, 10), "3", M4_DIGIT(0))
245     unsigned char roiBlkCntW;
246     // M4_NUMBER_DESC("roiBlkCntH", "u8", M4_RANGE(1, 10), "3", M4_DIGIT(0))
247     unsigned char roiBlkCntH;
248     // M4_STRUCT_LIST_DESC("fineSearchTbl", M4_SIZE(1,10), "normal_ui_style")
249     CalibDbV2_Af_Pdaf_fineSearch_t* fineSearchTbl;
250     int fineSearchTbl_len;
251 } CalibDbV2_Af_PdafIsoPara_t;
252 
253 typedef struct CalibDbV2_Af_PdafCalibInf_s {
254     // M4_NUMBER_DESC("pdGainMapW", "u16", M4_RANGE(1,1000), "32", M4_DIGIT(0),M4_HIDE(0))
255     unsigned short pdGainMapW;
256     // M4_NUMBER_DESC("pdGainMapH", "u16", M4_RANGE(1,1000), "32", M4_DIGIT(0),M4_HIDE(0))
257     unsigned short pdGainMapH;
258     // M4_NUMBER_DESC("pdDccMapW", "u16", M4_RANGE(1,1000), "32", M4_DIGIT(0),M4_HIDE(0))
259     unsigned short pdDccMapW;
260     // M4_NUMBER_DESC("pdDccMapH", "u16", M4_RANGE(1,1000), "32", M4_DIGIT(0),M4_HIDE(0))
261     unsigned short pdDccMapH;
262 } CalibDbV2_Af_PdafCalibInf_t;
263 
264 typedef struct CalibDbV2_Af_PdafResolution_s {
265     // M4_NUMBER_DESC("imageWidth", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
266     unsigned short imageWidth;
267     // M4_NUMBER_DESC("imageHeight", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
268     unsigned short imageHeight;
269     // M4_NUMBER_DESC("pdOutWidth", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
270     unsigned short pdOutWidth;
271     // M4_NUMBER_DESC("pdOutHeight", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
272     unsigned short pdOutHeight;
273     // M4_NUMBER_DESC("pdCropX", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
274     unsigned short pdCropX;
275     // M4_NUMBER_DESC("pdCropY", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
276     unsigned short pdCropY;
277     // M4_NUMBER_DESC("pdBaseWidth", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
278     unsigned short pdBaseWidth;
279     // M4_NUMBER_DESC("pdBaseHeight", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
280     unsigned short pdBaseHeight;
281 } CalibDbV2_Af_PdafResolution_t;
282 
283 typedef struct CalibDbV2_Af_Pdaf_s {
284     // M4_BOOL_DESC("enable", "0")
285     bool enable;
286     // M4_NUMBER_DESC("pdVsCdDebug", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
287     unsigned char pdVsCdDebug;
288     // M4_NUMBER_DESC("pdDumpDebug", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
289     unsigned char pdDumpDebug;
290     // M4_NUMBER_DESC("pdDumpMaxFrm", "u16", M4_RANGE(1,10000), "300", M4_DIGIT(0),M4_HIDE(0))
291     unsigned short pdDumpMaxFrm;
292     // M4_NUMBER_DESC("pdDataBit", "u16", M4_RANGE(1,16), "10", M4_DIGIT(0),M4_HIDE(0))
293     unsigned short pdDataBit;
294     // M4_NUMBER_DESC("pdBlkLevel", "u16", M4_RANGE(1,1023), "64", M4_DIGIT(0),M4_HIDE(0))
295     unsigned short pdBlkLevel;
296     // M4_NUMBER_DESC("pdSearchRadius", "u16", M4_RANGE(0,32), "3", M4_DIGIT(0),M4_HIDE(0))
297     unsigned short pdSearchRadius;
298     // M4_NUMBER_DESC("pdMirrorInCalib", "u8", M4_RANGE(0, 3), "1", M4_DIGIT(0))
299     unsigned char pdMirrorInCalib;
300     // M4_NUMBER_DESC("pdChangeLeftRight", "u8", M4_RANGE(0, 1), "1", M4_DIGIT(0))
301     unsigned char pdChangeLeftRight;
302     // M4_NUMBER_DESC("pdVsImgoutMirror", "u8", M4_RANGE(0, 3), "0", M4_DIGIT(0))
303     unsigned char pdVsImgoutMirror;
304     // M4_NUMBER_DESC("pdLRInDiffLine", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
305     unsigned char pdLRInDiffLine;
306     // M4_NUMBER_DESC("pdWidth", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
307     unsigned short pdWidth;
308     // M4_NUMBER_DESC("pdHeight", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
309     unsigned short pdHeight;
310     // M4_NUMBER_DESC("pdMaxWidth", "u16", M4_RANGE(0, 65535), "508", M4_DIGIT(0))
311     unsigned short pdMaxWidth;
312     // M4_NUMBER_DESC("pdMaxHeight", "u16", M4_RANGE(0, 65535), "760", M4_DIGIT(0))
313     unsigned short pdMaxHeight;
314     // M4_NUMBER_DESC("pdVerBinning", "u8", M4_RANGE(0, 255), "0", M4_DIGIT(0))
315     unsigned char pdVerBinning;
316     // M4_NUMBER_DESC("pdFrmInValid", "u8", M4_RANGE(0, 4), "1", M4_DIGIT(0))
317     unsigned char pdFrmInValid;
318     // M4_NUMBER_DESC("pdDgainValid", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
319     unsigned char pdDgainValid;
320     // M4_NUMBER_DESC("pdGainMapNormEn", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
321     unsigned char pdGainMapNormEn;
322     // M4_NUMBER_DESC("pdConfdMode", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
323     unsigned char pdConfdMode;
324     // M4_NUMBER_DESC("pdNoiseSn", "f32", M4_RANGE(0,100), "0.207", M4_DIGIT(3),M4_HIDE(0))
325     float pdNoiseSn;
326     // M4_ARRAY_DESC("pdNoiseRn", "f32", M4_SIZE(1,2), M4_RANGE(0,100), "[0.14, 2.8]", M4_DIGIT(3), M4_DYNAMIC(0))
327     float pdNoiseRn[2];
328     // M4_NUMBER_DESC("pdNoisePn", "f32", M4_RANGE(0,100), "0.25", M4_DIGIT(3),M4_HIDE(0))
329     float pdNoisePn;
330     // M4_NUMBER_DESC("pdSatValRatio", "f32", M4_RANGE(0,1), "0.92", M4_DIGIT(3),M4_HIDE(0))
331     float pdSatValRatio;
332     // M4_NUMBER_DESC("pdSatCntRatio", "f32", M4_RANGE(0,1), "0.06", M4_DIGIT(3),M4_HIDE(0))
333     float pdSatCntRatio;
334     // M4_NUMBER_DESC("pdDiscardRegionEn", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
335     unsigned char pdDiscardRegionEn;
336     // M4_NUMBER_DESC("pdLessTextureRatio", "f32", M4_RANGE(0,5), "0.25", M4_DIGIT(3),M4_HIDE(0))
337     float pdLessTextureRatio;
338     // M4_NUMBER_DESC("pdTargetOffset", "s16", M4_RANGE(-4096,4096), "0", M4_DIGIT(0),M4_HIDE(0))
339     short pdTargetOffset;
340     // M4_STRUCT_DESC("pdCalibInf", "normal_ui_style")
341     CalibDbV2_Af_PdafCalibInf_t pdCalibInf;
342     // M4_NUMBER_DESC("pdConfdMwinFactor", "u16", M4_RANGE(0,225), "3", M4_DIGIT(0),M4_HIDE(0))
343     unsigned short pdConfdMwinFactor;
344     // M4_NUMBER_DESC("pdCenterMinFv", "u32", M4_RANGE(0,100000), "0", M4_DIGIT(0),M4_HIDE(0))
345     unsigned int pdCenterMinFv;
346     // M4_NUMBER_DESC("pdCenterMinRatio", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3),M4_HIDE(0))
347     float pdCenterMinRatio;
348     // M4_NUMBER_DESC("pdHighlightRatio", "f32", M4_RANGE(0,1), "0.1", M4_DIGIT(3),M4_HIDE(0))
349     float pdHighlightRatio;
350     // M4_ARRAY_DESC("pdStepRatio", "f32", M4_SIZE(1,7), M4_RANGE(0,1), "[1.0, 1.0, 1.0, 0.9, 0.8, 0.7, 0.7]", M4_DIGIT(3), M4_DYNAMIC(0))
351     float pdStepRatio[7];
352     // M4_ARRAY_DESC("pdStepDefocus", "u16", M4_SIZE(1,7), M4_RANGE(0,1023), "[32, 64, 96, 128, 160, 192, 224]", M4_DIGIT(0), M4_DYNAMIC(0))
353     unsigned short pdStepDefocus[7];
354     // M4_STRUCT_LIST_DESC("pdIsoPara", M4_SIZE(1,16), "normal_ui_style")
355     CalibDbV2_Af_PdafIsoPara_t* pdIsoPara;
356     int pdIsoPara_len;
357     CalibDbV2_Af_PdafResolution_t* pdResoInf;
358     int pdResoInf_len;
359 } CalibDbV2_Af_Pdaf_t;
360 
361 typedef struct CalibDbV2_Af_VcmCfg_s {
362     // M4_NUMBER_DESC("max logical pos", "u32", M4_RANGE(0,4095), "64", M4_DIGIT(0))
363     unsigned int max_logical_pos;
364     // M4_NUMBER_DESC("start current", "s32", M4_RANGE(-1, 2048), "-1", M4_DIGIT(0))
365     int start_current;
366     // M4_NUMBER_DESC("rated current", "s32", M4_RANGE(-1, 2048), "-1", M4_DIGIT(0))
367     int rated_current;
368     // M4_NUMBER_DESC("step mode", "s32", M4_RANGE(-1, 1000), "-1", M4_DIGIT(0))
369     int step_mode;
370     // M4_NUMBER_DESC("extra delay", "s32", M4_RANGE(-10000,10000), "0", M4_DIGIT(0))
371     int extra_delay;
372     // M4_NUMBER_DESC("posture diff", "f32", M4_RANGE(0,1), "0", M4_DIGIT(3))
373     float posture_diff;
374 } CalibDbV2_Af_VcmCfg_t;
375 
376 typedef struct CalibDbV2_Af_MeasIsoCfg_s {
377     // M4_NUMBER_DESC("iso", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0))
378     int iso;
379     // M4_NUMBER_DESC("afmThres", "u16", M4_RANGE(0, 255), "4", M4_DIGIT(0))
380     unsigned short afmThres;
381     // M4_ARRAY_MARK_DESC("Gamma_curve", "u16", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0,45,108,179,245,344,409,459,500,567,622,676,759,833,896,962,1023]", M4_DIGIT(0), M4_DYNAMIC(0), "curve_table")
382     unsigned short gammaY[17];
383     // M4_ARRAY_DESC("gaussWeight", "u8", M4_SIZE(1,3), M4_RANGE(0,128), "[32,16,8]", M4_DIGIT(0), M4_DYNAMIC(0))
384     unsigned char gaussWeight[3];
385 } CalibDbV2_Af_MeasIsoCfg_t;
386 
387 typedef struct CalibDbV2_Af_DefCode_s {
388     // M4_NUMBER_DESC("code", "u8", M4_RANGE(0, 64), "32", M4_DIGIT(0))
389     unsigned char code;
390 } CalibDbV2_Af_DefCode_t;
391 
392 typedef struct CalibDbV2_Af_FocusCode_s {
393     // M4_NUMBER_DESC("focus position", "f32", M4_RANGE(0, 1000000), "0", M4_DIGIT(3), M4_HIDE(1))
394     float pos;
395     // M4_ARRAY_DESC("focus code", "s16", M4_SIZE(1,5000), M4_RANGE(-32768,32767), "0", M4_DIGIT(0), M4_DYNAMIC(1), M4_HIDE(1))
396     short *code;
397     int code_len;
398 } CalibDbV2_Af_FocusCode_t;
399 
400 typedef struct CalibDbV2_Af_ZoomFocusTbl_s {
401     // M4_NUMBER_DESC("widemod deviate", "u32", M4_RANGE(0, 1000), "0", M4_DIGIT(0))
402     int widemod_deviate;
403     // M4_NUMBER_DESC("telemod deviate", "u32", M4_RANGE(0, 1000), "0", M4_DIGIT(0))
404     int telemod_deviate;
405     // M4_NUMBER_DESC("focus backward value", "u32", M4_RANGE(0, 1000), "0", M4_DIGIT(0))
406     int focus_backval;
407     // M4_ARRAY_DESC("zoom move dot", "u32", M4_SIZE(1,32), M4_RANGE(0,1000000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
408     int *zoom_move_dot;
409     int zoom_move_dot_len;
410     // M4_ARRAY_DESC("zoom move step", "u32", M4_SIZE(1,32), M4_RANGE(0,1000000), "16", M4_DIGIT(0), M4_DYNAMIC(1))
411     int *zoom_move_step;
412     int zoom_move_step_len;
413     // M4_ARRAY_DESC("focal length", "f32", M4_SIZE(1,5000), M4_RANGE(0,10000), "0", M4_DIGIT(3), M4_DYNAMIC(1), M4_HIDE(1))
414     float *focal_length;
415     int focal_length_len;
416     // M4_ARRAY_DESC("zoom code", "s16", M4_SIZE(1,5000), M4_RANGE(-32768,32767), "0", M4_DIGIT(0), M4_DYNAMIC(1), M4_HIDE(1))
417     short *zoomcode;
418     int zoomcode_len;
419     // M4_STRUCT_LIST_DESC("focus code", M4_SIZE_DYNAMIC, "normal_ui_style", "0", M4_HIDE(1))
420     CalibDbV2_Af_FocusCode_t *focuscode;
421     int focuscode_len;
422 
423     // M4_ARRAY_DESC("zoom search table", "s32", M4_SIZE(1,32), M4_RANGE(-32768,32767), "0", M4_DIGIT(0), M4_DYNAMIC(1))
424     int *ZoomSearchTbl;
425     // M4_NUMBER_DESC("zoom search table number", "u32", M4_RANGE(0, 100), "0", M4_DIGIT(0))
426     int ZoomSearchTbl_len;
427     // M4_NUMBER_DESC("zoom search reference curve", "u32", M4_RANGE(0, 32), "0", M4_DIGIT(0))
428     int ZoomSearchRefCurveIdx;
429     // M4_NUMBER_DESC("zoom search margin", "u32", M4_RANGE(0, 100000), "50", M4_DIGIT(0))
430     int FocusSearchMargin;
431     // M4_ARRAY_DESC("zoom search plus range", "u32", M4_SIZE(1,32), M4_RANGE(0,32767), "0", M4_DIGIT(0), M4_DYNAMIC(1))
432     int *FocusSearchPlusRange;
433     int FocusSearchPlusRange_len;
434     // M4_NUMBER_DESC("focus stage1 step", "u32", M4_RANGE(0, 100), "0", M4_DIGIT(0))
435     int FocusStage1Step;
436     // M4_NUMBER_DESC("quickFndRate", "f32", M4_RANGE(0,1), "0.2", M4_DIGIT(3),M4_HIDE(0))
437     float QuickFndRate;
438     // M4_NUMBER_DESC("quickFndMinFv", "f32", M4_RANGE(0,2147483647), "1000", M4_DIGIT(0),M4_HIDE(0))
439     float QuickFndMinFv;
440     // M4_NUMBER_DESC("search zoom range", "u32", M4_RANGE(0, 100000), "100", M4_DIGIT(0))
441     int searchZoomRange;
442     // M4_NUMBER_DESC("search focus range", "u32", M4_RANGE(0, 100000), "100", M4_DIGIT(0))
443     int searchFocusRange;
444     // M4_NUMBER_DESC("search emax", "f32", M4_RANGE(0,100000), "100", M4_DIGIT(3),M4_HIDE(0))
445     float searchEmax;
446     // M4_NUMBER_DESC("search eavg", "f32", M4_RANGE(0,100000), "100", M4_DIGIT(3),M4_HIDE(0))
447     float searchEavg;
448 
449     // M4_NUMBER_DESC("IsZoomFocusRec", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
450     unsigned char IsZoomFocusRec;
451     // M4_STRING_DESC("ZoomInfoDir", M4_SIZE(1,1), M4_RANGE(0, 64), "/data/", M4_DYNAMIC(0))
452     char *ZoomInfoDir;
453     // M4_NUMBER_DESC("zoom init Index", "u32", M4_RANGE(0, 100000), "0", M4_DIGIT(0))
454     int ZoomInitIndex;
455 } CalibDbV2_Af_ZoomFocusTbl_t;
456 
457 typedef struct CalibDb_Af_LdgParam_s {
458     // M4_NUMBER_DESC("enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
459     unsigned char enable;
460     // M4_NUMBER_DESC("ldg xl", "u32", M4_RANGE(0, 255), "10", M4_DIGIT(0))
461     int ldg_xl;
462     // M4_NUMBER_DESC("ldg yl", "u32", M4_RANGE(0, 255), "28", M4_DIGIT(0))
463     int ldg_yl;
464     // M4_NUMBER_DESC("ldg kl", "u32", M4_RANGE(0, 2147483647), "1286", M4_DIGIT(0))
465     int ldg_kl;
466     // M4_NUMBER_DESC("ldg xh", "u32", M4_RANGE(0, 255), "118", M4_DIGIT(0))
467     int ldg_xh;
468     // M4_NUMBER_DESC("ldg yh", "u32", M4_RANGE(0, 255), "8", M4_DIGIT(0))
469     int ldg_yh;
470     // M4_NUMBER_DESC("ldg kh", "u32", M4_RANGE(0, 2147483647), "1340", M4_DIGIT(0))
471     int ldg_kh;
472 } CalibDbV2_Af_LdgParam_t;
473 
474 typedef struct CalibDb_Af_HighLightParam_s {
475     // M4_NUMBER_DESC("ther0", "u32", M4_RANGE(0, 255), "245", M4_DIGIT(0))
476     int ther0;
477     // M4_NUMBER_DESC("ther1", "u32", M4_RANGE(0, 255), "200", M4_DIGIT(0))
478     int ther1;
479 } CalibDbV2_Af_HighLightParam_t;
480 
481 typedef struct CalibDbV2_AF_Tuning_Para_s {
482     // M4_ENUM_DESC("mode", "CalibDbV2_AF_MODE_t", "CalibDbV2_AFMODE_CONT_PICTURE")
483     CalibDbV2_AF_MODE_t af_mode;
484     // M4_NUMBER_DESC("win_h_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
485     unsigned short win_h_offs;
486     // M4_NUMBER_DESC("win_v_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
487     unsigned short win_v_offs;
488     // M4_NUMBER_DESC("win_h_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
489     unsigned short win_h_size;
490     // M4_NUMBER_DESC("win_v_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
491     unsigned short win_v_size;
492     // M4_NUMBER_DESC("win_h_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
493     unsigned short video_win_h_offs;
494     // M4_NUMBER_DESC("win_v_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
495     unsigned short video_win_v_offs;
496     // M4_NUMBER_DESC("win_h_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
497     unsigned short video_win_h_size;
498     // M4_NUMBER_DESC("win_v_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
499     unsigned short video_win_v_size;
500     // M4_STRUCT_DESC("fixed mode", "normal_ui_style")
501     CalibDbV2_Af_DefCode_t fixed_mode;
502     // M4_STRUCT_DESC("macro mode", "normal_ui_style")
503     CalibDbV2_Af_DefCode_t macro_mode;
504     // M4_STRUCT_DESC("infinity mode", "normal_ui_style")
505     CalibDbV2_Af_DefCode_t infinity_mode;
506     // M4_STRUCT_DESC("ldg param", "normal_ui_style")
507     CalibDbV2_Af_LdgParam_t ldg_param;
508     // M4_STRUCT_DESC("high light", "normal_ui_style")
509     CalibDbV2_Af_HighLightParam_t highlight;
510     // M4_STRUCT_DESC("contrast af", "normal_ui_style")
511     CalibDbV2_Af_Contrast_t contrast_af;
512     // M4_STRUCT_DESC("video contrast af", "normal_ui_style")
513     CalibDbV2_Af_Contrast_t video_contrast_af;
514     // M4_STRUCT_DESC("laser af", "normal_ui_style")
515     CalibDbV2_Af_Laser_t laser_af;
516     // M4_STRUCT_DESC("vcmcfg", "normal_ui_style")
517     CalibDbV2_Af_VcmCfg_t vcmcfg;
518     // M4_STRUCT_DESC("zoomfocus_tbl", "normal_ui_style")
519     CalibDbV2_Af_ZoomFocusTbl_t zoomfocus_tbl;
520     // M4_STRUCT_LIST_DESC("meas iso config", M4_SIZE(1,13), "normal_ui_style")
521     CalibDbV2_Af_MeasIsoCfg_t measiso_cfg[CALIBDBV2_MAX_ISO_LEVEL];
522 } CalibDbV2_AF_Tuning_Para_t;
523 
524 typedef struct {
525     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
526     CalibDbV2_AF_Tuning_Para_t TuningPara;
527 } CalibDbV2_AF_t;
528 
529 typedef struct CalibDbV2_AfV30_MeasCfg_s {
530     // M4_NUMBER_DESC("table index", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0))
531     unsigned int tbl_idx;
532     // M4_NUMBER_DESC("afmThres", "u16", M4_RANGE(0, 255), "4", M4_DIGIT(0))
533     unsigned short afmThres;
534     // M4_ARRAY_MARK_DESC("Gamma Curve", "u16", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0,45,108,179,245,344,409,459,500,567,622,676,759,833,896,962,1023]", M4_DIGIT(0), M4_DYNAMIC(0), "curve_table")
535     unsigned short gammaY[17];
536     // M4_NUMBER_DESC("v1fv reliable", "f32", M4_RANGE(0, 1), "0.2", M4_DIGIT(3))
537     float v1fv_reliable;
538     // M4_NUMBER_DESC("v2fv reliable", "f32", M4_RANGE(0, 1), "0.2", M4_DIGIT(3))
539     float v2fv_reliable;
540     // M4_NUMBER_DESC("v1 fir sel", "u8", M4_RANGE(0, 1), "1", M4_DIGIT(0))
541     unsigned char v1_fir_sel;
542     // M4_ARRAY_DESC("v1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.04, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
543     float v1_band[2];
544     // M4_ARRAY_DESC("vertical first iir filter", "s16", M4_SIZE(1,9), M4_RANGE(-2047,2047), "[0, 483, 0, 0, 27, 0, 0, 28, 0]", M4_DIGIT(0), M4_DYNAMIC(0))
545     short v1_iir_coe[9];
546     // M4_ARRAY_DESC("vertical first fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-1212, 0, 1212]", M4_DIGIT(0), M4_DYNAMIC(0))
547     short v1_fir_coe[3];
548     // M4_ARRAY_DESC("v2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.04, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
549     float v2_band[2];
550     // M4_ARRAY_DESC("vertical second iir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[483, 27, 28]", M4_DIGIT(0), M4_DYNAMIC(0))
551     short v2_iir_coe[3];
552     // M4_ARRAY_DESC("vertical second fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-1212, 0, 1212]", M4_DIGIT(0), M4_DYNAMIC(0))
553     short v2_fir_coe[3];
554     // M4_ARRAY_DESC("h1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.04, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
555     float h1_band[2];
556     // M4_ARRAY_DESC("horizontal first iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 553, -271, 471, 0, -471]", M4_DIGIT(0), M4_DYNAMIC(0))
557     short h1_iir1_coe[6];
558     // M4_ARRAY_DESC("horizontal first iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[97, 875, -400, 199, 0, -199]", M4_DIGIT(0), M4_DYNAMIC(0))
559     short h1_iir2_coe[6];
560     // M4_ARRAY_DESC("h2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.04, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
561     float h2_band[2];
562     // M4_ARRAY_DESC("horizontal second iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 553, -271, 471, 0, -471]", M4_DIGIT(0), M4_DYNAMIC(0))
563     short h2_iir1_coe[6];
564     // M4_ARRAY_DESC("horizontal second iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[97, 875, -400, 199, 0, -199]", M4_DIGIT(0), M4_DYNAMIC(0))
565     short h2_iir2_coe[6];
566     // M4_NUMBER_DESC("ldg enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
567     unsigned char ldg_en;
568     // M4_NUMBER_DESC("vertical minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
569     unsigned char ve_ldg_lumth_l;
570     // M4_NUMBER_DESC("vertical gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
571     unsigned char ve_ldg_gain_l;
572     // M4_NUMBER_DESC("vertical slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
573     unsigned short ve_ldg_gslp_l;
574     // M4_NUMBER_DESC("vertical maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
575     unsigned char ve_ldg_lumth_h;
576     // M4_NUMBER_DESC("vertical gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
577     unsigned char ve_ldg_gain_h;
578     // M4_NUMBER_DESC("vertical slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
579     unsigned short ve_ldg_gslp_h;
580     // M4_NUMBER_DESC("horizontal minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
581     unsigned char ho_ldg_lumth_l;
582     // M4_NUMBER_DESC("horizontal gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
583     unsigned char ho_ldg_gain_l;
584     // M4_NUMBER_DESC("horizontal slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
585     unsigned short ho_ldg_gslp_l;
586     // M4_NUMBER_DESC("horizontal maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
587     unsigned char ho_ldg_lumth_h;
588     // M4_NUMBER_DESC("horizontal gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
589     unsigned char ho_ldg_gain_h;
590     // M4_NUMBER_DESC("horizontal slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
591     unsigned short ho_ldg_gslp_h;
592     // M4_NUMBER_DESC("vertical fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
593     unsigned short v_fv_thresh;
594     // M4_NUMBER_DESC("horizontal fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
595     unsigned short h_fv_thresh;
596     // M4_NUMBER_DESC("highlight thresh", "u16", M4_RANGE(0, 4095), "912", M4_DIGIT(0))
597     unsigned short highlit_thresh;
598     // M4_NUMBER_DESC("vertical fv ratio", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
599     float v_fv_ratio;
600 } CalibDbV2_AfV30_MeasCfg_t;
601 
602 typedef struct CalibDbV2_AfV30_IsoMeasCfg_s {
603     // M4_NUMBER_MARK_DESC("iso", "f32", M4_RANGE(50, 204800), "50", M4_DIGIT(0), "index2", "0", M4_DYNAMIC(1))
604     float iso;
605     // M4_NUMBER_DESC("meas table index", "u32", M4_RANGE(0, 100), "0", M4_DIGIT(0))
606     int idx;
607     // M4_NUMBER_DESC("spotlight scene meas table index", "u32", M4_RANGE(0, 100), "0", M4_DIGIT(0))
608     int spotlt_scene_idx;
609 } CalibDbV2_AfV30_IsoMeasCfg_t;
610 
611 typedef struct CalibDbV2_AfV30_ZoomMeas_s {
612     // M4_NUMBER_MARK_DESC("zoom index", "u32", M4_RANGE(0, 100000), "0", M4_DIGIT(0), "index1", "0", M4_DYNAMIC(1))
613     int zoom_idx;
614     // M4_STRUCT_LIST_DESC("meas iso config", M4_SIZE_DYNAMIC, "double_index_list")
615     CalibDbV2_AfV30_IsoMeasCfg_t *measiso;
616     int measiso_len;
617 } CalibDbV2_AfV30_ZoomMeas_t;
618 
619 typedef struct CalibDbV2_AFV30_Tuning_Para_s {
620     // M4_ENUM_DESC("mode", "CalibDbV2_AF_MODE_t", "CalibDbV2_AFMODE_CONT_PICTURE")
621     CalibDbV2_AF_MODE_t af_mode;
622     // M4_NUMBER_DESC("win_h_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
623     unsigned short win_h_offs;
624     // M4_NUMBER_DESC("win_v_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
625     unsigned short win_v_offs;
626     // M4_NUMBER_DESC("win_h_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
627     unsigned short win_h_size;
628     // M4_NUMBER_DESC("win_v_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
629     unsigned short win_v_size;
630     // M4_NUMBER_DESC("win_h_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
631     unsigned short video_win_h_offs;
632     // M4_NUMBER_DESC("win_v_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
633     unsigned short video_win_v_offs;
634     // M4_NUMBER_DESC("win_h_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
635     unsigned short video_win_h_size;
636     // M4_NUMBER_DESC("win_v_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
637     unsigned short video_win_v_size;
638     // M4_STRUCT_DESC("fixed mode", "normal_ui_style")
639     CalibDbV2_Af_DefCode_t fixed_mode;
640     // M4_STRUCT_DESC("macro mode", "normal_ui_style")
641     CalibDbV2_Af_DefCode_t macro_mode;
642     // M4_STRUCT_DESC("infinity mode", "normal_ui_style")
643     CalibDbV2_Af_DefCode_t infinity_mode;
644     // M4_STRUCT_DESC("contrast af", "normal_ui_style")
645     CalibDbV2_Af_Contrast_t contrast_af;
646     // M4_STRUCT_DESC("video contrast af", "normal_ui_style")
647     CalibDbV2_Af_Contrast_t video_contrast_af;
648     // M4_STRUCT_DESC("laser af", "normal_ui_style")
649     CalibDbV2_Af_Laser_t laser_af;
650     // M4_STRUCT_DESC("pdaf", "normal_ui_style")
651     CalibDbV2_Af_Pdaf_t pdaf;
652     // M4_STRUCT_DESC("vcmcfg", "normal_ui_style")
653     CalibDbV2_Af_VcmCfg_t vcmcfg;
654     // M4_STRUCT_DESC("zoomfocus_tbl", "normal_ui_style")
655     CalibDbV2_Af_ZoomFocusTbl_t zoomfocus_tbl;
656     // M4_STRUCT_LIST_DESC("zoom meas", M4_SIZE_DYNAMIC, "double_index_list")
657     CalibDbV2_AfV30_ZoomMeas_t *zoom_meas;
658     int zoom_meas_len;
659     // M4_STRUCT_LIST_DESC("meas config table", M4_SIZE_DYNAMIC, "normal_ui_style")
660     CalibDbV2_AfV30_MeasCfg_t *meascfg_tbl;
661     int meascfg_tbl_len;
662 } CalibDbV2_AFV30_Tuning_Para_t;
663 
664 typedef struct {
665     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
666     CalibDbV2_AFV30_Tuning_Para_t TuningPara;
667 } CalibDbV2_AFV30_t;
668 
669 typedef enum CalibDbV2_AF_DNSCL_MODE_s {
670     CalibDbV2_AF_DNSCL_0 = 0,
671     CalibDbV2_AF_DNSCL_1 = 1,
672     CalibDbV2_AF_DNSCL_2 = 2
673 } CalibDbV2_AF_DNSCL_MODE_t;
674 
675 typedef struct CalibDbV2_AfV31_MeasCfg_s {
676     // M4_NUMBER_DESC("table index", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0))
677     unsigned int tbl_idx;
678     // M4_BOOL_DESC("from awb", "0")
679     bool from_awb;
680     // M4_BOOL_DESC("from ynr", "0")
681     bool from_ynr;
682     // M4_NUMBER_DESC("afmThres", "u16", M4_RANGE(0, 255), "4", M4_DIGIT(0))
683     unsigned short afmThres;
684     // M4_ARRAY_MARK_DESC("Gamma Curve", "u16", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0,45,108,179,245,344,409,459,500,567,622,676,759,833,896,962,1023]", M4_DIGIT(0), M4_DYNAMIC(0), "curve_table")
685     unsigned short gammaY[17];
686     // M4_ARRAY_DESC("gaus coe", "s16", M4_SIZE(3,3), M4_RANGE(-128, 127), "[0,64,0,0,64,0,0,0,0]", M4_DIGIT(0), M4_DYNAMIC(0))
687     short gaus_coe[9];
688     // M4_ENUM_DESC("downscale mode", "CalibDbV2_AF_DNSCL_MODE_t", "CalibDbV2_AF_DNSCL_1")
689     CalibDbV2_AF_DNSCL_MODE_t dnscl_mode;
690     // M4_NUMBER_DESC("v1fv reliable", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
691     float v1fv_reliable;
692     // M4_NUMBER_DESC("v2fv reliable", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
693     float v2fv_reliable;
694     // M4_NUMBER_DESC("v1 fir sel", "u8", M4_RANGE(0, 1), "1", M4_DIGIT(0))
695     unsigned char v1_fir_sel;
696     // M4_ARRAY_DESC("v1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.042,0.140]", M4_DIGIT(3), M4_DYNAMIC(0))
697     float v1_band[2];
698     // M4_ARRAY_DESC("vertical first iir filter", "s16", M4_SIZE(1,3), M4_RANGE(-255,255), "[-265, 686, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
699     short v1_iir_coe[3];
700     // M4_ARRAY_DESC("vertical first fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-124, 0, 124]", M4_DIGIT(0), M4_DYNAMIC(0))
701     short v1_fir_coe[3];
702     // M4_ARRAY_DESC("v2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.055, 0.125]", M4_DIGIT(3), M4_DYNAMIC(0))
703     float v2_band[2];
704     // M4_ARRAY_DESC("vertical second iir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-325, 724, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
705     short v2_iir_coe[3];
706     // M4_ARRAY_DESC("vertical second fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-94, 0, 94]", M4_DIGIT(0), M4_DYNAMIC(0))
707     short v2_fir_coe[3];
708     // M4_ARRAY_DESC("h1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.042, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
709     float h1_band[2];
710     // M4_ARRAY_DESC("horizontal first iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 557, -276, 460, 0, -460]", M4_DIGIT(0), M4_DYNAMIC(0))
711     short h1_iir1_coe[6];
712     // M4_ARRAY_DESC("horizontal first iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[100, 870, -399, 191, 0, -191]", M4_DIGIT(0), M4_DYNAMIC(0))
713     short h1_iir2_coe[6];
714     // M4_ARRAY_DESC("h2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.055, 0.125]", M4_DIGIT(3), M4_DYNAMIC(0))
715     float h2_band[2];
716     // M4_ARRAY_DESC("horizontal second iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[415, 648, -344, 403, 0, -403]", M4_DIGIT(0), M4_DYNAMIC(0))
717     short h2_iir1_coe[6];
718     // M4_ARRAY_DESC("horizontal second iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[96, 854, -409, 156, 0, -156]", M4_DIGIT(0), M4_DYNAMIC(0))
719     short h2_iir2_coe[6];
720     // M4_NUMBER_DESC("ldg enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
721     unsigned char ldg_en;
722     // M4_NUMBER_DESC("vertical minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
723     unsigned char ve_ldg_lumth_l;
724     // M4_NUMBER_DESC("vertical gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
725     unsigned char ve_ldg_gain_l;
726     // M4_NUMBER_DESC("vertical slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
727     unsigned short ve_ldg_gslp_l;
728     // M4_NUMBER_DESC("vertical maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
729     unsigned char ve_ldg_lumth_h;
730     // M4_NUMBER_DESC("vertical gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
731     unsigned char ve_ldg_gain_h;
732     // M4_NUMBER_DESC("vertical slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
733     unsigned short ve_ldg_gslp_h;
734     // M4_NUMBER_DESC("horizontal minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
735     unsigned char ho_ldg_lumth_l;
736     // M4_NUMBER_DESC("horizontal gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
737     unsigned char ho_ldg_gain_l;
738     // M4_NUMBER_DESC("horizontal slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
739     unsigned short ho_ldg_gslp_l;
740     // M4_NUMBER_DESC("horizontal maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
741     unsigned char ho_ldg_lumth_h;
742     // M4_NUMBER_DESC("horizontal gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
743     unsigned char ho_ldg_gain_h;
744     // M4_NUMBER_DESC("horizontal slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
745     unsigned short ho_ldg_gslp_h;
746     // M4_NUMBER_DESC("vertical fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
747     unsigned short v_fv_thresh;
748     // M4_NUMBER_DESC("horizontal fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
749     unsigned short h_fv_thresh;
750     // M4_NUMBER_DESC("highlight thresh", "u16", M4_RANGE(0, 1023), "912", M4_DIGIT(0))
751     unsigned short highlit_thresh;
752     // M4_NUMBER_DESC("vertical fv ratio", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
753     float v_fv_ratio;
754 } CalibDbV2_AfV31_MeasCfg_t;
755 
756 typedef struct CalibDbV2_AFV31_Tuning_Para_s {
757     // M4_ENUM_DESC("mode", "CalibDbV2_AF_MODE_t", "CalibDbV2_AFMODE_CONT_PICTURE")
758     CalibDbV2_AF_MODE_t af_mode;
759     // M4_NUMBER_DESC("win_h_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
760     unsigned short win_h_offs;
761     // M4_NUMBER_DESC("win_v_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
762     unsigned short win_v_offs;
763     // M4_NUMBER_DESC("win_h_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
764     unsigned short win_h_size;
765     // M4_NUMBER_DESC("win_v_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
766     unsigned short win_v_size;
767     // M4_NUMBER_DESC("win_h_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
768     unsigned short video_win_h_offs;
769     // M4_NUMBER_DESC("win_v_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
770     unsigned short video_win_v_offs;
771     // M4_NUMBER_DESC("win_h_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
772     unsigned short video_win_h_size;
773     // M4_NUMBER_DESC("win_v_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
774     unsigned short video_win_v_size;
775     // M4_STRUCT_DESC("fixed mode", "normal_ui_style")
776     CalibDbV2_Af_DefCode_t fixed_mode;
777     // M4_STRUCT_DESC("macro mode", "normal_ui_style")
778     CalibDbV2_Af_DefCode_t macro_mode;
779     // M4_STRUCT_DESC("infinity mode", "normal_ui_style")
780     CalibDbV2_Af_DefCode_t infinity_mode;
781     // M4_STRUCT_DESC("contrast af", "normal_ui_style")
782     CalibDbV2_Af_Contrast_t contrast_af;
783     // M4_STRUCT_DESC("video contrast af", "normal_ui_style")
784     CalibDbV2_Af_Contrast_t video_contrast_af;
785     // M4_STRUCT_DESC("laser af", "normal_ui_style")
786     CalibDbV2_Af_Laser_t laser_af;
787     // M4_STRUCT_DESC("vcmcfg", "normal_ui_style")
788     CalibDbV2_Af_VcmCfg_t vcmcfg;
789     // M4_STRUCT_DESC("zoomfocus_tbl", "normal_ui_style")
790     CalibDbV2_Af_ZoomFocusTbl_t zoomfocus_tbl;
791     // M4_STRUCT_LIST_DESC("zoom meas", M4_SIZE_DYNAMIC, "double_index_list")
792     CalibDbV2_AfV30_ZoomMeas_t *zoom_meas;
793     int zoom_meas_len;
794     // M4_STRUCT_LIST_DESC("meas config table", M4_SIZE_DYNAMIC, "normal_ui_style")
795     CalibDbV2_AfV31_MeasCfg_t *meascfg_tbl;
796     int meascfg_tbl_len;
797 } CalibDbV2_AFV31_Tuning_Para_t;
798 
799 typedef struct {
800     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
801     CalibDbV2_AFV31_Tuning_Para_t TuningPara;
802 } CalibDbV2_AFV31_t;
803 
804 typedef struct CalibDbV2_AfV32_MeasCfg_s {
805     // M4_NUMBER_DESC("table index", "u32", M4_RANGE(0, 1000000), "0", M4_DIGIT(0))
806     unsigned int tbl_idx;
807     // M4_BOOL_DESC("from awb", "0")
808     bool from_awb;
809     // M4_BOOL_DESC("from ynr", "0")
810     bool from_ynr;
811     // M4_BOOL_DESC("from bnr", "0")
812     bool from_bnr;
813     // M4_BOOL_DESC("bls en", "0")
814     bool bls_en;
815     // M4_BOOL_DESC("avg ds en", "0")
816     bool avg_ds_en;
817     // M4_BOOL_DESC("v1 max mode", "0")
818     bool v1_maxmode;
819     // M4_BOOL_DESC("v2 max mode", "0")
820     bool v2_maxmode;
821     // M4_BOOL_DESC("h1 max mode", "0")
822     bool h1_maxmode;
823     // M4_BOOL_DESC("h2 max mode", "0")
824     bool h2_maxmode;
825     // M4_BOOL_DESC("hiir left border mode", "0")
826     bool hiir_left_border_mode;
827     // M4_NUMBER_DESC("bnr in shift", "u8", M4_RANGE(0, 15), "0", M4_DIGIT(0))
828     unsigned char bnr_in_shift;
829     // M4_NUMBER_DESC("bls offset", "s16", M4_RANGE(-256, 255), "0", M4_DIGIT(0))
830     short bls_offset;
831     // M4_NUMBER_DESC("avg ds mode", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
832     unsigned char avg_ds_mode;
833     // M4_NUMBER_DESC("afmThres", "u16", M4_RANGE(0, 255), "4", M4_DIGIT(0))
834     unsigned short afmThres;
835     // M4_ARRAY_MARK_DESC("Gamma Curve", "u16", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0,45,108,179,245,344,409,459,500,567,622,676,759,833,896,962,1023]", M4_DIGIT(0), M4_DYNAMIC(0), "curve_table")
836     unsigned short gammaY[17];
837     // M4_ARRAY_DESC("gaus coe", "s16", M4_SIZE(3,3), M4_RANGE(-128, 127), "[0,64,0,0,64,0,0,0,0]", M4_DIGIT(0), M4_DYNAMIC(0))
838     short gaus_coe[9];
839     // M4_ENUM_DESC("downscale mode", "CalibDbV2_AF_DNSCL_MODE_t", "CalibDbV2_AF_DNSCL_1")
840     CalibDbV2_AF_DNSCL_MODE_t dnscl_mode;
841     // M4_NUMBER_DESC("v1fv reliable", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
842     float v1fv_reliable;
843     // M4_NUMBER_DESC("v2fv reliable", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
844     float v2fv_reliable;
845     // M4_NUMBER_DESC("v1 fir sel", "u8", M4_RANGE(0, 1), "1", M4_DIGIT(0))
846     unsigned char v1_fir_sel;
847     // M4_ARRAY_DESC("v1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.042,0.140]", M4_DIGIT(3), M4_DYNAMIC(0))
848     float v1_band[2];
849     // M4_ARRAY_DESC("vertical first iir filter", "s16", M4_SIZE(1,3), M4_RANGE(-255,255), "[-265, 686, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
850     short v1_iir_coe[3];
851     // M4_ARRAY_DESC("vertical first fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-124, 0, 124]", M4_DIGIT(0), M4_DYNAMIC(0))
852     short v1_fir_coe[3];
853     // M4_ARRAY_DESC("v2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.055, 0.125]", M4_DIGIT(3), M4_DYNAMIC(0))
854     float v2_band[2];
855     // M4_ARRAY_DESC("vertical second iir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-325, 724, 512]", M4_DIGIT(0), M4_DYNAMIC(0))
856     short v2_iir_coe[3];
857     // M4_ARRAY_DESC("vertical second fir filter", "s16", M4_SIZE(1,3), M4_RANGE(-2047,2047), "[-94, 0, 94]", M4_DIGIT(0), M4_DYNAMIC(0))
858     short v2_fir_coe[3];
859     // M4_ARRAY_DESC("h1 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.042, 0.14]", M4_DIGIT(3), M4_DYNAMIC(0))
860     float h1_band[2];
861     // M4_ARRAY_DESC("horizontal first iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 557, -276, 460, 0, -460]", M4_DIGIT(0), M4_DYNAMIC(0))
862     short h1_iir1_coe[6];
863     // M4_ARRAY_DESC("horizontal first iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 870, -399, 37, 0, -37]", M4_DIGIT(0), M4_DYNAMIC(0))
864     short h1_iir2_coe[6];
865     // M4_ARRAY_DESC("h2 band", "f32", M4_SIZE(1,2), M4_RANGE(0, 1), "[0.055, 0.125]", M4_DIGIT(3), M4_DYNAMIC(0))
866     float h2_band[2];
867     // M4_ARRAY_DESC("horizontal second iir1 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 648, -344, 327, 0, -327]", M4_DIGIT(0), M4_DYNAMIC(0))
868     short h2_iir1_coe[6];
869     // M4_ARRAY_DESC("horizontal second iir2 filter", "s16", M4_SIZE(1,6), M4_RANGE(-2047,2047), "[512, 854, -409, 29, 0, -29]", M4_DIGIT(0), M4_DYNAMIC(0))
870     short h2_iir2_coe[6];
871     // M4_NUMBER_DESC("ldg enable", "u8", M4_RANGE(0, 1), "0", M4_DIGIT(0))
872     unsigned char ldg_en;
873     // M4_NUMBER_DESC("vertical minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
874     unsigned char ve_ldg_lumth_l;
875     // M4_NUMBER_DESC("vertical gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
876     unsigned char ve_ldg_gain_l;
877     // M4_NUMBER_DESC("vertical slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
878     unsigned short ve_ldg_gslp_l;
879     // M4_NUMBER_DESC("vertical maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
880     unsigned char ve_ldg_lumth_h;
881     // M4_NUMBER_DESC("vertical gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
882     unsigned char ve_ldg_gain_h;
883     // M4_NUMBER_DESC("vertical slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
884     unsigned short ve_ldg_gslp_h;
885     // M4_NUMBER_DESC("horizontal minluma thresh", "u8", M4_RANGE(0, 255), "64", M4_DIGIT(0))
886     unsigned char ho_ldg_lumth_l;
887     // M4_NUMBER_DESC("horizontal gain for minluma", "u8", M4_RANGE(0, 255), "28", M4_DIGIT(0))
888     unsigned char ho_ldg_gain_l;
889     // M4_NUMBER_DESC("horizontal slope low", "u16", M4_RANGE(0, 8191), "1286", M4_DIGIT(0))
890     unsigned short ho_ldg_gslp_l;
891     // M4_NUMBER_DESC("horizontal maxluma thresh", "u8", M4_RANGE(0, 255), "185", M4_DIGIT(0))
892     unsigned char ho_ldg_lumth_h;
893     // M4_NUMBER_DESC("horizontal gain for maxluma", "u8", M4_RANGE(0, 255), "8", M4_DIGIT(0))
894     unsigned char ho_ldg_gain_h;
895     // M4_NUMBER_DESC("horizontal slope high", "u16", M4_RANGE(0, 8191), "1400", M4_DIGIT(0))
896     unsigned short ho_ldg_gslp_h;
897     // M4_NUMBER_DESC("horizontal dilate num", "u8", M4_RANGE(0, 7), "0", M4_DIGIT(0))
898     unsigned char hldg_dilate_num;
899     // M4_NUMBER_DESC("vertical fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
900     unsigned short v_fv_thresh;
901     // M4_NUMBER_DESC("vertical fv limit", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
902     unsigned short v_fv_limit;
903     // M4_NUMBER_DESC("vertical fv slope", "u16", M4_RANGE(0, 511), "256", M4_DIGIT(0))
904     unsigned short v_fv_slope;
905     // M4_NUMBER_DESC("horizontal fv thresh", "u16", M4_RANGE(0, 4095), "4", M4_DIGIT(0))
906     unsigned short h_fv_thresh;
907     // M4_NUMBER_DESC("horizontal fv limit", "u16", M4_RANGE(0, 1023), "1023", M4_DIGIT(0))
908     unsigned short h_fv_limit;
909     // M4_NUMBER_DESC("horizontal fv slope", "u16", M4_RANGE(0, 511), "256", M4_DIGIT(0))
910     unsigned short h_fv_slope;
911     // M4_NUMBER_DESC("highlight thresh", "u16", M4_RANGE(0, 1023), "912", M4_DIGIT(0))
912     unsigned short highlit_thresh;
913     // M4_NUMBER_DESC("vertical fv ratio", "f32", M4_RANGE(0, 1), "0.5", M4_DIGIT(3))
914     float v_fv_ratio;
915 } CalibDbV2_AfV32_MeasCfg_t;
916 
917 typedef struct CalibDbV2_AFV32_Tuning_Para_s {
918     // M4_ENUM_DESC("mode", "CalibDbV2_AF_MODE_t", "CalibDbV2_AFMODE_CONT_PICTURE")
919     CalibDbV2_AF_MODE_t af_mode;
920     // M4_NUMBER_DESC("win_h_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
921     unsigned short win_h_offs;
922     // M4_NUMBER_DESC("win_v_offs", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
923     unsigned short win_v_offs;
924     // M4_NUMBER_DESC("win_h_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
925     unsigned short win_h_size;
926     // M4_NUMBER_DESC("win_v_size", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
927     unsigned short win_v_size;
928     // M4_NUMBER_DESC("win_h_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
929     unsigned short video_win_h_offs;
930     // M4_NUMBER_DESC("win_v_offs in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
931     unsigned short video_win_v_offs;
932     // M4_NUMBER_DESC("win_h_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
933     unsigned short video_win_h_size;
934     // M4_NUMBER_DESC("win_v_size in video", "u16", M4_RANGE(0,2000), "0", M4_DIGIT(0),M4_HIDE(0))
935     unsigned short video_win_v_size;
936     // M4_STRUCT_DESC("fixed mode", "normal_ui_style")
937     CalibDbV2_Af_DefCode_t fixed_mode;
938     // M4_STRUCT_DESC("macro mode", "normal_ui_style")
939     CalibDbV2_Af_DefCode_t macro_mode;
940     // M4_STRUCT_DESC("infinity mode", "normal_ui_style")
941     CalibDbV2_Af_DefCode_t infinity_mode;
942     // M4_STRUCT_DESC("contrast af", "normal_ui_style")
943     CalibDbV2_Af_Contrast_t contrast_af;
944     // M4_STRUCT_DESC("video contrast af", "normal_ui_style")
945     CalibDbV2_Af_Contrast_t video_contrast_af;
946     // M4_STRUCT_DESC("laser af", "normal_ui_style")
947     CalibDbV2_Af_Laser_t laser_af;
948     // M4_STRUCT_DESC("vcmcfg", "normal_ui_style")
949     CalibDbV2_Af_VcmCfg_t vcmcfg;
950     // M4_STRUCT_DESC("zoomfocus_tbl", "normal_ui_style")
951     CalibDbV2_Af_ZoomFocusTbl_t zoomfocus_tbl;
952     // M4_STRUCT_LIST_DESC("zoom meas", M4_SIZE_DYNAMIC, "double_index_list")
953     CalibDbV2_AfV30_ZoomMeas_t *zoom_meas;
954     int zoom_meas_len;
955     // M4_STRUCT_LIST_DESC("meas config table", M4_SIZE_DYNAMIC, "normal_ui_style")
956     CalibDbV2_AfV32_MeasCfg_t *meascfg_tbl;
957     int meascfg_tbl_len;
958 } CalibDbV2_AFV32_Tuning_Para_t;
959 
960 typedef struct {
961     // M4_STRUCT_DESC("TuningPara", "normal_ui_style")
962     CalibDbV2_AFV32_Tuning_Para_t TuningPara;
963 } CalibDbV2_AFV32_t;
964 
965 RKAIQ_END_DECLARE
966 
967 #endif
968