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