xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/awb_uapi_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2021 Rockchip Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #ifndef __AWB_UAPI_HEAD_H__
19 #define __AWB_UAPI_HEAD_H__
20 
21 
22 #include "rk_aiq_user_api_common.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 typedef struct __uapi_wb_mode_t {
29   // M4_ENUM_DESC("mode", "opMode_t", "OP_AUTO");
30   opMode_t mode;
31 } uapi_wb_mode_t;
32 
33 typedef struct __uapi_wb_gain_t {
34   // M4_NUMBER_DESC("rgain", "f32", M4_RANGE(0,8), "0", M4_DIGIT(6))
35     float rgain;
36   // M4_NUMBER_DESC("grgain", "f32", M4_RANGE(0,8), "0", M4_DIGIT(6))
37     float grgain;
38   // M4_NUMBER_DESC("gbgain", "f32", M4_RANGE(0,8), "0", M4_DIGIT(6))
39     float gbgain;
40   // M4_NUMBER_DESC("bgain", "f32", M4_RANGE(0,8), "0", M4_DIGIT(6))
41     float bgain;
42 } uapi_wb_gain_t;
43 
44 
45 #define RK_TOOL_AWB_MAX_WHITEREGIONS_NUM 7
46 #define RK_TOOL_AWB_MAX_WHITEREGIONS_NUM_V32 4
47 #define RK_TOOL_AWB_MAX_WHITEREGIONS_NUM2 14
48 #define RK_TOOL_AWB_STAT_WP_RANGE_NUM_V201 4
49 #define RK_TOOL_AWB_WP_HIST_BIN_NUM 8
50 #define RK_TOOL_AWB_XY_TYPE_MAX_V201 2
51 #define RK_TOOL_AWB_GRID_NUM_TOTAL 225
52 #define RK_TOOL_AWB_CHANNEL_MAX 4
53 #define RK_TOOL_MAX_AWB_TIME_SHARE_FRAME_NUM 4
54 //typedef struct stat3a_lightType_s
55 typedef struct rk_tool_awb_stat_wp_res_v201_s {
56     // M4_NUMBER_DESC("WpNo", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
57     long long WpNo;
58     // M4_NUMBER_DESC("RgainValue", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
59     long long RgainValue;
60     // M4_NUMBER_DESC("BgainValue", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
61     long long BgainValue;
62 } rk_tool_awb_stat_wp_res_v201_t;
63 
64 typedef struct rk_tool_awb_stat_blk_res_v201_s {
65     // M4_NUMBER_DESC("WpNo", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
66     long long WpNo;
67     // M4_NUMBER_DESC("Rvalue", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
68     long long Rvalue;
69     // M4_NUMBER_DESC("Gvalue", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
70     long long Gvalue;
71     // M4_NUMBER_DESC("Bvalue", "u32", M4_RANGE(-9223372036854775808,9223372036854775807), "0", M4_DIGIT(0), M4_HIDE(0))
72     long long Bvalue;
73 } rk_tool_awb_stat_blk_res_v201_t;
74 
75 typedef struct rk_tool_awb_wp_res_light_v201_s {
76     // M4_STRUCT_LIST_DESC("xYType", M4_SIZE(1,2), "normal_ui_style")
77     rk_tool_awb_stat_wp_res_v201_t xYType[RK_TOOL_AWB_XY_TYPE_MAX_V201];
78 } rk_tool_awb_wp_res_light_v201_t;
79 
80 typedef struct rk_tool_awb_stat_res2_v201_s {
81     // M4_STRUCT_LIST_DESC("light", M4_SIZE(1,7), "normal_ui_style")
82     rk_tool_awb_wp_res_light_v201_t light[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM];
83     //method2
84     // M4_STRUCT_LIST_DESC("blockResult", M4_SIZE(1,225), "normal_ui_style")
85     rk_tool_awb_stat_blk_res_v201_t   blockResult[RK_TOOL_AWB_GRID_NUM_TOTAL];
86     // M4_ARRAY_DESC("WpNoHist", "u32", M4_SIZE(1,8), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
87     unsigned int WpNoHist[RK_TOOL_AWB_WP_HIST_BIN_NUM];
88 } rk_tool_awb_stat_res2_v201_t;
89 
90 
91 typedef struct rk_tool_awb_stat_res2_v30_s {
92     // M4_STRUCT_LIST_DESC("light", M4_SIZE(1,7), "normal_ui_style")
93     rk_tool_awb_wp_res_light_v201_t light[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM];
94     // M4_ARRAY_DESC("WpNo2", "s32", M4_SIZE(1,8), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
95     int WpNo2[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM];
96     // M4_STRUCT_LIST_DESC("blockResult", M4_SIZE(1,225), "normal_ui_style")
97     rk_tool_awb_stat_blk_res_v201_t   blockResult[RK_TOOL_AWB_GRID_NUM_TOTAL];
98     // M4_STRUCT_LIST_DESC("multiwindowLightResult", M4_SIZE(1,4), "normal_ui_style")
99     rk_tool_awb_wp_res_light_v201_t multiwindowLightResult[4];
100     // M4_STRUCT_LIST_DESC("excWpRangeResult", M4_SIZE(1,4), "normal_ui_style")
101     rk_tool_awb_stat_wp_res_v201_t excWpRangeResult[RK_TOOL_AWB_STAT_WP_RANGE_NUM_V201];
102     // M4_ARRAY_DESC("WpNoHist", "u32", M4_SIZE(1,8), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
103     unsigned int WpNoHist[RK_TOOL_AWB_WP_HIST_BIN_NUM];
104 } rk_tool_awb_stat_res2_v30_t;
105 
106 typedef struct rk_tool_isp_awb_stats_v32_s {
107     // M4_STRUCT_LIST_DESC("light", M4_SIZE(1,4), "normal_ui_style")
108     rk_tool_awb_wp_res_light_v201_t light[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM_V32];
109     // M4_ARRAY_DESC("WpNo2", "s32", M4_SIZE(1,8), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
110     int WpNo2[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM_V32];
111     // M4_STRUCT_LIST_DESC("blockResult", M4_SIZE(1,225), "normal_ui_style")
112     rk_tool_awb_stat_blk_res_v201_t   blockResult[RK_TOOL_AWB_GRID_NUM_TOTAL];
113     // M4_STRUCT_LIST_DESC("multiwindowLightResult", M4_SIZE(1,4), "normal_ui_style")
114     rk_tool_awb_stat_wp_res_v201_t excWpRangeResult[RK_TOOL_AWB_STAT_WP_RANGE_NUM_V201];
115     // M4_ARRAY_DESC("WpNoHist", "u32", M4_SIZE(1,8), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
116     unsigned int WpNoHist[RK_TOOL_AWB_WP_HIST_BIN_NUM];
117 } rk_tool_isp_awb_stats_v32_t;
118 
119 
120 typedef struct rk_tool_awb_measure_wp_res_fl_s {
121     // M4_ARRAY_DESC("WpNo", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
122     unsigned int WpNo;
123     // M4_ARRAY_DESC("gain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
124     float gain[RK_TOOL_AWB_CHANNEL_MAX];//mean rgain  value
125     // M4_ARRAY_DESC("WpNoHist_2", "s32", M4_SIZE(1,8), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
126     int WpNoHist_2[RK_TOOL_AWB_WP_HIST_BIN_NUM]; //uselsess
127 } rk_tool_awb_measure_wp_res_fl_t;
128 
129 typedef struct rk_tool_awb_blk_res2_fl_s {
130     // M4_ARRAY_DESC("WpNo", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
131     unsigned int WpNo;
132     // M4_ARRAY_DESC("gain", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
133     float gain[RK_TOOL_AWB_CHANNEL_MAX];//mean rgain  value
134 } rk_tool_awb_blk_res2_fl_t;
135 
136 typedef struct rk_tool_awb_wp_res_light_fl_s {
137     // M4_STRUCT_LIST_DESC("xYType", M4_SIZE(1,2), "normal_ui_style")
138     rk_tool_awb_measure_wp_res_fl_t xYType[RK_TOOL_AWB_XY_TYPE_MAX_V201];
139 } rk_tool_awb_wp_res_light_fl_t;
140 
141 typedef struct rk_tool_awb_blk_res_fl_s {
142     // M4_ARRAY_DESC("R", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
143     float R;//mean r value and normalize to 0~1
144     // M4_ARRAY_DESC("G", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
145     float G;
146     // M4_ARRAY_DESC("B", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
147     float B;
148 } rk_tool_awb_blk_res_fl_t;
149 
150 typedef struct rk_tool_awb_effect_para1_s{
151     // M4_ARRAY_DESC("hdrFrameChoose", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
152     int hdrFrameChoose;
153 }rk_tool_awb_effect_para1_t;
154 
155 typedef struct rk_tool_awb_stat_res_full_s {
156     // M4_ARRAY_DESC("lightNum", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
157     int lightNum;
158     // M4_STRUCT_LIST_DESC("light", M4_SIZE(1,14), "normal_ui_style")
159     rk_tool_awb_wp_res_light_fl_t light[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM2];
160     // M4_BOOL_DESC("lightWpResVaLidIll", "0")
161     bool                          lightWpResVaLidIll[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM2];//for time share
162     // M4_BOOL_DESC("lightWpResVaLid", "0")
163     bool                          lightWpResVaLid;//for time share
164     // M4_ARRAY_DESC("WpNo", "s32", M4_SIZE(1,2), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
165     int WpNo[RK_TOOL_AWB_XY_TYPE_MAX_V201];//for diff xy type
166     // M4_ARRAY_DESC("WpNo2", "s32", M4_SIZE(1,14), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
167     int WpNo2[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM2];//for diff illu
168     // M4_BOOL_DESC("blkGwResValid", "0")
169     bool                    blkGwResValid;
170     // M4_BOOL_DESC("blkSgcResVaLid", "0")
171     bool                    blkSgcResVaLid;
172     // M4_STRUCT_LIST_DESC("blkSgcResult", M4_SIZE(1,225), "normal_ui_style")
173     rk_tool_awb_blk_res_fl_t blkSgcResult[RK_TOOL_AWB_GRID_NUM_TOTAL];
174     // M4_BOOL_DESC("blkWpResVaLid", "0")
175     bool                     blkWpResVaLid;
176     // M4_STRUCT_LIST_DESC("blkWpResult", M4_SIZE(1,225), "normal_ui_style")
177     rk_tool_awb_blk_res2_fl_t blkWpResult[RK_TOOL_AWB_GRID_NUM_TOTAL];
178     // M4_BOOL_DESC("excWpResValid", "0")
179     bool excWpResValid;
180     // M4_STRUCT_LIST_DESC("excWpRangeResult", M4_SIZE(1,4), "normal_ui_style")
181     rk_tool_awb_measure_wp_res_fl_t excWpRangeResult[RK_TOOL_AWB_STAT_WP_RANGE_NUM_V201];
182     // M4_STRUCT_DESC("extraLightResult", "normal_ui_style")
183     rk_tool_awb_measure_wp_res_fl_t extraLightResult;
184     // M4_ARRAY_DESC("WpNoHist", "u32", M4_SIZE(1,8), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
185     unsigned int WpNoHist[RK_TOOL_AWB_WP_HIST_BIN_NUM];
186     // M4_STRUCT_DESC("effectHwPara", "normal_ui_style")
187     rk_tool_awb_effect_para1_t effectHwPara;
188 } rk_tool_awb_stat_res_full_t;
189 
190 typedef struct rk_tool_awb_smart_run_res_s{
191     // M4_BOOL_DESC("blc1Stable", "0")
192     bool blc1Stable;
193     // M4_BOOL_DESC("lvStable", "0")
194     bool lvStable;
195     // M4_BOOL_DESC("wbgainStable", "0")
196     bool wbgainStable;
197     // M4_BOOL_DESC("wpDiffweiStable", "0")
198     bool wpDiffweiStable;
199     // M4_NUMBER_DESC("statisticsStable", "u8", M4_RANGE(0,255), "0", M4_DIGIT(0))
200     unsigned char statisticsStable;
201     // M4_BOOL_DESC("forceRunAwbFlag", "0")
202     bool forceRunAwbFlag;//update by api or prepare;
203     // M4_BOOL_DESC("samrtRunAwbFlag2", "0")
204     bool samrtRunAwbFlag2;//update by above paras
205     // M4_ARRAY_DESC("wbgainMean", "f32", M4_SIZE(4,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
206     float wbgainMean[RK_TOOL_MAX_AWB_TIME_SHARE_FRAME_NUM][RK_TOOL_AWB_CHANNEL_MAX];
207     // M4_BOOL_DESC("algMethodStable", "0")
208     bool algMethodStable;
209 }rk_tool_awb_smart_run_res_t;
210 
211 typedef struct rk_tool_awb_illInf_s {
212     // M4_STRING_DESC("illName", M4_SIZE(1,100), M4_RANGE(-128, 127), "default", M4_DYNAMIC(0))
213     char illName[100];
214     // M4_ARRAY_DESC("gainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
215     float gainValue[4];
216     // M4_ARRAY_DESC("prob_total", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
217     float prob_total;
218     // M4_ARRAY_DESC("prob_dis", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
219     float prob_dis;
220     // M4_ARRAY_DESC("prob_LV", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
221     float prob_LV;
222     // M4_ARRAY_DESC("weight", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
223     float weight;
224     // M4_ARRAY_DESC("spatialGainValue", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
225     float spatialGainValue[RK_TOOL_AWB_CHANNEL_MAX];
226     // M4_ARRAY_DESC("prob_WPNO", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
227     float prob_WPNO;
228     // M4_ARRAY_DESC("staWeight", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
229     float staWeight;
230     // M4_ARRAY_DESC("xyType2Weight", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
231     float xyType2Weight;
232 } rk_tool_awb_illInf_t;
233 
234 typedef struct rk_tool_color_tempture_info_s {
235     // M4_BOOL_DESC("valid", "0")
236     bool valid;
237     // M4_NUMBER_DESC("CCT", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0))
238     float CCT;
239     // M4_NUMBER_DESC("CCRI", "f32", M4_RANGE(-2,2), "0", M4_DIGIT(3))
240     float CCRI;
241 } rk_tool_color_tempture_info_t;
242 
243 typedef struct rk_tool_awb_strategy_result_s {
244     // M4_BOOL_DESC("awbConverged", "0")
245     bool awbConverged;
246     // M4_STRUCT_DESC("cctGloabl", "normal_ui_style")
247     rk_tool_color_tempture_info_t cctGloabl;
248     // M4_ARRAY_DESC("lightNum", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
249     int lightNum;
250     // M4_STRUCT_DESC("smartAwbRunRes", "normal_ui_style")
251     rk_tool_awb_smart_run_res_t smartAwbRunRes;
252     // M4_ARRAY_DESC("count", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
253     unsigned int count;
254     // M4_ARRAY_DESC("runInterval", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
255     uint32_t runInterval;
256     // M4_NUMBER_DESC("tolerance", "f32", M4_RANGE(0,10000), "5000", M4_DIGIT(0))
257     float tolerance;
258     // M4_ARRAY_DESC("dsRateWt", "u8", M4_SIZE(1,1), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0))
259     uint8_t dsRateWh; //downsample 8x8->Pixel(R,G,B)
260     // M4_ARRAY_DESC("dsRateHt", "u8", M4_SIZE(1,1), M4_RANGE(0,255), "0", M4_DIGIT(0), M4_DYNAMIC(0))
261     uint8_t dsRateHt; //downsample 8x8->Pixel(R,G,B)
262     // M4_ARRAY_DESC("width_ds", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
263     uint32_t width_ds;
264     // M4_ARRAY_DESC("height_ds", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
265     uint32_t height_ds;
266     // M4_ARRAY_DESC("WPmode", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
267     int WPmode;
268     // M4_ARRAY_DESC("WPTotalNUM", "u32", M4_SIZE(1,1), M4_RANGE(0,4294967295), "0", M4_DIGIT(0), M4_DYNAMIC(0))
269     uint32_t WPTotalNUM;
270     // M4_ARRAY_DESC("WPType", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
271     int WPType;
272     // M4_ARRAY_DESC("LVType", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
273     int LVType;
274     // M4_ARRAY_DESC("LVValue", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
275     int LVValue;// 8bit/1x/1s
276     // M4_NUMBER_DESC("fLVValue", "f32", M4_RANGE(0,255000), "5000", M4_DIGIT(0))
277     float fLVValue;
278     // M4_ARRAY_DESC("LVLevel", "s32", M4_SIZE(1,1), M4_RANGE(-2147483648,2147483647), "0", M4_DIGIT(0), M4_DYNAMIC(0))
279     int LVLevel;
280     // M4_STRUCT_LIST_DESC("illInf", M4_SIZE(1,14), "normal_ui_style")
281     rk_tool_awb_illInf_t illInf[RK_TOOL_AWB_MAX_WHITEREGIONS_NUM2];//information and measure result in different illuminations
282     // M4_ARRAY_DESC("wbGainTepTp3", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
283     float wbGainTepTp3[RK_TOOL_AWB_CHANNEL_MAX];
284     // M4_ARRAY_DESC("wbWeiTepTp3", "f32", M4_SIZE(1,1), M4_RANGE(0,100), "1", M4_DIGIT(4), M4_DYNAMIC(0))
285     float wbWeiTepTp3;//temporal mix statistics
286     // M4_ARRAY_DESC("xy_area_type", "u8", M4_SIZE(1,1), M4_RANGE(0,255), "1", M4_DIGIT(4), M4_DYNAMIC(0))
287     uint8_t xy_area_type; //enalbe type
288     // M4_BOOL_DESC("spaGainEqu2Tem", "0")
289     bool spaGainEqu2Tem;
290     // M4_BOOL_DESC("sgcGainEqu2Tem", "0")
291     bool sgcGainEqu2Tem;
292     // M4_ARRAY_DESC("wbGainType3", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
293     float wbGainType3[RK_TOOL_AWB_CHANNEL_MAX];
294     // M4_ARRAY_DESC("wbGainType1", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
295     float  wbGainType1[RK_TOOL_AWB_CHANNEL_MAX];
296     // M4_ARRAY_DESC("wbWeightType3", "f32", M4_SIZE(1,1), M4_RANGE(0,100), "1", M4_DIGIT(4), M4_DYNAMIC(0))
297     float wbWeightType3;
298     // M4_ARRAY_DESC("wbGainTep", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
299     float  wbGainTep[RK_TOOL_AWB_CHANNEL_MAX];//night gain
300     // M4_ARRAY_DESC("wbGainSgc", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
301     float wbGainSgc[RK_TOOL_AWB_CHANNEL_MAX];
302     // M4_ARRAY_DESC("wbWeightSgc", "f32", M4_SIZE(1,1), M4_RANGE(0,100), "1", M4_DIGIT(4), M4_DYNAMIC(0))
303     float wbWeightSgc;
304     // M4_ARRAY_DESC("wbGainSpa", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
305     float  wbGainSpa[RK_TOOL_AWB_CHANNEL_MAX];//day gain
306     // M4_ARRAY_DESC("wbWeightSpa", "f32", M4_SIZE(1,1), M4_RANGE(0,100), "1", M4_DIGIT(4), M4_DYNAMIC(0))
307     float wbWeightSpa;
308     // M4_ARRAY_DESC("varianceLuma", "f32", M4_SIZE(1,1), M4_RANGE(0,2147483647), "1", M4_DIGIT(4), M4_DYNAMIC(0))
309     float varianceLuma;
310     // M4_ARRAY_DESC("wbGainDampFactor", "f32", M4_SIZE(1,1), M4_RANGE(0,1), "1", M4_DIGIT(4), M4_DYNAMIC(0))
311     float wbGainDampFactor;
312     // M4_BOOL_DESC("clipEnalbe", "0")
313     bool clipEnalbe;
314     // M4_BOOL_DESC("updateFlag", "0")
315     bool updateFlag;
316     // M4_ARRAY_DESC("wbGainIntpStrategy", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
317     float wbGainIntpStrategy[RK_TOOL_AWB_CHANNEL_MAX];//gain by interpartition strategy
318     // M4_ARRAY_DESC("wbGainClip", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
319     float wbGainClip[RK_TOOL_AWB_CHANNEL_MAX];//gain by clip
320     // M4_ARRAY_DESC("wbGainCaga", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
321     float wbGainCaga[RK_TOOL_AWB_CHANNEL_MAX];//gain by  chromatic adatptation gain adjust
322     // M4_ARRAY_DESC("wbGainAdjustIn", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
323     float wbGainAdjustIn[RK_TOOL_AWB_CHANNEL_MAX];//gain by color temperature shift
324     // M4_ARRAY_DESC("wbGainAdjustOut", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
325     float wbGainAdjust[RK_TOOL_AWB_CHANNEL_MAX];//gain by color temperature shift
326     // M4_STRUCT_DESC("cctAdjustIn", "normal_ui_style")
327     rk_tool_color_tempture_info_t cctAdjustIn;
328     // M4_STRUCT_DESC("cctAdjustOut", "normal_ui_style")
329     rk_tool_color_tempture_info_t cctAdjustOut;
330     // M4_ARRAY_DESC("wbGainOffset", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
331     float wbGainOffset[RK_TOOL_AWB_CHANNEL_MAX];//gain by gain shift
332     // M4_ARRAY_DESC("wbGainSmooth", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
333     float wbGainSmooth[RK_TOOL_AWB_CHANNEL_MAX];//gain by smooth factor
334     // M4_ARRAY_DESC("stat3aAwbLastGainOut", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
335     float  stat3aAwbLastGainOut[RK_TOOL_AWB_CHANNEL_MAX];//final gain of last frame
336     // M4_ARRAY_DESC("stat3aAwbGainOut", "f32", M4_SIZE(1,4), M4_RANGE(0,8), "1", M4_DIGIT(4), M4_DYNAMIC(0))
337     float  stat3aAwbGainOut[RK_TOOL_AWB_CHANNEL_MAX];// final gain
338     // M4_ARRAY_DESC("algMethod", "s32", M4_SIZE(1,1), M4_RANGE(0,100), "1", M4_DIGIT(0), M4_DYNAMIC(0))
339     int  algMethod;
340 } rk_tool_awb_strategy_result_t;
341 
342 typedef struct __uapi_wbV21_log_info_t {
343     // M4_STRUCT_DESC("awb_stat", "normal_ui_style")
344     rk_tool_awb_stat_res2_v201_t awb_stat;
345     // M4_STRUCT_DESC("awb_stat_algo", "normal_ui_style")
346     rk_tool_awb_stat_res_full_t awb_stat_algo;
347     // M4_STRUCT_DESC("awb_strategy_result", "normal_ui_style")
348     rk_tool_awb_strategy_result_t awb_strategy_result;
349 } uapi_wbV21_log_info_t;
350 
351 typedef struct __uapi_wbV21_log_t {
352     // M4_STRUCT_DESC("uapi_wb_log_info_t", "normal_ui_style")
353     uapi_wbV21_log_info_t info;
354 } uapi_wbV21_log_t;
355 
356 typedef struct __uapi_wbV30_log_info_t {
357     // M4_STRUCT_DESC("awb_stat", "normal_ui_style")
358     rk_tool_awb_stat_res2_v30_t awb_stat;
359     // M4_STRUCT_DESC("awb_stat_algo", "normal_ui_style")
360     rk_tool_awb_stat_res_full_t awb_stat_algo;
361     // M4_STRUCT_DESC("awb_strategy_result", "normal_ui_style")
362     rk_tool_awb_strategy_result_t awb_strategy_result;
363 } uapi_wbV30_log_info_t;
364 
365 typedef struct __uapi_wbV30_log_t {
366     // M4_STRUCT_DESC("uapi_wb_log_info_t", "normal_ui_style")
367     uapi_wbV30_log_info_t info;
368 } uapi_wbV30_log_t;
369 
370 typedef struct __uapi_wbV32_log_info_t {
371     // M4_STRUCT_DESC("awb_stat", "normal_ui_style")
372     rk_tool_isp_awb_stats_v32_t awb_stat;
373     // M4_STRUCT_DESC("awb_stat_algo", "normal_ui_style")
374     rk_tool_awb_stat_res_full_t awb_stat_algo;
375     // M4_STRUCT_DESC("awb_strategy_result", "normal_ui_style")
376     rk_tool_awb_strategy_result_t awb_strategy_result;
377 } uapi_wbV32_log_info_t;
378 
379 typedef struct __uapi_wbV32_log_t {
380     // M4_STRUCT_DESC("uapi_wb_log_info_t", "normal_ui_style")
381     uapi_wbV32_log_info_t info;
382 } uapi_wbV32_log_t;
383 
384 
385 
386 #ifdef __cplusplus
387 }
388 #endif
389 
390 
391 #endif  /*__AWB_UAPI_HEAD_H__*/
392