xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/awb_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * awb_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_AWB_HEADER_H__
21 #define __CALIBDBV2_AWB_HEADER_H__
22 
23 #include "rk_aiq_comm.h"
24 
25 RKAIQ_BEGIN_DECLARE
26 
27 #define CALD_AWB_WINDOW_NUM_MAX 8
28 #define CALD_AWB_EXCRANGE_NUM_MAX 7
29 #define CALD_AWB_LV_NUM_MAX 16
30 #define CALD_AWB_ILLUMINATION_NAME       ( 20U )
31 #define CALD_AWB_GRID_NUM_TOTAL_LITE 25
32 #define CALD_AWB_GRID_NUM_TOTAL 225
33 #define CALD_AWB_RGCT_GRID_NUM 9
34 #define CALD_AWB_BGCRI_GRID_NUM 11
35 
36 #if ISP_HW_V32_LITE
37 typedef enum CalibDbV2_Awb_Down_Scale_Mode_e {
38     CALIB_AWB_DS_4X4 = 0,
39     CALIB_AWB_DS_8X8 = 1,
40     CALIB_AWB_DS_16X8 = 2,
41 } CalibDbV2_Awb_Down_Scale_Mode_t;
42 #else
43 typedef enum CalibDbV2_Awb_Down_Scale_Mode_e {
44     CALIB_AWB_DS_4X4 = 0,
45     CALIB_AWB_DS_8X8 = 1,
46 } CalibDbV2_Awb_Down_Scale_Mode_t;
47 #endif
48 
49 typedef enum CalibDbV2_Awb_Blk_Stat_V21_e {
50     CALIB_AWB_BLK_STAT_MODE_AL_V201 = 0,
51     CALIB_AWB_BLK_STAT_MODE_WP_V201 = 1,
52 } CalibDbV2_Awb_Blk_Stat_V21_t;
53 
54 typedef enum CalibDbV2_Awb_Blk_Stat_V20_e {
55     CALIB_AWB_BLK_STAT_MODE_AL_V200 = 1,
56     CALIB_AWB_BLK_STAT_MODE_UV_V200 = 2,
57     CALIB_AWB_BLK_STAT_MODE_XY_V200 = 3,
58 } CalibDbV2_Awb_Blk_Stat_V20_t;
59 
60 
61 typedef enum CalibDbV2_Awb_Ext_Range_Dom_e {
62     CALIB_AWB_EXTRA_RANGE_DOMAIN_UV = 0,
63     CALIB_AWB_EXTRA_RANGE_DOMAIN_XY = 1
64 } CalibDbV2_Awb_Ext_Range_Dom_t;
65 
66 typedef enum CalibDbV2_Awb_Ext_Range_Mode_s {
67     CALIB_AWB_EXCLUDE_WP_MODE = 1,
68     CALIB_AWB_ETR_LIGHT_SOUR_MODE = 3,
69 } CalibDbV2_Awb_Ext_Range_Mode_t;
70 
71 typedef struct CalibDbV2_ExtRange_s {
72     // M4_ENUM_DESC("domain", "CalibDbV2_Awb_Ext_Range_Dom_t", "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV")
73     CalibDbV2_Awb_Ext_Range_Dom_t domain;/*0uv domain,1 xy domain*/
74     // M4_ENUM_DESC("mode", "CalibDbV2_Awb_Ext_Range_Mode_t", "CALIB_AWB_EXCLUDE_WP_MODE")
75     CalibDbV2_Awb_Ext_Range_Mode_t mode;
76     // M4_ARRAY_DESC("region", "s32", M4_SIZE(1,4), M4_RANGE(-8192, 8191), "0", M4_DIGIT(0), M4_DYNAMIC(0))
77     int region[4];
78 } CalibDbV2_ExtRange_t;
79 
80 typedef struct CalibDbV2_Yuv3D_Range_Ill_s {
81     // M4_NUMBER_DESC("b_uv", "s32", M4_RANGE(-65536,65535), "0", M4_DIGIT(0), M4_HIDE(1))
82     int b_uv;           //17+0 s
83     // M4_NUMBER_DESC("slope_inv_neg_uv", "s32", M4_RANGE(-262144,262143), "0", M4_DIGIT(0))
84     int slope_inv_neg_uv; //9+10s //-1/k
85     // M4_NUMBER_DESC("slope_factor_uv", "s32", M4_RANGE(-16384,16383), "0", M4_DIGIT(0), M4_HIDE(1))
86     int slope_factor_uv; //1+14s // 1/(-1/k+k)
87     // M4_NUMBER_DESC("slope_ydis", "s32", M4_RANGE(-262144,262143), "0", M4_DIGIT(0), M4_HIDE(1))
88     int slope_ydis;     //9+10s //k
89     // M4_NUMBER_DESC("b_ydis", "s32", M4_RANGE(-65536,65535), "0", M4_DIGIT(0), M4_HIDE(1))
90     int b_ydis;         //17+0s
91     // M4_NUMBER_DESC("ref_v", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1))
92     unsigned char ref_v;//8u
93     // M4_ARRAY_DESC("dis", "u16", M4_SIZE(1,6), M4_RANGE(0,4095), "0", M4_DIGIT(0), M4_DYNAMIC(0))
94     unsigned short  dis[6];//8+4 u
95     // M4_ARRAY_DESC("th", "u8", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0))
96     unsigned char th[6]; //8u
97 } CalibDbV2_Yuv3D_Range_Ill_t;
98 
99 typedef struct CalibDbV2_Yuv3D_2_Range_Ill_s {
100     // M4_ARRAY_DESC("thcurve_u", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0))
101     float thcurve_u[6];
102     // M4_ARRAY_DESC("thcure_th", "f32", M4_SIZE(1,6), M4_RANGE(0,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
103     float thcure_th[6];
104     // M4_ARRAY_DESC("lineVector", "f32", M4_SIZE(1,6), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(0), M4_HIDE(1))
105     float lineVector[6];
106     // M4_NUMBER_DESC("disP1P2", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1))
107     unsigned char disP1P2;
108 } CalibDbV2_Yuv3D_2_Range_Ill_t;
109 
110 typedef struct CalibDbV2_Tcs_Range_Ill_s {
111     // M4_ARRAY_DESC("normal", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
112     float normal[4];
113     // M4_ARRAY_DESC("big", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
114     float big[4];
115     // M4_ARRAY_DESC("small", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
116     float small[4];
117 } CalibDbV2_Tcs_Range_Ill_t;
118 
119 typedef struct CalibDbV2_Tcs_Range_Ill2_s {
120     // M4_ARRAY_DESC("normal", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
121     float normal[4];
122     // M4_ARRAY_DESC("big", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
123     float big[4];
124 } CalibDbV2_Tcs_Range_Ill2_t;
125 
126 typedef struct CalibDbV2_Uv_Range_Ill_s {
127     // M4_ARRAY_DESC("u", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(1), M4_DYNAMIC(0))
128     float  u[4];
129     // M4_ARRAY_DESC("v", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(1), M4_DYNAMIC(0))
130     float  v[4];
131 } CalibDbV2_Uv_Range_Ill_t;
132 
133 typedef enum CalibDbV2_Awb_DoorType_e {
134     CALIB_AWB_DOOR_TYPE_INDOOR = 1,
135     CALIB_AWB_DOOR_TYPE_AMBIGUITY = 2,
136     CALIB_AWB_DOOR_TYPE_OUTDOOR = 3,
137 } CalibDbV2_Awb_DoorType_t;
138 
139 typedef struct CalibDbV2_Awb_Light_V20_s {
140     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 16), "default", M4_DYNAMIC(0))
141     char* name;
142     // M4_ENUM_DESC("doorType", "CalibDbV2_Awb_DoorType_t", "CALIB_AWB_DOOR_TYPE_AMBIGUITY")
143     CalibDbV2_Awb_DoorType_t doorType;
144     // M4_ARRAY_DESC("standardGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,4), "1.0", M4_DIGIT(4), M4_DYNAMIC(0))
145     float standardGainValue[4];
146     // M4_ARRAY_TABLE_DESC("uvRegion", "array_table_ui", M4_INDEX_DEFAULT)
147     CalibDbV2_Uv_Range_Ill_t uvRegion;
148     // M4_ARRAY_TABLE_DESC("xyRegion", "array_table_ui", M4_INDEX_DEFAULT)
149     CalibDbV2_Tcs_Range_Ill_t xyRegion;
150     // M4_STRUCT_DESC("yuvRegion", "normal_ui_style")
151     CalibDbV2_Yuv3D_Range_Ill_t   yuvRegion;
152     // M4_ARRAY_DESC("staWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "0", M4_DIGIT(0), M4_DYNAMIC(0))
153     unsigned char staWeight[CALD_AWB_LV_NUM_MAX];
154     // M4_ARRAY_DESC("dayGainLvThSet", "u32", M4_SIZE(1,2), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
155     unsigned int dayGainLvThSet[2];
156     // M4_ARRAY_DESC("defaultDayGainLow", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
157     float defaultDayGainLow[4];//spatial gain
158     // M4_ARRAY_DESC("defaultDayGainHigh", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
159     float defaultDayGainHigh[4];
160     // M4_BOOL_DESC("xyType2Enable", "1", M4_HIDE(1))
161     bool  xyType2Enable;
162 } CalibDbV2_Awb_Light_V20_t;
163 
164 typedef enum CalibDb_Window_Mode_e {
165     CALIB_AWB_WINDOW_CFG_AUTO = 0,
166     CALIB_AWB_WINDOW_CFG_FIXED,
167 } CalibDb_Window_Mode_t;
168 
169 typedef struct CalibDbV2_StatWindow_s {
170     // M4_ENUM_DESC("mode", "CALIB_AWB_WINDOW_CFG_AUTO", "CALIB_AWB_WINDOW_CFG_AUTO")
171     CalibDb_Window_Mode_t mode;
172     // M4_ARRAY_DESC("window", "f32", M4_SIZE(1,4), M4_RANGE(0,100), "[0,0,1,1]", M4_DIGIT(2), M4_DYNAMIC(0))
173     float window[4];//percent 100% ,between[0,100]
174 } CalibDbV2_StatWindow_t;
175 
176 typedef struct CalibDbV2_Awb_Cct_Clip_Cfg_s {
177     // M4_BOOL_DESC("enable", "0")
178     bool enable;
179     // M4_ARRAY_DESC("cct", "f32", M4_SIZE(1,5), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
180     float* cct;
181     int cct_len;
182     // M4_ARRAY_DESC("cri_bound_up", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
183     float* cri_bound_up;
184     int cri_bound_up_len;
185     // M4_ARRAY_DESC("cri_bound_low", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
186     float* cri_bound_low;
187     int cri_bound_low_len;
188 } CalibDbV2_Awb_Cct_Clip_Cfg_t;
189 
190 typedef struct CalibDbV2_Awb_DaylgtClip_Cfg_s {
191     // M4_BOOL_DESC("enable", "0")
192     bool  enable;
193     // M4_NUMBER_DESC("outdoor_cct_min", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0))
194     float outdoor_cct_min;
195 } CalibDbV2_Awb_DaylgtClip_Cfg_t;
196 
197 typedef struct CalibDbV2_Awb_Limit_Range_s {
198     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
199     float *lumaValue;
200     int lumaValue_len;
201     // M4_ARRAY_DESC("maxR", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1))
202     unsigned short *maxR;
203     int maxR_len;
204     // M4_ARRAY_DESC("minR", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1))
205     unsigned short *minR;
206     int minR_len;
207     // M4_ARRAY_DESC("maxG", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1))
208     unsigned short *maxG;
209     int maxG_len;
210     // M4_ARRAY_DESC("minG", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1))
211     unsigned short *minG;
212     int minG_len;
213     // M4_ARRAY_DESC("maxB", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1))
214     unsigned short *maxB;
215     int maxB_len;
216     // M4_ARRAY_DESC("minB", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1))
217     unsigned short *minB;
218     int minB_len;
219     // M4_ARRAY_DESC("maxY", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "230", M4_DIGIT(0), M4_DYNAMIC(1))
220     unsigned short *maxY;
221     int maxY_len;
222     // M4_ARRAY_DESC("minY", "u16", M4_SIZE(1,5), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(1))
223     unsigned short *minY;
224     int minY_len;
225 } CalibDbV2_Awb_Limit_Range_t;
226 
227 typedef struct CalibDbV2_Rgb2Tcs_s {
228     // M4_ARRAY_DESC("pseudoLuminanceWeight", "f32", M4_SIZE(1,3), M4_RANGE(0,1), "0.3", M4_DIGIT(6), M4_DYNAMIC(0))
229     float pseudoLuminanceWeight[3];
230     // M4_ARRAY_DESC("rotationMat", "f32", M4_SIZE(3,3), M4_RANGE(0,1), "0.3", M4_DIGIT(6), M4_DYNAMIC(0))
231     float rotationMat[9];
232 } CalibDbV2_Rgb2Tcs_t;
233 
234 typedef struct CalibDbV2_Awb_Sgc_Cblk_s {
235     // M4_NUMBER_DESC("index", "u16", M4_RANGE(1,24), "1", M4_DIGIT(0))
236     unsigned short index;
237     // M4_NUMBER_DESC("meanC", "f32", M4_RANGE(0,255), "0", M4_DIGIT(6))
238     float meanC;
239     // M4_NUMBER_DESC("meanH", "f32", M4_RANGE(-180,180), "0", M4_DIGIT(6))
240     float meanH;
241 } CalibDbV2_Awb_Sgc_Cblk_t;
242 
243 typedef struct CalibDbV2_Awb_Sgc_Ls_s {
244     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 16), "default", M4_DYNAMIC(0))
245     char* name;
246     // M4_NUMBER_DESC("RGain", "f32", M4_RANGE(0,8), "1", M4_DIGIT(6))
247     float RGain;
248     // M4_NUMBER_DESC("BGain", "f32", M4_RANGE(0,8), "1", M4_DIGIT(6))
249     float BGain;
250 } CalibDbV2_Awb_Sgc_Ls_t;
251 
252 typedef struct CalibDbV2_Awb_Sgc_s {
253     // M4_BOOL_DESC("enable", "0")
254     bool enable;
255     // M4_STRUCT_LIST_DESC("colorBlock", M4_SIZE(1,24), "normal_ui_style")
256     CalibDbV2_Awb_Sgc_Cblk_t *colorBlock;
257     int colorBlock_len;
258     // M4_STRUCT_LIST_DESC("lsUsedForEstimation", M4_SIZE(1,7), "normal_ui_style")
259     CalibDbV2_Awb_Sgc_Ls_t *lsUsedForEstimation;
260     int lsUsedForEstimation_len;
261     // M4_NUMBER_DESC("alpha", "f32", M4_RANGE(0,1), "1", M4_DIGIT(4))
262     float alpha;
263 } CalibDbV2_Awb_Sgc_t;
264 
265 typedef enum CalibDbV2_Awb_Hdr_Fr_Ch_Mode_e {
266     CALIB_AWB_HDR_FR_CH_MANUAL = 0,
267     CALIB_AWB_HDR_FR_CH_AUTO
268 } CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t;
269 
270 typedef struct CalibDbV2_Awb_Hdr_Fr_Ch_s {
271     // M4_ENUM_DESC("frameChooseMode", "CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t", "CALIB_AWB_HDR_FR_CH_AUTO")
272     CalibDbV2_Awb_Hdr_Fr_Ch_Mode_t frameChooseMode;
273     // M4_NUMBER_DESC("frameChoose", "u8", M4_RANGE(0,2), "1", M4_DIGIT(0))
274     unsigned char frameChoose;
275 } CalibDbV2_Awb_Hdr_Fr_Ch_t;
276 
277 typedef enum CalibDbV2_Awb_Mul_Win_Mode_e {
278     CALIB_AWB_WIN_USELESS = 0,
279     CALIB_AWB_WIN_EXTRAWP = 1,
280     CALIB_AWB_WIN_WEIGHTWP = 2,
281 } CalibDbV2_Awb_Mul_Win_Mode_t;
282 
283 typedef struct CalibDbV2_Awb_Mul_Win_s {
284     // M4_BOOL_DESC("enable", "1")
285     bool  enable;
286     // M4_ENUM_DESC("multiwindowMode", "CalibDbV2_Awb_Mul_Win_Mode_t", "CALIB_AWB_WIN_USELESS")
287     CalibDbV2_Awb_Mul_Win_Mode_t multiwindowMode;
288     // M4_ARRAY_DESC("window", "u16", M4_SIZE(8,4), M4_RANGE(0,8191), "0", M4_DIGIT(0), M4_DYNAMIC(0))
289     float window[CALD_AWB_WINDOW_NUM_MAX][4];//8  windows in pixel domain ,hOffset,vOffser,hSize,vSize;
290     // M4_ARRAY_DESC("weight", "u16", M4_SIZE(8,4), M4_RANGE(0,10), "0", M4_DIGIT(4), M4_DYNAMIC(0))
291     float weight;//weight for 8  windows;
292 } CalibDbV2_Awb_Mul_Win_t;
293 
294 typedef struct CalibDbV2_Wb_Awb_Div_WpTh_s {
295     //  M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
296     float *lumaValue;
297     int lumaValue_len;
298     // M4_ARRAY_DESC("low", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
299     float *low;
300     int low_len;
301     // M4_ARRAY_DESC("high", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
302     float *high;
303     int high_len;
304 } CalibDbV2_Wb_Awb_Div_WpTh_t;
305 
306 typedef struct CalibDbV2_Wb_Awb_Div_s {
307     // M4_NUMBER_DESC("lumaValThLow", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
308     unsigned int lumaValThLow;
309     // M4_NUMBER_DESC("lumaValThLow2", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
310     unsigned int lumaValThLow2;
311     // M4_NUMBER_DESC("lumaValThHigh", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
312     unsigned int lumaValThHigh;
313     // M4_NUMBER_DESC("lumaValThHigh2", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
314     unsigned int lumaValThHigh2;
315     // M4_ARRAY_TABLE_DESC("wpNumTh", "array_table_ui", M4_INDEX_DEFAULT)
316     CalibDbV2_Wb_Awb_Div_WpTh_t wpNumTh;
317 } CalibDbV2_Wb_Awb_Div_t;
318 
319 typedef struct CalibDbV2_Wb_Awb_Caga_s {
320     // M4_BOOL_DESC("enable", "1")
321     bool enable;
322     // M4_ARRAY_DESC("targetGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
323     float targetGain[4];//cagaTargetGain
324     // M4_NUMBER_DESC("laCalcFactor", "f32", M4_RANGE(0, 255), "0", M4_DIGIT(4))
325     float laCalcFactor;
326 } CalibDbV2_Wb_Awb_Caga_t;
327 
328 typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Dt_s {
329     // M4_NUMBER_DESC("proDis_THH", "f32", M4_RANGE(0, 8), "0", M4_DIGIT(4))
330     float proDis_THH; //threshold for distance probality calculation// rename to do
331     // M4_NUMBER_DESC("proDis_THL", "f32", M4_RANGE(0, 8), "0", M4_DIGIT(4))
332     float proDis_THL;
333 } CalibDbV2_Wb_Awb_Prob_Calc_Dt_t;
334 
335 typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Lv_s {
336     // M4_NUMBER_DESC("outdoorLumaValThLow", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
337     unsigned int outdoorLumaValThLow;
338     // M4_NUMBER_DESC("outdoorLumaValThHigh", "u32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
339     unsigned int outdoorLumaValThHigh;// threshold for luminance probality calculation
340 } CalibDbV2_Wb_Awb_Prob_Calc_Lv_t;
341 
342 typedef struct CalibDbV2_Wb_Awb_Prob_Calc_Wp_s {
343     // M4_NUMBER_DESC("wpNumPercTh", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(6))
344     float  wpNumPercTh;
345     // M4_NUMBER_DESC("wpNumPercTh2", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(6))
346     float  wpNumPercTh2;
347 } CalibDbV2_Wb_Awb_Prob_Calc_Wp_t;
348 
349 typedef struct CalibDbV2_Wb_Awb_Convg_s {
350     // M4_NUMBER_DESC("varThforUnDamp", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4))
351     float  varThforUnDamp;
352     // M4_NUMBER_DESC("varThforDamp", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4))
353     float  varThforDamp;
354 } CalibDbV2_Wb_Awb_Convg_t;
355 
356 typedef struct CalibDbV2_Awb_Tolerance_s {
357     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
358     float* lumaValue;
359     int lumaValue_len;
360     // M4_ARRAY_DESC("toleranceValue", "f32", M4_SIZE(1,4), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
361     float* toleranceValue;
362     int toleranceValue_len;
363 }  CalibDbV2_Awb_Tolerance_t;
364 
365 typedef struct CalibDbV2_Awb_runinterval_s {
366     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
367     float *lumaValue;
368     int lumaValue_len;
369     // M4_ARRAY_DESC("intervalValue", "f32", M4_SIZE(1,4), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(1))
370     float *intervalValue;
371     int intervalValue_len;
372 }  CalibDbV2_Awb_runinterval_t;
373 
374 typedef struct CalibDbV2_Awb_DampFactor_s {
375     // M4_NUMBER_DESC("dFStep", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4))
376     float dFStep;
377     // M4_NUMBER_DESC("dFMin", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4))
378     float dFMin;
379     // M4_NUMBER_DESC("dFMax", "f32", M4_RANGE(0, 1), "0", M4_DIGIT(4))
380     float dFMax;
381     // M4_NUMBER_DESC("lvIIRsize", "u32", M4_RANGE(0, 128), "0", M4_DIGIT(0))
382     int lvIIRsize;
383     // M4_NUMBER_DESC("lvVarTh", "f32", M4_RANGE(0, 100), "0", M4_DIGIT(4))
384     float lvVarTh;
385 } CalibDbV2_Awb_DampFactor_t;
386 
387 typedef struct CalibDbV2_Awb_Cct_Lut_Cfg_Lv_s {
388     // M4_NUMBER_DESC("lumaValue", "f32", M4_RANGE(0, 255000), "0", M4_DIGIT(0))
389     float lumaValue;
390     // M4_NUMBER_DESC("ct_grid_num", "s32", M4_RANGE(0, 32), "0", M4_DIGIT(0))
391     int ct_grid_num;
392     // M4_NUMBER_DESC("cri_grid_num", "s32", M4_RANGE(0, 32), "0", M4_DIGIT(0))
393     int cri_grid_num;
394     // M4_ARRAY_DESC("ct_in_range", "f32", M4_SIZE(1,2), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
395     float ct_in_range[2];//min,max, equal distance sapmle
396     // M4_ARRAY_DESC("cri_in_range", "f32", M4_SIZE(1,2), M4_RANGE(-2,2), "0", M4_DIGIT(4), M4_DYNAMIC(0))
397     float cri_in_range[2];//min,max
398     // M4_ARRAY_DESC("ct_lut_out", "f32", M4_SIZE(9,7), M4_RANGE(0,10000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
399     float *ct_lut_out;
400     int ct_lut_out_len;
401     // M4_ARRAY_DESC("cri_lut_out", "f32", M4_SIZE(9,7), M4_RANGE(-2,2), "0", M4_DIGIT(4), M4_DYNAMIC(1))
402     float *cri_lut_out;
403     int cri_lut_out_len;
404 } CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t;
405 
406 typedef struct CalibDbV2_Awb_GainAdjust_s {
407     // M4_BOOL_DESC("enable", "1")
408     bool enable;
409     // M4_STRUCT_LIST_DESC("lutAll", M4_SIZE(1,8), "normal_ui_style")
410     CalibDbV2_Awb_Cct_Lut_Cfg_Lv_t *lutAll;
411     int lutAll_len;
412 } CalibDbV2_Awb_GainAdjust_t;
413 
414 
415 typedef struct CalibDbV2_Awb_Cct_Lut_Cfg_Lv2_s {
416     // M4_NUMBER_DESC("ctlData", "f32", M4_RANGE(0, 255000), "0", M4_DIGIT(1))
417     float ctlData;
418     // M4_ARRAY_DESC("rgct_in_ds", "f32", M4_SIZE(1,9), M4_RANGE(0,10000), "0", M4_DIGIT(4), M4_DYNAMIC(0))
419     float rgct_in_ds[CALD_AWB_RGCT_GRID_NUM];//min,max
420     // M4_ARRAY_DESC("bgcri_in_ds", "f32", M4_SIZE(1,11), M4_RANGE(-2,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
421     float bgcri_in_ds[CALD_AWB_BGCRI_GRID_NUM];//max,min
422     // M4_ARRAY_DESC("rgct_lut_out", "f32", M4_SIZE(11,9), M4_RANGE(0,10000), "0", M4_DIGIT(4), M4_DYNAMIC(0))
423     float rgct_lut_out[CALD_AWB_RGCT_GRID_NUM*CALD_AWB_BGCRI_GRID_NUM];
424     // M4_ARRAY_DESC("bgcri_lut_out", "f32", M4_SIZE(11,9), M4_RANGE(-2,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
425     float bgcri_lut_out[CALD_AWB_RGCT_GRID_NUM*CALD_AWB_BGCRI_GRID_NUM];
426 } CalibDbV2_Awb_Cct_Lut_Cfg_Lv2_t;
427 
428 
429 typedef enum CalibDbV2_Awb_Ctrl_Dat_Selt_e{
430     AWB_CTRL_DATA_ISO = 0,
431     AWB_CTRL_DATA_LV = 1,
432 }CalibDbV2_Awb_Ctrl_Dat_Selt_t;
433 
434 typedef enum CalibDbV2_Awb_Gain_Adj_Dat_Sl_e{
435     AWB_GAIN_ADJ_DATA_GAIN = 0,
436     AWB_GAIN_ADJ_DATA_CT = 1,
437 }CalibDbV2_Awb_Gain_Adj_Dat_Sl_t;
438 
439 typedef struct CalibDbV2_Awb_GainAdjust2_s {
440     // M4_BOOL_DESC("enable", "1")
441     bool enable;
442     // M4_ENUM_DESC("ctrlDataSelt", "CalibDbV2_Awb_Ctrl_Dat_Selt_t", "AWB_CTRL_DATA_LV")
443     CalibDbV2_Awb_Ctrl_Dat_Selt_t ctrlDataSelt;
444     // M4_ENUM_DESC("adjDataSelt", "CalibDbV2_Awb_Gain_Adj_Dat_Sl_t", "AWB_GAIN_ADJ_DATA_GAIN")
445     CalibDbV2_Awb_Gain_Adj_Dat_Sl_t adjDataSelt;
446     // M4_STRUCT_LIST_DESC("lutAll", M4_SIZE(1,8), "normal_ui_style")
447     CalibDbV2_Awb_Cct_Lut_Cfg_Lv2_t *lutAll;
448     int lutAll_len;
449 } CalibDbV2_Awb_GainAdjust2_t;
450 
451 
452 typedef struct CalibDbV2_Awb_Remosaic_Para_s {
453     // M4_BOOL_DESC("enable", "1")
454     bool enable;
455     // M4_BOOL_DESC("applyInvWbGainEnable", "1")
456     bool applyInvWbGainEnable;
457     // M4_ARRAY_DESC("sensorWbGain", "f32", M4_SIZE(1,4), M4_RANGE(0,4), "1", M4_DIGIT(4), M4_DYNAMIC(0))
458     float sensorWbGain[4];
459 } CalibDbV2_Awb_Remosaic_Para_t;
460 
461 typedef struct CalibDbV2_Awb_xyRg_stb_WpTh_s {
462     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
463     float *lumaValue;
464     int lumaValue_len;
465     // M4_ARRAY_DESC("forBigType", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
466     float *forBigType;
467     int forBigType_len;
468     // M4_ARRAY_DESC("forExtraType", "f32", M4_SIZE(1,5), M4_RANGE(0,100000), "0", M4_DIGIT(0), M4_DYNAMIC(1))
469     float *forExtraType;
470     int forExtraType_len;
471 } CalibDbV2_Awb_xyRg_stb_WpTh_t;
472 
473 typedef struct CalibDbV2_Awb_xyRegion_stable_s {
474     // M4_BOOL_DESC("enable", "1")
475     bool enable;
476     //  M4_ARRAY_TABLE_DESC("wpNumTh", "array_table_ui", M4_INDEX_DEFAULT)
477     CalibDbV2_Awb_xyRg_stb_WpTh_t wpNumTh;
478     // M4_NUMBER_DESC("xyTypeListSize", "s32", M4_RANGE(0, 65535), "0", M4_DIGIT(0))
479     int xyTypeListSize;// xyTypeListSize ==0 will disable this function
480     // M4_NUMBER_DESC("varianceLumaTh", "f32", M4_RANGE(0, 100), "0", M4_DIGIT(4))
481     float varianceLumaTh;
482 } CalibDbV2_Awb_xyRegion_stable_t;
483 
484 typedef struct CalibDbV2_Awb_gain_offset_cfg_s {
485     // M4_BOOL_DESC("enable", "1")
486     bool enable;
487     // M4_ARRAY_DESC("offset", "f32", M4_SIZE(1,4), M4_RANGE(-8,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
488     float offset[4];//rggb
489 } CalibDbV2_Awb_gain_offset_cfg_t;
490 
491 typedef struct CalibDbV2_Awb_SmartRun_cfg_s {
492     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
493     float *lumaValue;
494     int lumaValue_len;
495     // M4_ARRAY_DESC("lvVarTh", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
496     float *lvVarTh;
497     int lvVarTh_len;
498     // M4_ARRAY_DESC("wbgainAlgDiffTh", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
499     float *wbgainAlgDiffTh;
500     int wbgainAlgDiffTh_len;
501     // M4_ARRAY_DESC("wbgainHwDiffTh", "f32", M4_SIZE(1,5), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(1))
502     float *wbgainHwDiffTh;
503     int wbgainHwDiffTh_len;
504 } CalibDbV2_Awb_SmartRun_cfg_t;
505 
506 typedef struct CalibDbV2_Awb_SmartRun_s {
507     // M4_BOOL_DESC("enable", "1")
508     bool  enable;
509     // M4_ARRAY_TABLE_DESC("cfg", "array_table_ui", M4_INDEX_DEFAULT)
510     CalibDbV2_Awb_SmartRun_cfg_t cfg;
511 } CalibDbV2_Awb_SmartRun_t;
512 
513 typedef struct CalibDbV2_Wb_Awb_Ext_Com_Para_t {
514     // M4_STRING_DESC("lightSourceForFirstFrame", M4_SIZE(1,1), M4_RANGE(-128, 127), "default", M4_DYNAMIC(0))
515     char *lightSourceForFirstFrame;
516     // M4_STRUCT_DESC("smartRun", "normal_ui_style")
517     CalibDbV2_Awb_SmartRun_t smartRun;
518     // M4_ARRAY_TABLE_DESC("tolerance", "array_table_ui", M4_INDEX_DEFAULT)
519     CalibDbV2_Awb_Tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function
520     // M4_ARRAY_TABLE_DESC("runInterval", "array_table_ui", M4_INDEX_DEFAULT)
521     CalibDbV2_Awb_runinterval_t runInterval;
522     // M4_STRUCT_DESC("dampFactor", "normal_ui_style")
523     CalibDbV2_Awb_DampFactor_t dampFactor;
524     // M4_STRUCT_DESC("wbGainAdjust", "normal_ui_style")
525     CalibDbV2_Awb_GainAdjust_t wbGainAdjust;
526     // M4_STRUCT_DESC("wbGainDaylightClip", "normal_ui_style")
527     CalibDbV2_Awb_DaylgtClip_Cfg_t wbGainDaylightClip;
528     // M4_STRUCT_DESC("wbGainClip", "normal_ui_style")
529     CalibDbV2_Awb_Cct_Clip_Cfg_t wbGainClip;
530     // M4_STRUCT_DESC("division", "normal_ui_style")
531     CalibDbV2_Wb_Awb_Div_t division;
532     // M4_ARRAY_DESC("defaultNightGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
533     float defaultNightGain[4];
534     // M4_ARRAY_DESC("lumaValueMatrix", "u32", M4_SIZE(1,16), M4_RANGE(0,255000), "1", M4_DIGIT(0), M4_DYNAMIC(0))
535     unsigned int lumaValueMatrix[CALD_AWB_LV_NUM_MAX];
536     // M4_ARRAY_DESC("defaultNightGainWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(0))
537     unsigned char defaultNightGainWeight[CALD_AWB_LV_NUM_MAX];
538     // M4_STRUCT_DESC("probCalcDis", "normal_ui_style")
539     CalibDbV2_Wb_Awb_Prob_Calc_Dt_t probCalcDis;
540     // M4_STRUCT_DESC("probCalcLv", "normal_ui_style")
541     CalibDbV2_Wb_Awb_Prob_Calc_Lv_t probCalcLv;
542     // M4_STRUCT_DESC("probCalcWp", "normal_ui_style")
543     CalibDbV2_Wb_Awb_Prob_Calc_Wp_t probCalcWp;
544     // M4_STRUCT_DESC("converged", "normal_ui_style")
545     CalibDbV2_Wb_Awb_Convg_t converged;
546     // M4_STRUCT_DESC("xyRegionStableSelection", "normal_ui_style")
547     CalibDbV2_Awb_xyRegion_stable_t xyRegionStableSelection;
548     // M4_ARRAY_DESC("weightForNightGainCalc", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(1))
549     unsigned char *weightForNightGainCalc;
550     int weightForNightGainCalc_len;
551     // M4_STRUCT_DESC("singleColorProces", "normal_ui_style")
552     CalibDbV2_Awb_Sgc_t singleColorProces;
553     // M4_ARRAY_DESC("lineRgBg", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
554     float lineRgBg[3];
555     // M4_ARRAY_DESC("lineRgProjCCT", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
556     float lineRgProjCCT[3];
557     // M4_STRUCT_DESC("chrAdpttAdj", "normal_ui_style", M4_HIDE(1))
558     CalibDbV2_Wb_Awb_Caga_t chrAdpttAdj;
559     // M4_STRUCT_DESC("remosaicCfg", "normal_ui_style")
560     CalibDbV2_Awb_Remosaic_Para_t remosaicCfg;
561     // M4_STRUCT_DESC("wbGainOffset", "normal_ui_style")
562     CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
563 } CalibDbV2_Wb_Awb_Ext_Com_Para_t;
564 
565 
566 typedef struct CalibDbV2_Awb_Ava_Site_Rec_s{
567     // M4_BOOL_DESC("enable", "1")
568     bool  enable;
569     // M4_ARRAY_DESC("frameNum", "u32", M4_SIZE(1,1), M4_RANGE(0,255), "3", M4_DIGIT(0), M4_DYNAMIC(0))
570     unsigned int frameNum;
571     // M4_STRING_DESC("fullFileName", M4_SIZE(1,1), M4_RANGE(0, 255), "/tmp/avaSiteInfo", M4_DYNAMIC(0))
572     char  fullFileName[100];
573     // M4_BOOL_DESC("avaEnable", "1")
574     bool  avaEnable;
575     // M4_ARRAY_DESC("wbgainTh", "f32", M4_SIZE(1,1), M4_RANGE(0,8), "0.2", M4_DIGIT(4), M4_DYNAMIC(0))
576     float wbgainTh;
577     // M4_ARRAY_DESC("wbgainTh", "f32", M4_SIZE(1,1), M4_RANGE(0,255), "2", M4_DIGIT(4), M4_DYNAMIC(0))
578     float lvValueTh;
579 }CalibDbV2_Awb_Ava_Site_Rec_t;
580 
581 
582 typedef struct CalibDbV2_Wb_Awb_Ext_Para_V32_s {
583     // M4_STRING_DESC("lightSourceForFirstFrame", M4_SIZE(1,1), M4_RANGE(-128, 127), "default", M4_DYNAMIC(0))
584     char *lightSourceForFirstFrame;
585     // M4_STRUCT_DESC("smartRun", "normal_ui_style")
586     CalibDbV2_Awb_SmartRun_t smartRun;
587     // M4_ARRAY_TABLE_DESC("tolerance", "array_table_ui", M4_INDEX_DEFAULT)
588     CalibDbV2_Awb_Tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function
589     // M4_ARRAY_TABLE_DESC("runInterval", "array_table_ui", M4_INDEX_DEFAULT)
590     CalibDbV2_Awb_runinterval_t runInterval;
591     // M4_STRUCT_DESC("dampFactor", "normal_ui_style")
592     CalibDbV2_Awb_DampFactor_t dampFactor;
593     // M4_STRUCT_DESC("wbGainAdjust", "normal_ui_style")
594     CalibDbV2_Awb_GainAdjust2_t wbGainAdjust;
595     // M4_STRUCT_DESC("wbGainDaylightClip", "normal_ui_style")
596     CalibDbV2_Awb_DaylgtClip_Cfg_t wbGainDaylightClip;
597     // M4_STRUCT_DESC("wbGainClip", "normal_ui_style")
598     CalibDbV2_Awb_Cct_Clip_Cfg_t wbGainClip;
599     // M4_STRUCT_DESC("division", "normal_ui_style")
600     CalibDbV2_Wb_Awb_Div_t division;
601     // M4_ARRAY_DESC("defaultNightGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
602     float defaultNightGain[4];
603     // M4_ARRAY_DESC("lumaValueMatrix", "u32", M4_SIZE(1,16), M4_RANGE(0,255000), "1", M4_DIGIT(0), M4_DYNAMIC(0))
604     unsigned int lumaValueMatrix[CALD_AWB_LV_NUM_MAX];
605     // M4_ARRAY_DESC("defaultNightGainWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(0))
606     unsigned char defaultNightGainWeight[CALD_AWB_LV_NUM_MAX];
607     // M4_STRUCT_DESC("probCalcDis", "normal_ui_style")
608     CalibDbV2_Wb_Awb_Prob_Calc_Dt_t probCalcDis;
609     // M4_STRUCT_DESC("probCalcLv", "normal_ui_style")
610     CalibDbV2_Wb_Awb_Prob_Calc_Lv_t probCalcLv;
611     // M4_STRUCT_DESC("probCalcWp", "normal_ui_style")
612     CalibDbV2_Wb_Awb_Prob_Calc_Wp_t probCalcWp;
613     // M4_STRUCT_DESC("converged", "normal_ui_style")
614     CalibDbV2_Wb_Awb_Convg_t converged;
615     // M4_STRUCT_DESC("xyRegionStableSelection", "normal_ui_style")
616     CalibDbV2_Awb_xyRegion_stable_t xyRegionStableSelection;
617     // M4_ARRAY_DESC("weightForNightGainCalc", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(1))
618     unsigned char *weightForNightGainCalc;
619     int weightForNightGainCalc_len;
620     // M4_STRUCT_DESC("singleColorProces", "normal_ui_style")
621     CalibDbV2_Awb_Sgc_t singleColorProces;
622     // M4_ARRAY_DESC("lineRgBg", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
623     float lineRgBg[3];
624     // M4_ARRAY_DESC("lineRgProjCCT", "f32", M4_SIZE(1,3), M4_RANGE(-2147483648,2147483647), "1", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
625     float lineRgProjCCT[3];
626     // M4_STRUCT_DESC("remosaicCfg", "normal_ui_style")
627     CalibDbV2_Awb_Remosaic_Para_t remosaicCfg;
628     // M4_STRUCT_DESC("wbGainOffset", "normal_ui_style")
629     CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
630     // M4_STRUCT_DESC("avaSiteRec", "normal_ui_style")
631     CalibDbV2_Awb_Ava_Site_Rec_t avaSiteRec;
632 } CalibDbV2_Wb_Awb_Ext_Para_V32_t;
633 
634 typedef struct CalibDbV2_Wb_Awb_Para_V20_t {
635     // M4_STRUCT_DESC("hdrPara", "normal_ui_style")
636     CalibDbV2_Awb_Hdr_Fr_Ch_t hdrPara;
637     // M4_BOOL_DESC("lscBypassEnable", "0");
638     bool                lscBypassEnable;
639     // M4_BOOL_DESC("uvDetectionEnable", "1");
640     bool                uvDetectionEnable;
641     // M4_BOOL_DESC("xyDetectionEnable", "1");
642     bool                xyDetectionEnable;
643     // M4_BOOL_DESC("yuvDetectionEnable", "1");
644     bool                yuvDetectionEnable;
645     // CXF CHECK
646     // M4_STRING_DESC("lsUsedForYuvDet", M4_SIZE(1,7), M4_RANGE(-128,127), "light", M4_DYNAMIC(1), M4_HIDE(1));
647     char**              lsUsedForYuvDet;
648     int                 lsUsedForYuvDet_len;
649     // M4_NUMBER_DESC("yuvDetRef_u", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0), M4_HIDE(1))
650     unsigned char yuvDetRef_u;          //8u //cxf3333
651     // M4_ENUM_DESC("downScaleMode", "CalibDbV2_Awb_Down_Scale_Mode_t","CALIB_AWB_DS_4X4");
652     CalibDbV2_Awb_Down_Scale_Mode_t downScaleMode;
653     // M4_ENUM_DESC("blkMeasureMode", "CalibDbV2_Awb_Blk_Stat_V20_t","CALIB_AWB_BLK_STAT_MODE_AL_V200");
654     CalibDbV2_Awb_Blk_Stat_V20_t blkMeasureMode;
655     // M4_STRUCT_DESC("mainWindow", "normal_ui_style")
656     CalibDbV2_StatWindow_t mainWindow;
657     // M4_ARRAY_TABLE_DESC("limitRange", "array_table_ui", M4_INDEX_DEFAULT)
658     CalibDbV2_Awb_Limit_Range_t limitRange;
659     // M4_STRUCT_DESC("rgb2TcsPara", "normal_ui_style", M4_HIDE(1))
660     CalibDbV2_Rgb2Tcs_t rgb2TcsPara;
661     // M4_STRUCT_DESC("multiWindow", "normal_ui_style")
662     CalibDbV2_Awb_Mul_Win_t  multiWindow;
663     // M4_STRUCT_LIST_DESC("extraWpRange", M4_SIZE(1,7), "normal_ui_style")
664     CalibDbV2_ExtRange_t extraWpRange[CALD_AWB_EXCRANGE_NUM_MAX];
665     // M4_STRUCT_LIST_DESC("lightSources", M4_SIZE(1,7), "normal_ui_style")
666     CalibDbV2_Awb_Light_V20_t* lightSources;
667     int   lightSources_len;
668 } CalibDbV2_Wb_Awb_Para_V20_t;
669 
670 typedef struct CalibDbV2_Awb_Lu_Wgt_En_Th_s {
671     // M4_NUMBER_DESC("wpDiffWeiNoTh", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4))
672     float wpDiffWeiNoTh;
673     // M4_NUMBER_DESC("wpDiffWeiLvValueTh", "u32", M4_RANGE(0,255000), "0", M4_DIGIT(0))
674     unsigned int   wpDiffWeiLvValueTh;
675 } CalibDbV2_Awb_Lu_Wgt_En_Th_t;
676 
677 typedef struct CalibDbV2_Awb_Lum_Wgt_Lv_Rto_s {
678     // M4_NUMBER_DESC("ratioValue", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4))
679     float ratioValue;
680     // M4_ARRAY_DESC("weight", "f32", M4_SIZE(1,9), M4_RANGE(0,1), "0", M4_DIGIT(4), M4_DYNAMIC(0))
681     float weight[9] ;
682 } CalibDbV2_Awb_Lum_Wgt_Lv_Rto_t;
683 
684 typedef struct CalibDbV2_Awb_Luma_Weight_Lv_s {
685     // M4_NUMBER_DESC("LvValue", "f32", M4_RANGE(0,255000), "0", M4_DIGIT(0))
686     float LvValue;
687     // M4_STRUCT_LIST_DESC("ratioSet", M4_SIZE(1,4), "normal_ui_style")
688     CalibDbV2_Awb_Lum_Wgt_Lv_Rto_t* ratioSet;
689     int ratioSet_len;
690 } CalibDbV2_Awb_Luma_Weight_Lv_t;
691 
692 typedef struct CalibDbV2_Awb_Luma_Weight_s {
693     //with differernt luma ,the different weight in WP sum
694     // M4_BOOL_DESC("enable", "0");
695     bool enable;
696     // M4_STRUCT_DESC("wpDiffWeiEnableTh", "normal_ui_style")
697     CalibDbV2_Awb_Lu_Wgt_En_Th_t wpDiffWeiEnableTh;
698     // M4_ARRAY_DESC("wpDiffwei_y", "u8", M4_SIZE(1,9), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0))
699     unsigned char wpDiffwei_y[9];
700     // M4_ARRAY_DESC("perfectBin", "u8", M4_SIZE(1,8), M4_RANGE(0,1), "0", M4_DIGIT(0), M4_DYNAMIC(0))
701     unsigned char  perfectBin[8];// true means the luma is appropriate
702     // M4_STRUCT_LIST_DESC("wpDiffWeightLvSet", M4_SIZE(1,4), "normal_ui_style")
703     CalibDbV2_Awb_Luma_Weight_Lv_t* wpDiffWeightLvSet;
704     int wpDiffWeightLvSet_len;
705 } CalibDbV2_Awb_Luma_Weight_t;
706 
707 
708 typedef struct CalibDbV2_ExtR_Wei_V32_s {
709     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
710     float* lumaValue;
711     int lumaValue_len;
712     // M4_ARRAY_DESC("weight", "f32", M4_SIZE(1,5), M4_RANGE(0,5), "0",M4_DIGIT(4), M4_DYNAMIC(1))
713     float* weight;
714     int weight_len;
715 } CalibDbV2_ExtR_Wei_V32_t;
716 
717 typedef struct CalibDbV2_Awb_Light_V21_s {
718     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 32), "default", M4_DYNAMIC(0))
719     char* name;
720     // M4_ENUM_DESC("doorType", "CalibDbV2_Awb_DoorType_t", "CALIB_AWB_DOOR_TYPE_AMBIGUITY")
721     CalibDbV2_Awb_DoorType_t doorType;
722     // M4_ARRAY_DESC("standardGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
723     float standardGainValue[4];
724     // M4_ARRAY_TABLE_DESC("uvRegion", "array_table_ui", M4_INDEX_DEFAULT)
725     CalibDbV2_Uv_Range_Ill_t uvRegion;
726     // M4_ARRAY_TABLE_DESC("xyRegion", "array_table_ui", M4_INDEX_DEFAULT)
727     CalibDbV2_Tcs_Range_Ill2_t xyRegion;
728     // M4_STRUCT_DESC("rtYuvRegion", "normal_ui_style")
729     CalibDbV2_Yuv3D_2_Range_Ill_t rtYuvRegion;
730     // M4_ARRAY_DESC("staWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "0", M4_DIGIT(0), M4_DYNAMIC(0))
731     unsigned char staWeight[CALD_AWB_LV_NUM_MAX];
732     // M4_ARRAY_DESC("dayGainLvThSet", "u8", M4_SIZE(1,2), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
733     unsigned int dayGainLvThSet[2];
734     // M4_ARRAY_DESC("defaultDayGainLow", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
735     float defaultDayGainLow[4];//spatial gain
736     // M4_ARRAY_DESC("defaultDayGainHigh", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
737     float defaultDayGainHigh[4];
738     // M4_NUMBER_DESC("xyType2Enable", "u8", M4_RANGE(0,1), "1", M4_DIGIT(0), M4_HIDE(1))
739     unsigned char xyType2Enable;
740     // M4_ARRAY_TABLE_DESC("weight", "array_table_ui", M4_INDEX_DEFAULT)
741     CalibDbV2_ExtR_Wei_V32_t weight;
742 } CalibDbV2_Awb_Light_V21_t;
743 
744 typedef struct CalibDbV2_Wb_Awb_Para_V21_t {
745     // M4_STRUCT_DESC("hdrPara", "normal_ui_style")
746     CalibDbV2_Awb_Hdr_Fr_Ch_t hdrPara;//hdrFrameChoose;
747     // M4_BOOL_DESC("lscBypassEnable", "0");
748     bool                lscBypassEnable;
749     // M4_BOOL_DESC("uvDetectionEnable", "0");
750     bool                uvDetectionEnable;
751     // M4_BOOL_DESC("xyDetectionEnable", "0");
752     bool                xyDetectionEnable;
753     // M4_BOOL_DESC("yuvDetectionEnable", "0");
754     bool                yuvDetectionEnable;
755     // M4_STRING_DESC("lsUsedForYuvDet", M4_SIZE(1,7), M4_RANGE(0, 16), "default", M4_DYNAMIC(1), M4_HIDE(1))
756     char** lsUsedForYuvDet;
757     int                 lsUsedForYuvDet_len;
758     // M4_BOOL_DESC("blkStatisticsEnable", "0");
759     bool                blkStatisticsEnable;
760     // M4_ENUM_DESC("downScaleMode", "CalibDbV2_Awb_Down_Scale_Mode_t", "CALIB_AWB_DS_8X8")
761     CalibDbV2_Awb_Down_Scale_Mode_t       downScaleMode;
762     // M4_ENUM_DESC("blkMeasureMode", "CalibDbV2_Awb_Blk_Stat_V21_t", "CALIB_AWB_BLK_STAT_MODE_WP_V201")
763     CalibDbV2_Awb_Blk_Stat_V21_t      blkMeasureMode;
764     // M4_STRUCT_DESC("mainWindow", "normal_ui_style")
765     CalibDbV2_StatWindow_t mainWindow;
766     // M4_ARRAY_TABLE_DESC("limitRange", "array_table_ui", M4_INDEX_DEFAULT)
767     CalibDbV2_Awb_Limit_Range_t limitRange;
768     // M4_STRUCT_DESC("rgb2TcsPara", "normal_ui_style", M4_HIDE(1))
769     CalibDbV2_Rgb2Tcs_t rgb2TcsPara;
770     // M4_ARRAY_DESC("rgb2RotationYuvMat", "f32", M4_SIZE(4,4), M4_RANGE(-255,255), "0", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
771     float rgb2RotationYuvMat[16];
772     //several winow in uv or xy domain
773     // M4_STRUCT_LIST_DESC("extraWpRange", M4_SIZE(1,7), "normal_ui_style")
774     CalibDbV2_ExtRange_t extraWpRange[CALD_AWB_EXCRANGE_NUM_MAX];
775     // M4_STRUCT_DESC("wpDiffLumaWeight", "normal_ui_style")
776     CalibDbV2_Awb_Luma_Weight_t wpDiffLumaWeight;
777     // M4_BOOL_DESC("wpDiffBlkWeiEnable", "0");
778     bool           wpDiffBlkWeiEnable;
779     // M4_ARRAY_DESC("wpDiffBlkWeight", "u16", M4_SIZE(15,15), M4_RANGE(0,63), "0", M4_DIGIT(0), M4_DYNAMIC(0))
780     unsigned short wpDiffBlkWeight[CALD_AWB_GRID_NUM_TOTAL];
781     // M4_STRUCT_LIST_DESC("lightSources", M4_SIZE(1,7), "normal_ui_style")
782     CalibDbV2_Awb_Light_V21_t* lightSources;
783     int lightSources_len;
784 } CalibDbV2_Wb_Awb_Para_V21_t;
785 
786 typedef enum CalibDbV2_Wb_Mwb_Mode_e {
787     CALIB_MWB_MODE_CCT                  = 1,        /**< run manual white balance by cct*/
788     CALIB_MWB_MODE_WBGAIN               = 2,        /**< run manual white balance by wbgain*/
789     CALIB_MWB_MODE_SCENE                = 3,       /**< run manual white balance by scene selection*/
790 } CalibDbV2_Wb_Mwb_Mode_t;
791 
792 typedef enum CalibDbV2_Wb_Mwb_Scene_e {
793     CALIB_WB_SCENE_INCANDESCENT = 0,
794     CALIB_WB_SCENE_FLUORESCENT,
795     CALIB_WB_SCENE_WARM_FLUORESCENT,
796     CALIB_WB_SCENE_DAYLIGHT,
797     CALIB_WB_SCENE_CLOUDY_DAYLIGHT,
798     CALIB_WB_SCENE_TWILIGHT,
799     CALIB_WB_SCENE_SHADE
800 } CalibDbV2_Wb_Mwb_Scene_t;
801 
802 typedef struct CalibDbV2_Awb_Cct_s {
803     // M4_NUMBER_DESC("CCT", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0))
804     float CCT;
805     // CXF CHECK
806     // M4_NUMBER_DESC("CCRI", "f32", M4_RANGE(-2,2), "0", M4_DIGIT(3))
807     float CCRI;
808 } CalibDbV2_Awb_Cct_t;
809 typedef struct CalibDbV2_Wb_Mwb_Cfg_Para_s {
810     // M4_ARRAY_DESC("mwbGain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1.0", M4_DIGIT(4), M4_DYNAMIC(0))
811     float mwbGain[4];
812     // M4_ENUM_DESC("scene", "CalibDbV2_Wb_Mwb_Scene_t", "CALIB_WB_SCENE_DAYLIGHT");
813     CalibDbV2_Wb_Mwb_Scene_t scene;
814     // M4_STRUCT_DESC("cct", "normal_ui_style")
815     CalibDbV2_Awb_Cct_t cct;
816 } CalibDbV2_Wb_Mwb_Cfg_Para_t;
817 
818 typedef struct CalibDbV2_Wb_Mwb_Para_s {
819     // M4_ENUM_DESC("mode", "CalibDbV2_Wb_Mwb_Mode_t", "CALIB_MWB_MODE_WBGAIN");
820     CalibDbV2_Wb_Mwb_Mode_t mode;
821     // M4_STRUCT_DESC("cfg", "normal_ui_style")
822     CalibDbV2_Wb_Mwb_Cfg_Para_t cfg;
823 } CalibDbV2_Wb_Mwb_Para_t;
824 
825 typedef enum CalibDbV2_Wb_Op_Mode_e {
826     CALIB_WB_MODE_MANUAL                      = 0,        /**< run manual white balance */
827     CALIB_WB_MODE_AUTO                        = 1,        /**< run auto white balance */
828 } CalibDbV2_Wb_Op_Mode_t;
829 
830 typedef struct CalibDbV2_Wb_Para_t {
831     // M4_BOOL_DESC("byPass", "0");
832     bool byPass;
833     // M4_ENUM_DESC("mode", "CalibDbV2_Wb_Op_Mode_t", "CALIB_WB_MODE_AUTO");
834     CalibDbV2_Wb_Op_Mode_t mode;//replace awbEnable
835 } CalibDbV2_Wb_Para_t;
836 
837 typedef struct CalibDbV2_Wb_Para_V20_s {
838     // M4_STRUCT_DESC("control", "normal_ui_style")
839     CalibDbV2_Wb_Para_t control;
840     // M4_STRUCT_DESC("manualPara", "normal_ui_style")
841     CalibDbV2_Wb_Mwb_Para_t manualPara;
842     // M4_STRUCT_DESC("autoPara", "normal_ui_style")
843     CalibDbV2_Wb_Awb_Para_V20_t autoPara;
844     // M4_STRUCT_DESC("autoExtPara", "normal_ui_style")
845     CalibDbV2_Wb_Awb_Ext_Com_Para_t autoExtPara;
846 } CalibDbV2_Wb_Para_V20_t;
847 
848 typedef struct CalibDbV2_Wb_Para_V21_s {
849     // M4_STRUCT_DESC("control", "normal_ui_style")
850     CalibDbV2_Wb_Para_t control;
851     // M4_STRUCT_DESC("manualPara", "normal_ui_style")
852     CalibDbV2_Wb_Mwb_Para_t manualPara;
853     // M4_STRUCT_DESC("autoPara", "normal_ui_style")
854     CalibDbV2_Wb_Awb_Para_V21_t autoPara;
855     // M4_STRUCT_DESC("autoExtPara", "normal_ui_style")
856     CalibDbV2_Wb_Awb_Ext_Com_Para_t autoExtPara;
857 } CalibDbV2_Wb_Para_V21_t;
858 
859 typedef enum CalibDbV2_Awb_Raw_Select_Mode_s {
860     CALIB_AWB_INPUT_RAW_FIXED = 0,
861     CALIB_AWB_INPUT_RAW_AUTO = 1,
862     CALIB_AWB_INPUT_BAYERNR = 3,
863     CALIB_AWB_INPUT_DRC = 4,
864 } CalibDbV2_Awb_Raw_Select_Mode_e;
865 
866 typedef struct CalibDbV2_Awb_Raw_Select_s {
867     // M4_ENUM_DESC("frameChooseMode", "CalibDbV2_Awb_Raw_Select_Mode_e", "CALIB_AWB_INPUT_BAYERNR")
868     CalibDbV2_Awb_Raw_Select_Mode_e frameChooseMode;
869     // M4_NUMBER_DESC("frameChoose", "u8", M4_RANGE(0,2), "1", M4_DIGIT(0))
870     unsigned char frameChoose;
871 } CalibDbV2_Awb_Raw_Select_t;
872 
873 
874 typedef struct CalibDbV2_ExtRange_V32_s {
875     // M4_ENUM_DESC("domain", "CalibDbV2_Awb_Ext_Range_Dom_t", "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV")
876     CalibDbV2_Awb_Ext_Range_Dom_t domain;/*0uv domain,1 xy domain*/
877     // M4_ENUM_DESC("mode", "CalibDbV2_Awb_Ext_Range_Mode_t", "CALIB_AWB_EXCLUDE_WP_MODE")
878     CalibDbV2_Awb_Ext_Range_Mode_t mode;
879     // M4_ARRAY_DESC("region", "s32", M4_SIZE(1,4), M4_RANGE(-8192, 8191), "0", M4_DIGIT(0), M4_DYNAMIC(0))
880     int region[4];
881     // M4_ARRAY_TABLE_DESC("weightInculde", "array_table_ui", M4_INDEX_DEFAULT)
882     CalibDbV2_ExtR_Wei_V32_t weightInculde;
883 } CalibDbV2_ExtRange_V32_t;
884 
885 typedef struct CalibDbV2_Awb_offset_data_s {
886     // M4_ARRAY_DESC("ISO", "f32", M4_SIZE(1,100), M4_RANGE(0,10000000), "50",M4_DIGIT(4), M4_DYNAMIC(1))
887     float* ISO;
888     int ISO_len;
889     // M4_ARRAY_DESC("R_Channel", "f32", M4_SIZE(1,100), M4_RANGE(0,4095), "0",M4_DIGIT(4), M4_DYNAMIC(1))
890     float* R_Channel;
891     int R_Channel_len;
892     // M4_ARRAY_DESC("Gr_Channel", "f32", M4_SIZE(1,100), M4_RANGE(0,4095), "0",M4_DIGIT(4), M4_DYNAMIC(1))
893     float* Gr_Channel;
894     int Gr_Channel_len;
895     // M4_ARRAY_DESC("Gb_Channel", "f32", M4_SIZE(1,100), M4_RANGE(0,4095), "0",M4_DIGIT(4), M4_DYNAMIC(1))
896     float* Gb_Channel;
897     int Gb_Channel_len;
898     // M4_ARRAY_DESC("B_Channel", "f32", M4_SIZE(1,100), M4_RANGE(0,4095), "0",M4_DIGIT(4), M4_DYNAMIC(1))
899     float* B_Channel;
900     int B_Channel_len;
901 } CalibDbV2_Awb_offset_data_t;
902 
903 typedef struct CalibDbV2_Awb_Blc_s {
904     // M4_BOOL_DESC("enable", "0");
905     bool enable;
906     // M4_ARRAY_TABLE_DESC("offset", "array_table_ui", M4_INDEX_DEFAULT)
907     CalibDbV2_Awb_offset_data_t offset;//r gr gb b
908 } CalibDbV2_Awb_Blc_t;
909 
910 typedef struct CalibDbV2_Awb_Limit_Range_V32_s {
911     // M4_ARRAY_DESC("lumaValue", "f32", M4_SIZE(1,5), M4_RANGE(0,255000), "0", M4_DIGIT(1), M4_DYNAMIC(1))
912     float* lumaValue;
913     int lumaValue_len;
914     // M4_ARRAY_DESC("maxR", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
915     float* maxR;
916     int maxR_len;
917     // M4_ARRAY_DESC("minR", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
918     float * minR;
919     int minR_len;
920     // M4_ARRAY_DESC("maxG", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
921     float * maxG;
922     int maxG_len;
923     // M4_ARRAY_DESC("minG", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
924     float * minG;
925     int minG_len;
926     // M4_ARRAY_DESC("maxB", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
927     float *maxB;
928     int maxB_len;
929     // M4_ARRAY_DESC("minB", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
930     float * minB;
931     int minB_len;
932     // M4_ARRAY_DESC("maxY", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
933     float * maxY;
934     int maxY_len;
935     // M4_ARRAY_DESC("minY", "f32", M4_SIZE(1,5), M4_RANGE(0,255), "0", M4_DIGIT(4), M4_DYNAMIC(1))
936     float *minY;
937     int minY_len;
938 } CalibDbV2_Awb_Limit_Range_V32_t;
939 
940 typedef enum CalibDbV2_Wb_Awb_EarlAct_mdoe_e {
941     CALIB_AWB_EARLACT_XYREG_AUTO = 0,
942     CALIB_AWB_EARLACT_XYREG_FIXED,
943 } CalibDbV2_Wb_Awb_EarlAct_mdoe_t;
944 
945 typedef struct CalibDbV2_Tcs_Range_Ill3_s {
946     // M4_ARRAY_DESC("normal", "s32", M4_SIZE(1,4), M4_RANGE(-8192,8192), "0", M4_DIGIT(0), M4_DYNAMIC(0))
947     int normal[4];
948     // M4_ARRAY_DESC("big", "s32", M4_SIZE(1,4), M4_RANGE(-8192,8192), "0", M4_DIGIT(0), M4_DYNAMIC(0))
949     int big[4];
950 } CalibDbV2_Tcs_Range_Ill3_t;
951 
952 typedef struct CalibDbV2_Wb_Awb_EarlAct_s {
953     // M4_BOOL_DESC("enable", "1");
954     bool enable;
955     // M4_ENUM_DESC("mode", "CalibDbV2_Wb_Awb_EarlAct_mdoe_t", "CALIB_AWB_EARLACT_XYREG_AUTO")
956     CalibDbV2_Wb_Awb_EarlAct_mdoe_t mode;
957     // M4_STRUCT_LIST_DESC("xyRegion", M4_SIZE(1,4), "normal_ui_style")
958     CalibDbV2_Tcs_Range_Ill3_t xyRegion[4];
959 } CalibDbV2_Wb_Awb_EarlAct_t;
960 
961 typedef struct CalibDbV2_Awb_Light_V32_s {
962     // M4_STRING_DESC("name", M4_SIZE(1,1), M4_RANGE(0, 32), "default", M4_DYNAMIC(0))
963     char* name;
964     // M4_ENUM_DESC("doorType", "CalibDbV2_Awb_DoorType_t", "CALIB_AWB_DOOR_TYPE_AMBIGUITY")
965     CalibDbV2_Awb_DoorType_t doorType;
966     // M4_ARRAY_DESC("standardGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "0", M4_DIGIT(4), M4_DYNAMIC(0))
967     float standardGainValue[4];
968     // M4_ARRAY_TABLE_DESC("uvRegion", "array_table_ui", M4_INDEX_DEFAULT)
969     CalibDbV2_Uv_Range_Ill_t uvRegion;
970     // M4_ARRAY_TABLE_DESC("xyRegion", "array_table_ui", M4_INDEX_DEFAULT)
971     CalibDbV2_Tcs_Range_Ill2_t xyRegion;
972     // M4_STRUCT_DESC("rtYuvRegion", "normal_ui_style")
973     CalibDbV2_Yuv3D_2_Range_Ill_t rtYuvRegion;
974     // M4_ARRAY_DESC("staWeight", "u8", M4_SIZE(1,16), M4_RANGE(0,100), "0", M4_DIGIT(0), M4_DYNAMIC(0))
975     unsigned char staWeight[CALD_AWB_LV_NUM_MAX];
976     // M4_ARRAY_DESC("dayGainLvThSet", "u8", M4_SIZE(1,2), M4_RANGE(0,255000), "0", M4_DIGIT(0), M4_DYNAMIC(0))
977     unsigned int dayGainLvThSet[2];
978     // M4_ARRAY_DESC("defaultDayGainLow", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
979     float defaultDayGainLow[4];  // spatial gain
980     // M4_ARRAY_DESC("defaultDayGainHigh", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
981     float defaultDayGainHigh[4];
982     // M4_ARRAY_TABLE_DESC("weight", "array_table_ui", M4_INDEX_DEFAULT)
983     CalibDbV2_ExtR_Wei_V32_t weight;
984 
985 } CalibDbV2_Awb_Light_V32_t;
986 
987 typedef struct CalibDbV2_Wb_Awb_Para_V32_t {
988     // M4_STRUCT_DESC("rawSelectPara", "normal_ui_style")
989     CalibDbV2_Awb_Raw_Select_t rawSelectPara;//hdrFrameChoose;
990     // M4_STRUCT_DESC("blc2ForAwb", "normal_ui_style")
991     CalibDbV2_Awb_Blc_t blc2ForAwb;
992     // M4_BOOL_DESC("lscBypass", "0");
993     bool                lscBypass;
994     // M4_BOOL_DESC("uvDetectionEnable", "0");
995     bool                uvDetectionEnable;
996     // M4_BOOL_DESC("xyDetectionEnable", "0");
997     bool                xyDetectionEnable;
998     // M4_BOOL_DESC("yuvDetectionEnable", "0");
999     bool                yuvDetectionEnable;
1000     // M4_BOOL_DESC("blkStatisticsEnable", "0");
1001     bool                blkStatisticsEnable;
1002     // M4_ENUM_DESC("downScaleMode", "CalibDbV2_Awb_Down_Scale_Mode_t", "CALIB_AWB_DS_8X8")
1003     CalibDbV2_Awb_Down_Scale_Mode_t       downScaleMode;
1004     // M4_ENUM_DESC("blkMeasureMode", "CalibDbV2_Awb_Blk_Stat_V21_t", "CALIB_AWB_BLK_STAT_MODE_WP_V201")
1005     CalibDbV2_Awb_Blk_Stat_V21_t      blkMeasureMode;
1006     // M4_STRUCT_DESC("mainWindow", "normal_ui_style")
1007     CalibDbV2_StatWindow_t mainWindow;
1008     // M4_ARRAY_TABLE_DESC("limitRange", "array_table_ui", M4_INDEX_DEFAULT)
1009     CalibDbV2_Awb_Limit_Range_V32_t limitRange;
1010     // M4_STRUCT_DESC("rgb2TcsPara", "normal_ui_style", M4_HIDE(1))
1011     CalibDbV2_Rgb2Tcs_t rgb2TcsPara;
1012     // M4_ARRAY_DESC("rgb2RotationYuvMat", "f32", M4_SIZE(4,4), M4_RANGE(-255,255), "0", M4_DIGIT(6), M4_DYNAMIC(0), M4_HIDE(1))
1013     float rgb2RotationYuvMat[16];
1014     //several winow in uv or xy domain
1015     // M4_STRUCT_LIST_DESC("extraWpRange", M4_SIZE(1,7), "normal_ui_style")
1016     CalibDbV2_ExtRange_V32_t extraWpRange[CALD_AWB_EXCRANGE_NUM_MAX];
1017     // M4_STRUCT_DESC("wpDiffLumaWeight", "normal_ui_style")
1018     CalibDbV2_Awb_Luma_Weight_t wpDiffLumaWeight;
1019     // M4_BOOL_DESC("wpDiffBlkWeiEnable", "0");
1020     bool           wpDiffBlkWeiEnable;
1021 #if ISP_HW_V32_LITE
1022     // M4_ARRAY_DESC("wpDiffBlkWeight", "u16", M4_SIZE(5,5), M4_RANGE(0,63), "0", M4_DIGIT(0), M4_DYNAMIC(0))
1023     unsigned short wpDiffBlkWeight[CALD_AWB_GRID_NUM_TOTAL_LITE];
1024 #else
1025     // M4_ARRAY_DESC("wpDiffBlkWeight", "u16", M4_SIZE(15,15), M4_RANGE(0,63), "0", M4_DIGIT(0), M4_DYNAMIC(0))
1026     unsigned short wpDiffBlkWeight[CALD_AWB_GRID_NUM_TOTAL];
1027 #endif
1028     // M4_STRUCT_LIST_DESC("lightSources", M4_SIZE(1,7), "normal_ui_style")
1029     CalibDbV2_Awb_Light_V32_t* lightSources;
1030     int lightSources_len;
1031     // M4_STRUCT_DESC("earlierAwbAct", "normal_ui_style")
1032     CalibDbV2_Wb_Awb_EarlAct_t earlierAwbAct;
1033 
1034 } CalibDbV2_Wb_Awb_Para_V32_t;
1035 
1036 
1037 
1038 
1039 typedef struct CalibDbV2_Wb_Para_V32_s {
1040     // M4_STRUCT_DESC("control", "normal_ui_style")
1041     CalibDbV2_Wb_Para_t control;
1042     // M4_STRUCT_DESC("manualPara", "normal_ui_style")
1043     CalibDbV2_Wb_Mwb_Para_t manualPara;
1044     // M4_STRUCT_DESC("autoPara", "normal_ui_style")
1045     CalibDbV2_Wb_Awb_Para_V32_t autoPara;
1046     // M4_STRUCT_DESC("autoExtPara", "normal_ui_style")
1047     CalibDbV2_Wb_Awb_Ext_Para_V32_t autoExtPara;
1048 } CalibDbV2_Wb_Para_V32_t;
1049 
1050 RKAIQ_END_DECLARE
1051 
1052 #endif
1053