/* * Copyright (c) 2019 Rockchip Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #include "rk_aiq_user_api_adehaze.h" #include "include/uAPI2/rk_aiq_user_api2_adehaze.h" #include "RkAiqHandleInt.h" RKAIQ_BEGIN_DECLARE #ifdef RK_SIMULATOR_HW #define CHECK_USER_API_ENABLE #endif void DehazeTransferSetToolData(CalibDbV2_dehaze_V20_t* DehazeV2, CalibDbDehaze_t *DehazeV1) { //len DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur_len = 9; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed_len = 9; DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len = 9; DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale_len = 9; DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len = 9; //malloc DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio = (float *) malloc(sizeof(float) * 9); DehazeV2->DehazeTuningPara.Enable = DehazeV1->en ? true : false; DehazeV2->DehazeTuningPara.cfg_alpha = DehazeV1->cfg_alpha_normal; //dehaze DehazeV2->DehazeTuningPara.dehaze_setting.en = DehazeV1->dehaze_setting[0].en ? true : false; for(int i = 0; i < 9; i++) { DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i] = DehazeV1->dehaze_setting[0].iso[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] = DehazeV1->dehaze_setting[0].dc_min_th[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i] = DehazeV1->dehaze_setting[0].dc_max_th[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i] = DehazeV1->dehaze_setting[0].yhist_th[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i] = DehazeV1->dehaze_setting[0].yblk_th[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i] = DehazeV1->dehaze_setting[0].dark_th[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i] = DehazeV1->dehaze_setting[0].bright_max[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i] = DehazeV1->dehaze_setting[0].bright_min[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i] = DehazeV1->dehaze_setting[0].wt_max[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i] = DehazeV1->dehaze_setting[0].air_max[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i] = DehazeV1->dehaze_setting[0].air_min[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i] = DehazeV1->dehaze_setting[0].tmax_base[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i] = DehazeV1->dehaze_setting[0].tmax_off[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i] = DehazeV1->dehaze_setting[0].tmax_max[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i] = DehazeV1->dehaze_setting[0].cfg_wt[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i] = DehazeV1->dehaze_setting[0].cfg_air[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i] = DehazeV1->dehaze_setting[0].cfg_tmax[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i] = DehazeV1->dehaze_setting[0].dc_thed[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i] = DehazeV1->dehaze_setting[0].dc_weitcur[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i] = DehazeV1->dehaze_setting[0].air_thed[i]; DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i] = DehazeV1->dehaze_setting[0].air_weitcur[i]; } DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum = DehazeV1->dehaze_setting[0].IIR_setting.stab_fnum; DehazeV2->DehazeTuningPara.dehaze_setting.sigma = DehazeV1->dehaze_setting[0].IIR_setting.sigma; DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma = DehazeV1->dehaze_setting[0].IIR_setting.wt_sigma; DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma = DehazeV1->dehaze_setting[0].IIR_setting.air_sigma; DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma = DehazeV1->dehaze_setting[0].IIR_setting.tmax_sigma; //enhance DehazeV2->DehazeTuningPara.enhance_setting.en = DehazeV1->enhance_setting[0].en ? true : false; for(int i = 0; i < 9; i++) { DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i] = DehazeV1->enhance_setting[0].iso[i]; DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i] = DehazeV1->enhance_setting[0].enhance_value[i]; } //hist DehazeV2->DehazeTuningPara.hist_setting.en = DehazeV1->hist_setting[0].en ? true : false; DehazeV2->DehazeTuningPara.hist_setting.hist_para_en = DehazeV1->hist_setting[0].hist_para_en[0] ? true : false; DehazeV2->DehazeTuningPara.hist_setting.hist_channel = DehazeV1->hist_setting[0].hist_channel[0] ? true : false; for(int i = 0; i < 9; i++) { DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i] = DehazeV1->hist_setting[0].iso[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i] = DehazeV1->hist_setting[0].hist_gratio[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i] = DehazeV1->hist_setting[0].hist_th_off[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i] = DehazeV1->hist_setting[0].hist_k[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i] = DehazeV1->hist_setting[0].hist_min[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i] = DehazeV1->hist_setting[0].hist_scale[i]; DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i] = DehazeV1->hist_setting[0].cfg_gratio[i]; } } void DehazeTransferGetToolData(CalibDbV2_dehaze_V20_t* DehazeV2, CalibDbDehaze_t *DehazeV1) { DehazeV1->en = DehazeV2->DehazeTuningPara.Enable ? 1 : 0; DehazeV1->cfg_alpha_normal = DehazeV2->DehazeTuningPara.cfg_alpha; DehazeV1->cfg_alpha_hdr = DehazeV2->DehazeTuningPara.cfg_alpha; DehazeV1->cfg_alpha_night = DehazeV2->DehazeTuningPara.cfg_alpha; //dehaze if(DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len >= 9) for(int j = 0; j < 5; j++ ) { DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0; for(int i = 0; i < 9; i++) { DehazeV1->dehaze_setting[j].iso[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i]; DehazeV1->dehaze_setting[j].dc_min_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] ; DehazeV1->dehaze_setting[j].dc_max_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i]; DehazeV1->dehaze_setting[j].yhist_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i]; DehazeV1->dehaze_setting[j].yblk_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i]; DehazeV1->dehaze_setting[j].dark_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i]; DehazeV1->dehaze_setting[j].bright_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i]; DehazeV1->dehaze_setting[j].bright_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i]; DehazeV1->dehaze_setting[j].wt_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i]; DehazeV1->dehaze_setting[j].air_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i]; DehazeV1->dehaze_setting[j].air_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i]; DehazeV1->dehaze_setting[j].tmax_base[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i]; DehazeV1->dehaze_setting[j].tmax_off[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i]; DehazeV1->dehaze_setting[j].tmax_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i]; DehazeV1->dehaze_setting[j].cfg_wt[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i]; DehazeV1->dehaze_setting[j].cfg_air[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i]; DehazeV1->dehaze_setting[j].cfg_tmax[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i]; DehazeV1->dehaze_setting[j].dc_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i]; DehazeV1->dehaze_setting[j].dc_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i]; DehazeV1->dehaze_setting[j].air_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i]; DehazeV1->dehaze_setting[j].air_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i]; } DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum = DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma = DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma; DehazeV1->dehaze_setting[j].IIR_setting.air_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ; DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma; } else if(DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len >= 1 && DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) { //dehaze DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0; for(int i = 0; i < DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; i++) { DehazeV1->dehaze_setting[j].iso[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[i]; DehazeV1->dehaze_setting[j].dc_min_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[i] ; DehazeV1->dehaze_setting[j].dc_max_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[i]; DehazeV1->dehaze_setting[j].yhist_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[i]; DehazeV1->dehaze_setting[j].yblk_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[i]; DehazeV1->dehaze_setting[j].dark_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[i]; DehazeV1->dehaze_setting[j].bright_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[i]; DehazeV1->dehaze_setting[j].bright_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[i]; DehazeV1->dehaze_setting[j].wt_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[i]; DehazeV1->dehaze_setting[j].air_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[i]; DehazeV1->dehaze_setting[j].air_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[i]; DehazeV1->dehaze_setting[j].tmax_base[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[i]; DehazeV1->dehaze_setting[j].tmax_off[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[i]; DehazeV1->dehaze_setting[j].tmax_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[i]; DehazeV1->dehaze_setting[j].cfg_wt[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[i]; DehazeV1->dehaze_setting[j].cfg_air[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[i]; DehazeV1->dehaze_setting[j].cfg_tmax[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[i]; DehazeV1->dehaze_setting[j].dc_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[i]; DehazeV1->dehaze_setting[j].dc_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[i]; DehazeV1->dehaze_setting[j].air_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[i]; DehazeV1->dehaze_setting[j].air_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[i]; } DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum = DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma = DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma; DehazeV1->dehaze_setting[j].IIR_setting.air_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ; DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma; } int k = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len - 1; for(int j = 0; j < 5; j++ ) { //dehaze DehazeV1->dehaze_setting[j].en = DehazeV2->DehazeTuningPara.dehaze_setting.en ? 1 : 0; for(int i = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; i < 9; i++) { DehazeV1->dehaze_setting[j].iso[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.ISO[k]; DehazeV1->dehaze_setting[j].dc_min_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th[k] ; DehazeV1->dehaze_setting[j].dc_max_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th[k]; DehazeV1->dehaze_setting[j].yhist_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th[k]; DehazeV1->dehaze_setting[j].yblk_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th[k]; DehazeV1->dehaze_setting[j].dark_th[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dark_th[k]; DehazeV1->dehaze_setting[j].bright_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_max[k]; DehazeV1->dehaze_setting[j].bright_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.bright_min[k]; DehazeV1->dehaze_setting[j].wt_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.wt_max[k]; DehazeV1->dehaze_setting[j].air_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_max[k]; DehazeV1->dehaze_setting[j].air_min[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_min[k]; DehazeV1->dehaze_setting[j].tmax_base[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base[k]; DehazeV1->dehaze_setting[j].tmax_off[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off[k]; DehazeV1->dehaze_setting[j].tmax_max[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max[k]; DehazeV1->dehaze_setting[j].cfg_wt[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt[k]; DehazeV1->dehaze_setting[j].cfg_air[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air[k]; DehazeV1->dehaze_setting[j].cfg_tmax[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax[k]; DehazeV1->dehaze_setting[j].dc_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed[k]; DehazeV1->dehaze_setting[j].dc_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur[k]; DehazeV1->dehaze_setting[j].air_thed[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_thed[k]; DehazeV1->dehaze_setting[j].air_weitcur[i] = DehazeV2->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur[k]; } DehazeV1->dehaze_setting[j].IIR_setting.stab_fnum = DehazeV2->DehazeTuningPara.dehaze_setting.stab_fnum; DehazeV1->dehaze_setting[j].IIR_setting.sigma = DehazeV2->DehazeTuningPara.dehaze_setting.sigma; DehazeV1->dehaze_setting[j].IIR_setting.wt_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.wt_sigma; DehazeV1->dehaze_setting[j].IIR_setting.air_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.air_sigma ; DehazeV1->dehaze_setting[j].IIR_setting.tmax_sigma = DehazeV2->DehazeTuningPara.dehaze_setting.tmax_sigma; } } //enhance if(DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len >= 9) for(int j = 0; j < 5; j++ ) { DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0; for(int i = 0; i < 9; i++) { DehazeV1->enhance_setting[j].iso[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i]; DehazeV1->enhance_setting[j].enhance_value[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i]; } } else if(DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len >= 1 && DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) { DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0; for(int i = 0; i < DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; i++) { DehazeV1->enhance_setting[j].iso[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[i]; DehazeV1->enhance_setting[j].enhance_value[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[i]; } } int k = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len - 1; for(int j = 0; j < 5; j++ ) { DehazeV1->enhance_setting[j].en = DehazeV2->DehazeTuningPara.enhance_setting.en ? 1 : 0; for(int i = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; i < 9; i++) { DehazeV1->enhance_setting[j].iso[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.ISO[k]; DehazeV1->enhance_setting[j].enhance_value[i] = DehazeV2->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value[k]; } } } //hist if(DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len >= 9) for(int j = 0; j < 5; j++ ) { DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0; for(int i = 0; i < 9; i++) { DehazeV1->hist_setting[j].hist_para_en[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_para_en ? 1 : 0; DehazeV1->hist_setting[j].hist_channel[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i]; DehazeV1->hist_setting[j].hist_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i]; DehazeV1->hist_setting[j].hist_th_off[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i]; DehazeV1->hist_setting[j].hist_k[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i]; DehazeV1->hist_setting[j].hist_min[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i]; DehazeV1->hist_setting[j].hist_scale[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i]; DehazeV1->hist_setting[j].cfg_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i]; } } else if(DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len >= 1 && DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len < 9) { for(int j = 0; j < 5; j++ ) { DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0; for(int i = 0; i < DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len; i++) { DehazeV1->hist_setting[j].hist_para_en[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_para_en ? 1 : 0; DehazeV1->hist_setting[j].hist_channel[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[i]; DehazeV1->hist_setting[j].hist_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[i]; DehazeV1->hist_setting[j].hist_th_off[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[i]; DehazeV1->hist_setting[j].hist_k[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[i]; DehazeV1->hist_setting[j].hist_min[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[i]; DehazeV1->hist_setting[j].hist_scale[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[i]; DehazeV1->hist_setting[j].cfg_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[i]; } } int k = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len - 1; for(int j = 0; j < 5; j++ ) { DehazeV1->hist_setting[j].en = DehazeV2->DehazeTuningPara.hist_setting.en ? 1 : 0; for(int i = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO_len; i < 9; i++) { DehazeV1->hist_setting[j].hist_para_en[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_para_en ? 1 : 0; DehazeV1->hist_setting[j].hist_channel[i] = DehazeV2->DehazeTuningPara.hist_setting.hist_channel ? 1 : 0; DehazeV1->hist_setting[j].iso[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.ISO[k]; DehazeV1->hist_setting[j].hist_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_gratio[k]; DehazeV1->hist_setting[j].hist_th_off[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_th_off[k]; DehazeV1->hist_setting[j].hist_k[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_k[k]; DehazeV1->hist_setting[j].hist_min[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_min[k]; DehazeV1->hist_setting[j].hist_scale[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.hist_scale[k]; DehazeV1->hist_setting[j].cfg_gratio[i] = DehazeV2->DehazeTuningPara.hist_setting.HistData.cfg_gratio[k]; } } } } void DehazeTransferSetData(adehaze_sw_V2_t* DehazeV2, adehaze_sw_t *DehazeV1) { //HWversion DehazeV2->HWversion = ADEHAZE_ISP20; //op mode if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_INVALID) DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_BYPASS; else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_MANUAL) DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_MANUAL; else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_AUTO) DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_AUTO; else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_OFF) DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_OFF; else if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_TOOL) DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_TOOL; else DehazeV2->AdehazeAtrrV20.mode = DEHAZE_API_BYPASS; //st manual memcpy(&DehazeV2->AdehazeAtrrV20.stManual, &DehazeV1->stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); //st enhance memcpy(&DehazeV2->AdehazeAtrrV20.stEnhanceManual, &DehazeV1->stEnhance, sizeof(rk_aiq_dehaze_enhance_t)); // st auto if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_AUTO) DehazeTransferSetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stAuto); if(DehazeV1->mode == RK_AIQ_DEHAZE_MODE_TOOL) DehazeTransferSetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stTool); } void DehazeTransferGetData(adehaze_sw_V2_t* DehazeV2, adehaze_sw_t *DehazeV1) { //bypass if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_BYPASS) DehazeV1->byPass = true; else DehazeV1->byPass = false; //op mode if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_BYPASS) DehazeV1->mode = RK_AIQ_DEHAZE_MODE_INVALID; else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_MANUAL) DehazeV1->mode = RK_AIQ_DEHAZE_MODE_MANUAL; else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_AUTO) DehazeV1->mode = RK_AIQ_DEHAZE_MODE_AUTO; else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_OFF) DehazeV1->mode = RK_AIQ_DEHAZE_MODE_OFF; else if(DehazeV2->AdehazeAtrrV20.mode == DEHAZE_API_TOOL) DehazeV1->mode = RK_AIQ_DEHAZE_MODE_TOOL; else DehazeV1->mode = RK_AIQ_DEHAZE_MODE_INVALID; //st manual memcpy(&DehazeV1->stManual, &DehazeV2->AdehazeAtrrV20.stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); //st enhance memcpy(&DehazeV1->stEnhance, &DehazeV2->AdehazeAtrrV20.stEnhanceManual, sizeof(rk_aiq_dehaze_enhance_t)); // st auto DehazeTransferGetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stAuto); //st tool DehazeTransferGetToolData(&DehazeV2->AdehazeAtrrV20.stTool, &DehazeV1->stTool); } XCamReturn rk_aiq_user_api_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx, adehaze_sw_t attr) { adehaze_sw_V2_t dehazeAttr; memset(&dehazeAttr, 0, sizeof(adehaze_sw_V2_t)); DehazeTransferSetData(&dehazeAttr, &attr); XCamReturn ret_dehaze = rk_aiq_user_api2_adehaze_setSwAttrib(sys_ctx, dehazeAttr); return ret_dehaze; } XCamReturn rk_aiq_user_api_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx, adehaze_sw_t *attr) { adehaze_sw_V2_t dehazeAttr; memset(&dehazeAttr, 0, sizeof(adehaze_sw_V2_t)); DehazeTransferGetData(&dehazeAttr, attr); XCamReturn ret_dehaze = rk_aiq_user_api2_adehaze_getSwAttrib(sys_ctx, &dehazeAttr); return ret_dehaze; } RKAIQ_END_DECLARE