/* 
 | 
 *  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 "Isp21Params.h" 
 | 
  
 | 
namespace RkCam { 
 | 
  
 | 
#define ISP2X_WBGAIN_FIXSCALE_BIT  8//check 
 | 
#define ISP2X_BLC_BIT_MAX 12 
 | 
  
 | 
template<class T> 
 | 
void Isp21Params::convertAiqAwbGainToIsp21Params(T& isp_cfg, 
 | 
        const rk_aiq_wb_gain_t& awb_gain, const rk_aiq_isp_blc_v21_t &blc, 
 | 
        bool awb_gain_update) 
 | 
{ 
 | 
  
 | 
    if(awb_gain_update) { 
 | 
        isp_cfg.module_ens |= 1LL << RK_ISP2X_AWB_GAIN_ID; 
 | 
        isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_AWB_GAIN_ID; 
 | 
        isp_cfg.module_en_update |= 1LL << RK_ISP2X_AWB_GAIN_ID; 
 | 
    } else { 
 | 
        return; 
 | 
    } 
 | 
  
 | 
    struct isp21_awb_gain_cfg *  cfg = &isp_cfg.others.awb_gain_cfg; 
 | 
    uint16_t max_wb_gain = (1 << (ISP2X_WBGAIN_FIXSCALE_BIT + 3)) - 1; 
 | 
    rk_aiq_wb_gain_t awb_gain1 = awb_gain; 
 | 
    if(blc.v0.enable) { 
 | 
        awb_gain1.bgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc.v0.blc_b); 
 | 
        awb_gain1.gbgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc.v0.blc_gb); 
 | 
        awb_gain1.rgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc.v0.blc_r); 
 | 
        awb_gain1.grgain *= (float)((1 << ISP2X_BLC_BIT_MAX) - 1) / ((1 << ISP2X_BLC_BIT_MAX) - 1 - blc.v0.blc_gr); 
 | 
    } 
 | 
    uint16_t R = (uint16_t)(0.5 + awb_gain1.rgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT)); 
 | 
    uint16_t B = (uint16_t)(0.5 + awb_gain1.bgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT)); 
 | 
    uint16_t Gr = (uint16_t)(0.5 + awb_gain1.grgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT)); 
 | 
    uint16_t Gb = (uint16_t)(0.5 + awb_gain1.gbgain * (1 << ISP2X_WBGAIN_FIXSCALE_BIT)); 
 | 
    cfg->gain0_red       = R > max_wb_gain ? max_wb_gain : R; 
 | 
    cfg->gain0_blue      = B > max_wb_gain ? max_wb_gain : B; 
 | 
    cfg->gain0_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ; 
 | 
    cfg->gain0_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb; 
 | 
    cfg->gain1_red       = R > max_wb_gain ? max_wb_gain : R; 
 | 
    cfg->gain1_blue      = B > max_wb_gain ? max_wb_gain : B; 
 | 
    cfg->gain1_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ; 
 | 
    cfg->gain1_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb; 
 | 
    cfg->gain2_red       = R > max_wb_gain ? max_wb_gain : R; 
 | 
    cfg->gain2_blue      = B > max_wb_gain ? max_wb_gain : B; 
 | 
    cfg->gain2_green_r   = Gr > max_wb_gain ? max_wb_gain : Gr ; 
 | 
    cfg->gain2_green_b   = Gb > max_wb_gain ? max_wb_gain : Gb; 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqBlcToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
                                        rk_aiq_isp_blc_v21_t &blc) 
 | 
{ 
 | 
    LOGD_CAMHW_SUBM(ISP20PARAM_SUBM, "%s:(%d) enter \n", __FUNCTION__, __LINE__); 
 | 
  
 | 
    if(blc.v0.enable) { 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_BLS; 
 | 
    } 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_BLS; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_BLS; 
 | 
  
 | 
    isp_cfg.others.bls_cfg.enable_auto = 0; 
 | 
    isp_cfg.others.bls_cfg.en_windows = 0; 
 | 
  
 | 
    isp_cfg.others.bls_cfg.bls_window1.h_offs = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window1.v_offs = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window1.h_size = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window1.v_size = 0; 
 | 
  
 | 
    isp_cfg.others.bls_cfg.bls_window2.h_offs = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window2.v_offs = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window2.h_size = 0; 
 | 
    isp_cfg.others.bls_cfg.bls_window2.v_size = 0; 
 | 
  
 | 
    isp_cfg.others.bls_cfg.bls_samples = 0; 
 | 
  
 | 
    isp_cfg.others.bls_cfg.fixed_val.r = blc.v0.blc_r; 
 | 
    isp_cfg.others.bls_cfg.fixed_val.gr = blc.v0.blc_gr; 
 | 
    isp_cfg.others.bls_cfg.fixed_val.gb = blc.v0.blc_gb; 
 | 
    isp_cfg.others.bls_cfg.fixed_val.b = blc.v0.blc_b; 
 | 
  
 | 
    //TODO bls1 params 
 | 
    isp_cfg.others.bls_cfg.bls1_en = 0; 
 | 
  
 | 
    LOGD_CAMHW_SUBM(ISP20PARAM_SUBM, "%s:(%d) exit \n", __FUNCTION__, __LINE__); 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqAdehazeToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
        const rk_aiq_isp_dehaze_v21_t& dhaze) 
 | 
{ 
 | 
  
 | 
    bool enable = true; 
 | 
    if(enable) { 
 | 
        isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ; 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_DHAZ; 
 | 
        isp_cfg.module_cfg_update |= ISP2X_MODULE_DHAZ; 
 | 
    } 
 | 
    else { 
 | 
        isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ; 
 | 
        isp_cfg.module_ens &= ~(ISP2X_MODULE_DHAZ); 
 | 
        isp_cfg.module_cfg_update &= ~(ISP2X_MODULE_DHAZ); 
 | 
    } 
 | 
  
 | 
    struct isp21_dhaz_cfg *  cfg = &isp_cfg.others.dhaz_cfg; 
 | 
  
 | 
    //isp_cfg.others.dhaz_cfg.enhance_en = dhaze.enhance_en; 
 | 
    //isp_cfg.others.dhaz_cfg.dc_en  = dhaze.dc_en; 
 | 
    //LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s:(%d) cfg->dc_en:%d cfg->enhance_en:%d\n", __FUNCTION__, __LINE__, cfg->dc_en,cfg->enhance_en); 
 | 
  
 | 
    cfg->enhance_en     = dhaze.enhance_en; 
 | 
    cfg->air_lc_en  = dhaze.air_lc_en; 
 | 
    cfg->hpara_en   = dhaze.hpara_en; 
 | 
    cfg->hist_en    = dhaze.hist_en; 
 | 
    cfg->dc_en  = dhaze.dc_en; 
 | 
    cfg->yblk_th    = dhaze.yblk_th; 
 | 
    cfg->yhist_th   = dhaze.yhist_th; 
 | 
    cfg->dc_max_th  = dhaze.dc_max_th; 
 | 
    cfg->dc_min_th  = dhaze.dc_min_th; 
 | 
    cfg->wt_max     = dhaze.wt_max; 
 | 
    cfg->bright_max     = dhaze.bright_max; 
 | 
    cfg->bright_min     = dhaze.bright_min; 
 | 
    cfg->tmax_base  = dhaze.tmax_base; 
 | 
    cfg->dark_th    = dhaze.dark_th; 
 | 
    cfg->air_max    = dhaze.air_max; 
 | 
    cfg->air_min    = dhaze.air_min; 
 | 
    cfg->tmax_max   = dhaze.tmax_max; 
 | 
    cfg->tmax_off   = dhaze.tmax_off; 
 | 
    cfg->hist_k     = dhaze.hist_k; 
 | 
    cfg->hist_th_off    = dhaze.hist_th_off; 
 | 
    cfg->hist_min   = dhaze.hist_min; 
 | 
    cfg->hist_gratio    = dhaze.hist_gratio; 
 | 
    cfg->hist_scale     = dhaze.hist_scale; 
 | 
    cfg->enhance_value  = dhaze.enhance_value; 
 | 
    cfg->enhance_chroma     = dhaze.enhance_chroma; 
 | 
    cfg->iir_wt_sigma   = dhaze.iir_wt_sigma; 
 | 
    cfg->iir_sigma  = dhaze.iir_sigma; 
 | 
    cfg->stab_fnum  = dhaze.stab_fnum; 
 | 
    cfg->iir_tmax_sigma     = dhaze.iir_tmax_sigma; 
 | 
    cfg->iir_air_sigma  = dhaze.iir_air_sigma; 
 | 
    cfg->iir_pre_wet    = dhaze.iir_pre_wet; 
 | 
    cfg->cfg_wt     = dhaze.cfg_wt; 
 | 
    cfg->cfg_air    = dhaze.cfg_air; 
 | 
    cfg->cfg_alpha  = dhaze.cfg_alpha; 
 | 
    cfg->cfg_gratio     = dhaze.cfg_gratio; 
 | 
    cfg->cfg_tmax   = dhaze.cfg_tmax; 
 | 
    cfg->range_sima     = dhaze.range_sima; 
 | 
    cfg->space_sigma_cur    = dhaze.space_sigma_cur; 
 | 
    cfg->space_sigma_pre    = dhaze.space_sigma_pre; 
 | 
    cfg->dc_weitcur     = dhaze.dc_weitcur; 
 | 
    cfg->bf_weight  = dhaze.bf_weight; 
 | 
    cfg->gaus_h0    = dhaze.gaus_h0; 
 | 
    cfg->gaus_h1    = dhaze.gaus_h1; 
 | 
    cfg->gaus_h2    = dhaze.gaus_h2; 
 | 
  
 | 
    for(int i = 0; i < 17; i++) 
 | 
        cfg->enh_curve[i]     = dhaze.enh_curve[i]; 
 | 
  
 | 
    //LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s:(%d) cfg->dc_en:%d cfg->enhance_en:%d\n", __FUNCTION__, __LINE__, cfg->dc_en,cfg->enhance_en); 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqCcmToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
                                        const rk_aiq_ccm_cfg_t& ccm) 
 | 
{ 
 | 
    if(ccm.ccmEnable) { 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_CCM; 
 | 
    } 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_CCM; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_CCM; 
 | 
  
 | 
    struct isp21_ccm_cfg *  cfg = &isp_cfg.others.ccm_cfg; 
 | 
    const float *coeff = ccm.matrix; 
 | 
    const float *offset = ccm.offs; 
 | 
  
 | 
    cfg->coeff0_r =  (coeff[0] - 1) > 0 ? (short)((coeff[0] - 1) * 128 + 0.5) : (short)((coeff[0] - 1) * 128 - 0.5); //check -128? 
 | 
    cfg->coeff1_r =  coeff[1] > 0 ? (short)(coeff[1] * 128 + 0.5) : (short)(coeff[1] * 128 - 0.5); 
 | 
    cfg->coeff2_r =  coeff[2] > 0 ? (short)(coeff[2] * 128 + 0.5) : (short)(coeff[2] * 128 - 0.5); 
 | 
    cfg->coeff0_g =  coeff[3] > 0 ? (short)(coeff[3] * 128 + 0.5) : (short)(coeff[3] * 128 - 0.5); 
 | 
    cfg->coeff1_g =  (coeff[4] - 1) > 0 ? (short)((coeff[4] - 1) * 128 + 0.5) : (short)((coeff[4] - 1) * 128 - 0.5); 
 | 
    cfg->coeff2_g =  coeff[5] > 0 ? (short)(coeff[5] * 128 + 0.5) : (short)(coeff[5] * 128 - 0.5); 
 | 
    cfg->coeff0_b =  coeff[6] > 0 ? (short)(coeff[6] * 128 + 0.5) : (short)(coeff[6] * 128 - 0.5); 
 | 
    cfg->coeff1_b =  coeff[7] > 0 ? (short)(coeff[7] * 128 + 0.5) : (short)(coeff[7] * 128 - 0.5); 
 | 
    cfg->coeff2_b =  (coeff[8] - 1) > 0 ? (short)((coeff[8] - 1) * 128 + 0.5) : (short)((coeff[8] - 1) * 128 - 0.5); 
 | 
  
 | 
    cfg->offset_r = offset[0] > 0 ? (short)(offset[0] + 0.5) : (short)(offset[0] - 0.5);// for 12bit 
 | 
    cfg->offset_g = offset[1] > 0 ? (short)(offset[1] + 0.5) : (int)(offset[1] - 0.5); 
 | 
    cfg->offset_b = offset[2] > 0 ? (short)(offset[2] + 0.5) : (short)(offset[2] - 0.5); 
 | 
  
 | 
    cfg->coeff0_y = (u16 )ccm.rgb2y_para[0]; 
 | 
    cfg->coeff1_y = (u16 )ccm.rgb2y_para[1]; 
 | 
    cfg->coeff2_y = (u16 )ccm.rgb2y_para[2]; 
 | 
    cfg->bound_bit = (u8)ccm.bound_bit;//check 
 | 
    cfg->highy_adjust_dis = 1; 
 | 
  
 | 
    for( int i = 0; i < 17; i++) 
 | 
    { 
 | 
        cfg->alp_y[i] = (u16)(ccm.alp_y[i]); 
 | 
    } 
 | 
  
 | 
} 
 | 
  
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqAwbToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
                                        const rk_aiq_awb_stat_cfg_v201_t& awb_meas, 
 | 
                                        bool awb_cfg_udpate) 
 | 
{ 
 | 
  
 | 
    if(awb_cfg_udpate) { 
 | 
        if(awb_meas.awbEnable) { 
 | 
            isp_cfg.module_ens |= ISP2X_MODULE_RAWAWB; 
 | 
            isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAWB; 
 | 
            isp_cfg.module_en_update |= ISP2X_MODULE_RAWAWB; 
 | 
        } 
 | 
    } else { 
 | 
        return; 
 | 
    } 
 | 
    struct isp21_rawawb_meas_cfg * awb_cfg_v201 = &isp_cfg.meas.rawawb; 
 | 
    awb_cfg_v201->rawawb_sel                =    awb_meas.frameChoose; 
 | 
    awb_cfg_v201->sw_rawawb_xy_en0          =  awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_uv_en0          =  awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_en0       =  awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_xy_en1          =  awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_uv_en1          =  awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_en1          =  awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_blk_wei_en0    =  awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_blk_wei_en1    =  awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    awb_cfg_v201->sw_rawlsc_bypass_en    =  awb_meas.lscBypEnable;//check 
 | 
    awb_cfg_v201->sw_rawawb_blk_measure_enable    =  awb_meas.blkStatisticsEnable; 
 | 
    awb_cfg_v201->sw_rawawb_blk_measure_mode     =  awb_meas.blkMeasureMode; 
 | 
    awb_cfg_v201->sw_rawawb_blk_measure_xytype     =  awb_meas.xyRangeTypeForBlkStatistics; 
 | 
    awb_cfg_v201->sw_rawawb_blk_measure_illu_idx     =  awb_meas.illIdxForBlkStatistics; 
 | 
    awb_cfg_v201->sw_rawawb_blk_with_luma_wei_en  =  awb_meas.blkStatisticsWithLumaWeightEn; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_wei_en0   =  awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_wei_en1   =  awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_hist_xytype    =  awb_meas.xyRangeTypeForWpHist; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_ls_idx0       =  awb_meas.threeDyuvIllu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_ls_idx1       =  awb_meas.threeDyuvIllu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_ls_idx2       =  awb_meas.threeDyuvIllu[2]; 
 | 
    awb_cfg_v201->sw_rawawb_3dyuv_ls_idx3       =  awb_meas.threeDyuvIllu[3]; 
 | 
    awb_cfg_v201->sw_rawawb_light_num      =  awb_meas.lightNum; 
 | 
    awb_cfg_v201->sw_rawawb_h_offs         =  awb_meas.windowSet[0]; 
 | 
    awb_cfg_v201->sw_rawawb_v_offs         =  awb_meas.windowSet[1]; 
 | 
    awb_cfg_v201->sw_rawawb_h_size         =  awb_meas.windowSet[2]; 
 | 
    awb_cfg_v201->sw_rawawb_v_size         =  awb_meas.windowSet[3]; 
 | 
    awb_cfg_v201->sw_rawawb_wind_size = awb_meas.dsMode; 
 | 
    awb_cfg_v201->sw_rawawb_r_max          =  awb_meas.maxR; 
 | 
    awb_cfg_v201->sw_rawawb_g_max          =  awb_meas.maxG; 
 | 
    awb_cfg_v201->sw_rawawb_b_max          =  awb_meas.maxB; 
 | 
    awb_cfg_v201->sw_rawawb_y_max          =  awb_meas.maxY; 
 | 
    awb_cfg_v201->sw_rawawb_r_min          =  awb_meas.minR; 
 | 
    awb_cfg_v201->sw_rawawb_g_min          =  awb_meas.minG; 
 | 
    awb_cfg_v201->sw_rawawb_b_min          =  awb_meas.minB; 
 | 
    awb_cfg_v201->sw_rawawb_y_min          =  awb_meas.minY; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_0    =  awb_meas.uvRange_param[0].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_0    =  awb_meas.uvRange_param[0].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_0    =  awb_meas.uvRange_param[0].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_0    =  awb_meas.uvRange_param[0].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_0    =  awb_meas.uvRange_param[0].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_0    =  awb_meas.uvRange_param[0].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_0    =  awb_meas.uvRange_param[0].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_0    =  awb_meas.uvRange_param[0].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_0      =  awb_meas.uvRange_param[0].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_0      =  awb_meas.uvRange_param[0].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_0      =  awb_meas.uvRange_param[0].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_0      =  awb_meas.uvRange_param[0].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_1    =  awb_meas.uvRange_param[1].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_1    =  awb_meas.uvRange_param[1].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_1    =  awb_meas.uvRange_param[1].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_1    =  awb_meas.uvRange_param[1].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_1    =  awb_meas.uvRange_param[1].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_1    =  awb_meas.uvRange_param[1].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_1    =  awb_meas.uvRange_param[1].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_1    =  awb_meas.uvRange_param[1].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_1      =  awb_meas.uvRange_param[1].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_1      =  awb_meas.uvRange_param[1].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_1      =  awb_meas.uvRange_param[1].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_1      =  awb_meas.uvRange_param[1].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_2    =  awb_meas.uvRange_param[2].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_2    =  awb_meas.uvRange_param[2].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_2    =  awb_meas.uvRange_param[2].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_2    =  awb_meas.uvRange_param[2].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_2    =  awb_meas.uvRange_param[2].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_2    =  awb_meas.uvRange_param[2].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_2    =  awb_meas.uvRange_param[2].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_2    =  awb_meas.uvRange_param[2].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_2      =  awb_meas.uvRange_param[2].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_2      =  awb_meas.uvRange_param[2].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_2      =  awb_meas.uvRange_param[2].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_2      =  awb_meas.uvRange_param[2].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_3    =  awb_meas.uvRange_param[3].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_3    =  awb_meas.uvRange_param[3].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_3    =  awb_meas.uvRange_param[3].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_3    =  awb_meas.uvRange_param[3].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_3    =  awb_meas.uvRange_param[3].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_3    =  awb_meas.uvRange_param[3].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_3    =  awb_meas.uvRange_param[3].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_3    =  awb_meas.uvRange_param[3].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_3      =  awb_meas.uvRange_param[3].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_3      =  awb_meas.uvRange_param[3].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_3      =  awb_meas.uvRange_param[3].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_3      =  awb_meas.uvRange_param[3].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_4    =  awb_meas.uvRange_param[4].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_4    =  awb_meas.uvRange_param[4].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_4    =  awb_meas.uvRange_param[4].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_4    =  awb_meas.uvRange_param[4].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_4    =  awb_meas.uvRange_param[4].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_4    =  awb_meas.uvRange_param[4].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_4    =  awb_meas.uvRange_param[4].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_4    =  awb_meas.uvRange_param[4].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_4      =  awb_meas.uvRange_param[4].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_4      =  awb_meas.uvRange_param[4].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_4      =  awb_meas.uvRange_param[4].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_4      =  awb_meas.uvRange_param[4].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_5    =  awb_meas.uvRange_param[5].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_5    =  awb_meas.uvRange_param[5].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_5    =  awb_meas.uvRange_param[5].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_5    =  awb_meas.uvRange_param[5].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_5    =  awb_meas.uvRange_param[5].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_5    =  awb_meas.uvRange_param[5].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_5    =  awb_meas.uvRange_param[5].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_5    =  awb_meas.uvRange_param[5].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_5      =  awb_meas.uvRange_param[5].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_5      =  awb_meas.uvRange_param[5].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_5      =  awb_meas.uvRange_param[5].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_5      =  awb_meas.uvRange_param[5].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_u_6    =  awb_meas.uvRange_param[6].pu_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex0_v_6    =  awb_meas.uvRange_param[6].pv_region[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_u_6    =  awb_meas.uvRange_param[6].pu_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex1_v_6    =  awb_meas.uvRange_param[6].pv_region[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_u_6    =  awb_meas.uvRange_param[6].pu_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex2_v_6    =  awb_meas.uvRange_param[6].pv_region[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_u_6    =  awb_meas.uvRange_param[6].pu_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_vertex3_v_6    =  awb_meas.uvRange_param[6].pv_region[3]; 
 | 
    awb_cfg_v201->sw_rawawb_islope01_6      =  awb_meas.uvRange_param[6].slope_inv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_islope12_6      =  awb_meas.uvRange_param[6].slope_inv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_islope23_6      =  awb_meas.uvRange_param[6].slope_inv[2]; 
 | 
    awb_cfg_v201->sw_rawawb_islope30_6      =  awb_meas.uvRange_param[6].slope_inv[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat0_u =  awb_meas.icrgb2RYuv_matrix[0]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat1_u =  awb_meas.icrgb2RYuv_matrix[1]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat2_u =  awb_meas.icrgb2RYuv_matrix[2]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvofs_u =  awb_meas.icrgb2RYuv_matrix[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat0_v =  awb_meas.icrgb2RYuv_matrix[4]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat1_v =  awb_meas.icrgb2RYuv_matrix[5]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat2_v =  awb_meas.icrgb2RYuv_matrix[6]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvofs_v =  awb_meas.icrgb2RYuv_matrix[7]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat0_y =  awb_meas.icrgb2RYuv_matrix[8]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat1_y =  awb_meas.icrgb2RYuv_matrix[9]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvmat2_y =  awb_meas.icrgb2RYuv_matrix[10]; 
 | 
    awb_cfg_v201->sw_rawawb_rgb2ryuvofs_y =  awb_meas.icrgb2RYuv_matrix[11]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu0_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[0]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu1_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[1]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[2]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu3_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu4_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[4]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu5_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[5]; 
 | 
    awb_cfg_v201->sw_rawawb_th0_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[0]; 
 | 
    awb_cfg_v201->sw_rawawb_th1_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[1]; 
 | 
    awb_cfg_v201->sw_rawawb_th2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[2]; 
 | 
    awb_cfg_v201->sw_rawawb_th3_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[3]; 
 | 
    awb_cfg_v201->sw_rawawb_th4_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[4]; 
 | 
    awb_cfg_v201->sw_rawawb_th5_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[5]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls0_u =  awb_meas.ic3Dyuv2Range_param[0].lineP1[0]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls0_v =  awb_meas.ic3Dyuv2Range_param[0].lineP1[1]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls0_y =  awb_meas.ic3Dyuv2Range_param[0].lineP1[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls0_u =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls0_v =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls0_y =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[2]; 
 | 
    awb_cfg_v201->sw_rawawb_dis_x1x2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].disP1P2; 
 | 
    awb_cfg_v201->sw_rawawb_rotu0_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[0]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu1_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[1]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[2]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu3_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu4_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[4]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu5_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[5]; 
 | 
    awb_cfg_v201->sw_rawawb_th0_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[0]; 
 | 
    awb_cfg_v201->sw_rawawb_th1_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[1]; 
 | 
    awb_cfg_v201->sw_rawawb_th2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[2]; 
 | 
    awb_cfg_v201->sw_rawawb_th3_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[3]; 
 | 
    awb_cfg_v201->sw_rawawb_th4_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[4]; 
 | 
    awb_cfg_v201->sw_rawawb_th5_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[5]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls1_u =  awb_meas.ic3Dyuv2Range_param[1].lineP1[0]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls1_v =  awb_meas.ic3Dyuv2Range_param[1].lineP1[1]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls1_y =  awb_meas.ic3Dyuv2Range_param[1].lineP1[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls1_u =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls1_v =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls1_y =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[2]; 
 | 
    awb_cfg_v201->sw_rawawb_dis_x1x2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].disP1P2; 
 | 
    awb_cfg_v201->sw_rawawb_rotu0_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[0]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu1_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[1]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[2]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu3_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu4_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[4]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu5_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[5]; 
 | 
    awb_cfg_v201->sw_rawawb_th0_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[0]; 
 | 
    awb_cfg_v201->sw_rawawb_th1_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[1]; 
 | 
    awb_cfg_v201->sw_rawawb_th2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[2]; 
 | 
    awb_cfg_v201->sw_rawawb_th3_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[3]; 
 | 
    awb_cfg_v201->sw_rawawb_th4_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[4]; 
 | 
    awb_cfg_v201->sw_rawawb_th5_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[5]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls2_u =  awb_meas.ic3Dyuv2Range_param[2].lineP1[0]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls2_v =  awb_meas.ic3Dyuv2Range_param[2].lineP1[1]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls2_y =  awb_meas.ic3Dyuv2Range_param[2].lineP1[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls2_u =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls2_v =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls2_y =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[2]; 
 | 
    awb_cfg_v201->sw_rawawb_dis_x1x2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].disP1P2; 
 | 
  
 | 
    awb_cfg_v201->sw_rawawb_rotu0_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[0]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu1_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[1]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[2]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu3_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[3]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu4_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[4]; 
 | 
    awb_cfg_v201->sw_rawawb_rotu5_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[5]; 
 | 
    awb_cfg_v201->sw_rawawb_th0_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[0]; 
 | 
    awb_cfg_v201->sw_rawawb_th1_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[1]; 
 | 
    awb_cfg_v201->sw_rawawb_th2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[2]; 
 | 
    awb_cfg_v201->sw_rawawb_th3_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[3]; 
 | 
    awb_cfg_v201->sw_rawawb_th4_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[4]; 
 | 
    awb_cfg_v201->sw_rawawb_th5_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[5]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls3_u =  awb_meas.ic3Dyuv2Range_param[3].lineP1[0]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls3_v =  awb_meas.ic3Dyuv2Range_param[3].lineP1[1]; 
 | 
    awb_cfg_v201->sw_rawawb_coor_x1_ls3_y =  awb_meas.ic3Dyuv2Range_param[3].lineP1[2]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls3_u =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[0]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls3_v =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[1]; 
 | 
    awb_cfg_v201->sw_rawawb_vec_x21_ls3_y =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[2]; 
 | 
    awb_cfg_v201->sw_rawawb_dis_x1x2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].disP1P2; 
 | 
    awb_cfg_v201->sw_rawawb_wt0            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[0]; 
 | 
    awb_cfg_v201->sw_rawawb_wt1            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[1]; 
 | 
    awb_cfg_v201->sw_rawawb_wt2            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[2]; 
 | 
    awb_cfg_v201->sw_rawawb_mat0_x         =  awb_meas.rgb2xy_param.rotationMat[0]; 
 | 
    awb_cfg_v201->sw_rawawb_mat1_x         =  awb_meas.rgb2xy_param.rotationMat[1]; 
 | 
    awb_cfg_v201->sw_rawawb_mat2_x         =  awb_meas.rgb2xy_param.rotationMat[2]; 
 | 
    awb_cfg_v201->sw_rawawb_mat0_y         =  awb_meas.rgb2xy_param.rotationMat[3]; 
 | 
    awb_cfg_v201->sw_rawawb_mat1_y         =  awb_meas.rgb2xy_param.rotationMat[4]; 
 | 
    awb_cfg_v201->sw_rawawb_mat2_y         =  awb_meas.rgb2xy_param.rotationMat[5]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_0       =  awb_meas.xyRange_param[0].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_0       =  awb_meas.xyRange_param[0].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_0       =  awb_meas.xyRange_param[0].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_0       =  awb_meas.xyRange_param[0].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_0       =  awb_meas.xyRange_param[0].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_0       =  awb_meas.xyRange_param[0].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_0       =  awb_meas.xyRange_param[0].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_0       =  awb_meas.xyRange_param[0].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_1       =  awb_meas.xyRange_param[1].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_1       =  awb_meas.xyRange_param[1].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_1       =  awb_meas.xyRange_param[1].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_1       =  awb_meas.xyRange_param[1].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_1       =  awb_meas.xyRange_param[1].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_1       =  awb_meas.xyRange_param[1].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_1       =  awb_meas.xyRange_param[1].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_1       =  awb_meas.xyRange_param[1].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_2       =  awb_meas.xyRange_param[2].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_2       =  awb_meas.xyRange_param[2].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_2       =  awb_meas.xyRange_param[2].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_2       =  awb_meas.xyRange_param[2].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_2       =  awb_meas.xyRange_param[2].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_2       =  awb_meas.xyRange_param[2].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_2       =  awb_meas.xyRange_param[2].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_2       =  awb_meas.xyRange_param[2].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_3       =  awb_meas.xyRange_param[3].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_3       =  awb_meas.xyRange_param[3].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_3       =  awb_meas.xyRange_param[3].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_3       =  awb_meas.xyRange_param[3].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_3       =  awb_meas.xyRange_param[3].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_3       =  awb_meas.xyRange_param[3].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_3       =  awb_meas.xyRange_param[3].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_3       =  awb_meas.xyRange_param[3].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_4       =  awb_meas.xyRange_param[4].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_4       =  awb_meas.xyRange_param[4].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_4       =  awb_meas.xyRange_param[4].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_4       =  awb_meas.xyRange_param[4].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_4       =  awb_meas.xyRange_param[4].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_4       =  awb_meas.xyRange_param[4].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_4       =  awb_meas.xyRange_param[4].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_4       =  awb_meas.xyRange_param[4].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_5       =  awb_meas.xyRange_param[5].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_5       =  awb_meas.xyRange_param[5].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_5       =  awb_meas.xyRange_param[5].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_5       =  awb_meas.xyRange_param[5].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_5       =  awb_meas.xyRange_param[5].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_5       =  awb_meas.xyRange_param[5].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_5       =  awb_meas.xyRange_param[5].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_5       =  awb_meas.xyRange_param[5].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x0_6       =  awb_meas.xyRange_param[6].NorrangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_x1_6       =  awb_meas.xyRange_param[6].NorrangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y0_6       =  awb_meas.xyRange_param[6].NorrangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_nor_y1_6       =  awb_meas.xyRange_param[6].NorrangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x0_6       =  awb_meas.xyRange_param[6].SperangeX[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_x1_6       =  awb_meas.xyRange_param[6].SperangeX[1]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y0_6       =  awb_meas.xyRange_param[6].SperangeY[0]; 
 | 
    awb_cfg_v201->sw_rawawb_big_y1_6       =  awb_meas.xyRange_param[6].SperangeY[1]; 
 | 
    awb_cfg_v201->sw_rawawb_pre_wbgain_inv_r       =  awb_meas.pre_wbgain_inv_r; 
 | 
    awb_cfg_v201->sw_rawawb_pre_wbgain_inv_g       =  awb_meas.pre_wbgain_inv_g; 
 | 
    awb_cfg_v201->sw_rawawb_pre_wbgain_inv_b       =  awb_meas.pre_wbgain_inv_b; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_excen0     =  awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_excen1     =  awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region0_measen   =  awb_meas.excludeWpRange[0].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_domain        =  awb_meas.excludeWpRange[0].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_xu0          =  awb_meas.excludeWpRange[0].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_xu1          =  awb_meas.excludeWpRange[0].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_yv0          =  awb_meas.excludeWpRange[0].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region0_yv1          =  awb_meas.excludeWpRange[0].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_excen0     =  awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_excen1     =  awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region1_measen   =  awb_meas.excludeWpRange[1].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_domain        =  awb_meas.excludeWpRange[1].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_xu0          =  awb_meas.excludeWpRange[1].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_xu1          =  awb_meas.excludeWpRange[1].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_yv0          =  awb_meas.excludeWpRange[1].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region1_yv1          =  awb_meas.excludeWpRange[1].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_excen0     =  awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_excen1     =  awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region2_measen   =  awb_meas.excludeWpRange[2].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_domain        =  awb_meas.excludeWpRange[2].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_xu0          =  awb_meas.excludeWpRange[2].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_xu1          =  awb_meas.excludeWpRange[2].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_yv0          =  awb_meas.excludeWpRange[2].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region2_yv1          =  awb_meas.excludeWpRange[2].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_excen0     =  awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_excen1     =  awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region3_measen   =  awb_meas.excludeWpRange[3].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_domain        =  awb_meas.excludeWpRange[3].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_xu0          =  awb_meas.excludeWpRange[3].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_xu1          =  awb_meas.excludeWpRange[3].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_yv0          =  awb_meas.excludeWpRange[3].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region3_yv1          =  awb_meas.excludeWpRange[3].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_excen0     =  awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_excen1     =  awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region4_measen   =  awb_meas.excludeWpRange[4].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_domain        =  awb_meas.excludeWpRange[4].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_xu0          =  awb_meas.excludeWpRange[4].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_xu1          =  awb_meas.excludeWpRange[4].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_yv0          =  awb_meas.excludeWpRange[4].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region4_yv1          =  awb_meas.excludeWpRange[4].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_excen0     =  awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_excen1     =  awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region5_measen   =  awb_meas.excludeWpRange[5].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_domain        =  awb_meas.excludeWpRange[5].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_xu0          =  awb_meas.excludeWpRange[5].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_xu1          =  awb_meas.excludeWpRange[5].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_yv0          =  awb_meas.excludeWpRange[5].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region5_yv1          =  awb_meas.excludeWpRange[5].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_excen0     =  awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_excen1     =  awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]; 
 | 
    //awb_cfg_v201->sw_rawawb_exc_wp_region6_measen   =  awb_meas.excludeWpRange[6].measureEnable; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_domain        =  awb_meas.excludeWpRange[6].domain; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_xu0          =  awb_meas.excludeWpRange[6].xu[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_xu1          =  awb_meas.excludeWpRange[6].xu[1]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_yv0          =  awb_meas.excludeWpRange[6].yv[0]; 
 | 
    awb_cfg_v201->sw_rawawb_exc_wp_region6_yv1          =  awb_meas.excludeWpRange[6].yv[1]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y0     =   awb_meas.wpDiffwei_y[0]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y1     =   awb_meas.wpDiffwei_y[1]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y2     =   awb_meas.wpDiffwei_y[2]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y3     =   awb_meas.wpDiffwei_y[3]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y4     =   awb_meas.wpDiffwei_y[4]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y5     =   awb_meas.wpDiffwei_y[5]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y6     =   awb_meas.wpDiffwei_y[6]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y7     =   awb_meas.wpDiffwei_y[7]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_y8     =   awb_meas.wpDiffwei_y[8]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w0     = awb_meas.wpDiffwei_w[0]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w1     = awb_meas.wpDiffwei_w[1]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w2     = awb_meas.wpDiffwei_w[2]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w3     = awb_meas.wpDiffwei_w[3]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w4     = awb_meas.wpDiffwei_w[4]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w5     = awb_meas.wpDiffwei_w[5]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w6     = awb_meas.wpDiffwei_w[6]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w7     = awb_meas.wpDiffwei_w[7]; 
 | 
    awb_cfg_v201->sw_rawawb_wp_luma_weicurve_w8     = awb_meas.wpDiffwei_w[8]; 
 | 
  
 | 
    for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) { 
 | 
        awb_cfg_v201->sw_rawawb_wp_blk_wei_w[i]          = awb_meas.blkWeight[i]; 
 | 
    } 
 | 
  
 | 
    awb_cfg_v201->sw_rawawb_blk_rtdw_measure_en =  awb_meas.blk_rtdw_measure_en; 
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqRawnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
        rk_aiq_isp_baynr_v21_t& rawnr) 
 | 
{ 
 | 
  
 | 
    struct isp21_baynr_cfg * p2DCfg = &isp_cfg.others.baynr_cfg; 
 | 
    struct isp21_bay3d_cfg * p3DCfg = &isp_cfg.others.bay3d_cfg; 
 | 
  
 | 
  
 | 
    LOGD_ANR("%s:%d: enter\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
    //bayernr 2d 
 | 
    if(rawnr.st2DParam.baynr_en) { 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_BAYNR; 
 | 
    } else { 
 | 
        isp_cfg.module_ens &= ~ISP2X_MODULE_BAYNR; 
 | 
    } 
 | 
  
 | 
    if(rawnr.st3DParam.bay3d_en_i) { 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_BAY3D; 
 | 
        isp_cfg.module_ens |= ISP2X_MODULE_BAYNR; 
 | 
    } else { 
 | 
        isp_cfg.module_ens &= ~ISP2X_MODULE_BAY3D; 
 | 
    } 
 | 
  
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_BAYNR; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_BAYNR; 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_BAY3D; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_BAY3D; 
 | 
  
 | 
  
 | 
    p2DCfg->sw_baynr_gauss_en = rawnr.st2DParam.baynr_gauss_en; 
 | 
    p2DCfg->sw_baynr_log_bypass = rawnr.st2DParam.baynr_log_bypass; 
 | 
  
 | 
    p2DCfg->sw_baynr_dgain1 = rawnr.st2DParam.baynr_dgain[1]; 
 | 
    p2DCfg->sw_baynr_dgain0 = rawnr.st2DParam.baynr_dgain[0]; 
 | 
    p2DCfg->sw_baynr_dgain2 = rawnr.st2DParam.baynr_dgain[2]; 
 | 
  
 | 
    p2DCfg->sw_baynr_pix_diff = rawnr.st2DParam.baynr_pix_diff; 
 | 
    p2DCfg->sw_baynr_diff_thld = rawnr.st2DParam.baynr_diff_thld; 
 | 
    p2DCfg->sw_baynr_softthld = rawnr.st2DParam.baynr_softthld; 
 | 
  
 | 
    p2DCfg->sw_bltflt_streng = rawnr.st2DParam.bltflt_streng; 
 | 
    p2DCfg->sw_baynr_reg_w1 = rawnr.st2DParam.baynr_reg_w1; 
 | 
  
 | 
    for(int i = 0; i < ISP21_BAYNR_XY_NUM; i++) { 
 | 
        p2DCfg->sw_sigma_x[i] = rawnr.st2DParam.sigma_x[i]; 
 | 
        p2DCfg->sw_sigma_y[i] = rawnr.st2DParam.sigma_y[i]; 
 | 
    } 
 | 
  
 | 
    p2DCfg->weit_d2 = rawnr.st2DParam.weit_d[2]; 
 | 
    p2DCfg->weit_d1 = rawnr.st2DParam.weit_d[1]; 
 | 
    p2DCfg->weit_d0 = rawnr.st2DParam.weit_d[0]; 
 | 
  
 | 
  
 | 
    //bayernr 3d 
 | 
  
 | 
    p3DCfg->sw_bay3d_exp_sel = rawnr.st3DParam.bay3d_exp_sel; 
 | 
    p3DCfg->sw_bay3d_bypass_en = rawnr.st3DParam.bay3d_bypass_en; 
 | 
    p3DCfg->sw_bay3d_pk_en = rawnr.st3DParam.bay3d_pk_en; 
 | 
  
 | 
    p3DCfg->sw_bay3d_softwgt = rawnr.st3DParam.bay3d_softwgt; 
 | 
    p3DCfg->sw_bay3d_sigratio = rawnr.st3DParam.bay3d_sigratio; 
 | 
  
 | 
    p3DCfg->sw_bay3d_glbpk2 = rawnr.st3DParam.bay3d_glbpk2; 
 | 
  
 | 
    p3DCfg->sw_bay3d_exp_str = rawnr.st3DParam.bay3d_exp_str; 
 | 
    p3DCfg->sw_bay3d_str = rawnr.st3DParam.bay3d_str; 
 | 
    p3DCfg->sw_bay3d_wgtlmt_h = rawnr.st3DParam.bay3d_wgtlmt_h; 
 | 
    p3DCfg->sw_bay3d_wgtlmt_l = rawnr.st3DParam.bay3d_wgtlmt_l; 
 | 
  
 | 
    for(int i = 0; i < ISP21_BAY3D_XY_NUM; i++) { 
 | 
        p3DCfg->sw_bay3d_sig_x[i] = rawnr.st3DParam.bay3d_sig_x[i]; 
 | 
        p3DCfg->sw_bay3d_sig_y[i] = rawnr.st3DParam.bay3d_sig_y[i]; 
 | 
    } 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqUvnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
        rk_aiq_isp_cnr_v21_t& uvnr) 
 | 
{ 
 | 
    struct isp21_cnr_cfg * pCfg = &isp_cfg.others.cnr_cfg; 
 | 
  
 | 
    LOGD_ANR("%s:%d: enter\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
    isp_cfg.module_ens |= ISP2X_MODULE_CNR; 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_CNR; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_CNR; 
 | 
  
 | 
    pCfg->sw_cnr_thumb_mix_cur_en = uvnr.cnr_thumb_mix_cur_en; 
 | 
    pCfg->sw_cnr_lq_bila_bypass = uvnr.cnr_lq_bila_bypass; 
 | 
    pCfg->sw_cnr_hq_bila_bypass = uvnr.cnr_hq_bila_bypass; 
 | 
    pCfg->sw_cnr_exgain_bypass = uvnr.cnr_exgain_bypass; 
 | 
  
 | 
    if(uvnr.cnr_en_i == 0) { 
 | 
        pCfg->sw_cnr_lq_bila_bypass = 0x01; 
 | 
        pCfg->sw_cnr_hq_bila_bypass = 0x01; 
 | 
        pCfg->sw_cnr_exgain_bypass = 0x01; 
 | 
    } 
 | 
  
 | 
    pCfg->sw_cnr_exgain_mux = uvnr.cnr_exgain_mux; 
 | 
    pCfg->sw_cnr_gain_iso = uvnr.cnr_gain_iso; 
 | 
  
 | 
    pCfg->sw_cnr_gain_offset = uvnr.cnr_gain_offset; 
 | 
    pCfg->sw_cnr_gain_1sigma = uvnr.cnr_gain_1sigma; 
 | 
    pCfg->sw_cnr_gain_uvgain1 = uvnr.cnr_gain_uvgain1; 
 | 
    pCfg->sw_cnr_gain_uvgain0 = uvnr.cnr_gain_uvgain0; 
 | 
    pCfg->sw_cnr_lmed3_alpha = uvnr.cnr_lmed3_alpha; 
 | 
    pCfg->sw_cnr_lbf5_gain_y = uvnr.cnr_lbf5_gain_y; 
 | 
    pCfg->sw_cnr_lbf5_gain_c = uvnr.cnr_lbf5_gain_c; 
 | 
  
 | 
    pCfg->sw_cnr_lbf5_weit_d3 = uvnr.cnr_lbf5_weit_d[3]; 
 | 
    pCfg->sw_cnr_lbf5_weit_d2 = uvnr.cnr_lbf5_weit_d[2]; 
 | 
    pCfg->sw_cnr_lbf5_weit_d1 = uvnr.cnr_lbf5_weit_d[1]; 
 | 
    pCfg->sw_cnr_lbf5_weit_d0 = uvnr.cnr_lbf5_weit_d[0]; 
 | 
    pCfg->sw_cnr_lbf5_weit_d4 = uvnr.cnr_lbf5_weit_d[4]; 
 | 
  
 | 
    pCfg->sw_cnr_hmed3_alpha = uvnr.cnr_hmed3_alpha; 
 | 
    pCfg->sw_cnr_hbf5_weit_src = uvnr.cnr_hbf5_weit_src; 
 | 
    pCfg->sw_cnr_hbf5_min_wgt = uvnr.cnr_hbf5_min_wgt; 
 | 
    pCfg->sw_cnr_hbf5_sigma = uvnr.cnr_hbf5_sigma; 
 | 
    pCfg->sw_cnr_lbf5_weit_src = uvnr.cnr_lbf5_weit_src; 
 | 
    pCfg->sw_cnr_lbf3_sigma = uvnr.cnr_lbf3_sigma; 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqYnrToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
                                        rk_aiq_isp_ynr_v21_t& ynr) 
 | 
{ 
 | 
    struct isp21_ynr_cfg * pCfg = &isp_cfg.others.ynr_cfg; 
 | 
  
 | 
    LOGD_ANR("%s:%d: enter\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
    isp_cfg.module_ens |= ISP2X_MODULE_YNR; 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_YNR; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_YNR; 
 | 
  
 | 
    pCfg->sw_ynr_thumb_mix_cur_en = ynr.ynr_thumb_mix_cur_en; 
 | 
    pCfg->sw_ynr_global_gain_alpha = ynr.ynr_global_gain_alpha; 
 | 
    pCfg->sw_ynr_global_gain = ynr.ynr_global_gain; 
 | 
    pCfg->sw_ynr_flt1x1_bypass_sel = ynr.ynr_flt1x1_bypass_sel; 
 | 
  
 | 
    pCfg->sw_ynr_sft5x5_bypass = ynr.ynr_sft5x5_bypass; 
 | 
    pCfg->sw_ynr_flt1x1_bypass = ynr.ynr_flt1x1_bypass; 
 | 
    pCfg->sw_ynr_lgft3x3_bypass = ynr.ynr_lgft3x3_bypass; 
 | 
    pCfg->sw_ynr_lbft5x5_bypass = ynr.ynr_lbft5x5_bypass; 
 | 
    pCfg->sw_ynr_bft3x3_bypass = ynr.ynr_bft3x3_bypass; 
 | 
    if(ynr.ynr_en == 0) { 
 | 
        pCfg->sw_ynr_sft5x5_bypass = 0x01; 
 | 
        pCfg->sw_ynr_flt1x1_bypass = 0x01; 
 | 
        pCfg->sw_ynr_lgft3x3_bypass = 0x01; 
 | 
        pCfg->sw_ynr_lbft5x5_bypass = 0x01; 
 | 
        pCfg->sw_ynr_bft3x3_bypass = 0x01; 
 | 
    } 
 | 
  
 | 
    pCfg->sw_ynr_rnr_max_r = ynr.ynr_rnr_max_r; 
 | 
    pCfg->sw_ynr_low_bf_inv1 = ynr.ynr_low_bf_inv[1]; 
 | 
    pCfg->sw_ynr_low_bf_inv0 = ynr.ynr_low_bf_inv[0]; 
 | 
    pCfg->sw_ynr_low_peak_supress = ynr.ynr_low_peak_supress; 
 | 
    pCfg->sw_ynr_low_thred_adj = ynr.ynr_low_thred_adj; 
 | 
    pCfg->sw_ynr_low_dist_adj = ynr.ynr_low_dist_adj; 
 | 
  
 | 
    pCfg->sw_ynr_low_edge_adj_thresh = ynr.ynr_low_edge_adj_thresh; 
 | 
    pCfg->sw_ynr_low_bi_weight = ynr.ynr_low_bi_weight; 
 | 
    pCfg->sw_ynr_low_weight = ynr.ynr_low_weight; 
 | 
    pCfg->sw_ynr_low_center_weight = ynr.ynr_low_center_weight; 
 | 
    pCfg->sw_ynr_hi_min_adj = ynr.ynr_hi_min_adj; 
 | 
    pCfg->sw_ynr_high_thred_adj = ynr.ynr_high_thred_adj; 
 | 
  
 | 
    pCfg->sw_ynr_high_retain_weight = ynr.ynr_high_retain_weight; 
 | 
    pCfg->sw_ynr_hi_edge_thed = ynr.ynr_hi_edge_thed; 
 | 
  
 | 
    pCfg->sw_ynr_base_filter_weight2 = ynr.ynr_base_filter_weight[2]; 
 | 
    pCfg->sw_ynr_base_filter_weight1 = ynr.ynr_base_filter_weight[1]; 
 | 
    pCfg->sw_ynr_base_filter_weight0 = ynr.ynr_base_filter_weight[0]; 
 | 
  
 | 
    pCfg->sw_ynr_low_gauss1_coeff2 = ynr.ynr_low_gauss1_coeff[2]; 
 | 
    pCfg->sw_ynr_low_gauss1_coeff1 = ynr.ynr_low_gauss1_coeff[1]; 
 | 
    pCfg->sw_ynr_low_gauss1_coeff0 = ynr.ynr_low_gauss1_coeff[0]; 
 | 
  
 | 
    pCfg->sw_ynr_low_gauss2_coeff2 = ynr.ynr_low_gauss2_coeff[2]; 
 | 
    pCfg->sw_ynr_low_gauss2_coeff1 = ynr.ynr_low_gauss2_coeff[1]; 
 | 
    pCfg->sw_ynr_low_gauss2_coeff0 = ynr.ynr_low_gauss2_coeff[0]; 
 | 
  
 | 
    pCfg->sw_ynr_direction_weight3 = ynr.ynr_direction_weight[3]; 
 | 
    pCfg->sw_ynr_direction_weight2 = ynr.ynr_direction_weight[2]; 
 | 
    pCfg->sw_ynr_direction_weight1 = ynr.ynr_direction_weight[1]; 
 | 
    pCfg->sw_ynr_direction_weight0 = ynr.ynr_direction_weight[0]; 
 | 
  
 | 
    pCfg->sw_ynr_direction_weight7 = ynr.ynr_direction_weight[7]; 
 | 
    pCfg->sw_ynr_direction_weight6 = ynr.ynr_direction_weight[6]; 
 | 
    pCfg->sw_ynr_direction_weight5 = ynr.ynr_direction_weight[5]; 
 | 
    pCfg->sw_ynr_direction_weight4 = ynr.ynr_direction_weight[4]; 
 | 
  
 | 
    for(int i = 0; i < ISP21_YNR_XY_NUM; i++) { 
 | 
        pCfg->sw_ynr_luma_points_x[i] = ynr.ynr_luma_points_x[i]; 
 | 
        pCfg->sw_ynr_lsgm_y[i] = ynr.ynr_lsgm_y[i]; 
 | 
        pCfg->sw_ynr_hsgm_y[i] = ynr.ynr_hsgm_y[i]; 
 | 
        pCfg->sw_ynr_rnr_strength3[i] = ynr.ynr_rnr_strength[i]; 
 | 
    } 
 | 
  
 | 
    LOGD_ANR("%s:%d: exit\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqSharpenToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
        rk_aiq_isp_sharp_v21_t& sharp) 
 | 
{ 
 | 
    struct isp21_sharp_cfg * pCfg = &isp_cfg.others.sharp_cfg; 
 | 
  
 | 
    LOGD_ASHARP("%s:%d: enter\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
    isp_cfg.module_ens |= ISP2X_MODULE_SHARP; 
 | 
    isp_cfg.module_en_update |= ISP2X_MODULE_SHARP; 
 | 
    isp_cfg.module_cfg_update |= ISP2X_MODULE_SHARP; 
 | 
  
 | 
    pCfg->sw_sharp_bypass = sharp.sharp_bypass; 
 | 
    if(sharp.sharp_en == 0) { 
 | 
        pCfg->sw_sharp_bypass = 0x01; 
 | 
    } 
 | 
  
 | 
    pCfg->sw_sharp_sharp_ratio = sharp.sharp_sharp_ratio; 
 | 
    pCfg->sw_sharp_bf_ratio = sharp.sharp_bf_ratio; 
 | 
    pCfg->sw_sharp_gaus_ratio = sharp.sharp_gaus_ratio; 
 | 
    pCfg->sw_sharp_pbf_ratio = sharp.sharp_pbf_ratio; 
 | 
  
 | 
    for(int i = 0; i < ISP21_SHARP_X_NUM; i++) { 
 | 
        pCfg->sw_sharp_luma_dx[i] = sharp.sharp_luma_dx[i]; 
 | 
    } 
 | 
  
 | 
    for(int i = 0; i < ISP21_SHARP_Y_NUM; i++) { 
 | 
        pCfg->sw_sharp_pbf_sigma_inv[i] = sharp.sharp_pbf_sigma_inv[i]; 
 | 
    } 
 | 
  
 | 
    for(int i = 0; i < ISP21_SHARP_Y_NUM; i++) { 
 | 
        pCfg->sw_sharp_bf_sigma_inv[i] = sharp.sharp_bf_sigma_inv[i]; 
 | 
    } 
 | 
  
 | 
    pCfg->sw_sharp_bf_sigma_shift = sharp.sharp_bf_sigma_shift; 
 | 
    pCfg->sw_sharp_pbf_sigma_shift = sharp.sharp_pbf_sigma_shift; 
 | 
  
 | 
    for(int i = 0; i < ISP21_SHARP_Y_NUM; i++) { 
 | 
        pCfg->sw_sharp_ehf_th[i] = sharp.sharp_ehf_th[i]; 
 | 
    } 
 | 
  
 | 
    for(int i = 0; i < ISP21_SHARP_Y_NUM; i++) { 
 | 
        pCfg->sw_sharp_clip_hf[i] = sharp.sharp_clip_hf[i]; 
 | 
    } 
 | 
  
 | 
    pCfg->sw_sharp_pbf_coef_2 = sharp.sharp_pbf_coef[2]; 
 | 
    pCfg->sw_sharp_pbf_coef_1 = sharp.sharp_pbf_coef[1]; 
 | 
    pCfg->sw_sharp_pbf_coef_0 = sharp.sharp_pbf_coef[0]; 
 | 
  
 | 
    pCfg->sw_sharp_bf_coef_2 = sharp.sharp_bf_coef[2]; 
 | 
    pCfg->sw_sharp_bf_coef_1 = sharp.sharp_bf_coef[1]; 
 | 
    pCfg->sw_sharp_bf_coef_0 = sharp.sharp_bf_coef[0]; 
 | 
  
 | 
    pCfg->sw_sharp_gaus_coef_2 = sharp.sharp_gaus_coef[2]; 
 | 
    pCfg->sw_sharp_gaus_coef_1 = sharp.sharp_gaus_coef[1]; 
 | 
    pCfg->sw_sharp_gaus_coef_0 = sharp.sharp_gaus_coef[0]; 
 | 
  
 | 
    LOGD_ASHARP("%s:%d: exit\n", __FUNCTION__, __LINE__); 
 | 
  
 | 
} 
 | 
void 
 | 
Isp21Params::convertAiqDrcToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
                                        rk_aiq_isp_drc_v21_t& adrc_data) 
 | 
{ 
 | 
    bool enable = adrc_data.bTmoEn; 
 | 
    if(enable) 
 | 
    { 
 | 
        isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID; 
 | 
        isp_cfg.module_ens |= 1LL << Rk_ISP21_DRC_ID; 
 | 
        isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID; 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
        isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID; 
 | 
        isp_cfg.module_ens &= ~(1LL << Rk_ISP21_DRC_ID); 
 | 
        isp_cfg.module_cfg_update &= ~(1LL << Rk_ISP21_DRC_ID); 
 | 
    } 
 | 
  
 | 
    isp_cfg.others.drc_cfg.sw_drc_offset_pow2     = adrc_data.DrcProcRes.sw_drc_offset_pow2; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_compres_scl  = adrc_data.DrcProcRes.sw_drc_compres_scl; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_position  = adrc_data.DrcProcRes.sw_drc_position; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_delta_scalein        = adrc_data.DrcProcRes.sw_drc_delta_scalein; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_hpdetail_ratio      = adrc_data.DrcProcRes.sw_drc_hpdetail_ratio; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_lpdetail_ratio     = adrc_data.DrcProcRes.sw_drc_lpdetail_ratio; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_weicur_pix      = adrc_data.DrcProcRes.sw_drc_weicur_pix; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_weipre_frame  = adrc_data.DrcProcRes.sw_drc_weipre_frame; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_force_sgm_inv0   = adrc_data.DrcProcRes.sw_drc_force_sgm_inv0; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_motion_scl     = adrc_data.DrcProcRes.sw_drc_motion_scl; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_edge_scl   = adrc_data.DrcProcRes.sw_drc_edge_scl; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_space_sgm_inv1    = adrc_data.DrcProcRes.sw_drc_space_sgm_inv1; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_space_sgm_inv0     = adrc_data.DrcProcRes.sw_drc_space_sgm_inv0; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_range_sgm_inv1     = adrc_data.DrcProcRes.sw_drc_range_sgm_inv1; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_range_sgm_inv0 = adrc_data.DrcProcRes.sw_drc_range_sgm_inv0; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_weig_maxl    = adrc_data.DrcProcRes.sw_drc_weig_maxl; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_weig_bilat  = adrc_data.DrcProcRes.sw_drc_weig_bilat; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_iir_weight  = adrc_data.DrcProcRes.sw_drc_iir_weight; 
 | 
    isp_cfg.others.drc_cfg.sw_drc_min_ogain  = adrc_data.DrcProcRes.sw_drc_min_ogain; 
 | 
  
 | 
    for(int i = 0; i < 17; i++) { 
 | 
        isp_cfg.others.drc_cfg.sw_drc_gain_y[i]    = adrc_data.DrcProcRes.sw_drc_gain_y[i]; 
 | 
        isp_cfg.others.drc_cfg.sw_drc_compres_y[i]    = adrc_data.DrcProcRes.sw_drc_compres_y[i]; 
 | 
        isp_cfg.others.drc_cfg.sw_drc_scale_y[i]    = adrc_data.DrcProcRes.sw_drc_scale_y[i]; 
 | 
    } 
 | 
  
 | 
#if 0 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_drc_offset_pow2 %d", __LINE__, isp_cfg.others.drc_cfg.sw_drc_offset_pow2); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_offset_pow2 %d", isp_cfg.others.drc_cfg.sw_drc_offset_pow2); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_compres_scl %d", isp_cfg.others.drc_cfg.sw_drc_compres_scl); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_position %d", isp_cfg.others.drc_cfg.sw_drc_position); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_delta_scalein %d", isp_cfg.others.drc_cfg.sw_drc_delta_scalein); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_hpdetail_ratio %d", isp_cfg.others.drc_cfg.sw_drc_hpdetail_ratio); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_lpdetail_ratio %d", isp_cfg.others.drc_cfg.sw_drc_lpdetail_ratio); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_weicur_pix %d", isp_cfg.others.drc_cfg.sw_drc_weicur_pix); 
 | 
  
 | 
#endif 
 | 
} 
 | 
  
 | 
void 
 | 
Isp21Params::convertAiqAgicToIsp21Params(struct isp21_isp_params_cfg& isp_cfg, 
 | 
        const rk_aiq_isp_gic_v21_t& agic) 
 | 
{ 
 | 
    bool enable = agic.gic_en; 
 | 
    if(enable) 
 | 
    { 
 | 
        isp_cfg.module_en_update |= 1LL << RK_ISP2X_GIC_ID; 
 | 
        isp_cfg.module_ens |= 1LL << RK_ISP2X_GIC_ID; 
 | 
        isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_GIC_ID; 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
        isp_cfg.module_en_update |= 1LL << RK_ISP2X_GIC_ID; 
 | 
        isp_cfg.module_ens &= ~(1LL << RK_ISP2X_GIC_ID); 
 | 
        isp_cfg.module_cfg_update &= ~(1LL << RK_ISP2X_GIC_ID); 
 | 
    } 
 | 
  
 | 
    isp_cfg.others.gic_cfg.regmingradthrdark2 = agic.ProcResV21.regmingradthrdark2; 
 | 
    isp_cfg.others.gic_cfg.regmingradthrdark1  = agic.ProcResV21.regmingradthrdark1; 
 | 
    isp_cfg.others.gic_cfg.regminbusythre  = agic.ProcResV21.regminbusythre; 
 | 
    isp_cfg.others.gic_cfg.regdarkthre  = agic.ProcResV21.regdarkthre; 
 | 
  
 | 
    isp_cfg.others.gic_cfg.regmaxcorvboth  = agic.ProcResV21.regmaxcorvboth; 
 | 
    isp_cfg.others.gic_cfg.regdarktthrehi  = agic.ProcResV21.regdarktthrehi; 
 | 
    isp_cfg.others.gic_cfg.regkgrad2dark  = agic.ProcResV21.regkgrad2dark; 
 | 
    isp_cfg.others.gic_cfg.regkgrad1dark  = agic.ProcResV21.regkgrad1dark; 
 | 
    isp_cfg.others.gic_cfg.regstrengthglobal_fix  = agic.ProcResV21.regstrengthglobal_fix; 
 | 
    isp_cfg.others.gic_cfg.regdarkthrestep  = agic.ProcResV21.regdarkthrestep; 
 | 
    isp_cfg.others.gic_cfg.regkgrad2  = agic.ProcResV21.regkgrad2; 
 | 
    isp_cfg.others.gic_cfg.regkgrad1  = agic.ProcResV21.regkgrad1; 
 | 
    isp_cfg.others.gic_cfg.reggbthre  = agic.ProcResV21.reggbthre; 
 | 
  
 | 
    isp_cfg.others.gic_cfg.regmaxcorv  = agic.ProcResV21.regmaxcorv; 
 | 
    isp_cfg.others.gic_cfg.regmingradthr2  = agic.ProcResV21.regmingradthr2; 
 | 
    isp_cfg.others.gic_cfg.regmingradthr1  = agic.ProcResV21.regmingradthr1; 
 | 
    isp_cfg.others.gic_cfg.gr_ratio  = agic.ProcResV21.gr_ratio; 
 | 
    isp_cfg.others.gic_cfg.noise_scale  = agic.ProcResV21.noise_scale; 
 | 
    isp_cfg.others.gic_cfg.noise_base  = agic.ProcResV21.noise_base; 
 | 
    isp_cfg.others.gic_cfg.diff_clip  = agic.ProcResV21.diff_clip; 
 | 
    for(int i = 0; i < 15; i++) 
 | 
        isp_cfg.others.gic_cfg.sigma_y[i]  = agic.ProcResV21.sigma_y[i]; 
 | 
  
 | 
  
 | 
#if 0 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmingradthrdark2 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmingradthrdark2); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmingradthrdark1 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmingradthrdark1); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regminbusythre %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regminbusythre); 
 | 
  
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regdarkthre %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regdarkthre); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmaxcorvboth %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmaxcorvboth); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regdarktthrehi %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regdarktthrehi); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regkgrad2dark %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regkgrad2dark); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regkgrad1dark %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regkgrad1dark); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regstrengthglobal_fix %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regstrengthglobal_fix); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regdarkthrestep %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regdarkthrestep); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regkgrad2 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regkgrad2); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regkgrad1 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regkgrad1); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: reggbthre %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.reggbthre); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmaxcorv %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmaxcorv); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmingradthr2 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmingradthr2); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: regmingradthr1 %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.regmingradthr1); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gr_ratio %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.gr_ratio); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: noise_scale %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.noise_scale); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: noise_base %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.noise_base); 
 | 
    LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: diff_clip %d", __LINE__, isp_cfg.others.gic_cfg.drc_cfg.diff_clip); 
 | 
  
 | 
#endif 
 | 
} 
 | 
  
 | 
bool Isp21Params::convert3aResultsToIspCfg(SmartPtr<cam3aResult> &result, 
 | 
        void* isp_cfg_p) 
 | 
{ 
 | 
    struct isp21_isp_params_cfg& isp_cfg = *(struct isp21_isp_params_cfg*)isp_cfg_p; 
 | 
  
 | 
    if (result.ptr() == NULL) { 
 | 
        LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "3A result empty"); 
 | 
        return false; 
 | 
    } 
 | 
  
 | 
    int32_t type = result->getType(); 
 | 
    // LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s, module (0x%x) convert params!\n", __FUNCTION__, type); 
 | 
    switch (type) 
 | 
    { 
 | 
        // followings are specific for isp21 
 | 
        case RESULT_TYPE_AWBGAIN_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAwbGainParamsProxy> awb_gain = result.dynamic_cast_ptr<RkAiqIspAwbGainParamsProxy>(); 
 | 
            if (awb_gain.ptr() && mBlcResult.ptr()) { 
 | 
                SmartPtr<RkAiqIspBlcParamsProxyV21> blc = mBlcResult.dynamic_cast_ptr<RkAiqIspBlcParamsProxyV21>(); 
 | 
                convertAiqAwbGainToIsp21Params(isp_cfg, 
 | 
                        awb_gain->data()->result, blc->data()->result, true); 
 | 
  
 | 
            } else 
 | 
                LOGE("don't get %s params, convert awbgain params failed!", 
 | 
                     awb_gain.ptr() ? "blc" : "awb_gain"); 
 | 
  
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_AWB_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAwbParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspAwbParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAwbToIsp21Params(isp_cfg, params->data()->result, true); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_CCM_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspCcmParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspCcmParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqCcmToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_DRC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspDrcParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspDrcParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqDrcToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_BLC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspBlcParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspBlcParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqBlcToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_RAWNR_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspBaynrParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspBaynrParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqRawnrToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_YNR_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspYnrParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspYnrParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqYnrToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_UVNR_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspCnrParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspCnrParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqUvnrToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_SHARPEN_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspSharpenParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspSharpenParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqSharpenToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_DEHAZE_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspDehazeParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspDehazeParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAdehazeToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_GIC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspGicParamsProxyV21> params = result.dynamic_cast_ptr<RkAiqIspGicParamsProxyV21>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAgicToIsp21Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        // followings are the same as isp20 
 | 
        case RESULT_TYPE_AEC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAecParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspAecParamsProxy>(); 
 | 
            if (params.ptr()) { 
 | 
                convertAiqAeToIsp20Params(isp_cfg, params->data()->result); 
 | 
            } 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_HIST_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspHistParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspHistParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqHistToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_AF_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAfParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspAfParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAfToIsp20Params(isp_cfg, params->data()->result, true); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_DPCC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspDpccParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspDpccParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqDpccToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_MERGE_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspMergeParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspMergeParamsProxy>(); 
 | 
            if (params.ptr()) { 
 | 
                convertAiqMergeToIsp20Params(isp_cfg, params->data()->result); 
 | 
            } 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_LSC_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspLscParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspLscParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqLscToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_DEBAYER_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspDebayerParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspDebayerParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAdemosaicToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_LDCH_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspLdchParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspLdchParamsProxy>(); 
 | 
            if (params.ptr() && params->data()->update_mask & RKAIQ_ISP_LDCH_ID) 
 | 
                convertAiqAldchToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_LUT3D_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspLut3dParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspLut3dParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqA3dlutToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_AGAMMA_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAgammaParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspAgammaParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAgammaToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_ADEGAMMA_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspAdegammaParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspAdegammaParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqAdegammaToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_WDR_PARAM: 
 | 
#if 0 
 | 
        { 
 | 
            SmartPtr<RkAiqIspWdrParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspWdrParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqWdrToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
#endif 
 | 
        break; 
 | 
        case RESULT_TYPE_CSM_PARAM: 
 | 
#if 0 
 | 
        { 
 | 
            SmartPtr<RkAiqIspCsmParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspCsmParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
#endif 
 | 
        break; 
 | 
        case RESULT_TYPE_CGC_PARAM: 
 | 
        break; 
 | 
        case RESULT_TYPE_CONV422_PARAM: 
 | 
        break; 
 | 
        case RESULT_TYPE_YUVCONV_PARAM: 
 | 
        break; 
 | 
        case RESULT_TYPE_CP_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspCpParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspCpParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqCpToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        case RESULT_TYPE_IE_PARAM: 
 | 
        { 
 | 
            SmartPtr<RkAiqIspIeParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspIeParamsProxy>(); 
 | 
            if (params.ptr()) 
 | 
                convertAiqIeToIsp20Params(isp_cfg, params->data()->result); 
 | 
        } 
 | 
        break; 
 | 
        default: 
 | 
            LOGE("unknown param type: 0x%x!", type); 
 | 
            return false; 
 | 
    } 
 | 
  
 | 
    return true; 
 | 
} 
 | 
  
 | 
}; //namspace RkCam 
 |