#include "rk_aiq_uapi_adehaze_int.h" #include "rk_aiq_types_adehaze_algo_prvt.h" #include "xcam_log.h" bool IfDehazeDataEqu ( int* pInput, int len ) { bool equ = true; for(int i = 0; i < len - 1; i++) if(pInput[i] != pInput[i + 1]) equ = false; return equ; } XCamReturn rk_aiq_uapi_adehaze_SetToolV20 ( CalibDbV2_dehaze_V20_t* pStore, CalibDbV2_dehaze_V20_t* pInput ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; //dehaze int DehazeLen[21]; DehazeLen[0] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; DehazeLen[1] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len; DehazeLen[2] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len; DehazeLen[3] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len; DehazeLen[4] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len; DehazeLen[5] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len; DehazeLen[6] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len; DehazeLen[7] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len; DehazeLen[8] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len; DehazeLen[9] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len; DehazeLen[10] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len; DehazeLen[11] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len; DehazeLen[12] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len; DehazeLen[13] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len; DehazeLen[14] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len; DehazeLen[15] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len; DehazeLen[16] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len; DehazeLen[17] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed_len; DehazeLen[18] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len; DehazeLen[19] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_thed_len; DehazeLen[20] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur_len; bool DehazeLenEqu = IfDehazeDataEqu(DehazeLen, 21); if(!DehazeLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Dehaze Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len != pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len) { //free free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.ISO); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_thed); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur); //malloc pStore->DehazeTuningPara.dehaze_setting.DehazeData.ISO = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_thed = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); } //store len pStore->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_thed_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len; memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.ISO, pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dark_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min, pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_min, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.wt_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_min, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_thed, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_thed, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_thed, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_weitcur, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.ISO_len); //enhance int EnhanceLen[2]; EnhanceLen[0] = pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; EnhanceLen[1] = pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len; bool EnhanceLenEqu = IfDehazeDataEqu(EnhanceLen, 2); if(!EnhanceLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Enhance Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len != pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len) { //free free(pStore->DehazeTuningPara.enhance_setting.EnhanceData.ISO); free(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value); //malloc pStore->DehazeTuningPara.enhance_setting.EnhanceData.ISO = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len); pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len); } //store len pStore->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len = pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len = pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len; memcpy(pStore->DehazeTuningPara.enhance_setting.EnhanceData.ISO, pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO, sizeof(float)*pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len); memcpy(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value, pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value, sizeof(float)*pInput->DehazeTuningPara.enhance_setting.EnhanceData.ISO_len); //hist int HistLen[7]; HistLen[0] = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; HistLen[1] = pInput->DehazeTuningPara.hist_setting.HistData.hist_gratio_len; HistLen[2] = pInput->DehazeTuningPara.hist_setting.HistData.hist_th_off_len; HistLen[3] = pInput->DehazeTuningPara.hist_setting.HistData.hist_k_len; HistLen[4] = pInput->DehazeTuningPara.hist_setting.HistData.hist_min_len; HistLen[5] = pInput->DehazeTuningPara.hist_setting.HistData.hist_scale_len; HistLen[6] = pInput->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len; bool HistLenEqu = IfDehazeDataEqu(HistLen, 7); if(!HistLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Hist Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.hist_setting.HistData.ISO_len != pInput->DehazeTuningPara.hist_setting.HistData.ISO_len) { //free free(pStore->DehazeTuningPara.hist_setting.HistData.ISO); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_k); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_min); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_scale); free(pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio); //malloc pStore->DehazeTuningPara.hist_setting.HistData.ISO = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_k = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_scale = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); } //store len pStore->DehazeTuningPara.hist_setting.HistData.ISO_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_k_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_min_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_scale_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len = pInput->DehazeTuningPara.hist_setting.HistData.ISO_len; memcpy(pStore->DehazeTuningPara.hist_setting.HistData.ISO, pInput->DehazeTuningPara.hist_setting.HistData.ISO, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio, pInput->DehazeTuningPara.hist_setting.HistData.hist_gratio, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off, pInput->DehazeTuningPara.hist_setting.HistData.hist_th_off, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_k, pInput->DehazeTuningPara.hist_setting.HistData.hist_k, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_min, pInput->DehazeTuningPara.hist_setting.HistData.hist_min, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_scale, pInput->DehazeTuningPara.hist_setting.HistData.hist_scale, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio, pInput->DehazeTuningPara.hist_setting.HistData.cfg_gratio, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.ISO_len); //other pStore->DehazeTuningPara.Enable = pInput->DehazeTuningPara.Enable; pStore->DehazeTuningPara.cfg_alpha = pInput->DehazeTuningPara.cfg_alpha; pStore->DehazeTuningPara.dehaze_setting.en = pInput->DehazeTuningPara.dehaze_setting.en; pStore->DehazeTuningPara.dehaze_setting.stab_fnum = pInput->DehazeTuningPara.dehaze_setting.stab_fnum; pStore->DehazeTuningPara.dehaze_setting.sigma = pInput->DehazeTuningPara.dehaze_setting.sigma; pStore->DehazeTuningPara.dehaze_setting.wt_sigma = pInput->DehazeTuningPara.dehaze_setting.wt_sigma; pStore->DehazeTuningPara.dehaze_setting.air_sigma = pInput->DehazeTuningPara.dehaze_setting.air_sigma; pStore->DehazeTuningPara.dehaze_setting.tmax_sigma = pInput->DehazeTuningPara.dehaze_setting.tmax_sigma; pStore->DehazeTuningPara.enhance_setting.en = pInput->DehazeTuningPara.enhance_setting.en; pStore->DehazeTuningPara.hist_setting.en = pInput->DehazeTuningPara.hist_setting.en; pStore->DehazeTuningPara.hist_setting.hist_channel = pInput->DehazeTuningPara.hist_setting.hist_channel; pStore->DehazeTuningPara.hist_setting.hist_para_en = pInput->DehazeTuningPara.hist_setting.hist_para_en; return ret; } XCamReturn rk_aiq_uapi_adehaze_SetToolV21 ( CalibDbV2_dehaze_V21_t* pStore, CalibDbV2_dehaze_V21_t* pInput ) { XCamReturn ret = XCAM_RETURN_NO_ERROR; //dehaze int DehazeLen[22]; DehazeLen[0] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; DehazeLen[1] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len; DehazeLen[2] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len; DehazeLen[3] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len; DehazeLen[4] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len; DehazeLen[5] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len; DehazeLen[6] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len; DehazeLen[7] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len; DehazeLen[8] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len; DehazeLen[9] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len; DehazeLen[10] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len; DehazeLen[11] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len; DehazeLen[12] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len; DehazeLen[13] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len; DehazeLen[14] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len; DehazeLen[15] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len; DehazeLen[16] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len; DehazeLen[17] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight_len; DehazeLen[18] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len; DehazeLen[19] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma_len; DehazeLen[20] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur_len; DehazeLen[21] = pInput->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre_len; bool DehazeLenEqu = IfDehazeDataEqu(DehazeLen, 22); if(!DehazeLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Dehaze Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len != pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len) { //free free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur); free(pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre); //maloc pStore->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); } //store len pStore->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre_len = pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len; memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv, pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_max_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_min_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.yhist_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.yblk_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dark_th, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dark_th, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bright_min, pInput->DehazeTuningPara.dehaze_setting.DehazeData.bright_min, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.wt_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.wt_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.air_min, pInput->DehazeTuningPara.dehaze_setting.DehazeData.air_min, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_base, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_max, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off, pInput->DehazeTuningPara.dehaze_setting.DehazeData.tmax_off, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_air, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_tmax, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt, pInput->DehazeTuningPara.dehaze_setting.DehazeData.cfg_wt, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight, pInput->DehazeTuningPara.dehaze_setting.DehazeData.bf_weight, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur, pInput->DehazeTuningPara.dehaze_setting.DehazeData.dc_weitcur, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma, pInput->DehazeTuningPara.dehaze_setting.DehazeData.range_sigma, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur, pInput->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_cur, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); memcpy(pStore->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre, pInput->DehazeTuningPara.dehaze_setting.DehazeData.space_sigma_pre, sizeof(float)*pInput->DehazeTuningPara.dehaze_setting.DehazeData.EnvLv_len); //enhance int EnhanceLen[3]; EnhanceLen[0] = pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len; EnhanceLen[1] = pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len; EnhanceLen[2] = pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma_len; bool EnhanceLenEqu = IfDehazeDataEqu(EnhanceLen, 3); if(!EnhanceLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Enhance Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len != pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len) { //free free(pStore->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv); free(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value); free(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma); //malloc pStore->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); } //store len pStore->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len = pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len; pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value_len = pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len; pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma_len = pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len; memcpy(pStore->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv, pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv, sizeof(float)*pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); memcpy(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value, pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_value, sizeof(float)*pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); memcpy(pStore->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma, pInput->DehazeTuningPara.enhance_setting.EnhanceData.enhance_chroma, sizeof(float)*pInput->DehazeTuningPara.enhance_setting.EnhanceData.EnvLv_len); //hist int HistLen[7]; HistLen[0] = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; HistLen[1] = pInput->DehazeTuningPara.hist_setting.HistData.hist_gratio_len; HistLen[2] = pInput->DehazeTuningPara.hist_setting.HistData.hist_th_off_len; HistLen[3] = pInput->DehazeTuningPara.hist_setting.HistData.hist_k_len; HistLen[4] = pInput->DehazeTuningPara.hist_setting.HistData.hist_min_len; HistLen[5] = pInput->DehazeTuningPara.hist_setting.HistData.hist_scale_len; HistLen[6] = pInput->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len; bool HistLenEqu = IfDehazeDataEqu(HistLen, 7); if(!HistLenEqu) { LOGE_ADEHAZE("%s: Input Dehaze Hist Data length is NOT EQUAL !!!\n", __FUNCTION__ ); return XCAM_RETURN_ERROR_FAILED; } if(pStore->DehazeTuningPara.hist_setting.HistData.EnvLv_len != pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len) { //free free(pStore->DehazeTuningPara.hist_setting.HistData.EnvLv); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_k); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_min); free(pStore->DehazeTuningPara.hist_setting.HistData.hist_scale); free(pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio); //malloc pStore->DehazeTuningPara.hist_setting.HistData.EnvLv = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_k = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_min = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.hist_scale = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio = (float *) malloc(sizeof(float) * pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); } //store len pStore->DehazeTuningPara.hist_setting.HistData.EnvLv_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_k_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_min_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.hist_scale_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio_len = pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len; memcpy(pStore->DehazeTuningPara.hist_setting.HistData.EnvLv, pInput->DehazeTuningPara.hist_setting.HistData.EnvLv, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_gratio, pInput->DehazeTuningPara.hist_setting.HistData.hist_gratio, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_th_off, pInput->DehazeTuningPara.hist_setting.HistData.hist_th_off, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_k, pInput->DehazeTuningPara.hist_setting.HistData.hist_k, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_min, pInput->DehazeTuningPara.hist_setting.HistData.hist_min, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.hist_scale, pInput->DehazeTuningPara.hist_setting.HistData.hist_scale, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); memcpy(pStore->DehazeTuningPara.hist_setting.HistData.cfg_gratio, pInput->DehazeTuningPara.hist_setting.HistData.cfg_gratio, sizeof(float)*pInput->DehazeTuningPara.hist_setting.HistData.EnvLv_len); //other pStore->DehazeTuningPara.Enable = pInput->DehazeTuningPara.Enable; pStore->DehazeTuningPara.cfg_alpha = pInput->DehazeTuningPara.cfg_alpha; pStore->DehazeTuningPara.dehaze_setting.en = pInput->DehazeTuningPara.dehaze_setting.en; pStore->DehazeTuningPara.dehaze_setting.air_lc_en = pInput->DehazeTuningPara.dehaze_setting.air_lc_en; pStore->DehazeTuningPara.dehaze_setting.pre_wet = pInput->DehazeTuningPara.dehaze_setting.pre_wet; pStore->DehazeTuningPara.dehaze_setting.stab_fnum = pInput->DehazeTuningPara.dehaze_setting.stab_fnum; pStore->DehazeTuningPara.dehaze_setting.sigma = pInput->DehazeTuningPara.dehaze_setting.sigma; pStore->DehazeTuningPara.dehaze_setting.wt_sigma = pInput->DehazeTuningPara.dehaze_setting.wt_sigma; pStore->DehazeTuningPara.dehaze_setting.air_sigma = pInput->DehazeTuningPara.dehaze_setting.air_sigma; pStore->DehazeTuningPara.dehaze_setting.tmax_sigma = pInput->DehazeTuningPara.dehaze_setting.tmax_sigma; pStore->DehazeTuningPara.enhance_setting.en = pInput->DehazeTuningPara.enhance_setting.en; memcpy(pStore->DehazeTuningPara.enhance_setting.enhance_curve, pInput->DehazeTuningPara.enhance_setting.enhance_curve, sizeof(float) * 17); pStore->DehazeTuningPara.hist_setting.en = pInput->DehazeTuningPara.hist_setting.en; pStore->DehazeTuningPara.hist_setting.hist_para_en = pInput->DehazeTuningPara.hist_setting.hist_para_en; return ret; } XCamReturn rk_aiq_uapi_adehaze_SetAttrib(RkAiqAlgoContext *ctx, adehaze_sw_V2_t attr, bool need_sync) { XCamReturn ret = XCAM_RETURN_NO_ERROR; AdehazeHandle_t * AdehazeHandle = (AdehazeHandle_t *)ctx; if(CHECK_ISP_HW_V20()) { AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.mode = attr.AdehazeAtrrV20.mode; if(attr.AdehazeAtrrV20.mode == DEHAZE_API_MANUAL) memcpy(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stManual, &attr.AdehazeAtrrV20.stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); else if(attr.AdehazeAtrrV20.mode == DEHAZE_API_TOOL) { ret = rk_aiq_uapi_adehaze_SetToolV20(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stTool, &attr.AdehazeAtrrV20.stTool); if(ret != XCAM_RETURN_NO_ERROR) return XCAM_RETURN_ERROR_FAILED; } else if(attr.AdehazeAtrrV20.mode == DEHAZE_API_ENHANCE_MANUAL) memcpy(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stEnhanceManual, &attr.AdehazeAtrrV20.stEnhanceManual, sizeof(rk_aiq_dehaze_enhance_t)); } else if(CHECK_ISP_HW_V21()) { AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.mode = attr.AdehazeAtrrV21.mode; if(attr.AdehazeAtrrV21.mode == DEHAZE_API_MANUAL) memcpy(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stManual, &attr.AdehazeAtrrV21.stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); else if(attr.AdehazeAtrrV21.mode == DEHAZE_API_TOOL) { ret = rk_aiq_uapi_adehaze_SetToolV21(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stTool, &attr.AdehazeAtrrV21.stTool); if(ret != XCAM_RETURN_NO_ERROR) return XCAM_RETURN_ERROR_FAILED; } else if(attr.AdehazeAtrrV21.mode == DEHAZE_API_ENHANCE_MANUAL) memcpy(&AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stEnhanceManual, &attr.AdehazeAtrrV21.stEnhanceManual, sizeof(rk_aiq_dehaze_enhance_t)); } return ret; } XCamReturn rk_aiq_uapi_adehaze_GetAttrib(RkAiqAlgoContext *ctx, adehaze_sw_V2_t *attr) { XCamReturn ret = XCAM_RETURN_NO_ERROR; AdehazeHandle_t * AdehazeHandle = (AdehazeHandle_t *)ctx; attr->HWversion = AdehazeHandle->AdehazeAtrr.HWversion; if(CHECK_ISP_HW_V20()) { attr->AdehazeAtrrV20.mode = AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.mode; memcpy(&attr->AdehazeAtrrV20.stManual, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); ret = rk_aiq_uapi_adehaze_SetToolV20(&attr->AdehazeAtrrV20.stTool, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stTool); if(ret != XCAM_RETURN_NO_ERROR) return XCAM_RETURN_ERROR_FAILED; memcpy(&attr->AdehazeAtrrV20.stEnhanceManual, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV20.stEnhanceManual, sizeof(rk_aiq_dehaze_enhance_t)); } else if(CHECK_ISP_HW_V21()) { attr->AdehazeAtrrV21.mode = AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.mode; memcpy(&attr->AdehazeAtrrV21.stManual, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stManual, sizeof(rk_aiq_dehaze_M_attrib_t)); ret = rk_aiq_uapi_adehaze_SetToolV21(&attr->AdehazeAtrrV21.stTool, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stTool); if(ret != XCAM_RETURN_NO_ERROR) return XCAM_RETURN_ERROR_FAILED; memcpy(&attr->AdehazeAtrrV21.stEnhanceManual, &AdehazeHandle->AdehazeAtrr.AdehazeAtrrV21.stEnhanceManual, sizeof(rk_aiq_dehaze_enhance_t)); } return ret; }