xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI/rk_aiq_user_api_adehaze.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
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 #include "rk_aiq_user_api_adehaze.h"
17 
18 #include "algo_handlers/RkAiqAdehazeHandle.h"
19 #include "uAPI2/rk_aiq_user_api2_adehaze.h"
20 
21 RKAIQ_BEGIN_DECLARE
22 
23 #ifdef RK_SIMULATOR_HW
24 #define CHECK_USER_API_ENABLE
25 #endif
26 
27 /*
28 void
29 DehazeTransferSetToolData(CalibDbV2_dehaze_v10_t* DehazeV2, CalibDbDehaze_t *DehazeV1)
30 {
31     //len
32     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len = 9;
33     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len = 9;
34     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len = 9;
35     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len = 9;
36     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len = 9;
37     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len = 9;
38     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len = 9;
39     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len = 9;
40     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len = 9;
41     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len = 9;
42     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len = 9;
43     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len = 9;
44     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len = 9;
45     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len = 9;
46     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len = 9;
47     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len = 9;
48     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len = 9;
49     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed_len = 9;
50     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len = 9;
51     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur_len = 9;
52     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed_len = 9;
53 
54     DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len = 9;
55     DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len = 9;
56 
57     DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len = 9;
58     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio_len = 9;
59     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off_len = 9;
60     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k_len = 9;
61     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min_len = 9;
62     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale_len = 9;
63     DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len = 9;
64 
65     //malloc
66     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO = (float *) malloc(sizeof(float) * 9);
67     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th = (float *) malloc(sizeof(float)
68 * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th = (float *)
69 malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th = (float *)
70 malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th = (float *)
71 malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th = (float *)
72 malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max = (float
73 *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min =
74 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max =
75 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max =
76 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min =
77 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max =
78 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base
79 = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off
80 = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt =
81 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air =
82 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax =
83 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed =
84 (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur
85 = (float *) malloc(sizeof(float) * 9);
86     DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur = (float *)
87 malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed = (float *)
88 malloc(sizeof(float) * 9);
89 
90     DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO = (float *) malloc(sizeof(float) *
91 9); DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value = (float *)
92 malloc(sizeof(float) * 9);
93 
94     DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO = (float *) malloc(sizeof(float) * 9);
95     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio = (float *) malloc(sizeof(float) *
96 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off = (float *) malloc(sizeof(float) *
97 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k = (float *) malloc(sizeof(float) * 9);
98     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min = (float *) malloc(sizeof(float) * 9);
99     DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale = (float *) malloc(sizeof(float) *
100 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio = (float *) malloc(sizeof(float) *
101 9);
102 
103     DehazeV2->DehazeTuningPara.Enable = DehazeV1->en ? true : false;
104     DehazeV2->DehazeTuningPara.cfg_alpha = DehazeV1->cfg_alpha_normal;
105     //dehaze
106     DehazeV2->DehazeTuningPara.dehaze_setting.en = DehazeV1->dehaze_setting[0].en ? true : false;
107     for(int i = 0; i < 9; i++) {
108         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i] =
109 DehazeV1->dehaze_setting[0].iso[i];
110         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] =
111 DehazeV1->dehaze_setting[0].dc_min_th[i];
112         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i] =
113 DehazeV1->dehaze_setting[0].dc_max_th[i];
114         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i] =
115 DehazeV1->dehaze_setting[0].yhist_th[i];
116         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i] =
117 DehazeV1->dehaze_setting[0].yblk_th[i];
118         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i] =
119 DehazeV1->dehaze_setting[0].dark_th[i];
120         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i] =
121 DehazeV1->dehaze_setting[0].bright_max[i];
122         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i] =
123 DehazeV1->dehaze_setting[0].bright_min[i];
124         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i] =
125 DehazeV1->dehaze_setting[0].wt_max[i];
126         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i] =
127 DehazeV1->dehaze_setting[0].air_max[i];
128         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i] =
129 DehazeV1->dehaze_setting[0].air_min[i];
130         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i] =
131 DehazeV1->dehaze_setting[0].tmax_base[i];
132         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i] =
133 DehazeV1->dehaze_setting[0].tmax_off[i];
134         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i] =
135 DehazeV1->dehaze_setting[0].tmax_max[i];
136         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i] =
137 DehazeV1->dehaze_setting[0].cfg_wt[i];
138         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i] =
139 DehazeV1->dehaze_setting[0].cfg_air[i];
140         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i] =
141 DehazeV1->dehaze_setting[0].cfg_tmax[i];
142         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i] =
143 DehazeV1->dehaze_setting[0].dc_thed[i];
144         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i] =
145 DehazeV1->dehaze_setting[0].dc_weitcur[i];
146         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i] =
147 DehazeV1->dehaze_setting[0].air_thed[i];
148         DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i] =
149 DehazeV1->dehaze_setting[0].air_weitcur[i];
150     }
151     DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum =
152 DehazeV1->dehaze_setting[0].IIR_setting.stab_fnum; DehazeV2->DehazeTuningPara.dehaze_setting.sigma =
153 DehazeV1->dehaze_setting[0].IIR_setting.sigma; DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma =
154 DehazeV1->dehaze_setting[0].IIR_setting.wt_sigma;
155     DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma =
156 DehazeV1->dehaze_setting[0].IIR_setting.air_sigma;
157     DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma =
158 DehazeV1->dehaze_setting[0].IIR_setting.tmax_sigma;
159     //enhance
160     DehazeV2->DehazeTuningPara.enhance_setting.en = DehazeV1->enhance_setting[0].en ? true : false;
161     for(int i = 0; i < 9; i++) {
162         DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i] =
163 DehazeV1->enhance_setting[0].iso[i];
164         DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i] =
165 DehazeV1->enhance_setting[0].enhance_value[i];
166     }
167     //hist
168     DehazeV2->DehazeTuningPara.hist_setting.en = DehazeV1->hist_setting[0].en ? true : false;
169     DehazeV2->DehazeTuningPara.hist_setting.hist_para_en = DehazeV1->hist_setting[0].hist_para_en[0]
170 ? true : false; DehazeV2->DehazeTuningPara.hist_setting.hist_channel =
171 DehazeV1->hist_setting[0].hist_channel[0] ? true : false; for(int i = 0; i < 9; i++) {
172         DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i] = DehazeV1->hist_setting[0].iso[i];
173         DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i] =
174 DehazeV1->hist_setting[0].hist_gratio[i];
175         DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i] =
176 DehazeV1->hist_setting[0].hist_th_off[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i]
177 = DehazeV1->hist_setting[0].hist_k[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i]
178 = DehazeV1->hist_setting[0].hist_min[i];
179         DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i] =
180 DehazeV1->hist_setting[0].hist_scale[i];
181         DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i] =
182 DehazeV1->hist_setting[0].cfg_gratio[i];
183     }
184 }
185 
186 void
187 DehazeTransferGetToolData(CalibDbV2_dehaze_v10_t* DehazeV2, CalibDbDehaze_t *DehazeV1)
188 {
189 
190     DehazeV1->en = DehazeV2->DehazeTuningPara.Enable ? 1 : 0;
191     DehazeV1->cfg_alpha_normal = DehazeV2->DehazeTuningPara.cfg_alpha;
192     DehazeV1->cfg_alpha_hdr = DehazeV2->DehazeTuningPara.cfg_alpha;
193     DehazeV1->cfg_alpha_night = DehazeV2->DehazeTuningPara.cfg_alpha;
194 
195     //dehaze
196     if(DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len >= 9)
197         for(int j = 0; j < 5; j++ ) {
198             DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0;
199             for(int i = 0; i < 9; i++) {
200                 DehazeV1->dehaze_setting[j].iso[i] =
201 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i];
202                 DehazeV1->dehaze_setting[j].dc_min_th[i] =
203 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] ;
204                 DehazeV1->dehaze_setting[j].dc_max_th[i] =
205 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i];
206                 DehazeV1->dehaze_setting[j].yhist_th[i] =
207 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i];
208                 DehazeV1->dehaze_setting[j].yblk_th[i] =
209 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i];
210                 DehazeV1->dehaze_setting[j].dark_th[i] =
211 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i];
212                 DehazeV1->dehaze_setting[j].bright_max[i] =
213 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i];
214                 DehazeV1->dehaze_setting[j].bright_min[i] =
215 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i];
216                 DehazeV1->dehaze_setting[j].wt_max[i] =
217 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i];
218                 DehazeV1->dehaze_setting[j].air_max[i] =
219 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i];
220                 DehazeV1->dehaze_setting[j].air_min[i] =
221 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i];
222                 DehazeV1->dehaze_setting[j].tmax_base[i] =
223 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i];
224                 DehazeV1->dehaze_setting[j].tmax_off[i] =
225 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i];
226                 DehazeV1->dehaze_setting[j].tmax_max[i] =
227 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i];
228                 DehazeV1->dehaze_setting[j].cfg_wt[i] =
229 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i];
230                 DehazeV1->dehaze_setting[j].cfg_air[i] =
231 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i];
232                 DehazeV1->dehaze_setting[j].cfg_tmax[i] =
233 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i];
234                 DehazeV1->dehaze_setting[j].dc_thed[i] =
235 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i];
236                 DehazeV1->dehaze_setting[j].dc_weitcur[i] =
237 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i];
238                 DehazeV1->dehaze_setting[j].air_thed[i] =
239 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i];
240                 DehazeV1->dehaze_setting[j].air_weitcur[i] =
241 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i];
242             }
243             DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum =
244 DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma =
245 DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma =
246 DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma;
247             DehazeV1->dehaze_setting[j].IIR_setting.air_sigma =
248 DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ;
249             DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma =
250 DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma;
251         }
252     else if(DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len >= 1 &&
253 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) {
254             //dehaze
255             DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0;
256             for(int i = 0; i < DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; i++) {
257                 DehazeV1->dehaze_setting[j].iso[i] =
258 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i];
259                 DehazeV1->dehaze_setting[j].dc_min_th[i] =
260 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] ;
261                 DehazeV1->dehaze_setting[j].dc_max_th[i] =
262 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i];
263                 DehazeV1->dehaze_setting[j].yhist_th[i] =
264 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i];
265                 DehazeV1->dehaze_setting[j].yblk_th[i] =
266 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i];
267                 DehazeV1->dehaze_setting[j].dark_th[i] =
268 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i];
269                 DehazeV1->dehaze_setting[j].bright_max[i] =
270 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i];
271                 DehazeV1->dehaze_setting[j].bright_min[i] =
272 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i];
273                 DehazeV1->dehaze_setting[j].wt_max[i] =
274 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i];
275                 DehazeV1->dehaze_setting[j].air_max[i] =
276 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i];
277                 DehazeV1->dehaze_setting[j].air_min[i] =
278 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i];
279                 DehazeV1->dehaze_setting[j].tmax_base[i] =
280 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i];
281                 DehazeV1->dehaze_setting[j].tmax_off[i] =
282 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i];
283                 DehazeV1->dehaze_setting[j].tmax_max[i] =
284 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i];
285                 DehazeV1->dehaze_setting[j].cfg_wt[i] =
286 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i];
287                 DehazeV1->dehaze_setting[j].cfg_air[i] =
288 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i];
289                 DehazeV1->dehaze_setting[j].cfg_tmax[i] =
290 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i];
291                 DehazeV1->dehaze_setting[j].dc_thed[i] =
292 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i];
293                 DehazeV1->dehaze_setting[j].dc_weitcur[i] =
294 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i];
295                 DehazeV1->dehaze_setting[j].air_thed[i] =
296 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i];
297                 DehazeV1->dehaze_setting[j].air_weitcur[i] =
298 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i];
299             }
300             DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum =
301 DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma =
302 DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma =
303 DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma;
304             DehazeV1->dehaze_setting[j].IIR_setting.air_sigma =
305 DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ;
306             DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma =
307 DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma;
308         }
309         int k = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len - 1;
310         for(int j = 0; j < 5; j++ ) {
311             //dehaze
312             DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0;
313             for(int i = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; i < 9; i++) {
314                 DehazeV1->dehaze_setting[j].iso[i] =
315 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[k];
316                 DehazeV1->dehaze_setting[j].dc_min_th[i] =
317 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[k] ;
318                 DehazeV1->dehaze_setting[j].dc_max_th[i] =
319 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[k];
320                 DehazeV1->dehaze_setting[j].yhist_th[i] =
321 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[k];
322                 DehazeV1->dehaze_setting[j].yblk_th[i] =
323 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[k];
324                 DehazeV1->dehaze_setting[j].dark_th[i] =
325 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[k];
326                 DehazeV1->dehaze_setting[j].bright_max[i] =
327 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[k];
328                 DehazeV1->dehaze_setting[j].bright_min[i] =
329 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[k];
330                 DehazeV1->dehaze_setting[j].wt_max[i] =
331 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[k];
332                 DehazeV1->dehaze_setting[j].air_max[i] =
333 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[k];
334                 DehazeV1->dehaze_setting[j].air_min[i] =
335 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[k];
336                 DehazeV1->dehaze_setting[j].tmax_base[i] =
337 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[k];
338                 DehazeV1->dehaze_setting[j].tmax_off[i] =
339 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[k];
340                 DehazeV1->dehaze_setting[j].tmax_max[i] =
341 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[k];
342                 DehazeV1->dehaze_setting[j].cfg_wt[i] =
343 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[k];
344                 DehazeV1->dehaze_setting[j].cfg_air[i] =
345 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[k];
346                 DehazeV1->dehaze_setting[j].cfg_tmax[i] =
347 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[k];
348                 DehazeV1->dehaze_setting[j].dc_thed[i] =
349 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[k];
350                 DehazeV1->dehaze_setting[j].dc_weitcur[i] =
351 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[k];
352                 DehazeV1->dehaze_setting[j].air_thed[i] =
353 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[k];
354                 DehazeV1->dehaze_setting[j].air_weitcur[i] =
355 DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[k];
356             }
357             DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum =
358 DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma =
359 DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma =
360 DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma;
361             DehazeV1->dehaze_setting[j].IIR_setting.air_sigma =
362 DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ;
363             DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma =
364 DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma;
365         }
366     }
367 
368     //enhance
369     if(DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len >= 9)
370         for(int j = 0; j < 5; j++ ) {
371             DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0;
372             for(int i = 0; i < 9; i++) {
373                 DehazeV1->enhance_setting[j].iso[i] =
374 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i];
375                 DehazeV1->enhance_setting[j].enhance_value[i] =
376 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i];
377             }
378         }
379     else if(DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len >= 1 &&
380 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) {
381             DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0;
382             for(int i = 0; i < DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; i++)
383 { DehazeV1->enhance_setting[j].iso[i] =
384 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i];
385                 DehazeV1->enhance_setting[j].enhance_value[i] =
386 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i];
387             }
388         }
389         int k = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len - 1;
390         for(int j = 0; j < 5; j++ ) {
391             DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0;
392             for(int i = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; i < 9; i++)
393 { DehazeV1->enhance_setting[j].iso[i] =
394 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[k];
395                 DehazeV1->enhance_setting[j].enhance_value[i] =
396 DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[k];
397             }
398         }
399     }
400 
401     //hist
402     if(DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len >= 9)
403         for(int j = 0; j < 5; j++ ) {
404             DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0;
405             for(int i = 0; i < 9; i++) {
406                 DehazeV1->hist_setting[j].hist_para_en[i] =
407 DehazeV2->DehazeTuningPara.hist_setting.hist_para_en ? 1 : 0;
408                 DehazeV1->hist_setting[j].hist_channel[i] =
409 DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] =
410 DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i]; DehazeV1->hist_setting[j].hist_gratio[i] =
411 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i];
412                 DehazeV1->hist_setting[j].hist_th_off[i] =
413 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i]; DehazeV1->hist_setting[j].hist_k[i]
414 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i]; DehazeV1->hist_setting[j].hist_min[i]
415 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i];
416                 DehazeV1->hist_setting[j].hist_scale[i] =
417 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i];
418                 DehazeV1->hist_setting[j].cfg_gratio[i] =
419 DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i];
420             }
421         }
422     else if(DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len >= 1 &&
423 DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) {
424             DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0;
425             for(int i = 0; i < DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len; i++) {
426                 DehazeV1->hist_setting[j].hist_para_en[i] =
427 DehazeV2->DehazeTuningPara.hist_setting.hist_para_en  ? 1 : 0;
428                 DehazeV1->hist_setting[j].hist_channel[i] =
429 DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] =
430 DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i]; DehazeV1->hist_setting[j].hist_gratio[i] =
431 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i];
432                 DehazeV1->hist_setting[j].hist_th_off[i] =
433 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i]; DehazeV1->hist_setting[j].hist_k[i]
434 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i]; DehazeV1->hist_setting[j].hist_min[i]
435 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i];
436                 DehazeV1->hist_setting[j].hist_scale[i] =
437 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i];
438                 DehazeV1->hist_setting[j].cfg_gratio[i] =
439 DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i];
440             }
441         }
442         int k = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len - 1;
443         for(int j = 0; j < 5; j++ ) {
444             DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0;
445             for(int i = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len; i < 9; i++) {
446                 DehazeV1->hist_setting[j].hist_para_en[i] =
447 DehazeV2->DehazeTuningPara.hist_setting.hist_para_en  ? 1 : 0;
448                 DehazeV1->hist_setting[j].hist_channel[i] =
449 DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] =
450 DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[k]; DehazeV1->hist_setting[j].hist_gratio[i] =
451 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[k];
452                 DehazeV1->hist_setting[j].hist_th_off[i] =
453 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[k]; DehazeV1->hist_setting[j].hist_k[i]
454 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[k]; DehazeV1->hist_setting[j].hist_min[i]
455 = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[k];
456                 DehazeV1->hist_setting[j].hist_scale[i] =
457 DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[k];
458                 DehazeV1->hist_setting[j].cfg_gratio[i] =
459 DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[k];
460             }
461         }
462     }
463 
464 }
465 
466 void
467 DehazeTransferSetData(adehaze_sw_V2_t* DehazeV2, adehaze_sw_t *DehazeV1)
468 {
469     //HWversion
470     DehazeV2->HWversion = ADEHAZE_ISP20;
471 
472     //op mode
473     if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_INVALID)
474         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_AUTO;
475     else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_MANUAL)
476         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_MANUAL;
477     else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_AUTO)
478         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_AUTO;
479     else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_OFF)
480         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_OFF;
481     else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_TOOL)
482         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_TOOL;
483     else
484         DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_AUTO;
485 
486     //st manual
487     memcpy(&DehazeV2->AdehazeAtrrV20.stManual, &DehazeV1->stManual,
488 sizeof(rk_aiq_dehaze_M_attrib_t));
489 
490     //st enhance
491     memcpy(&DehazeV2->AdehazeAtrrV20.stEnhanceManual, &DehazeV1->stEnhance,
492 sizeof(rk_aiq_dehaze_enhance_t));
493 
494     // st auto
495     if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_AUTO)
496         DehazeTransferSetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stAuto);
497     if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_TOOL)
498         DehazeTransferSetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stTool);
499 }
500 
501 void
502 DehazeTransferGetData(adehaze_sw_V2_t* DehazeV2, adehaze_sw_t *DehazeV1)
503 {
504     //bypass
505     if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_AUTO)
506         DehazeV1->byPass = true;
507     else
508         DehazeV1->byPass = false;
509 
510     //op mode
511     if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_AUTO)
512         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_INVALID;
513     else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_MANUAL)
514         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_MANUAL;
515     else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_AUTO)
516         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_AUTO;
517     else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_OFF)
518         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_OFF;
519     else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_TOOL)
520         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_TOOL;
521     else
522         DehazeV1->mode = RK_AIQ_DEHAZE_MODE_INVALID;
523 
524     //st manual
525     memcpy(&DehazeV1->stManual, &DehazeV2->AdehazeAtrrV20.stManual,
526 sizeof(rk_aiq_dehaze_M_attrib_t));
527 
528     //st enhance
529     memcpy(&DehazeV1->stEnhance, &DehazeV2->AdehazeAtrrV20.stEnhanceManual,
530 sizeof(rk_aiq_dehaze_enhance_t));
531 
532     // st auto
533     DehazeTransferGetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stAuto);
534 
535     //st tool
536     DehazeTransferGetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stTool);
537 }
538 
539 XCamReturn  rk_aiq_user_api_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx, adehaze_sw_t attr)
540 {
541     adehaze_sw_V2_t dehazeAttr;
542     memset(&dehazeAttr, 0, sizeof(adehaze_sw_V2_t));
543 
544     DehazeTransferSetData(&dehazeAttr, &attr);
545 
546     XCamReturn ret_dehaze = rk_aiq_user_api2_adehaze_setSwAttrib(sys_ctx, dehazeAttr);
547 
548     return ret_dehaze;
549 }
550 
551 XCamReturn  rk_aiq_user_api_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx, adehaze_sw_t *attr)
552 {
553     adehaze_sw_V2_t dehazeAttr;
554     memset(&dehazeAttr, 0, sizeof(adehaze_sw_V2_t));
555 
556     DehazeTransferGetData(&dehazeAttr, attr);
557 
558     XCamReturn ret_dehaze = rk_aiq_user_api2_adehaze_getSwAttrib(sys_ctx, &dehazeAttr);
559 
560     return ret_dehaze;
561 }
562 */
563 
564 RKAIQ_END_DECLARE
565