xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/hwi/isp3x/Isp3xParams.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *  Copyright (c) 2021 Rockchip Corporation
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
5*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
6*4882a593Smuzhiyun  * You may obtain a copy of the License at
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *      http://www.apache.org/licenses/LICENSE-2.0
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
11*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
12*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
14*4882a593Smuzhiyun  * limitations under the License.
15*4882a593Smuzhiyun  *
16*4882a593Smuzhiyun  */
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #include "Isp3xParams.h"
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun namespace RkCam {
21*4882a593Smuzhiyun 
fixedAwbOveflowToIsp3xParams(void * isp_cfg_p,bool is_dual_isp)22*4882a593Smuzhiyun void Isp3xParams::fixedAwbOveflowToIsp3xParams(void* isp_cfg_p, bool is_dual_isp)
23*4882a593Smuzhiyun {
24*4882a593Smuzhiyun     //in overfloce case :
25*4882a593Smuzhiyun     // 1 sw_rawawb_wp_luma_wei_en is force to be true  and the weight is 31
26*4882a593Smuzhiyun     // 2 sw_rawawb_blk_with_luma_wei_en is force to be true
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun     struct isp3x_isp_params_cfg& isp_cfg = *(struct isp3x_isp_params_cfg*)isp_cfg_p;
29*4882a593Smuzhiyun     if(is_dual_isp == false) {
30*4882a593Smuzhiyun         struct isp3x_rawawb_meas_cfg * awb_cfg_v30 = &isp_cfg.meas.rawawb;
31*4882a593Smuzhiyun         int w, h;
32*4882a593Smuzhiyun         w = awb_cfg_v30->sw_rawawb_h_size;
33*4882a593Smuzhiyun         h = awb_cfg_v30->sw_rawawb_v_size;
34*4882a593Smuzhiyun         if(w * h > RK_AIQ_AWB_STAT_MAX_AREA) {
35*4882a593Smuzhiyun             LOGD_AWB("%s wp_luma_wei is force to be enable and the weight is %d", __FUNCTION__, (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1);
36*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_wei_en0 = true;
37*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_wei_en1 = true;
38*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w0 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
39*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w1 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
40*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w2 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
41*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w3 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
42*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w4 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
43*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w5 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
44*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w6 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
45*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w7 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
46*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w8 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
47*4882a593Smuzhiyun             awb_cfg_v30->sw_rawawb_blk_with_luma_wei_en = true;
48*4882a593Smuzhiyun         }
49*4882a593Smuzhiyun     } else {
50*4882a593Smuzhiyun         struct isp3x_isp_params_cfg* left_isp_params  = &isp_cfg;
51*4882a593Smuzhiyun         struct isp3x_isp_params_cfg* right_isp_params = &isp_cfg + 1;
52*4882a593Smuzhiyun         struct isp3x_rawawb_meas_cfg * left_awb_cfg_v30 = &left_isp_params->meas.rawawb;
53*4882a593Smuzhiyun         struct isp3x_rawawb_meas_cfg * right_awb_cfg_v30 = &right_isp_params->meas.rawawb;
54*4882a593Smuzhiyun         int w, h, w2, h2;
55*4882a593Smuzhiyun         w = left_awb_cfg_v30->sw_rawawb_h_size;
56*4882a593Smuzhiyun         h = left_awb_cfg_v30->sw_rawawb_v_size;
57*4882a593Smuzhiyun         w2 = right_awb_cfg_v30->sw_rawawb_h_size;
58*4882a593Smuzhiyun         h2 = right_awb_cfg_v30->sw_rawawb_v_size;
59*4882a593Smuzhiyun         if(w * h > RK_AIQ_AWB_STAT_MAX_AREA || w2 * h2 > RK_AIQ_AWB_STAT_MAX_AREA ) {
60*4882a593Smuzhiyun             LOGD_AWB("wp_luma_wei is for to be enable and the weight is %d", (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1);
61*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_wei_en0 = true;
62*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_wei_en1 = true;
63*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w0 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
64*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w1 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
65*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w2 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
66*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w3 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
67*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w4 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
68*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w5 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
69*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w6 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
70*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w7 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
71*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w8 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
72*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_wei_en0 = true;
73*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_wei_en1 = true;
74*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w0 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
75*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w1 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
76*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w2 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
77*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w3 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
78*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w4 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
79*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w5 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
80*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w6 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
81*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w7 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
82*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w8 = (1 << RK_AIQ_AWB_WP_WEIGHT_BIS_V201) - 1;
83*4882a593Smuzhiyun             left_awb_cfg_v30->sw_rawawb_blk_with_luma_wei_en = true;
84*4882a593Smuzhiyun             right_awb_cfg_v30->sw_rawawb_blk_with_luma_wei_en = true;
85*4882a593Smuzhiyun         }
86*4882a593Smuzhiyun     }
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V21
convertAiqAwbToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,const rk_aiq_isp_awb_meas_cfg_v3x_t & awb_meas,bool awb_cfg_udpate)90*4882a593Smuzhiyun void Isp3xParams::convertAiqAwbToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
91*4882a593Smuzhiyun         const rk_aiq_isp_awb_meas_cfg_v3x_t& awb_meas,
92*4882a593Smuzhiyun         bool awb_cfg_udpate)
93*4882a593Smuzhiyun {
94*4882a593Smuzhiyun     if(awb_cfg_udpate) {
95*4882a593Smuzhiyun         if(awb_meas.awbEnable) {
96*4882a593Smuzhiyun             isp_cfg.module_ens |= ISP2X_MODULE_RAWAWB;
97*4882a593Smuzhiyun             isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAWB;
98*4882a593Smuzhiyun             isp_cfg.module_en_update |= ISP2X_MODULE_RAWAWB;
99*4882a593Smuzhiyun         }
100*4882a593Smuzhiyun     } else {
101*4882a593Smuzhiyun         return;
102*4882a593Smuzhiyun     }
103*4882a593Smuzhiyun     struct isp3x_rawawb_meas_cfg * awb_cfg_v30 = &isp_cfg.meas.rawawb;
104*4882a593Smuzhiyun     awb_cfg_v30->rawawb_sel                =    awb_meas.frameChoose;
105*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_xy_en0          =  awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
106*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_uv_en0          =  awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
107*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_en0       =  awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
108*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_xy_en1          =  awb_meas.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
109*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_uv_en1          =  awb_meas.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
110*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_en1          =  awb_meas.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
111*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_blk_wei_en0    =  awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
112*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_blk_wei_en1    =  awb_meas.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
113*4882a593Smuzhiyun     awb_cfg_v30->sw_rawlsc_bypass_en    =  awb_meas.lscBypEnable;
114*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_measure_enable    =  awb_meas.blkStatisticsEnable;
115*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_measure_mode     =  awb_meas.blkMeasureMode;
116*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_measure_xytype     =  awb_meas.xyRangeTypeForBlkStatistics;
117*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_measure_illu_idx     =  awb_meas.illIdxForBlkStatistics;
118*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_with_luma_wei_en  =  awb_meas.blkStatisticsWithLumaWeightEn;
119*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_wei_en0   =  awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
120*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_wei_en1   =  awb_meas.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
121*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_hist_xytype    =  awb_meas.xyRangeTypeForWpHist;
122*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_ls_idx0       =  awb_meas.threeDyuvIllu[0];
123*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_ls_idx1       =  awb_meas.threeDyuvIllu[1];
124*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_ls_idx2       =  awb_meas.threeDyuvIllu[2];
125*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_3dyuv_ls_idx3       =  awb_meas.threeDyuvIllu[3];
126*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_light_num      =  awb_meas.lightNum;
127*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_h_offs         =  awb_meas.windowSet[0];
128*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_v_offs         =  awb_meas.windowSet[1];
129*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_h_size         =  awb_meas.windowSet[2];
130*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_v_size         =  awb_meas.windowSet[3];
131*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wind_size = awb_meas.dsMode;
132*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_r_max          =  awb_meas.maxR;
133*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_g_max          =  awb_meas.maxG;
134*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_b_max          =  awb_meas.maxB;
135*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_y_max          =  awb_meas.maxY;
136*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_r_min          =  awb_meas.minR;
137*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_g_min          =  awb_meas.minG;
138*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_b_min          =  awb_meas.minB;
139*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_y_min          =  awb_meas.minY;
140*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_0    =  awb_meas.uvRange_param[0].pu_region[0];
141*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_0    =  awb_meas.uvRange_param[0].pv_region[0];
142*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_0    =  awb_meas.uvRange_param[0].pu_region[1];
143*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_0    =  awb_meas.uvRange_param[0].pv_region[1];
144*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_0    =  awb_meas.uvRange_param[0].pu_region[2];
145*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_0    =  awb_meas.uvRange_param[0].pv_region[2];
146*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_0    =  awb_meas.uvRange_param[0].pu_region[3];
147*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_0    =  awb_meas.uvRange_param[0].pv_region[3];
148*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_0      =  awb_meas.uvRange_param[0].slope_inv[0];
149*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_0      =  awb_meas.uvRange_param[0].slope_inv[1];
150*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_0      =  awb_meas.uvRange_param[0].slope_inv[2];
151*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_0      =  awb_meas.uvRange_param[0].slope_inv[3];
152*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_1    =  awb_meas.uvRange_param[1].pu_region[0];
153*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_1    =  awb_meas.uvRange_param[1].pv_region[0];
154*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_1    =  awb_meas.uvRange_param[1].pu_region[1];
155*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_1    =  awb_meas.uvRange_param[1].pv_region[1];
156*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_1    =  awb_meas.uvRange_param[1].pu_region[2];
157*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_1    =  awb_meas.uvRange_param[1].pv_region[2];
158*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_1    =  awb_meas.uvRange_param[1].pu_region[3];
159*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_1    =  awb_meas.uvRange_param[1].pv_region[3];
160*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_1      =  awb_meas.uvRange_param[1].slope_inv[0];
161*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_1      =  awb_meas.uvRange_param[1].slope_inv[1];
162*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_1      =  awb_meas.uvRange_param[1].slope_inv[2];
163*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_1      =  awb_meas.uvRange_param[1].slope_inv[3];
164*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_2    =  awb_meas.uvRange_param[2].pu_region[0];
165*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_2    =  awb_meas.uvRange_param[2].pv_region[0];
166*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_2    =  awb_meas.uvRange_param[2].pu_region[1];
167*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_2    =  awb_meas.uvRange_param[2].pv_region[1];
168*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_2    =  awb_meas.uvRange_param[2].pu_region[2];
169*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_2    =  awb_meas.uvRange_param[2].pv_region[2];
170*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_2    =  awb_meas.uvRange_param[2].pu_region[3];
171*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_2    =  awb_meas.uvRange_param[2].pv_region[3];
172*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_2      =  awb_meas.uvRange_param[2].slope_inv[0];
173*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_2      =  awb_meas.uvRange_param[2].slope_inv[1];
174*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_2      =  awb_meas.uvRange_param[2].slope_inv[2];
175*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_2      =  awb_meas.uvRange_param[2].slope_inv[3];
176*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_3    =  awb_meas.uvRange_param[3].pu_region[0];
177*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_3    =  awb_meas.uvRange_param[3].pv_region[0];
178*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_3    =  awb_meas.uvRange_param[3].pu_region[1];
179*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_3    =  awb_meas.uvRange_param[3].pv_region[1];
180*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_3    =  awb_meas.uvRange_param[3].pu_region[2];
181*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_3    =  awb_meas.uvRange_param[3].pv_region[2];
182*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_3    =  awb_meas.uvRange_param[3].pu_region[3];
183*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_3    =  awb_meas.uvRange_param[3].pv_region[3];
184*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_3      =  awb_meas.uvRange_param[3].slope_inv[0];
185*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_3      =  awb_meas.uvRange_param[3].slope_inv[1];
186*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_3      =  awb_meas.uvRange_param[3].slope_inv[2];
187*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_3      =  awb_meas.uvRange_param[3].slope_inv[3];
188*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_4    =  awb_meas.uvRange_param[4].pu_region[0];
189*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_4    =  awb_meas.uvRange_param[4].pv_region[0];
190*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_4    =  awb_meas.uvRange_param[4].pu_region[1];
191*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_4    =  awb_meas.uvRange_param[4].pv_region[1];
192*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_4    =  awb_meas.uvRange_param[4].pu_region[2];
193*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_4    =  awb_meas.uvRange_param[4].pv_region[2];
194*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_4    =  awb_meas.uvRange_param[4].pu_region[3];
195*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_4    =  awb_meas.uvRange_param[4].pv_region[3];
196*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_4      =  awb_meas.uvRange_param[4].slope_inv[0];
197*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_4      =  awb_meas.uvRange_param[4].slope_inv[1];
198*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_4      =  awb_meas.uvRange_param[4].slope_inv[2];
199*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_4      =  awb_meas.uvRange_param[4].slope_inv[3];
200*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_5    =  awb_meas.uvRange_param[5].pu_region[0];
201*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_5    =  awb_meas.uvRange_param[5].pv_region[0];
202*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_5    =  awb_meas.uvRange_param[5].pu_region[1];
203*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_5    =  awb_meas.uvRange_param[5].pv_region[1];
204*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_5    =  awb_meas.uvRange_param[5].pu_region[2];
205*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_5    =  awb_meas.uvRange_param[5].pv_region[2];
206*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_5    =  awb_meas.uvRange_param[5].pu_region[3];
207*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_5    =  awb_meas.uvRange_param[5].pv_region[3];
208*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_5      =  awb_meas.uvRange_param[5].slope_inv[0];
209*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_5      =  awb_meas.uvRange_param[5].slope_inv[1];
210*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_5      =  awb_meas.uvRange_param[5].slope_inv[2];
211*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_5      =  awb_meas.uvRange_param[5].slope_inv[3];
212*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_u_6    =  awb_meas.uvRange_param[6].pu_region[0];
213*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex0_v_6    =  awb_meas.uvRange_param[6].pv_region[0];
214*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_u_6    =  awb_meas.uvRange_param[6].pu_region[1];
215*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex1_v_6    =  awb_meas.uvRange_param[6].pv_region[1];
216*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_u_6    =  awb_meas.uvRange_param[6].pu_region[2];
217*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex2_v_6    =  awb_meas.uvRange_param[6].pv_region[2];
218*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_u_6    =  awb_meas.uvRange_param[6].pu_region[3];
219*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vertex3_v_6    =  awb_meas.uvRange_param[6].pv_region[3];
220*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope01_6      =  awb_meas.uvRange_param[6].slope_inv[0];
221*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope12_6      =  awb_meas.uvRange_param[6].slope_inv[1];
222*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope23_6      =  awb_meas.uvRange_param[6].slope_inv[2];
223*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_islope30_6      =  awb_meas.uvRange_param[6].slope_inv[3];
224*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat0_u =  awb_meas.icrgb2RYuv_matrix[0];
225*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat1_u =  awb_meas.icrgb2RYuv_matrix[1];
226*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat2_u =  awb_meas.icrgb2RYuv_matrix[2];
227*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvofs_u =  awb_meas.icrgb2RYuv_matrix[3];
228*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat0_v =  awb_meas.icrgb2RYuv_matrix[4];
229*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat1_v =  awb_meas.icrgb2RYuv_matrix[5];
230*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat2_v =  awb_meas.icrgb2RYuv_matrix[6];
231*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvofs_v =  awb_meas.icrgb2RYuv_matrix[7];
232*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat0_y =  awb_meas.icrgb2RYuv_matrix[8];
233*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat1_y =  awb_meas.icrgb2RYuv_matrix[9];
234*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvmat2_y =  awb_meas.icrgb2RYuv_matrix[10];
235*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rgb2ryuvofs_y =  awb_meas.icrgb2RYuv_matrix[11];
236*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu0_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[0];
237*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu1_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[1];
238*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[2];
239*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu3_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[3];
240*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu4_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[4];
241*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu5_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcurve_u[5];
242*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th0_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[0];
243*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th1_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[1];
244*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[2];
245*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th3_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[3];
246*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th4_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[4];
247*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th5_ls0 =  awb_meas.ic3Dyuv2Range_param[0].thcure_th[5];
248*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls0_u =  awb_meas.ic3Dyuv2Range_param[0].lineP1[0];
249*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls0_v =  awb_meas.ic3Dyuv2Range_param[0].lineP1[1];
250*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls0_y =  awb_meas.ic3Dyuv2Range_param[0].lineP1[2];
251*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls0_u =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[0];
252*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls0_v =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[1];
253*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls0_y =  awb_meas.ic3Dyuv2Range_param[0].vP1P2[2];
254*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_dis_x1x2_ls0 =  awb_meas.ic3Dyuv2Range_param[0].disP1P2;
255*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu0_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[0];
256*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu1_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[1];
257*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[2];
258*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu3_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[3];
259*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu4_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[4];
260*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu5_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcurve_u[5];
261*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th0_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[0];
262*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th1_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[1];
263*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[2];
264*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th3_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[3];
265*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th4_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[4];
266*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th5_ls1 =  awb_meas.ic3Dyuv2Range_param[1].thcure_th[5];
267*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls1_u =  awb_meas.ic3Dyuv2Range_param[1].lineP1[0];
268*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls1_v =  awb_meas.ic3Dyuv2Range_param[1].lineP1[1];
269*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls1_y =  awb_meas.ic3Dyuv2Range_param[1].lineP1[2];
270*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls1_u =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[0];
271*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls1_v =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[1];
272*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls1_y =  awb_meas.ic3Dyuv2Range_param[1].vP1P2[2];
273*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_dis_x1x2_ls1 =  awb_meas.ic3Dyuv2Range_param[1].disP1P2;
274*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu0_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[0];
275*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu1_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[1];
276*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[2];
277*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu3_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[3];
278*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu4_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[4];
279*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu5_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcurve_u[5];
280*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th0_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[0];
281*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th1_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[1];
282*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[2];
283*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th3_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[3];
284*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th4_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[4];
285*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th5_ls2 =  awb_meas.ic3Dyuv2Range_param[2].thcure_th[5];
286*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls2_u =  awb_meas.ic3Dyuv2Range_param[2].lineP1[0];
287*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls2_v =  awb_meas.ic3Dyuv2Range_param[2].lineP1[1];
288*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls2_y =  awb_meas.ic3Dyuv2Range_param[2].lineP1[2];
289*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls2_u =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[0];
290*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls2_v =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[1];
291*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls2_y =  awb_meas.ic3Dyuv2Range_param[2].vP1P2[2];
292*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_dis_x1x2_ls2 =  awb_meas.ic3Dyuv2Range_param[2].disP1P2;
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu0_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[0];
295*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu1_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[1];
296*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[2];
297*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu3_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[3];
298*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu4_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[4];
299*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_rotu5_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcurve_u[5];
300*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th0_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[0];
301*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th1_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[1];
302*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[2];
303*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th3_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[3];
304*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th4_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[4];
305*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_th5_ls3 =  awb_meas.ic3Dyuv2Range_param[3].thcure_th[5];
306*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls3_u =  awb_meas.ic3Dyuv2Range_param[3].lineP1[0];
307*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls3_v =  awb_meas.ic3Dyuv2Range_param[3].lineP1[1];
308*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_coor_x1_ls3_y =  awb_meas.ic3Dyuv2Range_param[3].lineP1[2];
309*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls3_u =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[0];
310*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls3_v =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[1];
311*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_vec_x21_ls3_y =  awb_meas.ic3Dyuv2Range_param[3].vP1P2[2];
312*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_dis_x1x2_ls3 =  awb_meas.ic3Dyuv2Range_param[3].disP1P2;
313*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wt0            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[0];
314*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wt1            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[1];
315*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wt2            =  awb_meas.rgb2xy_param.pseudoLuminanceWeight[2];
316*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat0_x         =  awb_meas.rgb2xy_param.rotationMat[0];
317*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat1_x         =  awb_meas.rgb2xy_param.rotationMat[1];
318*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat2_x         =  awb_meas.rgb2xy_param.rotationMat[2];
319*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat0_y         =  awb_meas.rgb2xy_param.rotationMat[3];
320*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat1_y         =  awb_meas.rgb2xy_param.rotationMat[4];
321*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_mat2_y         =  awb_meas.rgb2xy_param.rotationMat[5];
322*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_0       =  awb_meas.xyRange_param[0].NorrangeX[0];
323*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_0       =  awb_meas.xyRange_param[0].NorrangeX[1];
324*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_0       =  awb_meas.xyRange_param[0].NorrangeY[0];
325*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_0       =  awb_meas.xyRange_param[0].NorrangeY[1];
326*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_0       =  awb_meas.xyRange_param[0].SperangeX[0];
327*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_0       =  awb_meas.xyRange_param[0].SperangeX[1];
328*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_0       =  awb_meas.xyRange_param[0].SperangeY[0];
329*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_0       =  awb_meas.xyRange_param[0].SperangeY[1];
330*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_1       =  awb_meas.xyRange_param[1].NorrangeX[0];
331*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_1       =  awb_meas.xyRange_param[1].NorrangeX[1];
332*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_1       =  awb_meas.xyRange_param[1].NorrangeY[0];
333*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_1       =  awb_meas.xyRange_param[1].NorrangeY[1];
334*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_1       =  awb_meas.xyRange_param[1].SperangeX[0];
335*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_1       =  awb_meas.xyRange_param[1].SperangeX[1];
336*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_1       =  awb_meas.xyRange_param[1].SperangeY[0];
337*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_1       =  awb_meas.xyRange_param[1].SperangeY[1];
338*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_2       =  awb_meas.xyRange_param[2].NorrangeX[0];
339*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_2       =  awb_meas.xyRange_param[2].NorrangeX[1];
340*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_2       =  awb_meas.xyRange_param[2].NorrangeY[0];
341*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_2       =  awb_meas.xyRange_param[2].NorrangeY[1];
342*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_2       =  awb_meas.xyRange_param[2].SperangeX[0];
343*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_2       =  awb_meas.xyRange_param[2].SperangeX[1];
344*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_2       =  awb_meas.xyRange_param[2].SperangeY[0];
345*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_2       =  awb_meas.xyRange_param[2].SperangeY[1];
346*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_3       =  awb_meas.xyRange_param[3].NorrangeX[0];
347*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_3       =  awb_meas.xyRange_param[3].NorrangeX[1];
348*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_3       =  awb_meas.xyRange_param[3].NorrangeY[0];
349*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_3       =  awb_meas.xyRange_param[3].NorrangeY[1];
350*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_3       =  awb_meas.xyRange_param[3].SperangeX[0];
351*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_3       =  awb_meas.xyRange_param[3].SperangeX[1];
352*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_3       =  awb_meas.xyRange_param[3].SperangeY[0];
353*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_3       =  awb_meas.xyRange_param[3].SperangeY[1];
354*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_4       =  awb_meas.xyRange_param[4].NorrangeX[0];
355*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_4       =  awb_meas.xyRange_param[4].NorrangeX[1];
356*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_4       =  awb_meas.xyRange_param[4].NorrangeY[0];
357*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_4       =  awb_meas.xyRange_param[4].NorrangeY[1];
358*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_4       =  awb_meas.xyRange_param[4].SperangeX[0];
359*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_4       =  awb_meas.xyRange_param[4].SperangeX[1];
360*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_4       =  awb_meas.xyRange_param[4].SperangeY[0];
361*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_4       =  awb_meas.xyRange_param[4].SperangeY[1];
362*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_5       =  awb_meas.xyRange_param[5].NorrangeX[0];
363*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_5       =  awb_meas.xyRange_param[5].NorrangeX[1];
364*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_5       =  awb_meas.xyRange_param[5].NorrangeY[0];
365*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_5       =  awb_meas.xyRange_param[5].NorrangeY[1];
366*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_5       =  awb_meas.xyRange_param[5].SperangeX[0];
367*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_5       =  awb_meas.xyRange_param[5].SperangeX[1];
368*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_5       =  awb_meas.xyRange_param[5].SperangeY[0];
369*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_5       =  awb_meas.xyRange_param[5].SperangeY[1];
370*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x0_6       =  awb_meas.xyRange_param[6].NorrangeX[0];
371*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_x1_6       =  awb_meas.xyRange_param[6].NorrangeX[1];
372*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y0_6       =  awb_meas.xyRange_param[6].NorrangeY[0];
373*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_nor_y1_6       =  awb_meas.xyRange_param[6].NorrangeY[1];
374*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x0_6       =  awb_meas.xyRange_param[6].SperangeX[0];
375*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_x1_6       =  awb_meas.xyRange_param[6].SperangeX[1];
376*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y0_6       =  awb_meas.xyRange_param[6].SperangeY[0];
377*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_big_y1_6       =  awb_meas.xyRange_param[6].SperangeY[1];
378*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_pre_wbgain_inv_r       =  awb_meas.pre_wbgain_inv_r;
379*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_pre_wbgain_inv_g       =  awb_meas.pre_wbgain_inv_g;
380*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_pre_wbgain_inv_b       =  awb_meas.pre_wbgain_inv_b;
381*4882a593Smuzhiyun     //multiwindow
382*4882a593Smuzhiyun #if defined(ISP_HW_V30)
383*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow_en          =      awb_meas.multiwindow_en;
384*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow0_h_offs     =      awb_meas.multiwindow[0][0];
385*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow0_v_offs     =      awb_meas.multiwindow[0][1];
386*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow0_h_size     =      awb_meas.multiwindow[0][0] + awb_meas.multiwindow[0][2];
387*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow0_v_size     =      awb_meas.multiwindow[0][1] + awb_meas.multiwindow[0][3];
388*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow1_h_offs     =      awb_meas.multiwindow[1][0];
389*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow1_v_offs     =      awb_meas.multiwindow[1][1];
390*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow1_h_size     =      awb_meas.multiwindow[1][0] + awb_meas.multiwindow[1][2];
391*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow1_v_size     =      awb_meas.multiwindow[1][1] + awb_meas.multiwindow[1][3];
392*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow2_h_offs     =      awb_meas.multiwindow[2][0];
393*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow2_v_offs     =      awb_meas.multiwindow[2][1];
394*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow2_h_size     =      awb_meas.multiwindow[2][0] + awb_meas.multiwindow[2][2];
395*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow2_v_size     =      awb_meas.multiwindow[2][1] + awb_meas.multiwindow[2][3];
396*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow3_h_offs     =      awb_meas.multiwindow[3][0];
397*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow3_v_offs     =      awb_meas.multiwindow[3][1];
398*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow3_h_size     =      awb_meas.multiwindow[3][0] + awb_meas.multiwindow[3][2];
399*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_multiwindow3_v_size     =      awb_meas.multiwindow[3][1] + awb_meas.multiwindow[3][3];
400*4882a593Smuzhiyun 
401*4882a593Smuzhiyun #endif
402*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_excen0     =  awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
403*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_excen1     =  awb_meas.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
404*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_measen   =  awb_meas.excludeWpRange[0].measureEnable;
405*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_domain        =  awb_meas.excludeWpRange[0].domain;
406*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_xu0          =  awb_meas.excludeWpRange[0].xu[0];
407*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_xu1          =  awb_meas.excludeWpRange[0].xu[1];
408*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_yv0          =  awb_meas.excludeWpRange[0].yv[0];
409*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region0_yv1          =  awb_meas.excludeWpRange[0].yv[1];
410*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_excen0     =  awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
411*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_excen1     =  awb_meas.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
412*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_measen   =  awb_meas.excludeWpRange[1].measureEnable;
413*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_domain        =  awb_meas.excludeWpRange[1].domain;
414*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_xu0          =  awb_meas.excludeWpRange[1].xu[0];
415*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_xu1          =  awb_meas.excludeWpRange[1].xu[1];
416*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_yv0          =  awb_meas.excludeWpRange[1].yv[0];
417*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region1_yv1          =  awb_meas.excludeWpRange[1].yv[1];
418*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_excen0     =  awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
419*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_excen1     =  awb_meas.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
420*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_measen   =  awb_meas.excludeWpRange[2].measureEnable;
421*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_domain        =  awb_meas.excludeWpRange[2].domain;
422*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_xu0          =  awb_meas.excludeWpRange[2].xu[0];
423*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_xu1          =  awb_meas.excludeWpRange[2].xu[1];
424*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_yv0          =  awb_meas.excludeWpRange[2].yv[0];
425*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region2_yv1          =  awb_meas.excludeWpRange[2].yv[1];
426*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_excen0     =  awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
427*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_excen1     =  awb_meas.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
428*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_measen   =  awb_meas.excludeWpRange[3].measureEnable;
429*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_domain        =  awb_meas.excludeWpRange[3].domain;
430*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_xu0          =  awb_meas.excludeWpRange[3].xu[0];
431*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_xu1          =  awb_meas.excludeWpRange[3].xu[1];
432*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_yv0          =  awb_meas.excludeWpRange[3].yv[0];
433*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region3_yv1          =  awb_meas.excludeWpRange[3].yv[1];
434*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_excen0     =  awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
435*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_excen1     =  awb_meas.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
436*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_domain        =  awb_meas.excludeWpRange[4].domain;
437*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_xu0          =  awb_meas.excludeWpRange[4].xu[0];
438*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_xu1          =  awb_meas.excludeWpRange[4].xu[1];
439*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_yv0          =  awb_meas.excludeWpRange[4].yv[0];
440*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region4_yv1          =  awb_meas.excludeWpRange[4].yv[1];
441*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_excen0     =  awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
442*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_excen1     =  awb_meas.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
443*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_domain        =  awb_meas.excludeWpRange[5].domain;
444*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_xu0          =  awb_meas.excludeWpRange[5].xu[0];
445*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_xu1          =  awb_meas.excludeWpRange[5].xu[1];
446*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_yv0          =  awb_meas.excludeWpRange[5].yv[0];
447*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region5_yv1          =  awb_meas.excludeWpRange[5].yv[1];
448*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_excen0     =  awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201];
449*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_excen1     =  awb_meas.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201];
450*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_domain        =  awb_meas.excludeWpRange[6].domain;
451*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_xu0          =  awb_meas.excludeWpRange[6].xu[0];
452*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_xu1          =  awb_meas.excludeWpRange[6].xu[1];
453*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_yv0          =  awb_meas.excludeWpRange[6].yv[0];
454*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_exc_wp_region6_yv1          =  awb_meas.excludeWpRange[6].yv[1];
455*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y0     =   awb_meas.wpDiffwei_y[0];
456*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y1     =   awb_meas.wpDiffwei_y[1];
457*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y2     =   awb_meas.wpDiffwei_y[2];
458*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y3     =   awb_meas.wpDiffwei_y[3];
459*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y4     =   awb_meas.wpDiffwei_y[4];
460*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y5     =   awb_meas.wpDiffwei_y[5];
461*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y6     =   awb_meas.wpDiffwei_y[6];
462*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y7     =   awb_meas.wpDiffwei_y[7];
463*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_y8     =   awb_meas.wpDiffwei_y[8];
464*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w0     = awb_meas.wpDiffwei_w[0];
465*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w1     = awb_meas.wpDiffwei_w[1];
466*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w2     = awb_meas.wpDiffwei_w[2];
467*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w3     = awb_meas.wpDiffwei_w[3];
468*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w4     = awb_meas.wpDiffwei_w[4];
469*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w5     = awb_meas.wpDiffwei_w[5];
470*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w6     = awb_meas.wpDiffwei_w[6];
471*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w7     = awb_meas.wpDiffwei_w[7];
472*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_wp_luma_weicurve_w8     = awb_meas.wpDiffwei_w[8];
473*4882a593Smuzhiyun 
474*4882a593Smuzhiyun     for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) {
475*4882a593Smuzhiyun         awb_cfg_v30->sw_rawawb_wp_blk_wei_w[i]          = awb_meas.blkWeight[i];
476*4882a593Smuzhiyun     }
477*4882a593Smuzhiyun 
478*4882a593Smuzhiyun     awb_cfg_v30->sw_rawawb_blk_rtdw_measure_en =  awb_meas.blk_rtdw_measure_en;
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun }
481*4882a593Smuzhiyun #endif
482*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYER2DNR_V2
convertAiqRawnrToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_baynr_v3x_t & rawnr)483*4882a593Smuzhiyun void Isp3xParams::convertAiqRawnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
484*4882a593Smuzhiyun         rk_aiq_isp_baynr_v3x_t& rawnr)
485*4882a593Smuzhiyun {
486*4882a593Smuzhiyun 
487*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, rawnr.baynr_en);
488*4882a593Smuzhiyun     bool enable = rawnr.baynr_en;
489*4882a593Smuzhiyun 
490*4882a593Smuzhiyun     // use weight=0 to bypss bayer2dnr effect, then  always  keep 2dnr en bit = 1.
491*4882a593Smuzhiyun #if 0
492*4882a593Smuzhiyun    if(enable) {
493*4882a593Smuzhiyun        isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
494*4882a593Smuzhiyun    } else {
495*4882a593Smuzhiyun        isp_cfg.module_ens &= ~(ISP3X_MODULE_BAYNR);
496*4882a593Smuzhiyun    }
497*4882a593Smuzhiyun #else
498*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
499*4882a593Smuzhiyun #endif
500*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_BAYNR;
501*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_BAYNR;
502*4882a593Smuzhiyun 
503*4882a593Smuzhiyun     struct isp3x_baynr_cfg *pBayernr = &isp_cfg.others.baynr_cfg;
504*4882a593Smuzhiyun     pBayernr->lg2_mode = rawnr.baynr_lg2_mode;
505*4882a593Smuzhiyun     pBayernr->gauss_en = rawnr.baynr_gauss_en;
506*4882a593Smuzhiyun     pBayernr->log_bypass = rawnr.baynr_log_bypass;
507*4882a593Smuzhiyun 
508*4882a593Smuzhiyun     pBayernr->dgain0 = rawnr.baynr_dgain[0];
509*4882a593Smuzhiyun     pBayernr->dgain1 = rawnr.baynr_dgain[1];
510*4882a593Smuzhiyun     pBayernr->dgain2 = rawnr.baynr_dgain[2];
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun     pBayernr->pix_diff = rawnr.baynr_pix_diff;
513*4882a593Smuzhiyun 
514*4882a593Smuzhiyun     pBayernr->diff_thld = rawnr.baynr_diff_thld;
515*4882a593Smuzhiyun     pBayernr->softthld = rawnr.baynr_softthld;
516*4882a593Smuzhiyun 
517*4882a593Smuzhiyun     pBayernr->bltflt_streng = rawnr.bltflt_streng;
518*4882a593Smuzhiyun #if 0
519*4882a593Smuzhiyun     pBayernr->reg_w1 = rawnr.baynr_reg_w1;
520*4882a593Smuzhiyun #else
521*4882a593Smuzhiyun     if (enable) {
522*4882a593Smuzhiyun         pBayernr->reg_w1 = rawnr.baynr_reg_w1;
523*4882a593Smuzhiyun     } else {
524*4882a593Smuzhiyun         pBayernr->reg_w1 = 0;
525*4882a593Smuzhiyun     }
526*4882a593Smuzhiyun #endif
527*4882a593Smuzhiyun 
528*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_BAYNR_XY_NUM; i++) {
529*4882a593Smuzhiyun         pBayernr->sigma_x[i] = rawnr.sigma_x[i];
530*4882a593Smuzhiyun         pBayernr->sigma_y[i] = rawnr.sigma_y[i];
531*4882a593Smuzhiyun     }
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun     pBayernr->weit_d2 = rawnr.weit_d[2];
534*4882a593Smuzhiyun     pBayernr->weit_d1 = rawnr.weit_d[1];
535*4882a593Smuzhiyun     pBayernr->weit_d0 = rawnr.weit_d[0];
536*4882a593Smuzhiyun 
537*4882a593Smuzhiyun     pBayernr->lg2_lgoff = rawnr.lg2_lgoff;
538*4882a593Smuzhiyun     pBayernr->lg2_off = rawnr.lg2_off;
539*4882a593Smuzhiyun 
540*4882a593Smuzhiyun     pBayernr->dat_max = rawnr.dat_max;
541*4882a593Smuzhiyun 
542*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
543*4882a593Smuzhiyun }
544*4882a593Smuzhiyun #endif
545*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYERTNR_V2
convertAiqTnrToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_tnr_v3x_t & tnr)546*4882a593Smuzhiyun void Isp3xParams::convertAiqTnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
547*4882a593Smuzhiyun         rk_aiq_isp_tnr_v3x_t& tnr)
548*4882a593Smuzhiyun {
549*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d\n", __FUNCTION__, __LINE__, tnr.bay3d_en_i);
550*4882a593Smuzhiyun     bool enable = tnr.bay3d_en_i;
551*4882a593Smuzhiyun     if(enable) {
552*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
553*4882a593Smuzhiyun         // use 2dnr weight to bypss 2dnr effect, not need 3dnr state at all.
554*4882a593Smuzhiyun         // just keep 2dnr and 3dnr en bit always 1
555*4882a593Smuzhiyun #if 0
556*4882a593Smuzhiyun        //bayer3dnr enable  bayer2dnr must enable at the same time
557*4882a593Smuzhiyun        isp_cfg.module_ens |= ISP3X_MODULE_BAYNR;
558*4882a593Smuzhiyun        isp_cfg.module_en_update |= ISP3X_MODULE_BAYNR;
559*4882a593Smuzhiyun #endif
560*4882a593Smuzhiyun     } else {
561*4882a593Smuzhiyun         //isp_cfg.module_ens &= ~(ISP3X_MODULE_BAY3D);
562*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_BAY3D;
563*4882a593Smuzhiyun     }
564*4882a593Smuzhiyun 
565*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_BAY3D;
566*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_BAY3D;
567*4882a593Smuzhiyun 
568*4882a593Smuzhiyun 
569*4882a593Smuzhiyun     struct isp3x_bay3d_cfg *pBayertnr = &isp_cfg.others.bay3d_cfg;
570*4882a593Smuzhiyun 
571*4882a593Smuzhiyun     pBayertnr->bypass_en = tnr.bay3d_bypass_en;
572*4882a593Smuzhiyun     pBayertnr->hibypass_en = tnr.bay3d_hibypass_en;
573*4882a593Smuzhiyun     pBayertnr->lobypass_en = tnr.bay3d_lobypass_en;
574*4882a593Smuzhiyun     pBayertnr->himed_bypass_en = tnr.bay3d_himed_bypass_en;
575*4882a593Smuzhiyun     pBayertnr->higaus_bypass_en = tnr.bay3d_higaus_bypass_en;
576*4882a593Smuzhiyun     pBayertnr->hiabs_possel = tnr.bay3d_hiabs_pssel;
577*4882a593Smuzhiyun     pBayertnr->hichnsplit_en = tnr.bay3d_hichnsplit_en;
578*4882a593Smuzhiyun     pBayertnr->lomed_bypass_en = tnr.bay3d_lomed_bypass_en;
579*4882a593Smuzhiyun     pBayertnr->logaus5_bypass_en = tnr.bay3d_logaus5_bypass_en;
580*4882a593Smuzhiyun     pBayertnr->logaus3_bypass_en = tnr.bay3d_logaus3_bypass_en;
581*4882a593Smuzhiyun     pBayertnr->glbpk_en = tnr.bay3d_glbpk_en;
582*4882a593Smuzhiyun     pBayertnr->loswitch_protect = tnr.bay3d_loswitch_protect;
583*4882a593Smuzhiyun 
584*4882a593Smuzhiyun     pBayertnr->softwgt = tnr.bay3d_softwgt;
585*4882a593Smuzhiyun     pBayertnr->hidif_th = tnr.bay3d_hidif_th;
586*4882a593Smuzhiyun 
587*4882a593Smuzhiyun     pBayertnr->glbpk2 = tnr.bay3d_glbpk2;
588*4882a593Smuzhiyun 
589*4882a593Smuzhiyun     pBayertnr->wgtlmt = tnr.bay3d_wgtlmt;
590*4882a593Smuzhiyun     pBayertnr->wgtratio = tnr.bay3d_wgtratio;
591*4882a593Smuzhiyun 
592*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_BAY3D_XY_NUM; i++) {
593*4882a593Smuzhiyun         pBayertnr->sig0_x[i] = tnr.bay3d_sig0_x[i];
594*4882a593Smuzhiyun         pBayertnr->sig0_y[i] = tnr.bay3d_sig0_y[i];
595*4882a593Smuzhiyun 
596*4882a593Smuzhiyun         pBayertnr->sig1_x[i] = tnr.bay3d_sig1_x[i];
597*4882a593Smuzhiyun         pBayertnr->sig1_y[i] = tnr.bay3d_sig1_y[i];
598*4882a593Smuzhiyun 
599*4882a593Smuzhiyun         //pBayertnr->sig2_x[i] = tnr.bay3d_sig1_x[i];
600*4882a593Smuzhiyun         pBayertnr->sig2_y[i] = tnr.bay3d_sig2_y[i];
601*4882a593Smuzhiyun     }
602*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
603*4882a593Smuzhiyun }
604*4882a593Smuzhiyun #endif
605*4882a593Smuzhiyun #if RKAIQ_HAVE_CNR_V2
convertAiqUvnrToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_cnr_v3x_t & uvnr)606*4882a593Smuzhiyun void Isp3xParams::convertAiqUvnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
607*4882a593Smuzhiyun         rk_aiq_isp_cnr_v3x_t& uvnr)
608*4882a593Smuzhiyun {
609*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, uvnr.cnr_en_i);
610*4882a593Smuzhiyun 
611*4882a593Smuzhiyun     bool enable = uvnr.cnr_en_i;
612*4882a593Smuzhiyun 
613*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_CNR;
614*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_CNR;
615*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_CNR;
616*4882a593Smuzhiyun 
617*4882a593Smuzhiyun 
618*4882a593Smuzhiyun     struct isp3x_cnr_cfg *pCnr = &isp_cfg.others.cnr_cfg;
619*4882a593Smuzhiyun 
620*4882a593Smuzhiyun     pCnr->thumb_mix_cur_en = uvnr.cnr_thumb_mix_cur_en;
621*4882a593Smuzhiyun     pCnr->lq_bila_bypass = uvnr.cnr_lq_bila_bypass;
622*4882a593Smuzhiyun     pCnr->hq_bila_bypass = uvnr.cnr_hq_bila_bypass;
623*4882a593Smuzhiyun     pCnr->exgain_bypass = uvnr.cnr_exgain_bypass;
624*4882a593Smuzhiyun     if(!enable) {
625*4882a593Smuzhiyun         pCnr->lq_bila_bypass = 0x01;
626*4882a593Smuzhiyun         pCnr->hq_bila_bypass = 0x01;
627*4882a593Smuzhiyun         pCnr->exgain_bypass = 0x01;
628*4882a593Smuzhiyun     }
629*4882a593Smuzhiyun 
630*4882a593Smuzhiyun     pCnr->global_gain_alpha = uvnr.cnr_global_gain_alpha;
631*4882a593Smuzhiyun     pCnr->global_gain = uvnr.cnr_global_gain;
632*4882a593Smuzhiyun 
633*4882a593Smuzhiyun     pCnr->gain_iso = uvnr.cnr_gain_iso;
634*4882a593Smuzhiyun     pCnr->gain_offset = uvnr.cnr_gain_offset;
635*4882a593Smuzhiyun     pCnr->gain_1sigma = uvnr.cnr_gain_1sigma;
636*4882a593Smuzhiyun 
637*4882a593Smuzhiyun     pCnr->gain_uvgain1 = uvnr.cnr_gain_uvgain1;
638*4882a593Smuzhiyun     pCnr->gain_uvgain0 = uvnr.cnr_gain_uvgain0;
639*4882a593Smuzhiyun 
640*4882a593Smuzhiyun     pCnr->lmed3_alpha = uvnr.cnr_lmed3_alpha;
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun     pCnr->lbf5_gain_y = uvnr.cnr_lbf5_gain_y;
643*4882a593Smuzhiyun     pCnr->lbf5_gain_c = uvnr.cnr_lbf5_gain_c;
644*4882a593Smuzhiyun 
645*4882a593Smuzhiyun     pCnr->lbf5_weit_d3 = uvnr.cnr_lbf5_weit_d[3];
646*4882a593Smuzhiyun     pCnr->lbf5_weit_d2 = uvnr.cnr_lbf5_weit_d[2];
647*4882a593Smuzhiyun     pCnr->lbf5_weit_d1 = uvnr.cnr_lbf5_weit_d[1];
648*4882a593Smuzhiyun     pCnr->lbf5_weit_d0 = uvnr.cnr_lbf5_weit_d[0];
649*4882a593Smuzhiyun 
650*4882a593Smuzhiyun     pCnr->lbf5_weit_d4 = uvnr.cnr_lbf5_weit_d[4];
651*4882a593Smuzhiyun 
652*4882a593Smuzhiyun     pCnr->hmed3_alpha = uvnr.cnr_hmed3_alpha;
653*4882a593Smuzhiyun 
654*4882a593Smuzhiyun     pCnr->hbf5_weit_src = uvnr.cnr_hbf5_weit_src;
655*4882a593Smuzhiyun     pCnr->hbf5_min_wgt = uvnr.cnr_hbf5_min_wgt;
656*4882a593Smuzhiyun     pCnr->hbf5_sigma = uvnr.cnr_hbf5_sigma;
657*4882a593Smuzhiyun 
658*4882a593Smuzhiyun     pCnr->lbf5_weit_src = uvnr.cnr_lbf5_weit_src;
659*4882a593Smuzhiyun     pCnr->lbf3_sigma = uvnr.cnr_lbf3_sigma;
660*4882a593Smuzhiyun 
661*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_CNR_SIGMA_Y_NUM; i++) {
662*4882a593Smuzhiyun         pCnr->sigma_y[i] = uvnr.cnr_sigma_y[i];
663*4882a593Smuzhiyun     }
664*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
665*4882a593Smuzhiyun }
666*4882a593Smuzhiyun #endif
667*4882a593Smuzhiyun #if RKAIQ_HAVE_YNR_V3
convertAiqYnrToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_ynr_v3x_t & ynr)668*4882a593Smuzhiyun void Isp3xParams::convertAiqYnrToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
669*4882a593Smuzhiyun         rk_aiq_isp_ynr_v3x_t& ynr)
670*4882a593Smuzhiyun {
671*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d \n", __FUNCTION__, __LINE__, ynr.ynr_en);
672*4882a593Smuzhiyun 
673*4882a593Smuzhiyun     bool enable = ynr.ynr_en;
674*4882a593Smuzhiyun 
675*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_YNR;
676*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_YNR;
677*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_YNR;
678*4882a593Smuzhiyun 
679*4882a593Smuzhiyun     struct isp3x_ynr_cfg *pYnr = &isp_cfg.others.ynr_cfg;
680*4882a593Smuzhiyun 
681*4882a593Smuzhiyun     pYnr->rnr_en = ynr.ynr_rnr_en;
682*4882a593Smuzhiyun     pYnr->thumb_mix_cur_en = ynr.ynr_thumb_mix_cur_en;
683*4882a593Smuzhiyun     pYnr->global_gain_alpha = ynr.ynr_global_gain_alpha;
684*4882a593Smuzhiyun     pYnr->global_gain = ynr.ynr_global_gain;
685*4882a593Smuzhiyun     pYnr->flt1x1_bypass_sel = ynr.ynr_flt1x1_bypass_sel;
686*4882a593Smuzhiyun     pYnr->sft5x5_bypass = ynr.ynr_sft5x5_bypass;
687*4882a593Smuzhiyun     pYnr->flt1x1_bypass_sel = ynr.ynr_flt1x1_bypass_sel;
688*4882a593Smuzhiyun     pYnr->flt1x1_bypass = ynr.ynr_flt1x1_bypass;
689*4882a593Smuzhiyun     pYnr->lgft3x3_bypass = ynr.ynr_lgft3x3_bypass;
690*4882a593Smuzhiyun     pYnr->lbft5x5_bypass = ynr.ynr_lbft5x5_bypass;
691*4882a593Smuzhiyun     pYnr->bft3x3_bypass = ynr.ynr_bft3x3_bypass;
692*4882a593Smuzhiyun     if(!enable) {
693*4882a593Smuzhiyun         pYnr->sft5x5_bypass = 0x01;
694*4882a593Smuzhiyun         pYnr->flt1x1_bypass = 0x01;
695*4882a593Smuzhiyun         pYnr->lgft3x3_bypass = 0x01;
696*4882a593Smuzhiyun         pYnr->lbft5x5_bypass = 0x01;
697*4882a593Smuzhiyun         pYnr->bft3x3_bypass = 0x01;
698*4882a593Smuzhiyun     }
699*4882a593Smuzhiyun 
700*4882a593Smuzhiyun     pYnr->rnr_max_r = ynr.ynr_rnr_max_r;
701*4882a593Smuzhiyun     pYnr->local_gainscale = ynr.ynr_local_gainscale;
702*4882a593Smuzhiyun 
703*4882a593Smuzhiyun     pYnr->rnr_center_coorh = ynr.ynr_rnr_center_coorh;
704*4882a593Smuzhiyun     pYnr->rnr_center_coorv = ynr.ynr_rnr_center_coorv;
705*4882a593Smuzhiyun 
706*4882a593Smuzhiyun     pYnr->loclagain_adj_thresh = ynr.ynr_localgain_adj_thresh;
707*4882a593Smuzhiyun     pYnr->localgain_adj = ynr.ynr_localgain_adj;
708*4882a593Smuzhiyun 
709*4882a593Smuzhiyun     pYnr->low_bf_inv1 = ynr.ynr_low_bf_inv[1];
710*4882a593Smuzhiyun     pYnr->low_bf_inv0 = ynr.ynr_low_bf_inv[0];
711*4882a593Smuzhiyun 
712*4882a593Smuzhiyun     pYnr->low_peak_supress = ynr.ynr_low_peak_supress;
713*4882a593Smuzhiyun     pYnr->low_thred_adj = ynr.ynr_low_thred_adj;
714*4882a593Smuzhiyun 
715*4882a593Smuzhiyun     pYnr->low_dist_adj = ynr.ynr_low_dist_adj;
716*4882a593Smuzhiyun     pYnr->low_edge_adj_thresh = ynr.ynr_low_edge_adj_thresh;
717*4882a593Smuzhiyun 
718*4882a593Smuzhiyun     pYnr->low_bi_weight = ynr.ynr_low_bi_weight;
719*4882a593Smuzhiyun     pYnr->low_weight = ynr.ynr_low_weight;
720*4882a593Smuzhiyun     pYnr->low_center_weight = ynr.ynr_low_center_weight;
721*4882a593Smuzhiyun 
722*4882a593Smuzhiyun     pYnr->hi_min_adj = ynr.ynr_hi_min_adj;
723*4882a593Smuzhiyun     pYnr->high_thred_adj = ynr.ynr_high_thred_adj;
724*4882a593Smuzhiyun     pYnr->high_retain_weight = ynr.ynr_high_retain_weight;
725*4882a593Smuzhiyun     pYnr->hi_edge_thed = ynr.ynr_hi_edge_thed;
726*4882a593Smuzhiyun 
727*4882a593Smuzhiyun     pYnr->base_filter_weight2 = ynr.ynr_base_filter_weight[2];
728*4882a593Smuzhiyun     pYnr->base_filter_weight1 = ynr.ynr_base_filter_weight[1];
729*4882a593Smuzhiyun     pYnr->base_filter_weight0 = ynr.ynr_base_filter_weight[0];
730*4882a593Smuzhiyun 
731*4882a593Smuzhiyun     pYnr->frame_full_size = ynr.ynr_frame_full_size;
732*4882a593Smuzhiyun     pYnr->lbf_weight_thres = ynr.ynr_lbf_weight_thres;
733*4882a593Smuzhiyun 
734*4882a593Smuzhiyun     pYnr->low_gauss1_coeff2 = ynr.ynr_low_gauss1_coeff[2];
735*4882a593Smuzhiyun     pYnr->low_gauss1_coeff1 = ynr.ynr_low_gauss1_coeff[1];
736*4882a593Smuzhiyun     pYnr->low_gauss1_coeff0 = ynr.ynr_low_gauss1_coeff[0];
737*4882a593Smuzhiyun 
738*4882a593Smuzhiyun     pYnr->low_gauss2_coeff2 = ynr.ynr_low_gauss2_coeff[2];
739*4882a593Smuzhiyun     pYnr->low_gauss2_coeff1 = ynr.ynr_low_gauss2_coeff[1];
740*4882a593Smuzhiyun     pYnr->low_gauss2_coeff0 = ynr.ynr_low_gauss2_coeff[0];
741*4882a593Smuzhiyun 
742*4882a593Smuzhiyun     pYnr->direction_weight3 = ynr.ynr_direction_weight[3];
743*4882a593Smuzhiyun     pYnr->direction_weight2 = ynr.ynr_direction_weight[2];
744*4882a593Smuzhiyun     pYnr->direction_weight1 = ynr.ynr_direction_weight[1];
745*4882a593Smuzhiyun     pYnr->direction_weight0 = ynr.ynr_direction_weight[0];
746*4882a593Smuzhiyun 
747*4882a593Smuzhiyun     pYnr->direction_weight7 = ynr.ynr_direction_weight[7];
748*4882a593Smuzhiyun     pYnr->direction_weight6 = ynr.ynr_direction_weight[6];
749*4882a593Smuzhiyun     pYnr->direction_weight5 = ynr.ynr_direction_weight[5];
750*4882a593Smuzhiyun     pYnr->direction_weight4 = ynr.ynr_direction_weight[4];
751*4882a593Smuzhiyun 
752*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_YNR_XY_NUM; i++) {
753*4882a593Smuzhiyun         pYnr->luma_points_x[i] = ynr.ynr_luma_points_x[i];
754*4882a593Smuzhiyun         pYnr->lsgm_y[i] = ynr.ynr_lsgm_y[i];
755*4882a593Smuzhiyun         pYnr->hsgm_y[i] = ynr.ynr_hsgm_y[i];
756*4882a593Smuzhiyun         pYnr->rnr_strength3[i] = ynr.ynr_rnr_strength[i];
757*4882a593Smuzhiyun     }
758*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
759*4882a593Smuzhiyun }
760*4882a593Smuzhiyun #endif
761*4882a593Smuzhiyun #if RKAIQ_HAVE_SHARP_V4
convertAiqSharpenToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_sharp_v3x_t & sharp)762*4882a593Smuzhiyun void Isp3xParams::convertAiqSharpenToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
763*4882a593Smuzhiyun         rk_aiq_isp_sharp_v3x_t& sharp)
764*4882a593Smuzhiyun {
765*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d\n", __FUNCTION__, __LINE__, sharp.sharp_en);
766*4882a593Smuzhiyun     bool enable = sharp.sharp_en;
767*4882a593Smuzhiyun 
768*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_SHARP;
769*4882a593Smuzhiyun     isp_cfg.module_ens |= ISP3X_MODULE_SHARP;
770*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP3X_MODULE_SHARP;
771*4882a593Smuzhiyun 
772*4882a593Smuzhiyun 
773*4882a593Smuzhiyun     struct isp3x_sharp_cfg *pSharp = &isp_cfg.others.sharp_cfg;
774*4882a593Smuzhiyun 
775*4882a593Smuzhiyun     pSharp->exgain_bypass = sharp.sharp_exgain_bypass;
776*4882a593Smuzhiyun     pSharp->center_mode = sharp.sharp_center_mode;
777*4882a593Smuzhiyun     pSharp->bypass = sharp.sharp_bypass;
778*4882a593Smuzhiyun     if(!enable) {
779*4882a593Smuzhiyun         pSharp->bypass = 0x01;
780*4882a593Smuzhiyun     }
781*4882a593Smuzhiyun 
782*4882a593Smuzhiyun     pSharp->sharp_ratio = sharp.sharp_sharp_ratio;
783*4882a593Smuzhiyun     pSharp->bf_ratio = sharp.sharp_bf_ratio;
784*4882a593Smuzhiyun     pSharp->gaus_ratio = sharp.sharp_gaus_ratio;
785*4882a593Smuzhiyun     pSharp->pbf_ratio = sharp.sharp_pbf_ratio;
786*4882a593Smuzhiyun 
787*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_SHARP_X_NUM; i++) {
788*4882a593Smuzhiyun         pSharp->luma_dx[i] = sharp.sharp_luma_dx[i];
789*4882a593Smuzhiyun     }
790*4882a593Smuzhiyun 
791*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_SHARP_Y_NUM; i++) {
792*4882a593Smuzhiyun         pSharp->pbf_sigma_inv[i] = sharp.sharp_pbf_sigma_inv[i];
793*4882a593Smuzhiyun         pSharp->bf_sigma_inv[i] = sharp.sharp_bf_sigma_inv[i];
794*4882a593Smuzhiyun     }
795*4882a593Smuzhiyun 
796*4882a593Smuzhiyun     pSharp->bf_sigma_shift = sharp.sharp_bf_sigma_shift;
797*4882a593Smuzhiyun     pSharp->pbf_sigma_shift = sharp.sharp_pbf_sigma_shift;
798*4882a593Smuzhiyun 
799*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_SHARP_Y_NUM; i++) {
800*4882a593Smuzhiyun         pSharp->ehf_th[i] = sharp.sharp_ehf_th[i];
801*4882a593Smuzhiyun         pSharp->clip_hf[i] = sharp.sharp_clip_hf[i];
802*4882a593Smuzhiyun     }
803*4882a593Smuzhiyun 
804*4882a593Smuzhiyun     pSharp->pbf_coef2 = sharp.sharp_pbf_coef[2];
805*4882a593Smuzhiyun     pSharp->pbf_coef1 = sharp.sharp_pbf_coef[1];
806*4882a593Smuzhiyun     pSharp->pbf_coef0 = sharp.sharp_pbf_coef[0];
807*4882a593Smuzhiyun 
808*4882a593Smuzhiyun     pSharp->bf_coef2 = sharp.sharp_bf_coef[2];
809*4882a593Smuzhiyun     pSharp->bf_coef1 = sharp.sharp_bf_coef[1];
810*4882a593Smuzhiyun     pSharp->bf_coef0 = sharp.sharp_bf_coef[0];
811*4882a593Smuzhiyun 
812*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_SHARP_GAUS_COEF_NUM; i++) {
813*4882a593Smuzhiyun         pSharp->gaus_coef[i] = sharp.sharp_gaus_coef[i];
814*4882a593Smuzhiyun     }
815*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
816*4882a593Smuzhiyun }
817*4882a593Smuzhiyun #endif
818*4882a593Smuzhiyun template <class T>
convertAiqGainToIsp3xParams(T & isp_cfg,rk_aiq_isp_gain_v3x_t & gain)819*4882a593Smuzhiyun void Isp3xParams::convertAiqGainToIsp3xParams(T& isp_cfg, rk_aiq_isp_gain_v3x_t& gain) {
820*4882a593Smuzhiyun     LOGD_ANR("%s:%d enter! enable:%d gain:0x%x 0x%x 0x%x\n", __FUNCTION__, __LINE__,
821*4882a593Smuzhiyun              gain.sw_gain_en,
822*4882a593Smuzhiyun              gain.sw_gain[0],
823*4882a593Smuzhiyun              gain.sw_gain[1],
824*4882a593Smuzhiyun              gain.sw_gain[2]);
825*4882a593Smuzhiyun 
826*4882a593Smuzhiyun     bool enable = gain.sw_gain_en;
827*4882a593Smuzhiyun     if(enable) {
828*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_GAIN;
829*4882a593Smuzhiyun     } else {
830*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP3X_MODULE_GAIN);
831*4882a593Smuzhiyun     }
832*4882a593Smuzhiyun 
833*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP3X_MODULE_GAIN;
834*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= (ISP3X_MODULE_GAIN);
835*4882a593Smuzhiyun 
836*4882a593Smuzhiyun     struct isp3x_gain_cfg *pGain = &isp_cfg.others.gain_cfg;
837*4882a593Smuzhiyun 
838*4882a593Smuzhiyun     pGain->g0 = gain.sw_gain[0];
839*4882a593Smuzhiyun     pGain->g1 = gain.sw_gain[1];
840*4882a593Smuzhiyun     pGain->g2 = gain.sw_gain[2];
841*4882a593Smuzhiyun 
842*4882a593Smuzhiyun     LOGD_ANR("%s:%d exit!\n", __FUNCTION__, __LINE__);
843*4882a593Smuzhiyun }
844*4882a593Smuzhiyun 
845*4882a593Smuzhiyun #if RKAIQ_HAVE_DRC_V11
convertAiqDrcToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,rk_aiq_isp_drc_v3x_t & adrc_data)846*4882a593Smuzhiyun void Isp3xParams::convertAiqDrcToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
847*4882a593Smuzhiyun         rk_aiq_isp_drc_v3x_t& adrc_data)
848*4882a593Smuzhiyun {
849*4882a593Smuzhiyun     if (adrc_data.bDrcEn) {
850*4882a593Smuzhiyun         isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
851*4882a593Smuzhiyun         isp_cfg.module_ens |= 1LL << Rk_ISP21_DRC_ID;
852*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= 1LL << Rk_ISP21_DRC_ID;
853*4882a593Smuzhiyun     } else {
854*4882a593Smuzhiyun         isp_cfg.module_en_update |= 1LL << Rk_ISP21_DRC_ID;
855*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(1LL << Rk_ISP21_DRC_ID);
856*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(1LL << Rk_ISP21_DRC_ID);
857*4882a593Smuzhiyun         return;
858*4882a593Smuzhiyun     }
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bypass_en       = adrc_data.DrcProcRes.Drc_v11.bypass_en;
861*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.offset_pow2     = adrc_data.DrcProcRes.Drc_v11.offset_pow2;
862*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.compres_scl     = adrc_data.DrcProcRes.Drc_v11.compres_scl;
863*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.position        = adrc_data.DrcProcRes.Drc_v11.position;
864*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.delta_scalein   = adrc_data.DrcProcRes.Drc_v11.delta_scalein;
865*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.hpdetail_ratio  = adrc_data.DrcProcRes.Drc_v11.hpdetail_ratio;
866*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.lpdetail_ratio  = adrc_data.DrcProcRes.Drc_v11.lpdetail_ratio;
867*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weicur_pix      = adrc_data.DrcProcRes.Drc_v11.weicur_pix;
868*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weipre_frame    = adrc_data.DrcProcRes.Drc_v11.weipre_frame;
869*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bilat_wt_off    = adrc_data.DrcProcRes.Drc_v11.bilat_wt_off;
870*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.force_sgm_inv0  = adrc_data.DrcProcRes.Drc_v11.force_sgm_inv0;
871*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.motion_scl      = adrc_data.DrcProcRes.Drc_v11.motion_scl;
872*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.edge_scl        = adrc_data.DrcProcRes.Drc_v11.edge_scl;
873*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.space_sgm_inv1  = adrc_data.DrcProcRes.Drc_v11.space_sgm_inv1;
874*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.space_sgm_inv0  = adrc_data.DrcProcRes.Drc_v11.space_sgm_inv0;
875*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.range_sgm_inv1  = adrc_data.DrcProcRes.Drc_v11.range_sgm_inv1;
876*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.range_sgm_inv0  = adrc_data.DrcProcRes.Drc_v11.range_sgm_inv0;
877*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weig_maxl       = adrc_data.DrcProcRes.Drc_v11.weig_maxl;
878*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.weig_bilat      = adrc_data.DrcProcRes.Drc_v11.weig_bilat;
879*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.enable_soft_thd = adrc_data.DrcProcRes.Drc_v11.enable_soft_thd;
880*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.bilat_soft_thd  = adrc_data.DrcProcRes.Drc_v11.bilat_soft_thd;
881*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.iir_weight      = adrc_data.DrcProcRes.Drc_v11.iir_weight;
882*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.min_ogain       = adrc_data.DrcProcRes.Drc_v11.min_ogain;
883*4882a593Smuzhiyun     isp_cfg.others.drc_cfg.wr_cycle        = adrc_data.DrcProcRes.Drc_v11.wr_cycle;
884*4882a593Smuzhiyun 
885*4882a593Smuzhiyun     for(int i = 0; i < 17; i++) {
886*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.gain_y[i]    = adrc_data.DrcProcRes.Drc_v11.gain_y[i];
887*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.compres_y[i] = adrc_data.DrcProcRes.Drc_v11.compres_y[i];
888*4882a593Smuzhiyun         isp_cfg.others.drc_cfg.scale_y[i]   = adrc_data.DrcProcRes.Drc_v11.scale_y[i];
889*4882a593Smuzhiyun     }
890*4882a593Smuzhiyun 
891*4882a593Smuzhiyun #if 0
892*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_drc_offset_pow2 %d", __LINE__, isp_cfg.others.drc_cfg.offset_pow2);
893*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_offset_pow2 %d", isp_cfg.others.drc_cfg.offset_pow2);
894*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_compres_scl %d", isp_cfg.others.drc_cfg.compres_scl);
895*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_position %d", isp_cfg.others.drc_cfg.position);
896*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_delta_scalein %d", isp_cfg.others.drc_cfg.delta_scalein);
897*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_hpdetail_ratio %d", isp_cfg.others.drc_cfg.hpdetail_ratio);
898*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_lpdetail_ratio %d", isp_cfg.others.drc_cfg.lpdetail_ratio);
899*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "sw_drc_weicur_pix %d", isp_cfg.others.drc_cfg.weicur_pix);
900*4882a593Smuzhiyun 
901*4882a593Smuzhiyun #endif
902*4882a593Smuzhiyun }
903*4882a593Smuzhiyun #endif
904*4882a593Smuzhiyun 
905*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V30 || RKAIQ_ONLY_AF_STATS_V30
convertAiqAfToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,const rk_aiq_isp_af_meas_v3x_t & af_data,bool af_cfg_udpate)906*4882a593Smuzhiyun void Isp3xParams::convertAiqAfToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
907*4882a593Smuzhiyun         const rk_aiq_isp_af_meas_v3x_t& af_data, bool af_cfg_udpate)
908*4882a593Smuzhiyun {
909*4882a593Smuzhiyun     int i;
910*4882a593Smuzhiyun 
911*4882a593Smuzhiyun     if (!af_cfg_udpate)
912*4882a593Smuzhiyun         return;
913*4882a593Smuzhiyun 
914*4882a593Smuzhiyun     if (af_data.af_en)
915*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_RAWAF;
916*4882a593Smuzhiyun     isp_cfg.module_en_update |= ISP2X_MODULE_RAWAF;
917*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAF;
918*4882a593Smuzhiyun 
919*4882a593Smuzhiyun     isp_cfg.meas.rawaf.rawaf_sel = af_data.rawaf_sel;
920*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gamma_en = af_data.gamma_en;
921*4882a593Smuzhiyun     isp_cfg.meas.rawaf.gaus_en = af_data.gaus_en;
922*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fir_sel = af_data.v1_fir_sel;
923*4882a593Smuzhiyun     isp_cfg.meas.rawaf.hiir_en = af_data.hiir_en;
924*4882a593Smuzhiyun     isp_cfg.meas.rawaf.viir_en = af_data.viir_en;
925*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1_fv_mode = af_data.v1_fv_outmode;
926*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2_fv_mode = af_data.v2_fv_outmode;
927*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1_fv_mode = af_data.h1_fv_outmode;
928*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2_fv_mode = af_data.h2_fv_outmode;
929*4882a593Smuzhiyun     isp_cfg.meas.rawaf.ldg_en = af_data.ldg_en;
930*4882a593Smuzhiyun     isp_cfg.meas.rawaf.accu_8bit_mode = af_data.accu_8bit_mode;
931*4882a593Smuzhiyun     if (af_data.af_en)
932*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = af_data.ae_mode;
933*4882a593Smuzhiyun     else
934*4882a593Smuzhiyun         isp_cfg.meas.rawaf.ae_mode = 0;
935*4882a593Smuzhiyun     isp_cfg.meas.rawaf.y_mode = af_data.y_mode;
936*4882a593Smuzhiyun 
937*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_en,
938*4882a593Smuzhiyun            af_data.line_en, ISP2X_RAWAF_LINE_NUM * sizeof(unsigned char));
939*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.line_num,
940*4882a593Smuzhiyun            af_data.line_num, ISP2X_RAWAF_LINE_NUM * sizeof(unsigned char));
941*4882a593Smuzhiyun 
942*4882a593Smuzhiyun     isp_cfg.meas.rawaf.num_afm_win = af_data.window_num;
943*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_offs = af_data.wina_h_offs;
944*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_offs = af_data.wina_v_offs;
945*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].h_size = af_data.wina_h_size;
946*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[0].v_size = af_data.wina_v_size;
947*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_offs = af_data.winb_h_offs;
948*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_offs = af_data.winb_v_offs;
949*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].h_size = af_data.winb_h_size;
950*4882a593Smuzhiyun     isp_cfg.meas.rawaf.win[1].v_size = af_data.winb_v_size;
951*4882a593Smuzhiyun 
952*4882a593Smuzhiyun     memcpy(isp_cfg.meas.rawaf.gamma_y,
953*4882a593Smuzhiyun            af_data.gamma_y, ISP3X_RAWAF_GAMMA_NUM * sizeof(unsigned short));
954*4882a593Smuzhiyun 
955*4882a593Smuzhiyun     /* THRES */
956*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_thres = af_data.thres;
957*4882a593Smuzhiyun     /* VAR_SHIFT */
958*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[0] = af_data.shift_sum_a;
959*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[0] = af_data.shift_y_a;
960*4882a593Smuzhiyun     isp_cfg.meas.rawaf.afm_var_shift[1] = af_data.shift_sum_b;
961*4882a593Smuzhiyun     isp_cfg.meas.rawaf.lum_var_shift[1] = af_data.shift_y_b;
962*4882a593Smuzhiyun     /* HVIIR_VAR_SHIFT */
963*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h1iir_var_shift = af_data.h1_fv_shift;
964*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h2iir_var_shift = af_data.h2_fv_shift;
965*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v1iir_var_shift = af_data.v1_fv_shift;
966*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v2iir_var_shift = af_data.v2_fv_shift;
967*4882a593Smuzhiyun 
968*4882a593Smuzhiyun     /* HIIR_THRESH */
969*4882a593Smuzhiyun     isp_cfg.meas.rawaf.h_fv_thresh = af_data.h_fv_thresh;
970*4882a593Smuzhiyun     isp_cfg.meas.rawaf.v_fv_thresh = af_data.v_fv_thresh;
971*4882a593Smuzhiyun 
972*4882a593Smuzhiyun     for (i = 0; i < ISP3X_RAWAF_CURVE_NUM; i++) {
973*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_lumth = af_data.h_ldg_lumth[i];
974*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gain = af_data.h_ldg_gain[i];
975*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_h[i].ldg_gslp = af_data.h_ldg_gslp[i];
976*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_lumth = af_data.v_ldg_lumth[i];
977*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gain = af_data.v_ldg_gain[i];
978*4882a593Smuzhiyun         isp_cfg.meas.rawaf.curve_v[i].ldg_gslp = af_data.v_ldg_gslp[i];
979*4882a593Smuzhiyun     }
980*4882a593Smuzhiyun 
981*4882a593Smuzhiyun     for (i = 0; i < ISP3X_RAWAF_HIIR_COE_NUM; i++) {
982*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir1_coe[i] = af_data.h1_iir1_coe[i];
983*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h1iir2_coe[i] = af_data.h1_iir2_coe[i];
984*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir1_coe[i] = af_data.h2_iir1_coe[i];
985*4882a593Smuzhiyun         isp_cfg.meas.rawaf.h2iir2_coe[i] = af_data.h2_iir2_coe[i];
986*4882a593Smuzhiyun     }
987*4882a593Smuzhiyun     for (i = 0; i < ISP3X_RAWAF_V1IIR_COE_NUM; i++) {
988*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1iir_coe[i] = af_data.v1_iir_coe[i];
989*4882a593Smuzhiyun     }
990*4882a593Smuzhiyun     for (i = 0; i < ISP3X_RAWAF_V2IIR_COE_NUM; i++) {
991*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2iir_coe[i] = af_data.v2_iir_coe[i];
992*4882a593Smuzhiyun     }
993*4882a593Smuzhiyun     for (i = 0; i < ISP3X_RAWAF_VFIR_COE_NUM; i++) {
994*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v1fir_coe[i] = af_data.v1_fir_coe[i];
995*4882a593Smuzhiyun         isp_cfg.meas.rawaf.v2fir_coe[i] = af_data.v2_fir_coe[i];
996*4882a593Smuzhiyun     }
997*4882a593Smuzhiyun     isp_cfg.meas.rawaf.highlit_thresh = af_data.highlit_thresh;
998*4882a593Smuzhiyun 
999*4882a593Smuzhiyun     // rawae3 is used by af now!!!
1000*4882a593Smuzhiyun     if (af_data.af_en && af_data.ae_mode) {
1001*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_RAWAE3;
1002*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_RAWAE3;
1003*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_RAWAE3;
1004*4882a593Smuzhiyun 
1005*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.h_offs = af_data.wina_h_offs;
1006*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.v_offs = af_data.wina_v_offs;
1007*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.h_size = af_data.wina_h_size;
1008*4882a593Smuzhiyun         isp_cfg.meas.rawae3.win.v_size = af_data.wina_v_size;
1009*4882a593Smuzhiyun     }
1010*4882a593Smuzhiyun }
1011*4882a593Smuzhiyun #endif
1012*4882a593Smuzhiyun #if RKAIQ_HAVE_MERGE_V11
convertAiqMergeToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,const rk_aiq_isp_merge_v3x_t & amerge_data)1013*4882a593Smuzhiyun void Isp3xParams::convertAiqMergeToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
1014*4882a593Smuzhiyun         const rk_aiq_isp_merge_v3x_t& amerge_data)
1015*4882a593Smuzhiyun {
1016*4882a593Smuzhiyun     isp_cfg.module_en_update |= 1LL << RK_ISP2X_HDRMGE_ID;
1017*4882a593Smuzhiyun     isp_cfg.module_ens |= 1LL << RK_ISP2X_HDRMGE_ID;
1018*4882a593Smuzhiyun     isp_cfg.module_cfg_update |= 1LL << RK_ISP2X_HDRMGE_ID;
1019*4882a593Smuzhiyun 
1020*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.mode         = amerge_data.Merge_v11.sw_hdrmge_mode;
1021*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain0_inv    = amerge_data.Merge_v11.sw_hdrmge_gain0_inv;
1022*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain0        = amerge_data.Merge_v11.sw_hdrmge_gain0;
1023*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain1_inv    = amerge_data.Merge_v11.sw_hdrmge_gain1_inv;
1024*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain1        = amerge_data.Merge_v11.sw_hdrmge_gain1;
1025*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.gain2        = amerge_data.Merge_v11.sw_hdrmge_gain2;
1026*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_dif_0p15  = amerge_data.Merge_v11.sw_hdrmge_lm_dif_0p15;
1027*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_dif_0p9   = amerge_data.Merge_v11.sw_hdrmge_lm_dif_0p9;
1028*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_diff_0p15 = amerge_data.Merge_v11.sw_hdrmge_ms_dif_0p15;
1029*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_dif_0p8   = amerge_data.Merge_v11.sw_hdrmge_ms_dif_0p8;
1030*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_HDRMGE_L_CURVE_NUM; i++)
1031*4882a593Smuzhiyun     {
1032*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.curve.curve_0[i] = amerge_data.Merge_v11.sw_hdrmge_l0_y[i];
1033*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.curve.curve_1[i] = amerge_data.Merge_v11.sw_hdrmge_l1_y[i];
1034*4882a593Smuzhiyun     }
1035*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_HDRMGE_E_CURVE_NUM; i++)
1036*4882a593Smuzhiyun         isp_cfg.others.hdrmge_cfg.e_y[i] = amerge_data.Merge_v11.sw_hdrmge_e_y[i];
1037*4882a593Smuzhiyun 
1038*4882a593Smuzhiyun     //isp30 add
1039*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.s_base  = amerge_data.Merge_v11.sw_hdrmge_s_base;
1040*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_thd0 = amerge_data.Merge_v11.sw_hdrmge_ms_thd0;
1041*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_thd1 = amerge_data.Merge_v11.sw_hdrmge_ms_thd1;
1042*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.ms_scl  = amerge_data.Merge_v11.sw_hdrmge_ms_scl;
1043*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_thd0 = amerge_data.Merge_v11.sw_hdrmge_lm_thd0;
1044*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_thd1 = amerge_data.Merge_v11.sw_hdrmge_lm_thd1;
1045*4882a593Smuzhiyun     isp_cfg.others.hdrmge_cfg.lm_scl  = amerge_data.Merge_v11.sw_hdrmge_lm_scl;
1046*4882a593Smuzhiyun 
1047*4882a593Smuzhiyun #if 0
1048*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0_inv);
1049*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain0);
1050*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1_inv %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1_inv);
1051*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain1);
1052*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: gain2 %d", __LINE__, isp_cfg.others.hdrmge_cfg.gain2);
1053*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p15);
1054*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_dif_0p9 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_dif_0p9);
1055*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_diff_0p15 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_diff_0p15);
1056*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_dif_0p8 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_dif_0p8);
1057*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: s_base %d", __LINE__, isp_cfg.others.hdrmge_cfg.s_base);
1058*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: sw_hdrmge_ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
1059*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd0);
1060*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_thd1);
1061*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: ms_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.ms_scl);
1062*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd0 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd0);
1063*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_thd1 %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_thd1);
1064*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: lm_scl %d", __LINE__, isp_cfg.others.hdrmge_cfg.lm_scl);
1065*4882a593Smuzhiyun     for(int i = 0 ; i < 17; i++)
1066*4882a593Smuzhiyun     {
1067*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_0[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_0[i]);
1068*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: curve_1[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.curve.curve_1[i]);
1069*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%d: e_y[%d] %d", __LINE__, i, isp_cfg.others.hdrmge_cfg.e_y[i]);
1070*4882a593Smuzhiyun     }
1071*4882a593Smuzhiyun 
1072*4882a593Smuzhiyun #endif
1073*4882a593Smuzhiyun }
1074*4882a593Smuzhiyun #endif
1075*4882a593Smuzhiyun 
1076*4882a593Smuzhiyun #if RKAIQ_HAVE_GAMMA_V11
1077*4882a593Smuzhiyun template <class T>
convertAiqAgammaToIsp3xParams(T & isp_cfg,const rk_aiq_isp_goc_v3x_t & gamma_out_cfg)1078*4882a593Smuzhiyun void Isp3xParams::convertAiqAgammaToIsp3xParams(T& isp_cfg,
1079*4882a593Smuzhiyun         const rk_aiq_isp_goc_v3x_t& gamma_out_cfg) {
1080*4882a593Smuzhiyun     if (gamma_out_cfg.Gamma_v11.gamma_en) {
1081*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_GOC;
1082*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_GOC;
1083*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_GOC;
1084*4882a593Smuzhiyun     } else {
1085*4882a593Smuzhiyun         isp_cfg.module_ens &= ~ISP2X_MODULE_GOC;
1086*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_GOC;
1087*4882a593Smuzhiyun         return;
1088*4882a593Smuzhiyun     }
1089*4882a593Smuzhiyun 
1090*4882a593Smuzhiyun     struct isp3x_gammaout_cfg* cfg = &isp_cfg.others.gammaout_cfg;
1091*4882a593Smuzhiyun     cfg->offset                    = gamma_out_cfg.Gamma_v11.offset;
1092*4882a593Smuzhiyun     cfg->finalx4_dense_en          = gamma_out_cfg.Gamma_v11.EnableDot49 ? 1 : 0;
1093*4882a593Smuzhiyun     cfg->equ_segm                  = gamma_out_cfg.Gamma_v11.equ_segm;
1094*4882a593Smuzhiyun     for (int i = 0; i < 49; i++) cfg->gamma_y[i] = gamma_out_cfg.Gamma_v11.gamma_y[i];
1095*4882a593Smuzhiyun 
1096*4882a593Smuzhiyun #if 0
1097*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s:(%d) gamma en:%d, finalx4_dense_en:%d offset:%d, equ_segm:%d\n", __FUNCTION__, __LINE__, gamma_out_cfg.Gamma_v11.gamma_en,
1098*4882a593Smuzhiyun                     cfg->finalx4_dense_en, cfg->offset, cfg->offset);
1099*4882a593Smuzhiyun     LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "Gamma_Y:%d %d %d %d %d %d %d %d\n", cfg->gamma_y[0], cfg->gamma_y[1],
1100*4882a593Smuzhiyun                     cfg->gamma_y[2], cfg->gamma_y[3], cfg->gamma_y[4], cfg->gamma_y[5], cfg->gamma_y[6], cfg->gamma_y[7]);
1101*4882a593Smuzhiyun #endif
1102*4882a593Smuzhiyun }
1103*4882a593Smuzhiyun #endif
1104*4882a593Smuzhiyun 
1105*4882a593Smuzhiyun #if RKAIQ_HAVE_CAC_V03 || RKAIQ_HAVE_CAC_V10
convertAiqCacToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,struct isp3x_isp_params_cfg & isp_cfg_right,const rk_aiq_isp_cac_v3x_t & cac_cfg,bool is_multi_isp)1106*4882a593Smuzhiyun void Isp3xParams::convertAiqCacToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
1107*4882a593Smuzhiyun         struct isp3x_isp_params_cfg& isp_cfg_right,
1108*4882a593Smuzhiyun         const rk_aiq_isp_cac_v3x_t& cac_cfg, bool is_multi_isp)
1109*4882a593Smuzhiyun {
1110*4882a593Smuzhiyun     LOGD_ACAC("convert CAC params enable %d", cac_cfg.enable);
1111*4882a593Smuzhiyun     if(cac_cfg.enable) {
1112*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP3X_MODULE_CAC;
1113*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP3X_MODULE_CAC;
1114*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP3X_MODULE_CAC;
1115*4882a593Smuzhiyun     }
1116*4882a593Smuzhiyun     else {
1117*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP3X_MODULE_CAC;
1118*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP3X_MODULE_CAC);
1119*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(ISP3X_MODULE_CAC);
1120*4882a593Smuzhiyun     }
1121*4882a593Smuzhiyun 
1122*4882a593Smuzhiyun     struct isp3x_cac_cfg* cfg = &isp_cfg.others.cac_cfg;
1123*4882a593Smuzhiyun     struct isp3x_cac_cfg* cfg_right = nullptr;
1124*4882a593Smuzhiyun     memcpy(cfg, &cac_cfg.cfg[0], sizeof(*cfg));
1125*4882a593Smuzhiyun     if (is_multi_isp) {
1126*4882a593Smuzhiyun         cfg_right = &isp_cfg_right.others.cac_cfg;
1127*4882a593Smuzhiyun         memcpy(cfg_right, &cac_cfg.cfg[1], sizeof(*cfg));
1128*4882a593Smuzhiyun     }
1129*4882a593Smuzhiyun 
1130*4882a593Smuzhiyun #if 1
1131*4882a593Smuzhiyun     LOGD_ACAC("driver current enable: %d", cac_cfg.enable);
1132*4882a593Smuzhiyun     LOGD_ACAC("driver center en: %d", cfg->center_en);
1133*4882a593Smuzhiyun     LOGD_ACAC("driver center x: %u", cfg->center_width);
1134*4882a593Smuzhiyun     LOGD_ACAC("driver center y: %u", cfg->center_height);
1135*4882a593Smuzhiyun     LOGD_ACAC("driver psf shift bits: %u", cfg->psf_sft_bit);
1136*4882a593Smuzhiyun     LOGD_ACAC("driver psf cfg num: %u", cfg->cfg_num);
1137*4882a593Smuzhiyun     LOGD_ACAC("driver psf buf fd: %d", cfg->buf_fd);
1138*4882a593Smuzhiyun     if (is_multi_isp) {
1139*4882a593Smuzhiyun         LOGD_ACAC("driver psf buf fd right : %d", cfg_right->buf_fd);
1140*4882a593Smuzhiyun     }
1141*4882a593Smuzhiyun     LOGD_ACAC("driver psf hwsize: %u", cfg->hsize);
1142*4882a593Smuzhiyun     LOGD_ACAC("driver psf size: %u", cfg->vsize);
1143*4882a593Smuzhiyun     for (int i = 0; i < RKCAC_STRENGTH_TABLE_LEN; i++) {
1144*4882a593Smuzhiyun         LOGD_ACAC("driver strength %d: %u", i, cfg->strength[i]);
1145*4882a593Smuzhiyun     }
1146*4882a593Smuzhiyun #endif
1147*4882a593Smuzhiyun }
1148*4882a593Smuzhiyun #endif
1149*4882a593Smuzhiyun 
1150*4882a593Smuzhiyun #if RKAIQ_HAVE_DEHAZE_V11_DUO
convertAiqAdehazeToIsp3xParams(struct isp3x_isp_params_cfg & isp_cfg,const rk_aiq_isp_dehaze_v3x_t & dhaze)1151*4882a593Smuzhiyun void Isp3xParams::convertAiqAdehazeToIsp3xParams(struct isp3x_isp_params_cfg& isp_cfg,
1152*4882a593Smuzhiyun         const rk_aiq_isp_dehaze_v3x_t& dhaze)
1153*4882a593Smuzhiyun {
1154*4882a593Smuzhiyun     if (dhaze.enable) {
1155*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
1156*4882a593Smuzhiyun         isp_cfg.module_ens |= ISP2X_MODULE_DHAZ;
1157*4882a593Smuzhiyun         isp_cfg.module_cfg_update |= ISP2X_MODULE_DHAZ;
1158*4882a593Smuzhiyun     } else {
1159*4882a593Smuzhiyun         isp_cfg.module_en_update |= ISP2X_MODULE_DHAZ;
1160*4882a593Smuzhiyun         isp_cfg.module_ens &= ~(ISP2X_MODULE_DHAZ);
1161*4882a593Smuzhiyun         isp_cfg.module_cfg_update &= ~(ISP2X_MODULE_DHAZ);
1162*4882a593Smuzhiyun         return;
1163*4882a593Smuzhiyun     }
1164*4882a593Smuzhiyun 
1165*4882a593Smuzhiyun     struct isp3x_dhaz_cfg *  cfg = &isp_cfg.others.dhaz_cfg;
1166*4882a593Smuzhiyun 
1167*4882a593Smuzhiyun     cfg->round_en        = dhaze.ProcResV11duo.round_en;
1168*4882a593Smuzhiyun     cfg->soft_wr_en      = dhaze.ProcResV11duo.soft_wr_en;
1169*4882a593Smuzhiyun     cfg->enhance_en      = dhaze.ProcResV11duo.enhance_en;
1170*4882a593Smuzhiyun     cfg->air_lc_en       = dhaze.ProcResV11duo.air_lc_en;
1171*4882a593Smuzhiyun     cfg->hpara_en        = dhaze.ProcResV11duo.hpara_en;
1172*4882a593Smuzhiyun     cfg->hist_en         = dhaze.ProcResV11duo.hist_en;
1173*4882a593Smuzhiyun     cfg->dc_en           = dhaze.ProcResV11duo.dc_en;
1174*4882a593Smuzhiyun     cfg->yblk_th         = dhaze.ProcResV11duo.yblk_th;
1175*4882a593Smuzhiyun     cfg->yhist_th        = dhaze.ProcResV11duo.yhist_th;
1176*4882a593Smuzhiyun     cfg->dc_max_th       = dhaze.ProcResV11duo.dc_max_th;
1177*4882a593Smuzhiyun     cfg->dc_min_th       = dhaze.ProcResV11duo.dc_min_th;
1178*4882a593Smuzhiyun     cfg->wt_max          = dhaze.ProcResV11duo.wt_max;
1179*4882a593Smuzhiyun     cfg->bright_max      = dhaze.ProcResV11duo.bright_max;
1180*4882a593Smuzhiyun     cfg->bright_min      = dhaze.ProcResV11duo.bright_min;
1181*4882a593Smuzhiyun     cfg->tmax_base       = dhaze.ProcResV11duo.tmax_base;
1182*4882a593Smuzhiyun     cfg->dark_th         = dhaze.ProcResV11duo.dark_th;
1183*4882a593Smuzhiyun     cfg->air_max         = dhaze.ProcResV11duo.air_max;
1184*4882a593Smuzhiyun     cfg->air_min         = dhaze.ProcResV11duo.air_min;
1185*4882a593Smuzhiyun     cfg->tmax_max        = dhaze.ProcResV11duo.tmax_max;
1186*4882a593Smuzhiyun     cfg->tmax_off        = dhaze.ProcResV11duo.tmax_off;
1187*4882a593Smuzhiyun     cfg->hist_k          = dhaze.ProcResV11duo.hist_k;
1188*4882a593Smuzhiyun     cfg->hist_th_off     = dhaze.ProcResV11duo.hist_th_off;
1189*4882a593Smuzhiyun     cfg->hist_min        = dhaze.ProcResV11duo.hist_min;
1190*4882a593Smuzhiyun     cfg->hist_gratio     = dhaze.ProcResV11duo.hist_gratio;
1191*4882a593Smuzhiyun     cfg->hist_scale      = dhaze.ProcResV11duo.hist_scale;
1192*4882a593Smuzhiyun     cfg->enhance_value   = dhaze.ProcResV11duo.enhance_value;
1193*4882a593Smuzhiyun     cfg->enhance_chroma  = dhaze.ProcResV11duo.enhance_chroma;
1194*4882a593Smuzhiyun     cfg->iir_wt_sigma    = dhaze.ProcResV11duo.iir_wt_sigma;
1195*4882a593Smuzhiyun     cfg->iir_sigma       = dhaze.ProcResV11duo.iir_sigma;
1196*4882a593Smuzhiyun     cfg->stab_fnum       = dhaze.ProcResV11duo.stab_fnum;
1197*4882a593Smuzhiyun     cfg->iir_tmax_sigma  = dhaze.ProcResV11duo.iir_tmax_sigma;
1198*4882a593Smuzhiyun     cfg->iir_air_sigma   = dhaze.ProcResV11duo.iir_air_sigma;
1199*4882a593Smuzhiyun     cfg->iir_pre_wet     = dhaze.ProcResV11duo.iir_pre_wet;
1200*4882a593Smuzhiyun     cfg->cfg_wt          = dhaze.ProcResV11duo.cfg_wt;
1201*4882a593Smuzhiyun     cfg->cfg_air         = dhaze.ProcResV11duo.cfg_air;
1202*4882a593Smuzhiyun     cfg->cfg_alpha       = dhaze.ProcResV11duo.cfg_alpha;
1203*4882a593Smuzhiyun     cfg->cfg_gratio      = dhaze.ProcResV11duo.cfg_gratio;
1204*4882a593Smuzhiyun     cfg->cfg_tmax        = dhaze.ProcResV11duo.cfg_tmax;
1205*4882a593Smuzhiyun     cfg->range_sima      = dhaze.ProcResV11duo.range_sima;
1206*4882a593Smuzhiyun     cfg->space_sigma_cur = dhaze.ProcResV11duo.space_sigma_cur;
1207*4882a593Smuzhiyun     cfg->space_sigma_pre = dhaze.ProcResV11duo.space_sigma_pre;
1208*4882a593Smuzhiyun     cfg->dc_weitcur      = dhaze.ProcResV11duo.dc_weitcur;
1209*4882a593Smuzhiyun     cfg->bf_weight       = dhaze.ProcResV11duo.bf_weight;
1210*4882a593Smuzhiyun     cfg->gaus_h0         = dhaze.ProcResV11duo.gaus_h0;
1211*4882a593Smuzhiyun     cfg->gaus_h1         = dhaze.ProcResV11duo.gaus_h1;
1212*4882a593Smuzhiyun     cfg->gaus_h2         = dhaze.ProcResV11duo.gaus_h2;
1213*4882a593Smuzhiyun     cfg->adp_wt_wr       = dhaze.ProcResV11duo.adp_wt_wr;
1214*4882a593Smuzhiyun     cfg->adp_air_wr      = dhaze.ProcResV11duo.adp_air_wr;
1215*4882a593Smuzhiyun     cfg->adp_tmax_wr     = dhaze.ProcResV11duo.adp_tmax_wr;
1216*4882a593Smuzhiyun     cfg->adp_gratio_wr   = dhaze.ProcResV11duo.adp_gratio_wr;
1217*4882a593Smuzhiyun 
1218*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_DHAZ_SIGMA_IDX_NUM; i++)
1219*4882a593Smuzhiyun         cfg->sigma_idx[i] = dhaze.ProcResV11duo.sigma_idx[i];
1220*4882a593Smuzhiyun 
1221*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_DHAZ_ENH_CURVE_NUM; i++)
1222*4882a593Smuzhiyun         cfg->enh_curve[i] = dhaze.ProcResV11duo.enh_curve[i];
1223*4882a593Smuzhiyun 
1224*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_DHAZ_SIGMA_LUT_NUM; i++)
1225*4882a593Smuzhiyun         cfg->sigma_lut[i] = dhaze.ProcResV11duo.sigma_lut[i];
1226*4882a593Smuzhiyun 
1227*4882a593Smuzhiyun     for(int i = 0; i < ISP3X_DHAZ_HIST_WR_NUM; i++)
1228*4882a593Smuzhiyun         cfg->hist_wr[i] = dhaze.ProcResV11duo.hist_wr[i];
1229*4882a593Smuzhiyun 
1230*4882a593Smuzhiyun #if 0
1231*4882a593Smuzhiyun     LOGE_ADEHAZE("%s(%d) dehaze local gain IDX(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_idx[0], cfg->sigma_idx[1],
1232*4882a593Smuzhiyun                  cfg->sigma_idx[2], cfg->sigma_idx[3], cfg->sigma_idx[4], cfg->sigma_idx[5]);
1233*4882a593Smuzhiyun     LOGE_ADEHAZE("%s(%d) dehaze local gain LUT(0~5): 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", __func__, __LINE__, cfg->sigma_lut[0], cfg->sigma_lut[1],
1234*4882a593Smuzhiyun                  cfg->sigma_lut[2], cfg->sigma_lut[3], cfg->sigma_lut[4], cfg->sigma_lut[5]);
1235*4882a593Smuzhiyun #endif
1236*4882a593Smuzhiyun }
1237*4882a593Smuzhiyun #endif
1238*4882a593Smuzhiyun 
convert3aResultsToIspCfg(SmartPtr<cam3aResult> & result,void * isp_cfg_p,bool is_multi_isp)1239*4882a593Smuzhiyun bool Isp3xParams::convert3aResultsToIspCfg(SmartPtr<cam3aResult> &result,
1240*4882a593Smuzhiyun         void* isp_cfg_p, bool is_multi_isp)
1241*4882a593Smuzhiyun {
1242*4882a593Smuzhiyun     struct isp3x_isp_params_cfg& isp_cfg = *(struct isp3x_isp_params_cfg*)isp_cfg_p;
1243*4882a593Smuzhiyun     struct isp3x_isp_params_cfg isp_cfg_right = {};
1244*4882a593Smuzhiyun 
1245*4882a593Smuzhiyun     if (result.ptr() == NULL) {
1246*4882a593Smuzhiyun         LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "3A result empty");
1247*4882a593Smuzhiyun         return false;
1248*4882a593Smuzhiyun     }
1249*4882a593Smuzhiyun 
1250*4882a593Smuzhiyun     int32_t type = result->getType();
1251*4882a593Smuzhiyun     // LOGE_CAMHW_SUBM(ISP20PARAM_SUBM, "%s, module (0x%x) convert params!\n", __FUNCTION__, type);
1252*4882a593Smuzhiyun     switch (type)
1253*4882a593Smuzhiyun     {
1254*4882a593Smuzhiyun     // followings are specific for isp3x
1255*4882a593Smuzhiyun     case RESULT_TYPE_EXPOSURE_PARAM:
1256*4882a593Smuzhiyun     {
1257*4882a593Smuzhiyun         RkAiqSensorExpParamsProxy* expParams =
1258*4882a593Smuzhiyun             result.get_cast_ptr<RkAiqSensorExpParamsProxy>();
1259*4882a593Smuzhiyun         if (expParams)
1260*4882a593Smuzhiyun             convertAiqExpIspDgainToIspParams(isp_cfg_p,
1261*4882a593Smuzhiyun                                              expParams->data()->aecExpInfo);
1262*4882a593Smuzhiyun     }
1263*4882a593Smuzhiyun     break;
1264*4882a593Smuzhiyun     case RESULT_TYPE_AWBGAIN_PARAM:
1265*4882a593Smuzhiyun     {
1266*4882a593Smuzhiyun         RkAiqIspAwbGainParamsProxy* awb_gain = result.get_cast_ptr<RkAiqIspAwbGainParamsProxy>();
1267*4882a593Smuzhiyun         if (awb_gain) {
1268*4882a593Smuzhiyun             if(mBlcResult) {
1269*4882a593Smuzhiyun                 RkAiqIspBlcParamsProxyV21* blc = dynamic_cast<RkAiqIspBlcParamsProxyV21*>(mBlcResult);
1270*4882a593Smuzhiyun                 convertAiqAwbGainToIsp21Params(isp_cfg,
1271*4882a593Smuzhiyun                                                awb_gain->data()->result, &blc->data()->result, true);
1272*4882a593Smuzhiyun             } else {
1273*4882a593Smuzhiyun                 convertAiqAwbGainToIsp21Params(isp_cfg,
1274*4882a593Smuzhiyun                                                awb_gain->data()->result, nullptr, true);
1275*4882a593Smuzhiyun             }
1276*4882a593Smuzhiyun 
1277*4882a593Smuzhiyun         } else
1278*4882a593Smuzhiyun             LOGE("don't get awb_gain params, convert awbgain params failed!");
1279*4882a593Smuzhiyun     }
1280*4882a593Smuzhiyun     break;
1281*4882a593Smuzhiyun     case RESULT_TYPE_AWB_PARAM:
1282*4882a593Smuzhiyun     {
1283*4882a593Smuzhiyun #if RKAIQ_HAVE_AWB_V21
1284*4882a593Smuzhiyun         mAwbParams = result.ptr();
1285*4882a593Smuzhiyun         RkAiqIspAwbParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspAwbParamsProxyV3x>();
1286*4882a593Smuzhiyun         if (params)
1287*4882a593Smuzhiyun             convertAiqAwbToIsp3xParams(isp_cfg, params->data()->result, true);
1288*4882a593Smuzhiyun #endif
1289*4882a593Smuzhiyun     }
1290*4882a593Smuzhiyun     break;
1291*4882a593Smuzhiyun     case RESULT_TYPE_DRC_PARAM:
1292*4882a593Smuzhiyun     {
1293*4882a593Smuzhiyun #if RKAIQ_HAVE_DRC_V11
1294*4882a593Smuzhiyun         RkAiqIspDrcParamsProxy* params = result.get_cast_ptr<RkAiqIspDrcParamsProxy>();
1295*4882a593Smuzhiyun         if (params)
1296*4882a593Smuzhiyun             convertAiqDrcToIsp3xParams(isp_cfg, params->data()->result);
1297*4882a593Smuzhiyun #endif
1298*4882a593Smuzhiyun     }
1299*4882a593Smuzhiyun     break;
1300*4882a593Smuzhiyun     case RESULT_TYPE_TNR_PARAM:
1301*4882a593Smuzhiyun     {
1302*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYERTNR_V2
1303*4882a593Smuzhiyun         RkAiqIspTnrParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspTnrParamsProxyV3x>();
1304*4882a593Smuzhiyun         if (params)
1305*4882a593Smuzhiyun             convertAiqTnrToIsp3xParams(isp_cfg, params->data()->result);
1306*4882a593Smuzhiyun #endif
1307*4882a593Smuzhiyun     }
1308*4882a593Smuzhiyun     break;
1309*4882a593Smuzhiyun     case RESULT_TYPE_RAWNR_PARAM:
1310*4882a593Smuzhiyun     {
1311*4882a593Smuzhiyun #if RKAIQ_HAVE_BAYER2DNR_V2
1312*4882a593Smuzhiyun         RkAiqIspBaynrParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspBaynrParamsProxyV3x>();
1313*4882a593Smuzhiyun         if (params)
1314*4882a593Smuzhiyun             convertAiqRawnrToIsp3xParams(isp_cfg, params->data()->result);
1315*4882a593Smuzhiyun #endif
1316*4882a593Smuzhiyun     }
1317*4882a593Smuzhiyun     break;
1318*4882a593Smuzhiyun     case RESULT_TYPE_YNR_PARAM:
1319*4882a593Smuzhiyun     {
1320*4882a593Smuzhiyun #if RKAIQ_HAVE_YNR_V3
1321*4882a593Smuzhiyun         RkAiqIspYnrParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspYnrParamsProxyV3x>();
1322*4882a593Smuzhiyun         if (params)
1323*4882a593Smuzhiyun             convertAiqYnrToIsp3xParams(isp_cfg, params->data()->result);
1324*4882a593Smuzhiyun #endif
1325*4882a593Smuzhiyun     }
1326*4882a593Smuzhiyun     break;
1327*4882a593Smuzhiyun     case RESULT_TYPE_UVNR_PARAM:
1328*4882a593Smuzhiyun     {
1329*4882a593Smuzhiyun #if RKAIQ_HAVE_CNR_V2
1330*4882a593Smuzhiyun         RkAiqIspCnrParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspCnrParamsProxyV3x>();
1331*4882a593Smuzhiyun         if (params)
1332*4882a593Smuzhiyun             convertAiqUvnrToIsp3xParams(isp_cfg, params->data()->result);
1333*4882a593Smuzhiyun #endif
1334*4882a593Smuzhiyun     }
1335*4882a593Smuzhiyun     break;
1336*4882a593Smuzhiyun     case RESULT_TYPE_SHARPEN_PARAM:
1337*4882a593Smuzhiyun     {
1338*4882a593Smuzhiyun #if RKAIQ_HAVE_SHARP_V4
1339*4882a593Smuzhiyun         RkAiqIspSharpenParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspSharpenParamsProxyV3x>();
1340*4882a593Smuzhiyun         if (params)
1341*4882a593Smuzhiyun             convertAiqSharpenToIsp3xParams(isp_cfg, params->data()->result);
1342*4882a593Smuzhiyun #endif
1343*4882a593Smuzhiyun     }
1344*4882a593Smuzhiyun     break;
1345*4882a593Smuzhiyun     case RESULT_TYPE_GAIN_PARAM:
1346*4882a593Smuzhiyun     {
1347*4882a593Smuzhiyun         RkAiqIspGainParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspGainParamsProxyV3x>();
1348*4882a593Smuzhiyun         if (params)
1349*4882a593Smuzhiyun             convertAiqGainToIsp3xParams(isp_cfg, params->data()->result);
1350*4882a593Smuzhiyun     }
1351*4882a593Smuzhiyun     break;
1352*4882a593Smuzhiyun     case RESULT_TYPE_DEHAZE_PARAM:
1353*4882a593Smuzhiyun     {
1354*4882a593Smuzhiyun #if RKAIQ_HAVE_DEHAZE_V11_DUO
1355*4882a593Smuzhiyun         RkAiqIspDehazeParamsProxy* params = result.get_cast_ptr<RkAiqIspDehazeParamsProxy>();
1356*4882a593Smuzhiyun         if (params)
1357*4882a593Smuzhiyun             convertAiqAdehazeToIsp3xParams(isp_cfg, params->data()->result);
1358*4882a593Smuzhiyun #endif
1359*4882a593Smuzhiyun     }
1360*4882a593Smuzhiyun     break;
1361*4882a593Smuzhiyun     case RESULT_TYPE_GIC_PARAM:
1362*4882a593Smuzhiyun     {
1363*4882a593Smuzhiyun         RkAiqIspGicParamsProxy* params = result.get_cast_ptr<RkAiqIspGicParamsProxy>();
1364*4882a593Smuzhiyun         if (params)
1365*4882a593Smuzhiyun             convertAiqAgicToIsp21Params(isp_cfg, params->data()->result);
1366*4882a593Smuzhiyun     }
1367*4882a593Smuzhiyun     break;
1368*4882a593Smuzhiyun     case RESULT_TYPE_AF_PARAM:
1369*4882a593Smuzhiyun     {
1370*4882a593Smuzhiyun #if RKAIQ_HAVE_AF_V30 || RKAIQ_ONLY_AF_STATS_V30
1371*4882a593Smuzhiyun         RkAiqIspAfParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspAfParamsProxyV3x>();
1372*4882a593Smuzhiyun         if (params)
1373*4882a593Smuzhiyun             convertAiqAfToIsp3xParams(isp_cfg, params->data()->result, true);
1374*4882a593Smuzhiyun #endif
1375*4882a593Smuzhiyun     }
1376*4882a593Smuzhiyun     break;
1377*4882a593Smuzhiyun     case RESULT_TYPE_MERGE_PARAM:
1378*4882a593Smuzhiyun     {
1379*4882a593Smuzhiyun #if RKAIQ_HAVE_MERGE_V11
1380*4882a593Smuzhiyun         RkAiqIspMergeParamsProxy* params = result.get_cast_ptr<RkAiqIspMergeParamsProxy>();
1381*4882a593Smuzhiyun         if (params) {
1382*4882a593Smuzhiyun             convertAiqMergeToIsp3xParams(isp_cfg, params->data()->result);
1383*4882a593Smuzhiyun         }
1384*4882a593Smuzhiyun #endif
1385*4882a593Smuzhiyun     }
1386*4882a593Smuzhiyun     break;
1387*4882a593Smuzhiyun     case RESULT_TYPE_AGAMMA_PARAM:
1388*4882a593Smuzhiyun     {
1389*4882a593Smuzhiyun #if RKAIQ_HAVE_GAMMA_V11
1390*4882a593Smuzhiyun         RkAiqIspAgammaParamsProxy* params = result.get_cast_ptr<RkAiqIspAgammaParamsProxy>();
1391*4882a593Smuzhiyun         if (params)
1392*4882a593Smuzhiyun             convertAiqAgammaToIsp3xParams(isp_cfg, params->data()->result);
1393*4882a593Smuzhiyun #endif
1394*4882a593Smuzhiyun     }
1395*4882a593Smuzhiyun     break;
1396*4882a593Smuzhiyun     case RESULT_TYPE_CAC_PARAM:
1397*4882a593Smuzhiyun     {
1398*4882a593Smuzhiyun #if RKAIQ_HAVE_CAC_V03 || RKAIQ_HAVE_CAC_V10
1399*4882a593Smuzhiyun         RkAiqIspCacParamsProxyV3x* params = result.get_cast_ptr<RkAiqIspCacParamsProxyV3x>();
1400*4882a593Smuzhiyun         if (params)
1401*4882a593Smuzhiyun             convertAiqCacToIsp3xParams(isp_cfg, isp_cfg_right, params->data()->result, is_multi_isp);
1402*4882a593Smuzhiyun #endif
1403*4882a593Smuzhiyun     }
1404*4882a593Smuzhiyun     break;
1405*4882a593Smuzhiyun     case RESULT_TYPE_LSC_PARAM:
1406*4882a593Smuzhiyun     {
1407*4882a593Smuzhiyun #if RKAIQ_HAVE_LSC_V2
1408*4882a593Smuzhiyun         RkAiqIspLscParamsProxy* params = result.get_cast_ptr<RkAiqIspLscParamsProxy>();
1409*4882a593Smuzhiyun         if (params)
1410*4882a593Smuzhiyun             convertAiqLscToIsp20Params(isp_cfg, params->data()->result);
1411*4882a593Smuzhiyun #endif
1412*4882a593Smuzhiyun     }
1413*4882a593Smuzhiyun     break;
1414*4882a593Smuzhiyun     // followings are the same as isp21
1415*4882a593Smuzhiyun     case RESULT_TYPE_BLC_PARAM:
1416*4882a593Smuzhiyun     {
1417*4882a593Smuzhiyun         RkAiqIspBlcParamsProxyV21* params = result.get_cast_ptr<RkAiqIspBlcParamsProxyV21>();
1418*4882a593Smuzhiyun         if (params)
1419*4882a593Smuzhiyun             convertAiqBlcToIsp21Params(isp_cfg, params->data()->result);
1420*4882a593Smuzhiyun     }
1421*4882a593Smuzhiyun     break;
1422*4882a593Smuzhiyun     case RESULT_TYPE_CCM_PARAM:
1423*4882a593Smuzhiyun     {
1424*4882a593Smuzhiyun #if RKAIQ_HAVE_CCM_V1
1425*4882a593Smuzhiyun         RkAiqIspCcmParamsProxy* params = result.get_cast_ptr<RkAiqIspCcmParamsProxy>();
1426*4882a593Smuzhiyun         if (params)
1427*4882a593Smuzhiyun             convertAiqCcmToIsp21Params(isp_cfg, params->data()->result);
1428*4882a593Smuzhiyun #endif
1429*4882a593Smuzhiyun     }
1430*4882a593Smuzhiyun     break;
1431*4882a593Smuzhiyun     // followings are the same as isp20
1432*4882a593Smuzhiyun     case RESULT_TYPE_AEC_PARAM:
1433*4882a593Smuzhiyun     {
1434*4882a593Smuzhiyun #if defined(ISP_HW_V30)
1435*4882a593Smuzhiyun         RkAiqIspAecParamsProxy* params = result.get_cast_ptr<RkAiqIspAecParamsProxy>();
1436*4882a593Smuzhiyun         if (params) {
1437*4882a593Smuzhiyun             convertAiqAeToIsp20Params(isp_cfg, params->data()->result);
1438*4882a593Smuzhiyun         }
1439*4882a593Smuzhiyun #endif
1440*4882a593Smuzhiyun     }
1441*4882a593Smuzhiyun     break;
1442*4882a593Smuzhiyun     case RESULT_TYPE_HIST_PARAM:
1443*4882a593Smuzhiyun     {
1444*4882a593Smuzhiyun #if defined(ISP_HW_V30)
1445*4882a593Smuzhiyun         RkAiqIspHistParamsProxy* params = result.get_cast_ptr<RkAiqIspHistParamsProxy>();
1446*4882a593Smuzhiyun         if (params)
1447*4882a593Smuzhiyun             convertAiqHistToIsp20Params(isp_cfg, params->data()->result);
1448*4882a593Smuzhiyun #endif
1449*4882a593Smuzhiyun     }
1450*4882a593Smuzhiyun     break;
1451*4882a593Smuzhiyun     case RESULT_TYPE_LUT3D_PARAM:
1452*4882a593Smuzhiyun     {
1453*4882a593Smuzhiyun #if RKAIQ_HAVE_3DLUT_V1
1454*4882a593Smuzhiyun         RkAiqIspLut3dParamsProxy* params = result.get_cast_ptr<RkAiqIspLut3dParamsProxy>();
1455*4882a593Smuzhiyun         if (params)
1456*4882a593Smuzhiyun             convertAiqA3dlutToIsp20Params(isp_cfg, params->data()->result);
1457*4882a593Smuzhiyun #endif
1458*4882a593Smuzhiyun     }
1459*4882a593Smuzhiyun     break;
1460*4882a593Smuzhiyun     case RESULT_TYPE_DPCC_PARAM:
1461*4882a593Smuzhiyun     {
1462*4882a593Smuzhiyun         RkAiqIspDpccParamsProxy* params = result.get_cast_ptr<RkAiqIspDpccParamsProxy>();
1463*4882a593Smuzhiyun         if (params)
1464*4882a593Smuzhiyun             convertAiqDpccToIsp20Params(isp_cfg, params->data()->result);
1465*4882a593Smuzhiyun     }
1466*4882a593Smuzhiyun     break;
1467*4882a593Smuzhiyun     case RESULT_TYPE_DEBAYER_PARAM:
1468*4882a593Smuzhiyun     {
1469*4882a593Smuzhiyun         RkAiqIspDebayerParamsProxy* params = result.get_cast_ptr<RkAiqIspDebayerParamsProxy>();
1470*4882a593Smuzhiyun         if (params)
1471*4882a593Smuzhiyun             convertAiqAdemosaicToIsp20Params(isp_cfg, params->data()->result);
1472*4882a593Smuzhiyun     }
1473*4882a593Smuzhiyun     break;
1474*4882a593Smuzhiyun     case RESULT_TYPE_LDCH_PARAM:
1475*4882a593Smuzhiyun     {
1476*4882a593Smuzhiyun         RkAiqIspLdchParamsProxy* params = result.get_cast_ptr<RkAiqIspLdchParamsProxy>();
1477*4882a593Smuzhiyun         if (params)
1478*4882a593Smuzhiyun             convertAiqAldchToIsp20Params(isp_cfg, params->data()->result);
1479*4882a593Smuzhiyun     }
1480*4882a593Smuzhiyun     break;
1481*4882a593Smuzhiyun     case RESULT_TYPE_ADEGAMMA_PARAM:
1482*4882a593Smuzhiyun     {
1483*4882a593Smuzhiyun         RkAiqIspAdegammaParamsProxy* params = result.get_cast_ptr<RkAiqIspAdegammaParamsProxy>();
1484*4882a593Smuzhiyun         if (params)
1485*4882a593Smuzhiyun             convertAiqAdegammaToIsp20Params(isp_cfg, params->data()->result);
1486*4882a593Smuzhiyun     }
1487*4882a593Smuzhiyun     break;
1488*4882a593Smuzhiyun     case RESULT_TYPE_WDR_PARAM:
1489*4882a593Smuzhiyun #if 0
1490*4882a593Smuzhiyun     {
1491*4882a593Smuzhiyun         SmartPtr<RkAiqIspWdrParamsProxy> params = result.dynamic_cast_ptr<RkAiqIspWdrParamsProxy>();
1492*4882a593Smuzhiyun         if (params.ptr())
1493*4882a593Smuzhiyun             convertAiqWdrToIsp20Params(isp_cfg, params->data()->result);
1494*4882a593Smuzhiyun     }
1495*4882a593Smuzhiyun #endif
1496*4882a593Smuzhiyun     break;
1497*4882a593Smuzhiyun     case RESULT_TYPE_CSM_PARAM:
1498*4882a593Smuzhiyun     {
1499*4882a593Smuzhiyun         RkAiqIspCsmParamsProxy* params = result.get_cast_ptr<RkAiqIspCsmParamsProxy>();
1500*4882a593Smuzhiyun         if (params)
1501*4882a593Smuzhiyun             convertAiqCsmToIsp21Params(isp_cfg, params->data()->result);
1502*4882a593Smuzhiyun     }
1503*4882a593Smuzhiyun     break;
1504*4882a593Smuzhiyun     case RESULT_TYPE_CGC_PARAM:
1505*4882a593Smuzhiyun     {
1506*4882a593Smuzhiyun #if RKAIQ_HAVE_CGC_V1
1507*4882a593Smuzhiyun         RkAiqIspCgcParamsProxy* params = result.get_cast_ptr<RkAiqIspCgcParamsProxy>();
1508*4882a593Smuzhiyun         if (params)
1509*4882a593Smuzhiyun             convertAiqCgcToIsp21Params(isp_cfg, params->data()->result);
1510*4882a593Smuzhiyun #endif
1511*4882a593Smuzhiyun     }
1512*4882a593Smuzhiyun     break;
1513*4882a593Smuzhiyun     case RESULT_TYPE_CONV422_PARAM:
1514*4882a593Smuzhiyun         break;
1515*4882a593Smuzhiyun     case RESULT_TYPE_YUVCONV_PARAM:
1516*4882a593Smuzhiyun         break;
1517*4882a593Smuzhiyun     case RESULT_TYPE_CP_PARAM:
1518*4882a593Smuzhiyun     {
1519*4882a593Smuzhiyun #if RKAIQ_HAVE_ACP_V10
1520*4882a593Smuzhiyun         RkAiqIspCpParamsProxy* params = result.get_cast_ptr<RkAiqIspCpParamsProxy>();
1521*4882a593Smuzhiyun         if (params)
1522*4882a593Smuzhiyun             convertAiqCpToIsp20Params(isp_cfg, params->data()->result);
1523*4882a593Smuzhiyun #endif
1524*4882a593Smuzhiyun     }
1525*4882a593Smuzhiyun     break;
1526*4882a593Smuzhiyun     case RESULT_TYPE_IE_PARAM:
1527*4882a593Smuzhiyun     {
1528*4882a593Smuzhiyun #if RKAIQ_HAVE_AIE_V10
1529*4882a593Smuzhiyun         RkAiqIspIeParamsProxy* params = result.get_cast_ptr<RkAiqIspIeParamsProxy>();
1530*4882a593Smuzhiyun         if (params)
1531*4882a593Smuzhiyun             convertAiqIeToIsp20Params(isp_cfg, params->data()->result);
1532*4882a593Smuzhiyun #endif
1533*4882a593Smuzhiyun     }
1534*4882a593Smuzhiyun     break;
1535*4882a593Smuzhiyun     case RESULT_TYPE_FEC_PARAM:
1536*4882a593Smuzhiyun         break;
1537*4882a593Smuzhiyun     default:
1538*4882a593Smuzhiyun         LOGE("unknown param type: 0x%x!", type);
1539*4882a593Smuzhiyun         return false;
1540*4882a593Smuzhiyun     }
1541*4882a593Smuzhiyun 
1542*4882a593Smuzhiyun     if (is_multi_isp) {
1543*4882a593Smuzhiyun         memcpy(&((struct isp3x_isp_params_cfg*)isp_cfg_p + 1)->others.cac_cfg,
1544*4882a593Smuzhiyun                &isp_cfg_right.others.cac_cfg, sizeof(struct isp3x_cac_cfg));
1545*4882a593Smuzhiyun     }
1546*4882a593Smuzhiyun     return true;
1547*4882a593Smuzhiyun }
1548*4882a593Smuzhiyun 
1549*4882a593Smuzhiyun }; //namspace RkCam
1550