xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/iq_parser_v2/adehaze_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * adehaze_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_ADEHAZE_HEAD_H__
21 #define __CALIBDBV2_ADEHAZE_HEAD_H__
22 
23 #include "rk_aiq_comm.h"
24 
25 RKAIQ_BEGIN_DECLARE
26 
27 #define DHAZ_ENHANCE_CURVE_KNOTS_NUM 17
28 #define DHAZ_V11_SIGMA_IDX_NUM       15
29 #define DHAZ_V11_SIGMA_LUT_NUM       17
30 #define DHAZ_CTRL_DATA_STEP_MAX      13
31 #define DHAZ_V12_HIST_WR_CURVE_NUM   17
32 
33 // dehaze v10
34 typedef enum CtrlDataType_e {
35     CTRLDATATYPE_ENVLV   = 0,
36     CTRLDATATYPE_ISO     = 1,
37 } CtrlDataType_t;
38 
39 typedef struct DehazeData_s {
40     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,100), M4_RANGE(0,10000000), "50",M4_DIGIT(4), M4_DYNAMIC(1))
41     float* CtrlData;
42     int CtrlData_len;
43     // M4_ARRAY_DESC("dc_min_th", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "64",M4_DIGIT(4), M4_DYNAMIC(1))
44     float* dc_min_th;
45     int dc_min_th_len;
46     // M4_ARRAY_DESC("dc_max_th", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "192",M4_DIGIT(4), M4_DYNAMIC(1))
47     float* dc_max_th;
48     int dc_max_th_len;
49     // M4_ARRAY_DESC("yhist_th", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "249",M4_DIGIT(4), M4_DYNAMIC(1))
50     float* yhist_th;
51     int yhist_th_len;
52     // M4_ARRAY_DESC("yblk_th", "f32", M4_SIZE(1,100), M4_RANGE(0,512), "0.002",M4_DIGIT(4), M4_DYNAMIC(1))
53     float* yblk_th;
54     int yblk_th_len;
55     // M4_ARRAY_DESC("dark_th", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "250",M4_DIGIT(4), M4_DYNAMIC(1))
56     float* dark_th;
57     int dark_th_len;
58     // M4_ARRAY_DESC("bright_min", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "180",M4_DIGIT(4), M4_DYNAMIC(1))
59     float* bright_min;
60     int bright_min_len;
61     // M4_ARRAY_DESC("bright_max", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "240",M4_DIGIT(4), M4_DYNAMIC(1))
62     float* bright_max;
63     int bright_max_len;
64     // M4_ARRAY_DESC("wt_max", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.9",M4_DIGIT(4), M4_DYNAMIC(1))
65     float* wt_max;
66     int wt_max_len;
67     // M4_ARRAY_DESC("air_min", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "200",M4_DIGIT(4), M4_DYNAMIC(1))
68     float* air_min;
69     int air_min_len;
70     // M4_ARRAY_DESC("air_max", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "250",M4_DIGIT(4), M4_DYNAMIC(1))
71     float* air_max;
72     int air_max_len;
73     // M4_ARRAY_DESC("tmax_base", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "125",M4_DIGIT(4), M4_DYNAMIC(1))
74     float* tmax_base;
75     int tmax_base_len;
76     // M4_ARRAY_DESC("tmax_off", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.1",M4_DIGIT(4), M4_DYNAMIC(1))
77     float* tmax_off;
78     int tmax_off_len;
79     // M4_ARRAY_DESC("tmax_max", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.8",M4_DIGIT(4), M4_DYNAMIC(1))
80     float* tmax_max;
81     int tmax_max_len;
82     // M4_ARRAY_DESC("cfg_wt", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.8",M4_DIGIT(4), M4_DYNAMIC(1))
83     float* cfg_wt;
84     int cfg_wt_len;
85     // M4_ARRAY_DESC("cfg_air", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "210",M4_DIGIT(4), M4_DYNAMIC(1))
86     float* cfg_air;
87     int cfg_air_len;
88     // M4_ARRAY_DESC("cfg_tmax", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.2",M4_DIGIT(4), M4_DYNAMIC(1))
89     float* cfg_tmax;
90     int cfg_tmax_len;
91     // M4_ARRAY_DESC("dc_thed", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "2",M4_DIGIT(4), M4_DYNAMIC(1))
92     float* dc_thed;
93     int dc_thed_len;
94     // M4_ARRAY_DESC("dc_weitcur", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "1",M4_DIGIT(4), M4_DYNAMIC(1))
95     float* dc_weitcur;
96     int dc_weitcur_len;
97     // M4_ARRAY_DESC("air_thed", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "2",M4_DIGIT(4), M4_DYNAMIC(1))
98     float* air_thed;
99     int air_thed_len;
100     // M4_ARRAY_DESC("air_weitcur", "f32", M4_SIZE(1,100), M4_RANGE(0,1), "0.14",M4_DIGIT(4), M4_DYNAMIC(1))
101     float* air_weitcur;
102     int air_weitcur_len;
103 } DehazeData_t;
104 
105 typedef struct Dehaze_Setting_V10_s {
106     // M4_BOOL_DESC("en", "1")
107     bool en;
108     // M4_NUMBER_DESC("stab_fnum", "f32", M4_RANGE(0,31), "8", M4_DIGIT(0))
109     float stab_fnum;
110     // M4_NUMBER_DESC("sigma", "f32", M4_RANGE(1,255), "255", M4_DIGIT(0))
111     float sigma;
112     // M4_NUMBER_DESC("wt_sigma", "f32", M4_RANGE(0,256), "8.0", M4_DIGIT(4))
113     float wt_sigma;
114     // M4_NUMBER_DESC("air_sigma", "f32", M4_RANGE(4,1024), "120.0", M4_DIGIT(4))
115     float air_sigma;
116     // M4_NUMBER_DESC("tmax_sigma", "f32", M4_RANGE(0.0004,1), "0.0100", M4_DIGIT(4))
117     float tmax_sigma;
118     // M4_ARRAY_TABLE_DESC("DehazeData", "array_table_ui", "none")
119     DehazeData_t DehazeData;
120 } Dehaze_Setting_V10_t;
121 
122 typedef struct EnhanceData_s {
123     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,100), M4_RANGE(0,10000000), "50",M4_DIGIT(4), M4_DYNAMIC(1))
124     float* CtrlData;
125     int CtrlData_len;
126     // M4_ARRAY_DESC("enhance_value", "f32", M4_SIZE(1,100), M4_RANGE(1,16), "1",M4_DIGIT(4), M4_DYNAMIC(1))
127     float* enhance_value;
128     int enhance_value_len;
129 } EnhanceData_t;
130 
131 typedef struct Enhance_Setting_V10_s {
132     // M4_BOOL_DESC("en", "1")
133     bool en;
134     // M4_ARRAY_TABLE_DESC("EnhanceData", "array_table_ui", "none")
135     EnhanceData_t EnhanceData;
136 } Enhance_Setting_V10_t;
137 
138 typedef struct HistData_s {
139     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,100), M4_RANGE(0,10000000), "50",M4_DIGIT(4), M4_DYNAMIC(1))
140     float* CtrlData;
141     int CtrlData_len;
142     // M4_ARRAY_DESC("hist_gratio", "f32", M4_SIZE(1,100), M4_RANGE(0,32), "2",M4_DIGIT(4), M4_DYNAMIC(1))
143     float* hist_gratio;
144     int hist_gratio_len;
145     // M4_ARRAY_DESC("hist_th_off", "f32", M4_SIZE(1,100), M4_RANGE(0,255), "64",M4_DIGIT(4), M4_DYNAMIC(1))
146     float* hist_th_off;
147     int hist_th_off_len;
148     // M4_ARRAY_DESC("hist_k", "f32", M4_SIZE(1,100), M4_RANGE(0,8), "2",M4_DIGIT(4), M4_DYNAMIC(1))
149     float* hist_k;
150     int hist_k_len;
151     // M4_ARRAY_DESC("hist_min", "f32", M4_SIZE(1,100), M4_RANGE(0,2), "0.016",M4_DIGIT(4), M4_DYNAMIC(1))
152     float* hist_min;
153     int hist_min_len;
154     // M4_ARRAY_DESC("hist_scale", "f32", M4_SIZE(1,100), M4_RANGE(0,32), "0.09",M4_DIGIT(4), M4_DYNAMIC(1))
155     float* hist_scale;
156     int hist_scale_len;
157     // M4_ARRAY_DESC("cfg_gratio", "f32", M4_SIZE(1,100), M4_RANGE(0,32), "2",M4_DIGIT(4), M4_DYNAMIC(1))
158     float* cfg_gratio;
159     int cfg_gratio_len;
160 } HistData_t;
161 
162 typedef struct Hist_setting_V10_s {
163     // M4_BOOL_DESC("en", "1")
164     bool en;
165     // M4_BOOL_DESC("hist_para_en", "1")
166     bool  hist_para_en;
167     // M4_BOOL_DESC("hist_channel", "1")
168     bool  hist_channel;
169     // M4_ARRAY_TABLE_DESC("HistData", "array_table_ui","none")
170     HistData_t HistData;
171 } Hist_setting_V10_t;
172 
173 typedef struct CalibDbDehazeV10_s {
174     // M4_BOOL_DESC("Enable", "1")
175     bool Enable;
176     // M4_ENUM_DESC("CtrlDataType", "CtrlDataType_t", "CTRLDATATYPE_ENVLV")
177     CtrlDataType_t CtrlDataType;
178     // M4_NUMBER_DESC("cfg_alpha", "f32", M4_RANGE(0,1), "1", M4_DIGIT(4))
179     float cfg_alpha;
180     // M4_NUMBER_DESC("ByPassThr", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4))
181     float ByPassThr;
182     // M4_STRUCT_DESC("dehaze_setting", "normal_ui_style")
183     Dehaze_Setting_V10_t dehaze_setting;
184     // M4_STRUCT_DESC("enhance_setting", "normal_ui_style")
185     Enhance_Setting_V10_t enhance_setting;
186     // M4_STRUCT_DESC("hist_setting", "normal_ui_style")
187     Hist_setting_V10_t hist_setting;
188 } CalibDbDehazeV10_t;
189 
190 typedef struct CalibDbV2_dehaze_v10_s {
191     // M4_STRUCT_DESC("DehazeTuningPara", "normal_ui_style")
192     CalibDbDehazeV10_t DehazeTuningPara;
193 } CalibDbV2_dehaze_v10_t;
194 
195 // dehaze v11
196 typedef struct DehazeDataV11_s {
197     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,13), M4_RANGE(0,10000000), "[0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
198     float CtrlData[DHAZ_CTRL_DATA_STEP_MAX];
199     // M4_ARRAY_DESC("dc_min_th", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
200     float dc_min_th[DHAZ_CTRL_DATA_STEP_MAX];
201     // M4_ARRAY_DESC("dc_max_th", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
202     float dc_max_th[DHAZ_CTRL_DATA_STEP_MAX];
203     // M4_ARRAY_DESC("yhist_th", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
204     float yhist_th[DHAZ_CTRL_DATA_STEP_MAX];
205     // M4_ARRAY_DESC("yblk_th", "f32", M4_SIZE(1,13), M4_RANGE(0,512), "[0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
206     float yblk_th[DHAZ_CTRL_DATA_STEP_MAX];
207     // M4_ARRAY_DESC("dark_th", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[250, 250, 250, 250, 250, 250, 250, 250, 250 250, 250, 250, 250]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
208     float dark_th[DHAZ_CTRL_DATA_STEP_MAX];
209     // M4_ARRAY_DESC("bright_min", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
210     float bright_min[DHAZ_CTRL_DATA_STEP_MAX];
211     // M4_ARRAY_DESC("bright_max", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
212     float bright_max[DHAZ_CTRL_DATA_STEP_MAX];
213     // M4_ARRAY_DESC("wt_max", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
214     float wt_max[DHAZ_CTRL_DATA_STEP_MAX];
215     // M4_ARRAY_DESC("air_min", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
216     float air_min[DHAZ_CTRL_DATA_STEP_MAX];
217     // M4_ARRAY_DESC("air_max", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
218     float air_max[DHAZ_CTRL_DATA_STEP_MAX];
219     // M4_ARRAY_DESC("tmax_base", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
220     float tmax_base[DHAZ_CTRL_DATA_STEP_MAX];
221     // M4_ARRAY_DESC("tmax_off", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
222     float tmax_off[DHAZ_CTRL_DATA_STEP_MAX];
223     // M4_ARRAY_DESC("tmax_max", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
224     float tmax_max[DHAZ_CTRL_DATA_STEP_MAX];
225     // M4_ARRAY_DESC("cfg_wt", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
226     float cfg_wt[DHAZ_CTRL_DATA_STEP_MAX];
227     // M4_ARRAY_DESC("cfg_air", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
228     float cfg_air[DHAZ_CTRL_DATA_STEP_MAX];
229     // M4_ARRAY_DESC("cfg_tmax", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
230     float cfg_tmax[DHAZ_CTRL_DATA_STEP_MAX];
231     // M4_ARRAY_DESC("dc_weitcur", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
232     float dc_weitcur[DHAZ_CTRL_DATA_STEP_MAX];
233     // M4_ARRAY_DESC("bf_weight", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
234     float bf_weight[DHAZ_CTRL_DATA_STEP_MAX];
235     // M4_ARRAY_DESC("range_sigma", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
236     float range_sigma[DHAZ_CTRL_DATA_STEP_MAX];
237     // M4_ARRAY_DESC("space_sigma_pre", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
238     float space_sigma_pre[DHAZ_CTRL_DATA_STEP_MAX];
239     // M4_ARRAY_DESC("space_sigma_cur", "f32", M4_SIZE(1,13), M4_RANGE(0,1), "[0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
240     float space_sigma_cur[DHAZ_CTRL_DATA_STEP_MAX];
241 } DehazeDataV11_t;
242 
243 typedef struct Dehaze_Setting_V11_s {
244     // M4_BOOL_DESC("en", "1")
245     bool en;
246     // M4_BOOL_DESC("air_lc_en", "1")
247     bool air_lc_en;
248     // M4_NUMBER_DESC("stab_fnum", "f32", M4_RANGE(0,31), "8.0", M4_DIGIT(0))
249     float stab_fnum;
250     // M4_NUMBER_DESC("sigma", "f32", M4_RANGE(1,255), "6.0", M4_DIGIT(0))
251     float sigma;
252     // M4_NUMBER_DESC("wt_sigma", "f32", M4_RANGE(0,256), "8.0", M4_DIGIT(4))
253     float wt_sigma;
254     // M4_NUMBER_DESC("air_sigma", "f32", M4_RANGE(4,1024), "120.0", M4_DIGIT(4))
255     float air_sigma;
256     // M4_NUMBER_DESC("tmax_sigma", "f32", M4_RANGE(0.0004,1), "0.0100", M4_DIGIT(4))
257     float tmax_sigma;
258     // M4_NUMBER_DESC("pre_wet", "f32", M4_RANGE(0,16), "8", M4_DIGIT(0))
259     float pre_wet;
260     // M4_ARRAY_TABLE_DESC("DehazeData", "array_table_ui", "none")
261     DehazeDataV11_t DehazeData;
262 } Dehaze_Setting_V11_t;
263 
264 typedef struct EnhanceDataV11_s {
265     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,13), M4_RANGE(0,10000000), "[0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
266     float CtrlData[DHAZ_CTRL_DATA_STEP_MAX];
267     // M4_ARRAY_DESC("enhance_value", "f32", M4_SIZE(1,13), M4_RANGE(1,16), "[1,1,1,1,1,1,1,1,1,1,1,1,1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
268     float enhance_value[DHAZ_CTRL_DATA_STEP_MAX];
269     // M4_ARRAY_DESC("enhance_chroma", "f32", M4_SIZE(1,13), M4_RANGE(1,16), "[1,1,1,1,1,1,1,1,1,1,1,1,1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
270     float enhance_chroma[DHAZ_CTRL_DATA_STEP_MAX];
271 } EnhanceDataV11_t;
272 
273 typedef struct Enhance_Setting_V11_s {
274     // M4_BOOL_DESC("en", "1")
275     bool en;
276     // M4_ARRAY_DESC("enhance_curve", "f32", M4_SIZE(1,17),  M4_RANGE(0, 1024), "[0,64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1023]", M4_DIGIT(0), M4_DYNAMIC(0))
277     float enhance_curve[DHAZ_ENHANCE_CURVE_KNOTS_NUM];
278     // M4_ARRAY_TABLE_DESC("EnhanceData", "array_table_ui", "none")
279     EnhanceDataV11_t EnhanceData;
280 } Enhance_Setting_V11_t;
281 
282 typedef struct HistDataV11_s {
283     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,13), M4_RANGE(0,10000000), "[0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
284     float CtrlData[DHAZ_CTRL_DATA_STEP_MAX];
285     // M4_ARRAY_DESC("hist_gratio", "f32", M4_SIZE(1,13), M4_RANGE(0,32), "[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
286     float hist_gratio[DHAZ_CTRL_DATA_STEP_MAX];
287     // M4_ARRAY_DESC("hist_th_off", "f32", M4_SIZE(1,13), M4_RANGE(0,255), "[64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
288     float hist_th_off[DHAZ_CTRL_DATA_STEP_MAX];
289     // M4_ARRAY_DESC("hist_k", "f32", M4_SIZE(1,13), M4_RANGE(0,8), "[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
290     float hist_k[DHAZ_CTRL_DATA_STEP_MAX];
291     // M4_ARRAY_DESC("hist_min", "f32", M4_SIZE(1,13), M4_RANGE(0,2), "[0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
292     float hist_min[DHAZ_CTRL_DATA_STEP_MAX];
293     // M4_ARRAY_DESC("hist_scale", "f32", M4_SIZE(1,13), M4_RANGE(0,32), "[0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
294     float hist_scale[DHAZ_CTRL_DATA_STEP_MAX];
295     // M4_ARRAY_DESC("cfg_gratio", "f32", M4_SIZE(1,13), M4_RANGE(0,32), "[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
296     float cfg_gratio[DHAZ_CTRL_DATA_STEP_MAX];
297 } HistDataV11_t;
298 
299 typedef struct Hist_setting_V11_s {
300     // M4_BOOL_DESC("en", "1")
301     bool en;
302     // M4_BOOL_DESC("hist_para_en", "1")
303     bool hist_para_en;
304     // M4_ARRAY_TABLE_DESC("HistData", "array_table_ui","none")
305     HistDataV11_t HistData;
306 } Hist_setting_V11_t;
307 
308 typedef struct CalibDbDehazeV11_s {
309     // M4_BOOL_DESC("en", "1")
310     bool Enable;
311     // M4_ENUM_DESC("CtrlDataType", "CtrlDataType_t", "CTRLDATATYPE_ENVLV")
312     CtrlDataType_t CtrlDataType;
313     // M4_NUMBER_DESC("cfg_alpha", "f32", M4_RANGE(0,1), "1", M4_DIGIT(4))
314     float cfg_alpha;
315     // M4_NUMBER_DESC("ByPassThr", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4))
316     float ByPassThr;
317     // M4_STRUCT_DESC("dehaze_setting", "normal_ui_style")
318     Dehaze_Setting_V11_t dehaze_setting;
319     // M4_STRUCT_DESC("enhance_setting", "normal_ui_style")
320     Enhance_Setting_V11_t enhance_setting;
321     // M4_STRUCT_DESC("hist_setting", "normal_ui_style")
322     Hist_setting_V11_t hist_setting;
323 } CalibDbDehazeV11_t;
324 
325 typedef struct CalibDbV2_dehaze_v11_s {
326     // M4_STRUCT_DESC("DehazeTuningPara", "normal_ui_style")
327     CalibDbDehazeV11_t DehazeTuningPara;
328 } CalibDbV2_dehaze_v11_t;
329 
330 // dehaze v12
331 typedef struct EnhanceDataV12_s {
332     // M4_NUMBER_MARK_DESC("CtrlData", "f32", M4_RANGE(0,1000000000), "0", M4_DIGIT(4), "index1")
333     float CtrlData;
334     // M4_ARRAY_MARK_DESC("enhance_curve", "f32", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1023]", M4_DIGIT(0), M4_DYNAMIC(0), 0)
335     float enhance_curve[DHAZ_ENHANCE_CURVE_KNOTS_NUM];
336     // M4_ARRAY_MARK_DESC("enh_luma", "f32", M4_SIZE(1,17),  M4_RANGE(0, 16), "[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]", M4_DIGIT(2), M4_DYNAMIC(0), 0)
337     float enh_luma[DHAZ_ENHANCE_CURVE_KNOTS_NUM];
338     // M4_NUMBER_DESC("enhance_value", "f32", M4_RANGE(0,16), "1", M4_DIGIT(4))
339     float enhance_value;
340     // M4_NUMBER_DESC("enhance_chroma", "f32", M4_RANGE(0,16), "1", M4_DIGIT(4))
341     float enhance_chroma;
342 } EnhanceDataV12_t;
343 
344 typedef struct Enhance_Setting_V12_s {
345     // M4_BOOL_DESC("en", "1")
346     bool en;
347     // M4_BOOL_DESC("color_deviate_en", "0")
348     bool color_deviate_en;
349     // M4_BOOL_DESC("enh_luma_en", "0")
350     bool enh_luma_en;
351     // M4_STRUCT_LIST_DESC("EnhanceData", M4_SIZE(1,13), "normal_ui_style")
352     EnhanceDataV12_t EnhanceData[DHAZ_CTRL_DATA_STEP_MAX];
353 } Enhance_Setting_V12_t;
354 
355 typedef enum HistWrMode_e {
356     HIST_WR_AUTO     = 0,
357     HIST_WR_MANUAL   = 1,
358     HIST_WR_SEMIAUTO = 2,
359 } HistWrMode_t;
360 
361 typedef struct Manual_curve_s {
362     // M4_NUMBER_MARK_DESC("CtrlData", "f32", M4_RANGE(0,1000000000), "0", M4_DIGIT(4), "index1")
363     float CtrlData;
364     // M4_ARRAY_MARK_DESC("curve_x", "u32", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1023]", M4_DIGIT(0), M4_DYNAMIC(0), 0)
365     int curve_x[DHAZ_V12_HIST_WR_CURVE_NUM];
366     // M4_ARRAY_MARK_DESC("curve_y", "u32", M4_SIZE(1,17),  M4_RANGE(0, 1023), "[0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1023]", M4_DIGIT(0), M4_DYNAMIC(0), 0)
367     int curve_y[DHAZ_V12_HIST_WR_CURVE_NUM];
368 } Manual_curve_t;
369 
370 typedef struct hist_wr_semiauto_s {
371     // M4_ARRAY_DESC("CtrlData", "f32", M4_SIZE(1,13), M4_RANGE(0,10000000), "[0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
372     float CtrlData[DHAZ_CTRL_DATA_STEP_MAX];
373     // M4_ARRAY_DESC("clim0", "f32", M4_SIZE(1,13), M4_RANGE(0.1,32), "[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
374     float clim0[DHAZ_CTRL_DATA_STEP_MAX];
375     // M4_ARRAY_DESC("clim1", "f32", M4_SIZE(1,13), M4_RANGE(0.1,32), "[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",M4_DIGIT(4), M4_DYNAMIC(0), 0)
376     float clim1[DHAZ_CTRL_DATA_STEP_MAX];
377     // M4_ARRAY_DESC("dark_th", "f32", M4_SIZE(1,13), M4_RANGE(0,1023), "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",M4_DIGIT(0), M4_DYNAMIC(0), 0)
378     float dark_th[DHAZ_CTRL_DATA_STEP_MAX];
379 } hist_wr_semiauto_t;
380 
381 typedef struct HistWr_s {
382     // M4_ENUM_DESC("mode", "HistWrMode_t", "HIST_WR_MANUAL")
383     HistWrMode_t mode;
384     // M4_STRUCT_LIST_DESC("manual_curve", M4_SIZE(1,13), "normal_ui_style")
385     Manual_curve_t manual_curve[DHAZ_CTRL_DATA_STEP_MAX];
386     // M4_ARRAY_TABLE_DESC("semiauto_curve", "array_table_ui","none")
387     hist_wr_semiauto_t semiauto_curve;
388 } HistWr_t;
389 
390 typedef struct Hist_setting_V12_s {
391     // M4_BOOL_DESC("en", "1")
392     bool en;
393     // M4_BOOL_DESC("hist_para_en", "1")
394     bool hist_para_en;
395     // M4_STRUCT_DESC("hist_wr", "normal_ui_style")
396     HistWr_t hist_wr;
397     // M4_ARRAY_TABLE_DESC("HistData", "array_table_ui","none")
398     HistDataV11_t HistData;
399 } Hist_setting_V12_t;
400 
401 typedef struct CalibDbDehazeV12_s {
402     // M4_BOOL_DESC("en", "1")
403     bool Enable;
404     // M4_ENUM_DESC("CtrlDataType", "CtrlDataType_t", "CTRLDATATYPE_ENVLV")
405     CtrlDataType_t CtrlDataType;
406     // M4_NUMBER_DESC("cfg_alpha", "f32", M4_RANGE(0,1), "1", M4_DIGIT(4))
407     float cfg_alpha;
408     // M4_NUMBER_DESC("ByPassThr", "f32", M4_RANGE(0,1), "0", M4_DIGIT(4))
409     float ByPassThr;
410     // M4_STRUCT_DESC("dehaze_setting", "normal_ui_style")
411     Dehaze_Setting_V11_t dehaze_setting;
412     // M4_STRUCT_DESC("enhance_setting", "normal_ui_style")
413     Enhance_Setting_V12_t enhance_setting;
414     // M4_STRUCT_DESC("hist_setting", "normal_ui_style")
415     Hist_setting_V12_t hist_setting;
416 } CalibDbDehazeV12_t;
417 
418 typedef struct CalibDbV2_dehaze_v12_s {
419     // M4_STRUCT_DESC("DehazeTuningPara", "normal_ui_style")
420     CalibDbDehazeV12_t DehazeTuningPara;
421 } CalibDbV2_dehaze_v12_t;
422 
423 RKAIQ_END_DECLARE
424 
425 #endif
426