1 /*
2 * Copyright (c) 2021 Rockchip Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 */
17
18 //#include "RkAiqCalibDbV2Helper.h"
19
20
21 #include "rk_aiq_user_api2_custom_awb_type_v3x.h"
22
23 RKAIQ_BEGIN_DECLARE
24
25
26 /* awb config of AIQ framework */
27 typedef struct rk_aiq_rkAwb_config_s {
28 int Working_mode;//values look up in rk_aiq_working_mode_t definiton
29 int RawWidth;
30 int RawHeight;
31 rk_aiq_isp_awb_meas_cfg_v3x_t awbHwConfig;
32 } rk_aiq_rkAwb_config_t;
33
initCustomAwbHwConfigGw(rk_aiq_customAwb_hw_cfg_t * awbHwConfig)34 static XCamReturn initCustomAwbHwConfigGw(rk_aiq_customAwb_hw_cfg_t *awbHwConfig)
35 {
36 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
37 XCamReturn ret = XCAM_RETURN_NO_ERROR;
38 memset(awbHwConfig,0,sizeof(rk_aiq_customAwb_hw_cfg_t));
39 awbHwConfig->awbEnable = 1;
40 awbHwConfig->xyDetectionEnable = 0;
41 awbHwConfig->uvDetectionEnable = 0;
42 awbHwConfig->threeDyuvEnable = 0;
43 awbHwConfig->blkWeightEnable = 0;
44 awbHwConfig->lscBypEnable = 0;
45 awbHwConfig->blkMeasureMode = RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201;
46 awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0;
47 awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7;
48 awbHwConfig->wpDiffWeiEnable = 0;
49 awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0;
50 awbHwConfig->lightNum = 7;
51 awbHwConfig->windowSet[0] = 0;
52 awbHwConfig->windowSet[1] = 0;
53 awbHwConfig->windowSet[2] = 3840;
54 awbHwConfig->windowSet[3] = 2160;
55 awbHwConfig->maxR = 230;
56 awbHwConfig->maxG = 230;
57 awbHwConfig->maxB = 230;
58 awbHwConfig->maxY = 230;
59 awbHwConfig->minR = 3;
60 awbHwConfig->minG = 3;
61 awbHwConfig->minB = 3;
62 awbHwConfig->minY = 3;
63 awbHwConfig->multiwindow_en = 0;
64 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
65 return ret;
66 }
67
initCustomAwbHwConfigWp(rk_aiq_customAwb_hw_cfg_t * awbHwConfig)68 static XCamReturn initCustomAwbHwConfigWp(rk_aiq_customAwb_hw_cfg_t *awbHwConfig)
69 {
70 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
71 XCamReturn ret = XCAM_RETURN_NO_ERROR;
72 memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
73 awbHwConfig->awbEnable = 1;//rawawb enable
74 awbHwConfig->xyDetectionEnable = 1;//xy detect enable for all light
75 awbHwConfig->uvDetectionEnable = 1;//uv detect enable for all light
76 awbHwConfig->threeDyuvEnable = 1;//uv detect enable for all light
77 awbHwConfig->blkWeightEnable = 0;
78 awbHwConfig->lscBypEnable = 0;
79 awbHwConfig->blkMeasureMode = RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201;
80 awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0;
81 awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7;
82 awbHwConfig->wpDiffWeiEnable = 0;
83 awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0;
84 awbHwConfig->threeDyuvIllu[0] = 7;
85 awbHwConfig->threeDyuvIllu[1] = 7;
86 awbHwConfig->threeDyuvIllu[2] = 7;
87 awbHwConfig->threeDyuvIllu[3] = 7;
88 awbHwConfig->lightNum = 7; //measurment light num ,0~7
89 awbHwConfig->windowSet[0] = 0;//crop h_offs mod 2 == 0
90 awbHwConfig->windowSet[1] = 0;//crop v_offs mod 2 == 0
91 awbHwConfig->windowSet[2] = 3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0
92 awbHwConfig->windowSet[3] = 2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0
93 awbHwConfig->maxR = 230;
94 awbHwConfig->maxG = 230;
95 awbHwConfig->maxB = 230;
96 awbHwConfig->maxY = 230;
97 awbHwConfig->minR = 3;
98 awbHwConfig->minG = 3;
99 awbHwConfig->minB = 3;
100 awbHwConfig->minY = 3;
101 awbHwConfig->uvRange_param[0].pu_region[0] = 247;
102 awbHwConfig->uvRange_param[0].pv_region[0] = 252;
103 awbHwConfig->uvRange_param[0].pu_region[1] = 114;
104 awbHwConfig->uvRange_param[0].pv_region[1] = 206;
105 awbHwConfig->uvRange_param[0].pu_region[2] = 105;
106 awbHwConfig->uvRange_param[0].pv_region[2] = 243;
107 awbHwConfig->uvRange_param[0].pu_region[3] = 246;
108 awbHwConfig->uvRange_param[0].pv_region[3] = 254;
109 awbHwConfig->uvRange_param[0].slope_inv[0] = 2961;
110 awbHwConfig->uvRange_param[0].slope_inv[1] = -249;
111 awbHwConfig->uvRange_param[0].slope_inv[2] = 13126;
112 awbHwConfig->uvRange_param[0].slope_inv[3] = -512;
113 awbHwConfig->uvRange_param[1].pu_region[0] = 251;
114 awbHwConfig->uvRange_param[1].pv_region[0] = 249;
115 awbHwConfig->uvRange_param[1].pu_region[1] = 159;
116 awbHwConfig->uvRange_param[1].pv_region[1] = 160;
117 awbHwConfig->uvRange_param[1].pu_region[2] = 141;
118 awbHwConfig->uvRange_param[1].pv_region[2] = 173;
119 awbHwConfig->uvRange_param[1].pu_region[3] = 249;
120 awbHwConfig->uvRange_param[1].pv_region[3] = 250;
121 awbHwConfig->uvRange_param[1].slope_inv[0] = 1059;
122 awbHwConfig->uvRange_param[1].slope_inv[1] = -1418;
123 awbHwConfig->uvRange_param[1].slope_inv[2] = 1436;
124 awbHwConfig->uvRange_param[1].slope_inv[3] = -2048;
125 awbHwConfig->uvRange_param[2].pu_region[0] = 252;
126 awbHwConfig->uvRange_param[2].pv_region[0] = 249;
127 awbHwConfig->uvRange_param[2].pu_region[1] = 180;
128 awbHwConfig->uvRange_param[2].pv_region[1] = 148;
129 awbHwConfig->uvRange_param[2].pu_region[2] = 158;
130 awbHwConfig->uvRange_param[2].pv_region[2] = 160;
131 awbHwConfig->uvRange_param[2].pu_region[3] = 250;
132 awbHwConfig->uvRange_param[2].pv_region[3] = 249;
133 awbHwConfig->uvRange_param[2].slope_inv[0] = 730;
134 awbHwConfig->uvRange_param[2].slope_inv[1] = -1877;
135 awbHwConfig->uvRange_param[2].slope_inv[2] = 1059;
136 awbHwConfig->uvRange_param[2].slope_inv[3] = 262143;
137 awbHwConfig->uvRange_param[3].pu_region[0] = 254;
138 awbHwConfig->uvRange_param[3].pv_region[0] = 247;
139 awbHwConfig->uvRange_param[3].pu_region[1] = 204;
140 awbHwConfig->uvRange_param[3].pv_region[1] = 134;
141 awbHwConfig->uvRange_param[3].pu_region[2] = 180;
142 awbHwConfig->uvRange_param[3].pv_region[2] = 148;
143 awbHwConfig->uvRange_param[3].pu_region[3] = 252;
144 awbHwConfig->uvRange_param[3].pv_region[3] = 249;
145 awbHwConfig->uvRange_param[3].slope_inv[0] = 453;
146 awbHwConfig->uvRange_param[3].slope_inv[1] = -1755;
147 awbHwConfig->uvRange_param[3].slope_inv[2] = 730;
148 awbHwConfig->uvRange_param[3].slope_inv[3] = -1024;
149 awbHwConfig->uvRange_param[4].pu_region[0] = 255;
150 awbHwConfig->uvRange_param[4].pv_region[0] = 247;
151 awbHwConfig->uvRange_param[4].pu_region[1] = 225;
152 awbHwConfig->uvRange_param[4].pv_region[1] = 129;
153 awbHwConfig->uvRange_param[4].pu_region[2] = 201;
154 awbHwConfig->uvRange_param[4].pv_region[2] = 134;
155 awbHwConfig->uvRange_param[4].pu_region[3] = 254;
156 awbHwConfig->uvRange_param[4].pv_region[3] = 247;
157 awbHwConfig->uvRange_param[4].slope_inv[0] = 260;
158 awbHwConfig->uvRange_param[4].slope_inv[1] = -4915;
159 awbHwConfig->uvRange_param[4].slope_inv[2] = 480;
160 awbHwConfig->uvRange_param[4].slope_inv[3] = 262143;
161 awbHwConfig->uvRange_param[5].pu_region[0] = 246;
162 awbHwConfig->uvRange_param[5].pv_region[0] = 257;
163 awbHwConfig->uvRange_param[5].pu_region[1] = 101;
164 awbHwConfig->uvRange_param[5].pv_region[1] = 278;
165 awbHwConfig->uvRange_param[5].pu_region[2] = 104;
166 awbHwConfig->uvRange_param[5].pv_region[2] = 243;
167 awbHwConfig->uvRange_param[5].pu_region[3] = 246;
168 awbHwConfig->uvRange_param[5].pv_region[3] = 254;
169 awbHwConfig->uvRange_param[5].slope_inv[0] = -7070;
170 awbHwConfig->uvRange_param[5].slope_inv[1] = -88;
171 awbHwConfig->uvRange_param[5].slope_inv[2] = 13219;
172 awbHwConfig->uvRange_param[5].slope_inv[3] = 0;
173 awbHwConfig->uvRange_param[6].pu_region[0] = 250;
174 awbHwConfig->uvRange_param[6].pv_region[0] = 250;
175 awbHwConfig->uvRange_param[6].pu_region[1] = 144;
176 awbHwConfig->uvRange_param[6].pv_region[1] = 171;
177 awbHwConfig->uvRange_param[6].pu_region[2] = 114;
178 awbHwConfig->uvRange_param[6].pv_region[2] = 207;
179 awbHwConfig->uvRange_param[6].pu_region[3] = 247;
180 awbHwConfig->uvRange_param[6].pv_region[3] = 252;
181 awbHwConfig->uvRange_param[6].slope_inv[0] = 1374;
182 awbHwConfig->uvRange_param[6].slope_inv[1] = -853;
183 awbHwConfig->uvRange_param[6].slope_inv[2] = 3026;
184 awbHwConfig->uvRange_param[6].slope_inv[3] = -1536;
185 awbHwConfig->icrgb2RYuv_matrix[0] = 12;
186 awbHwConfig->icrgb2RYuv_matrix[1] = 69;
187 awbHwConfig->icrgb2RYuv_matrix[2] = 7;
188 awbHwConfig->icrgb2RYuv_matrix[3] = 665;
189 awbHwConfig->icrgb2RYuv_matrix[4] = -44;
190 awbHwConfig->icrgb2RYuv_matrix[5] = -2;
191 awbHwConfig->icrgb2RYuv_matrix[6] = 32;
192 awbHwConfig->icrgb2RYuv_matrix[7] = 2268;
193 awbHwConfig->icrgb2RYuv_matrix[8] = 23;
194 awbHwConfig->icrgb2RYuv_matrix[9] = -24;
195 awbHwConfig->icrgb2RYuv_matrix[10] = 27;
196 awbHwConfig->icrgb2RYuv_matrix[11] = 1690;
197 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = 0;
198 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = 0;
199 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = 0;
200 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = 0;
201 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = 0;
202 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = 0;
203 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = 0;
204 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = 0;
205 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = 0;
206 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = 0;
207 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = 0;
208 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = 0;
209 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = 0;
210 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = 0;
211 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = 0;
212 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = 0;
213 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = 0;
214 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = 0;
215 awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = 0;
216 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = 0;
217 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = 0;
218 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = 0;
219 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = 0;
220 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = 0;
221 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = 0;
222 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = 0;
223 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = 0;
224 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = 0;
225 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = 0;
226 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = 0;
227 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = 0;
228 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = 0;
229 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = 0;
230 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = 0;
231 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = 0;
232 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = 0;
233 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = 0;
234 awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = 0;
235 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = 0;
236 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = 0;
237 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = 0;
238 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = 0;
239 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = 0;
240 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = 0;
241 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = 0;
242 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = 0;
243 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = 0;
244 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = 0;
245 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = 0;
246 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = 0;
247 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = 0;
248 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = 0;
249 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = 0;
250 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = 0;
251 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = 0;
252 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = 0;
253 awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = 0;
254 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = 0;
255 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = 0;
256 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = 0;
257 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = 0;
258 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = 0;
259 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = 0;
260 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = 0;
261 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = 0;
262 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = 0;
263 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = 0;
264 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = 0;
265 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = 0;
266 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = 0;
267 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = 0;
268 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = 0;
269 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = 0;
270 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = 0;
271 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = 0;
272 awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = 0;
273 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = 1534;
274 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = 1535;
275 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = 1027;
276 awbHwConfig->rgb2xy_param.rotationMat[0] = -2202;
277 awbHwConfig->rgb2xy_param.rotationMat[1] = 3454;
278 awbHwConfig->rgb2xy_param.rotationMat[2] = -535;
279 awbHwConfig->rgb2xy_param.rotationMat[3] = 3454;
280 awbHwConfig->rgb2xy_param.rotationMat[4] = 2202;
281 awbHwConfig->rgb2xy_param.rotationMat[5] = 2826;
282 awbHwConfig->xyRange_param[0].NorrangeX[0] = -1432;
283 awbHwConfig->xyRange_param[0].NorrangeX[1] = -962;
284 awbHwConfig->xyRange_param[0].NorrangeY[0] = 134;
285 awbHwConfig->xyRange_param[0].NorrangeY[1] = -30;
286 awbHwConfig->xyRange_param[0].SperangeX[0] = -1432;
287 awbHwConfig->xyRange_param[0].SperangeX[1] = -962;
288 awbHwConfig->xyRange_param[0].SperangeY[0] = 165;
289 awbHwConfig->xyRange_param[0].SperangeY[1] = -60;
290 awbHwConfig->xyRange_param[1].NorrangeX[0] = -959;
291 awbHwConfig->xyRange_param[1].NorrangeX[1] = -507;
292 awbHwConfig->xyRange_param[1].NorrangeY[0] = -46;
293 awbHwConfig->xyRange_param[1].NorrangeY[1] = -159;
294 awbHwConfig->xyRange_param[1].SperangeX[0] = -961;
295 awbHwConfig->xyRange_param[1].SperangeX[1] = -507;
296 awbHwConfig->xyRange_param[1].SperangeY[0] = -46;
297 awbHwConfig->xyRange_param[1].SperangeY[1] = -179;
298 awbHwConfig->xyRange_param[2].NorrangeX[0] = -507;
299 awbHwConfig->xyRange_param[2].NorrangeX[1] = -160;
300 awbHwConfig->xyRange_param[2].NorrangeY[0] = 181;
301 awbHwConfig->xyRange_param[2].NorrangeY[1] = 10;
302 awbHwConfig->xyRange_param[2].SperangeX[0] = -507;
303 awbHwConfig->xyRange_param[2].SperangeX[1] = -160;
304 awbHwConfig->xyRange_param[2].SperangeY[0] = 205;
305 awbHwConfig->xyRange_param[2].SperangeY[1] = -20;
306 awbHwConfig->xyRange_param[3].NorrangeX[0] = -160;
307 awbHwConfig->xyRange_param[3].NorrangeX[1] = 74;
308 awbHwConfig->xyRange_param[3].NorrangeY[0] = 79;
309 awbHwConfig->xyRange_param[3].NorrangeY[1] = -85;
310 awbHwConfig->xyRange_param[3].SperangeX[0] = -160;
311 awbHwConfig->xyRange_param[3].SperangeX[1] = 74;
312 awbHwConfig->xyRange_param[3].SperangeY[0] = 109;
313 awbHwConfig->xyRange_param[3].SperangeY[1] = -103;
314 awbHwConfig->xyRange_param[4].NorrangeX[0] = 74;
315 awbHwConfig->xyRange_param[4].NorrangeX[1] = 227;
316 awbHwConfig->xyRange_param[4].NorrangeY[0] = 102;
317 awbHwConfig->xyRange_param[4].NorrangeY[1] = -66;
318 awbHwConfig->xyRange_param[4].SperangeX[0] = 74;
319 awbHwConfig->xyRange_param[4].SperangeX[1] = 227;
320 awbHwConfig->xyRange_param[4].SperangeY[0] = 133;
321 awbHwConfig->xyRange_param[4].SperangeY[1] = -86;
322 awbHwConfig->xyRange_param[5].NorrangeX[0] = -1742;
323 awbHwConfig->xyRange_param[5].NorrangeX[1] = -1432;
324 awbHwConfig->xyRange_param[5].NorrangeY[0] = 90;
325 awbHwConfig->xyRange_param[5].NorrangeY[1] = -80;
326 awbHwConfig->xyRange_param[5].SperangeX[0] = -1742;
327 awbHwConfig->xyRange_param[5].SperangeX[1] = -1432;
328 awbHwConfig->xyRange_param[5].SperangeY[0] = 121;
329 awbHwConfig->xyRange_param[5].SperangeY[1] = -111;
330 awbHwConfig->xyRange_param[6].NorrangeX[0] = -962;
331 awbHwConfig->xyRange_param[6].NorrangeX[1] = -509;
332 awbHwConfig->xyRange_param[6].NorrangeY[0] = 114;
333 awbHwConfig->xyRange_param[6].NorrangeY[1] = -43;
334 awbHwConfig->xyRange_param[6].SperangeX[0] = -962;
335 awbHwConfig->xyRange_param[6].SperangeX[1] = -509;
336 awbHwConfig->xyRange_param[6].SperangeY[0] = 134;
337 awbHwConfig->xyRange_param[6].SperangeY[1] = -45;
338 awbHwConfig->multiwindow_en = 0;
339 awbHwConfig->multiwindow[0][0] = 0;
340 awbHwConfig->multiwindow[0][1] = 0;
341 awbHwConfig->multiwindow[0][2] = 0;
342 awbHwConfig->multiwindow[0][3] = 0;
343 awbHwConfig->multiwindow[1][0] = 0;
344 awbHwConfig->multiwindow[1][1] = 0;
345 awbHwConfig->multiwindow[1][2] = 0;
346 awbHwConfig->multiwindow[1][3] = 0;
347 awbHwConfig->multiwindow[2][0] = 0;
348 awbHwConfig->multiwindow[2][1] = 0;
349 awbHwConfig->multiwindow[2][2] = 0;
350 awbHwConfig->multiwindow[2][3] = 0;
351 awbHwConfig->multiwindow[3][0] = 0;
352 awbHwConfig->multiwindow[3][1] = 0;
353 awbHwConfig->multiwindow[3][2] = 0;
354 awbHwConfig->multiwindow[3][3] = 0;
355 awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
356 awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
357 awbHwConfig->excludeWpRange[0].measureEnable = 0;
358 awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)0;
359 awbHwConfig->excludeWpRange[0].xu[0] = 0;
360 awbHwConfig->excludeWpRange[0].xu[1] = 0;
361 awbHwConfig->excludeWpRange[0].yv[0] = 0;
362 awbHwConfig->excludeWpRange[0].yv[1] = 0;
363 awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
364 awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
365 awbHwConfig->excludeWpRange[1].measureEnable = 0;
366 awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)0;
367 awbHwConfig->excludeWpRange[1].xu[0] = 0;
368 awbHwConfig->excludeWpRange[1].xu[1] = 0;
369 awbHwConfig->excludeWpRange[1].yv[0] = 0;
370 awbHwConfig->excludeWpRange[1].yv[1] = 0;
371 awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
372 awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
373 awbHwConfig->excludeWpRange[2].measureEnable = 0;
374 awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)0;
375 awbHwConfig->excludeWpRange[2].xu[0] = 0;
376 awbHwConfig->excludeWpRange[2].xu[1] = 0;
377 awbHwConfig->excludeWpRange[2].yv[0] = 0;
378 awbHwConfig->excludeWpRange[2].yv[1] = 0;
379 awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
380 awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
381 awbHwConfig->excludeWpRange[3].measureEnable = 0;
382 awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)0;
383 awbHwConfig->excludeWpRange[3].xu[0] = 0;
384 awbHwConfig->excludeWpRange[3].xu[1] = 0;
385 awbHwConfig->excludeWpRange[3].yv[0] = 0;
386 awbHwConfig->excludeWpRange[3].yv[1] = 0;
387 awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
388 awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
389 awbHwConfig->excludeWpRange[4].measureEnable = 0;
390 awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)0;
391 awbHwConfig->excludeWpRange[4].xu[0] = 0;
392 awbHwConfig->excludeWpRange[4].xu[1] = 0;
393 awbHwConfig->excludeWpRange[4].yv[0] = 0;
394 awbHwConfig->excludeWpRange[4].yv[1] = 0;
395 awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
396 awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
397 awbHwConfig->excludeWpRange[5].measureEnable = 0;
398 awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)0;
399 awbHwConfig->excludeWpRange[5].xu[0] = 0;
400 awbHwConfig->excludeWpRange[5].xu[1] = 0;
401 awbHwConfig->excludeWpRange[5].yv[0] = 0;
402 awbHwConfig->excludeWpRange[5].yv[1] = 0;
403 awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
404 awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
405 awbHwConfig->excludeWpRange[6].measureEnable = 0;
406 awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)0;
407 awbHwConfig->excludeWpRange[6].xu[0] = 0;
408 awbHwConfig->excludeWpRange[6].xu[1] = 0;
409 awbHwConfig->excludeWpRange[6].yv[0] = 0;
410 awbHwConfig->excludeWpRange[6].yv[1] = 0;
411 awbHwConfig->wpDiffwei_y[0] =0;
412 awbHwConfig->wpDiffwei_y[1] =16;
413 awbHwConfig->wpDiffwei_y[2] =32;
414 awbHwConfig->wpDiffwei_y[3] =64;
415 awbHwConfig->wpDiffwei_y[4] =96;
416 awbHwConfig->wpDiffwei_y[5] =128;
417 awbHwConfig->wpDiffwei_y[6] =192;
418 awbHwConfig->wpDiffwei_y[7] =224;
419 awbHwConfig->wpDiffwei_y[8] =240;
420 awbHwConfig->wpDiffwei_w[0] =31;
421 awbHwConfig->wpDiffwei_w[1] =31;
422 awbHwConfig->wpDiffwei_w[2] =31;
423 awbHwConfig->wpDiffwei_w[3] =31;
424 awbHwConfig->wpDiffwei_w[4] =31;
425 awbHwConfig->wpDiffwei_w[5] =31;
426 awbHwConfig->wpDiffwei_w[6] =31;
427 awbHwConfig->wpDiffwei_w[7] =31;
428 awbHwConfig->wpDiffwei_w[8] =31;
429 awbHwConfig->blkWeight[0] =6;
430 awbHwConfig->blkWeight[1] =6;
431 awbHwConfig->blkWeight[2] =6;
432 awbHwConfig->blkWeight[3] =8;
433 awbHwConfig->blkWeight[4] =8;
434 awbHwConfig->blkWeight[5] =8;
435 awbHwConfig->blkWeight[6] =8;
436 awbHwConfig->blkWeight[7] =10;
437 awbHwConfig->blkWeight[8] =8;
438 awbHwConfig->blkWeight[9] =8;
439 awbHwConfig->blkWeight[10] =8;
440 awbHwConfig->blkWeight[11] =8;
441 awbHwConfig->blkWeight[12] =6;
442 awbHwConfig->blkWeight[13] =6;
443 awbHwConfig->blkWeight[14] =6;
444 awbHwConfig->blkWeight[15] =6;
445 awbHwConfig->blkWeight[16] =6;
446 awbHwConfig->blkWeight[17] =8;
447 awbHwConfig->blkWeight[18] =8;
448 awbHwConfig->blkWeight[19] =10;
449 awbHwConfig->blkWeight[20] =10;
450 awbHwConfig->blkWeight[21] =12;
451 awbHwConfig->blkWeight[22] =12;
452 awbHwConfig->blkWeight[23] =12;
453 awbHwConfig->blkWeight[24] =10;
454 awbHwConfig->blkWeight[25] =10;
455 awbHwConfig->blkWeight[26] =8;
456 awbHwConfig->blkWeight[27] =8;
457 awbHwConfig->blkWeight[28] =6;
458 awbHwConfig->blkWeight[29] =6;
459 awbHwConfig->blkWeight[30] =6;
460 awbHwConfig->blkWeight[31] =8;
461 awbHwConfig->blkWeight[32] =10;
462 awbHwConfig->blkWeight[33] =12;
463 awbHwConfig->blkWeight[34] =14;
464 awbHwConfig->blkWeight[35] =16;
465 awbHwConfig->blkWeight[36] =18;
466 awbHwConfig->blkWeight[37] =20;
467 awbHwConfig->blkWeight[38] =18;
468 awbHwConfig->blkWeight[39] =16;
469 awbHwConfig->blkWeight[40] =14;
470 awbHwConfig->blkWeight[41] =12;
471 awbHwConfig->blkWeight[42] =10;
472 awbHwConfig->blkWeight[43] =8;
473 awbHwConfig->blkWeight[44] =6;
474 awbHwConfig->blkWeight[45] =8;
475 awbHwConfig->blkWeight[46] =8;
476 awbHwConfig->blkWeight[47] =12;
477 awbHwConfig->blkWeight[48] =16;
478 awbHwConfig->blkWeight[49] =22;
479 awbHwConfig->blkWeight[50] =26;
480 awbHwConfig->blkWeight[51] =30;
481 awbHwConfig->blkWeight[52] =32;
482 awbHwConfig->blkWeight[53] =30;
483 awbHwConfig->blkWeight[54] =26;
484 awbHwConfig->blkWeight[55] =22;
485 awbHwConfig->blkWeight[56] =16;
486 awbHwConfig->blkWeight[57] =12;
487 awbHwConfig->blkWeight[58] =8;
488 awbHwConfig->blkWeight[59] =8;
489 awbHwConfig->blkWeight[60] =8;
490 awbHwConfig->blkWeight[61] =10;
491 awbHwConfig->blkWeight[62] =14;
492 awbHwConfig->blkWeight[63] =22;
493 awbHwConfig->blkWeight[64] =28;
494 awbHwConfig->blkWeight[65] =36;
495 awbHwConfig->blkWeight[66] =42;
496 awbHwConfig->blkWeight[67] =46;
497 awbHwConfig->blkWeight[68] =42;
498 awbHwConfig->blkWeight[69] =36;
499 awbHwConfig->blkWeight[70] =28;
500 awbHwConfig->blkWeight[71] =22;
501 awbHwConfig->blkWeight[72] =14;
502 awbHwConfig->blkWeight[73] =10;
503 awbHwConfig->blkWeight[74] =8;
504 awbHwConfig->blkWeight[75] =8;
505 awbHwConfig->blkWeight[76] =10;
506 awbHwConfig->blkWeight[77] =16;
507 awbHwConfig->blkWeight[78] =26;
508 awbHwConfig->blkWeight[79] =36;
509 awbHwConfig->blkWeight[80] =46;
510 awbHwConfig->blkWeight[81] =54;
511 awbHwConfig->blkWeight[82] =58;
512 awbHwConfig->blkWeight[83] =54;
513 awbHwConfig->blkWeight[84] =46;
514 awbHwConfig->blkWeight[85] =36;
515 awbHwConfig->blkWeight[86] =26;
516 awbHwConfig->blkWeight[87] =16;
517 awbHwConfig->blkWeight[88] =10;
518 awbHwConfig->blkWeight[89] =8;
519 awbHwConfig->blkWeight[90] =8;
520 awbHwConfig->blkWeight[91] =12;
521 awbHwConfig->blkWeight[92] =18;
522 awbHwConfig->blkWeight[93] =30;
523 awbHwConfig->blkWeight[94] =42;
524 awbHwConfig->blkWeight[95] =54;
525 awbHwConfig->blkWeight[96] =63;
526 awbHwConfig->blkWeight[97] =63;
527 awbHwConfig->blkWeight[98] =63;
528 awbHwConfig->blkWeight[99] =54;
529 awbHwConfig->blkWeight[100] =42;
530 awbHwConfig->blkWeight[101] =30;
531 awbHwConfig->blkWeight[102] =18;
532 awbHwConfig->blkWeight[103] =12;
533 awbHwConfig->blkWeight[104] =8;
534 awbHwConfig->blkWeight[105] =10;
535 awbHwConfig->blkWeight[106] =12;
536 awbHwConfig->blkWeight[107] =20;
537 awbHwConfig->blkWeight[108] =32;
538 awbHwConfig->blkWeight[109] =46;
539 awbHwConfig->blkWeight[110] =58;
540 awbHwConfig->blkWeight[111] =63;
541 awbHwConfig->blkWeight[112] =63;
542 awbHwConfig->blkWeight[113] =63;
543 awbHwConfig->blkWeight[114] =58;
544 awbHwConfig->blkWeight[115] =46;
545 awbHwConfig->blkWeight[116] =32;
546 awbHwConfig->blkWeight[117] =20;
547 awbHwConfig->blkWeight[118] =12;
548 awbHwConfig->blkWeight[119] =10;
549 awbHwConfig->blkWeight[120] =8;
550 awbHwConfig->blkWeight[121] =12;
551 awbHwConfig->blkWeight[122] =18;
552 awbHwConfig->blkWeight[123] =30;
553 awbHwConfig->blkWeight[124] =42;
554 awbHwConfig->blkWeight[125] =54;
555 awbHwConfig->blkWeight[126] =63;
556 awbHwConfig->blkWeight[127] =63;
557 awbHwConfig->blkWeight[128] =63;
558 awbHwConfig->blkWeight[129] =54;
559 awbHwConfig->blkWeight[130] =42;
560 awbHwConfig->blkWeight[131] =30;
561 awbHwConfig->blkWeight[132] =18;
562 awbHwConfig->blkWeight[133] =12;
563 awbHwConfig->blkWeight[134] =8;
564 awbHwConfig->blkWeight[135] =8;
565 awbHwConfig->blkWeight[136] =10;
566 awbHwConfig->blkWeight[137] =16;
567 awbHwConfig->blkWeight[138] =26;
568 awbHwConfig->blkWeight[139] =36;
569 awbHwConfig->blkWeight[140] =46;
570 awbHwConfig->blkWeight[141] =54;
571 awbHwConfig->blkWeight[142] =58;
572 awbHwConfig->blkWeight[143] =54;
573 awbHwConfig->blkWeight[144] =46;
574 awbHwConfig->blkWeight[145] =36;
575 awbHwConfig->blkWeight[146] =26;
576 awbHwConfig->blkWeight[147] =16;
577 awbHwConfig->blkWeight[148] =10;
578 awbHwConfig->blkWeight[149] =8;
579 awbHwConfig->blkWeight[150] =8;
580 awbHwConfig->blkWeight[151] =10;
581 awbHwConfig->blkWeight[152] =14;
582 awbHwConfig->blkWeight[153] =22;
583 awbHwConfig->blkWeight[154] =28;
584 awbHwConfig->blkWeight[155] =36;
585 awbHwConfig->blkWeight[156] =42;
586 awbHwConfig->blkWeight[157] =46;
587 awbHwConfig->blkWeight[158] =42;
588 awbHwConfig->blkWeight[159] =36;
589 awbHwConfig->blkWeight[160] =28;
590 awbHwConfig->blkWeight[161] =22;
591 awbHwConfig->blkWeight[162] =14;
592 awbHwConfig->blkWeight[163] =10;
593 awbHwConfig->blkWeight[164] =8;
594 awbHwConfig->blkWeight[165] =8;
595 awbHwConfig->blkWeight[166] =8;
596 awbHwConfig->blkWeight[167] =12;
597 awbHwConfig->blkWeight[168] =16;
598 awbHwConfig->blkWeight[169] =22;
599 awbHwConfig->blkWeight[170] =26;
600 awbHwConfig->blkWeight[171] =30;
601 awbHwConfig->blkWeight[172] =32;
602 awbHwConfig->blkWeight[173] =30;
603 awbHwConfig->blkWeight[174] =26;
604 awbHwConfig->blkWeight[175] =22;
605 awbHwConfig->blkWeight[176] =16;
606 awbHwConfig->blkWeight[177] =12;
607 awbHwConfig->blkWeight[178] =8;
608 awbHwConfig->blkWeight[179] =8;
609 awbHwConfig->blkWeight[180] =6;
610 awbHwConfig->blkWeight[181] =8;
611 awbHwConfig->blkWeight[182] =10;
612 awbHwConfig->blkWeight[183] =12;
613 awbHwConfig->blkWeight[184] =14;
614 awbHwConfig->blkWeight[185] =16;
615 awbHwConfig->blkWeight[186] =18;
616 awbHwConfig->blkWeight[187] =20;
617 awbHwConfig->blkWeight[188] =18;
618 awbHwConfig->blkWeight[189] =16;
619 awbHwConfig->blkWeight[190] =14;
620 awbHwConfig->blkWeight[191] =12;
621 awbHwConfig->blkWeight[192] =10;
622 awbHwConfig->blkWeight[193] =8;
623 awbHwConfig->blkWeight[194] =6;
624 awbHwConfig->blkWeight[195] =6;
625 awbHwConfig->blkWeight[196] =6;
626 awbHwConfig->blkWeight[197] =8;
627 awbHwConfig->blkWeight[198] =8;
628 awbHwConfig->blkWeight[199] =10;
629 awbHwConfig->blkWeight[200] =10;
630 awbHwConfig->blkWeight[201] =12;
631 awbHwConfig->blkWeight[202] =12;
632 awbHwConfig->blkWeight[203] =12;
633 awbHwConfig->blkWeight[204] =10;
634 awbHwConfig->blkWeight[205] =10;
635 awbHwConfig->blkWeight[206] =8;
636 awbHwConfig->blkWeight[207] =8;
637 awbHwConfig->blkWeight[208] =6;
638 awbHwConfig->blkWeight[209] =6;
639 awbHwConfig->blkWeight[210] =6;
640 awbHwConfig->blkWeight[211] =6;
641 awbHwConfig->blkWeight[212] =6;
642 awbHwConfig->blkWeight[213] =8;
643 awbHwConfig->blkWeight[214] =8;
644 awbHwConfig->blkWeight[215] =8;
645 awbHwConfig->blkWeight[216] =8;
646 awbHwConfig->blkWeight[217] =10;
647 awbHwConfig->blkWeight[218] =8;
648 awbHwConfig->blkWeight[219] =8;
649 awbHwConfig->blkWeight[220] =8;
650 awbHwConfig->blkWeight[221] =8;
651 awbHwConfig->blkWeight[222] =6;
652 awbHwConfig->blkWeight[223] =6;
653 awbHwConfig->blkWeight[224] =6;
654
655 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
656 return ret;
657 }
658
initAwbHwFullConfigGw(rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfig)659 static XCamReturn initAwbHwFullConfigGw(rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfig)
660 {
661 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
662 XCamReturn ret = XCAM_RETURN_NO_ERROR;
663 memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
664 awbHwConfig->awbEnable = 1;
665 awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
666 awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
667 awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
668 awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
669 awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
670 awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
671 awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
672 awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
673 awbHwConfig->lscBypEnable = 0;
674 awbHwConfig->blkStatisticsEnable = 1;
675 awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)0;
676 awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0;
677 awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7;
678 awbHwConfig->blkStatisticsWithLumaWeightEn = 0;
679 awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
680 awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
681 awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0;
682 awbHwConfig->lightNum = 7;
683 awbHwConfig->windowSet[0] = 0;
684 awbHwConfig->windowSet[1] = 0;
685 awbHwConfig->windowSet[2] = 3840;
686 awbHwConfig->windowSet[3] = 2160;
687 awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)1;
688 awbHwConfig->maxR = 230;
689 awbHwConfig->maxG = 230;
690 awbHwConfig->maxB = 230;
691 awbHwConfig->maxY = 230;
692 awbHwConfig->minR = 3;
693 awbHwConfig->minG = 3;
694 awbHwConfig->minB = 3;
695 awbHwConfig->minY = 3;
696 awbHwConfig->pre_wbgain_inv_r = 256;
697 awbHwConfig->pre_wbgain_inv_g = 256;
698 awbHwConfig->pre_wbgain_inv_b = 256;
699 #ifdef ISP_HW_V30
700 awbHwConfig->multiwindow_en = 0;
701 #endif
702 awbHwConfig->blk_rtdw_measure_en = 0;
703 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
704 return ret;
705 }
706
initAwbHwFullConfigWp(rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfig)707 static XCamReturn initAwbHwFullConfigWp(rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfig)
708 {
709 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
710 XCamReturn ret = XCAM_RETURN_NO_ERROR;
711 memset(awbHwConfig,0,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
712 awbHwConfig->awbEnable = 1;//rawawb enable
713 awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//xy detect enable for all light
714 awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//uv detect enable for all light
715 awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;//uv detect enable for all light
716 awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//xy detect enable for all light
717 awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//uv detect enable for all light
718 awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;//uv detect enable for all light
719 awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
720 awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
721 awbHwConfig->lscBypEnable = 0;
722 awbHwConfig->blkStatisticsEnable = 1;
723 awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)0;
724 awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)0;
725 awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)7;
726 awbHwConfig->blkStatisticsWithLumaWeightEn = 0;
727 awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 0;
728 awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 0;
729 awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)0;
730 awbHwConfig->threeDyuvIllu[0] = 7;
731 awbHwConfig->threeDyuvIllu[1] = 7;
732 awbHwConfig->threeDyuvIllu[2] = 7;
733 awbHwConfig->threeDyuvIllu[3] = 7;
734 awbHwConfig->lightNum = 7; //measurment light num ,0~7
735 awbHwConfig->windowSet[0] = 0;//crop h_offs mod 2 == 0
736 awbHwConfig->windowSet[1] = 0;//crop v_offs mod 2 == 0
737 awbHwConfig->windowSet[2] = 3840;//crop h_size,8x8:mod 8==0,4x4:mod 4==0
738 awbHwConfig->windowSet[3] = 2160;//crop v_size,8x8:mod 8==0,4x4:mod 4==0
739 awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)1;//downscale,1:8x8,0:4x4
740 awbHwConfig->maxR = 230;
741 awbHwConfig->maxG = 230;
742 awbHwConfig->maxB = 230;
743 awbHwConfig->maxY = 230;
744 awbHwConfig->minR = 3;
745 awbHwConfig->minG = 3;
746 awbHwConfig->minB = 3;
747 awbHwConfig->minY = 3;
748 awbHwConfig->uvRange_param[0].pu_region[0] = 247;
749 awbHwConfig->uvRange_param[0].pv_region[0] = 252;
750 awbHwConfig->uvRange_param[0].pu_region[1] = 114;
751 awbHwConfig->uvRange_param[0].pv_region[1] = 206;
752 awbHwConfig->uvRange_param[0].pu_region[2] = 105;
753 awbHwConfig->uvRange_param[0].pv_region[2] = 243;
754 awbHwConfig->uvRange_param[0].pu_region[3] = 246;
755 awbHwConfig->uvRange_param[0].pv_region[3] = 254;
756 awbHwConfig->uvRange_param[0].slope_inv[0] = 2961;
757 awbHwConfig->uvRange_param[0].slope_inv[1] = -249;
758 awbHwConfig->uvRange_param[0].slope_inv[2] = 13126;
759 awbHwConfig->uvRange_param[0].slope_inv[3] = -512;
760 awbHwConfig->uvRange_param[1].pu_region[0] = 251;
761 awbHwConfig->uvRange_param[1].pv_region[0] = 249;
762 awbHwConfig->uvRange_param[1].pu_region[1] = 159;
763 awbHwConfig->uvRange_param[1].pv_region[1] = 160;
764 awbHwConfig->uvRange_param[1].pu_region[2] = 141;
765 awbHwConfig->uvRange_param[1].pv_region[2] = 173;
766 awbHwConfig->uvRange_param[1].pu_region[3] = 249;
767 awbHwConfig->uvRange_param[1].pv_region[3] = 250;
768 awbHwConfig->uvRange_param[1].slope_inv[0] = 1059;
769 awbHwConfig->uvRange_param[1].slope_inv[1] = -1418;
770 awbHwConfig->uvRange_param[1].slope_inv[2] = 1436;
771 awbHwConfig->uvRange_param[1].slope_inv[3] = -2048;
772 awbHwConfig->uvRange_param[2].pu_region[0] = 252;
773 awbHwConfig->uvRange_param[2].pv_region[0] = 249;
774 awbHwConfig->uvRange_param[2].pu_region[1] = 180;
775 awbHwConfig->uvRange_param[2].pv_region[1] = 148;
776 awbHwConfig->uvRange_param[2].pu_region[2] = 158;
777 awbHwConfig->uvRange_param[2].pv_region[2] = 160;
778 awbHwConfig->uvRange_param[2].pu_region[3] = 250;
779 awbHwConfig->uvRange_param[2].pv_region[3] = 249;
780 awbHwConfig->uvRange_param[2].slope_inv[0] = 730;
781 awbHwConfig->uvRange_param[2].slope_inv[1] = -1877;
782 awbHwConfig->uvRange_param[2].slope_inv[2] = 1059;
783 awbHwConfig->uvRange_param[2].slope_inv[3] = 262143;
784 awbHwConfig->uvRange_param[3].pu_region[0] = 254;
785 awbHwConfig->uvRange_param[3].pv_region[0] = 247;
786 awbHwConfig->uvRange_param[3].pu_region[1] = 204;
787 awbHwConfig->uvRange_param[3].pv_region[1] = 134;
788 awbHwConfig->uvRange_param[3].pu_region[2] = 180;
789 awbHwConfig->uvRange_param[3].pv_region[2] = 148;
790 awbHwConfig->uvRange_param[3].pu_region[3] = 252;
791 awbHwConfig->uvRange_param[3].pv_region[3] = 249;
792 awbHwConfig->uvRange_param[3].slope_inv[0] = 453;
793 awbHwConfig->uvRange_param[3].slope_inv[1] = -1755;
794 awbHwConfig->uvRange_param[3].slope_inv[2] = 730;
795 awbHwConfig->uvRange_param[3].slope_inv[3] = -1024;
796 awbHwConfig->uvRange_param[4].pu_region[0] = 255;
797 awbHwConfig->uvRange_param[4].pv_region[0] = 247;
798 awbHwConfig->uvRange_param[4].pu_region[1] = 225;
799 awbHwConfig->uvRange_param[4].pv_region[1] = 129;
800 awbHwConfig->uvRange_param[4].pu_region[2] = 201;
801 awbHwConfig->uvRange_param[4].pv_region[2] = 134;
802 awbHwConfig->uvRange_param[4].pu_region[3] = 254;
803 awbHwConfig->uvRange_param[4].pv_region[3] = 247;
804 awbHwConfig->uvRange_param[4].slope_inv[0] = 260;
805 awbHwConfig->uvRange_param[4].slope_inv[1] = -4915;
806 awbHwConfig->uvRange_param[4].slope_inv[2] = 480;
807 awbHwConfig->uvRange_param[4].slope_inv[3] = 262143;
808 awbHwConfig->uvRange_param[5].pu_region[0] = 246;
809 awbHwConfig->uvRange_param[5].pv_region[0] = 257;
810 awbHwConfig->uvRange_param[5].pu_region[1] = 101;
811 awbHwConfig->uvRange_param[5].pv_region[1] = 278;
812 awbHwConfig->uvRange_param[5].pu_region[2] = 104;
813 awbHwConfig->uvRange_param[5].pv_region[2] = 243;
814 awbHwConfig->uvRange_param[5].pu_region[3] = 246;
815 awbHwConfig->uvRange_param[5].pv_region[3] = 254;
816 awbHwConfig->uvRange_param[5].slope_inv[0] = -7070;
817 awbHwConfig->uvRange_param[5].slope_inv[1] = -88;
818 awbHwConfig->uvRange_param[5].slope_inv[2] = 13219;
819 awbHwConfig->uvRange_param[5].slope_inv[3] = 0;
820 awbHwConfig->uvRange_param[6].pu_region[0] = 250;
821 awbHwConfig->uvRange_param[6].pv_region[0] = 250;
822 awbHwConfig->uvRange_param[6].pu_region[1] = 144;
823 awbHwConfig->uvRange_param[6].pv_region[1] = 171;
824 awbHwConfig->uvRange_param[6].pu_region[2] = 114;
825 awbHwConfig->uvRange_param[6].pv_region[2] = 207;
826 awbHwConfig->uvRange_param[6].pu_region[3] = 247;
827 awbHwConfig->uvRange_param[6].pv_region[3] = 252;
828 awbHwConfig->uvRange_param[6].slope_inv[0] = 1374;
829 awbHwConfig->uvRange_param[6].slope_inv[1] = -853;
830 awbHwConfig->uvRange_param[6].slope_inv[2] = 3026;
831 awbHwConfig->uvRange_param[6].slope_inv[3] = -1536;
832 awbHwConfig->icrgb2RYuv_matrix[0] = 12;
833 awbHwConfig->icrgb2RYuv_matrix[1] = 69;
834 awbHwConfig->icrgb2RYuv_matrix[2] = 7;
835 awbHwConfig->icrgb2RYuv_matrix[3] = 665;
836 awbHwConfig->icrgb2RYuv_matrix[4] = -44;
837 awbHwConfig->icrgb2RYuv_matrix[5] = -2;
838 awbHwConfig->icrgb2RYuv_matrix[6] = 32;
839 awbHwConfig->icrgb2RYuv_matrix[7] = 2268;
840 awbHwConfig->icrgb2RYuv_matrix[8] = 23;
841 awbHwConfig->icrgb2RYuv_matrix[9] = -24;
842 awbHwConfig->icrgb2RYuv_matrix[10] = 27;
843 awbHwConfig->icrgb2RYuv_matrix[11] = 1690;
844 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = 0;
845 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = 0;
846 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = 0;
847 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = 0;
848 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = 0;
849 awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = 0;
850 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = 0;
851 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = 0;
852 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = 0;
853 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = 0;
854 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = 0;
855 awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = 0;
856 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = 0;
857 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = 0;
858 awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = 0;
859 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = 0;
860 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = 0;
861 awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = 0;
862 awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = 0;
863 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = 0;
864 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = 0;
865 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = 0;
866 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = 0;
867 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = 0;
868 awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = 0;
869 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = 0;
870 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = 0;
871 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = 0;
872 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = 0;
873 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = 0;
874 awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = 0;
875 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = 0;
876 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = 0;
877 awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = 0;
878 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = 0;
879 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = 0;
880 awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = 0;
881 awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = 0;
882 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = 0;
883 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = 0;
884 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = 0;
885 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = 0;
886 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = 0;
887 awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = 0;
888 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = 0;
889 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = 0;
890 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = 0;
891 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = 0;
892 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = 0;
893 awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = 0;
894 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = 0;
895 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = 0;
896 awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = 0;
897 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = 0;
898 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = 0;
899 awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = 0;
900 awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = 0;
901 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = 0;
902 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = 0;
903 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = 0;
904 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = 0;
905 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = 0;
906 awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = 0;
907 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = 0;
908 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = 0;
909 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = 0;
910 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = 0;
911 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = 0;
912 awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = 0;
913 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = 0;
914 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = 0;
915 awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = 0;
916 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = 0;
917 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = 0;
918 awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = 0;
919 awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = 0;
920 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = 1534;
921 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = 1535;
922 awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = 1027;
923 awbHwConfig->rgb2xy_param.rotationMat[0] = -2202;
924 awbHwConfig->rgb2xy_param.rotationMat[1] = 3454;
925 awbHwConfig->rgb2xy_param.rotationMat[2] = -535;
926 awbHwConfig->rgb2xy_param.rotationMat[3] = 3454;
927 awbHwConfig->rgb2xy_param.rotationMat[4] = 2202;
928 awbHwConfig->rgb2xy_param.rotationMat[5] = 2826;
929 awbHwConfig->xyRange_param[0].NorrangeX[0] = -1432;
930 awbHwConfig->xyRange_param[0].NorrangeX[1] = -962;
931 awbHwConfig->xyRange_param[0].NorrangeY[0] = 134;
932 awbHwConfig->xyRange_param[0].NorrangeY[1] = -30;
933 awbHwConfig->xyRange_param[0].SperangeX[0] = -1432;
934 awbHwConfig->xyRange_param[0].SperangeX[1] = -962;
935 awbHwConfig->xyRange_param[0].SperangeY[0] = 165;
936 awbHwConfig->xyRange_param[0].SperangeY[1] = -60;
937 awbHwConfig->xyRange_param[1].NorrangeX[0] = -959;
938 awbHwConfig->xyRange_param[1].NorrangeX[1] = -507;
939 awbHwConfig->xyRange_param[1].NorrangeY[0] = -46;
940 awbHwConfig->xyRange_param[1].NorrangeY[1] = -159;
941 awbHwConfig->xyRange_param[1].SperangeX[0] = -961;
942 awbHwConfig->xyRange_param[1].SperangeX[1] = -507;
943 awbHwConfig->xyRange_param[1].SperangeY[0] = -46;
944 awbHwConfig->xyRange_param[1].SperangeY[1] = -179;
945 awbHwConfig->xyRange_param[2].NorrangeX[0] = -507;
946 awbHwConfig->xyRange_param[2].NorrangeX[1] = -160;
947 awbHwConfig->xyRange_param[2].NorrangeY[0] = 181;
948 awbHwConfig->xyRange_param[2].NorrangeY[1] = 10;
949 awbHwConfig->xyRange_param[2].SperangeX[0] = -507;
950 awbHwConfig->xyRange_param[2].SperangeX[1] = -160;
951 awbHwConfig->xyRange_param[2].SperangeY[0] = 205;
952 awbHwConfig->xyRange_param[2].SperangeY[1] = -20;
953 awbHwConfig->xyRange_param[3].NorrangeX[0] = -160;
954 awbHwConfig->xyRange_param[3].NorrangeX[1] = 74;
955 awbHwConfig->xyRange_param[3].NorrangeY[0] = 79;
956 awbHwConfig->xyRange_param[3].NorrangeY[1] = -85;
957 awbHwConfig->xyRange_param[3].SperangeX[0] = -160;
958 awbHwConfig->xyRange_param[3].SperangeX[1] = 74;
959 awbHwConfig->xyRange_param[3].SperangeY[0] = 109;
960 awbHwConfig->xyRange_param[3].SperangeY[1] = -103;
961 awbHwConfig->xyRange_param[4].NorrangeX[0] = 74;
962 awbHwConfig->xyRange_param[4].NorrangeX[1] = 227;
963 awbHwConfig->xyRange_param[4].NorrangeY[0] = 102;
964 awbHwConfig->xyRange_param[4].NorrangeY[1] = -66;
965 awbHwConfig->xyRange_param[4].SperangeX[0] = 74;
966 awbHwConfig->xyRange_param[4].SperangeX[1] = 227;
967 awbHwConfig->xyRange_param[4].SperangeY[0] = 133;
968 awbHwConfig->xyRange_param[4].SperangeY[1] = -86;
969 awbHwConfig->xyRange_param[5].NorrangeX[0] = -1742;
970 awbHwConfig->xyRange_param[5].NorrangeX[1] = -1432;
971 awbHwConfig->xyRange_param[5].NorrangeY[0] = 90;
972 awbHwConfig->xyRange_param[5].NorrangeY[1] = -80;
973 awbHwConfig->xyRange_param[5].SperangeX[0] = -1742;
974 awbHwConfig->xyRange_param[5].SperangeX[1] = -1432;
975 awbHwConfig->xyRange_param[5].SperangeY[0] = 121;
976 awbHwConfig->xyRange_param[5].SperangeY[1] = -111;
977 awbHwConfig->xyRange_param[6].NorrangeX[0] = -962;
978 awbHwConfig->xyRange_param[6].NorrangeX[1] = -509;
979 awbHwConfig->xyRange_param[6].NorrangeY[0] = 114;
980 awbHwConfig->xyRange_param[6].NorrangeY[1] = -43;
981 awbHwConfig->xyRange_param[6].SperangeX[0] = -962;
982 awbHwConfig->xyRange_param[6].SperangeX[1] = -509;
983 awbHwConfig->xyRange_param[6].SperangeY[0] = 134;
984 awbHwConfig->xyRange_param[6].SperangeY[1] = -45;
985 awbHwConfig->pre_wbgain_inv_r = 256;
986 awbHwConfig->pre_wbgain_inv_g = 256;
987 awbHwConfig->pre_wbgain_inv_b = 256;
988 #ifdef ISP_HW_V30
989 awbHwConfig->multiwindow_en = 0;
990 awbHwConfig->multiwindow[0][0] = 0;
991 awbHwConfig->multiwindow[0][1] = 0;
992 awbHwConfig->multiwindow[0][2] = 0;
993 awbHwConfig->multiwindow[0][3] = 0;
994 awbHwConfig->multiwindow[1][0] = 0;
995 awbHwConfig->multiwindow[1][1] = 0;
996 awbHwConfig->multiwindow[1][2] = 0;
997 awbHwConfig->multiwindow[1][3] = 0;
998 awbHwConfig->multiwindow[2][0] = 0;
999 awbHwConfig->multiwindow[2][1] = 0;
1000 awbHwConfig->multiwindow[2][2] = 0;
1001 awbHwConfig->multiwindow[2][3] = 0;
1002 awbHwConfig->multiwindow[3][0] = 0;
1003 awbHwConfig->multiwindow[3][1] = 0;
1004 awbHwConfig->multiwindow[3][2] = 0;
1005 awbHwConfig->multiwindow[3][3] = 0;
1006 #endif
1007 awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1008 awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1009 awbHwConfig->excludeWpRange[0].measureEnable = 0;
1010 awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)0;
1011 awbHwConfig->excludeWpRange[0].xu[0] = 0;
1012 awbHwConfig->excludeWpRange[0].xu[1] = 0;
1013 awbHwConfig->excludeWpRange[0].yv[0] = 0;
1014 awbHwConfig->excludeWpRange[0].yv[1] = 0;
1015 awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1016 awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1017 awbHwConfig->excludeWpRange[1].measureEnable = 0;
1018 awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)0;
1019 awbHwConfig->excludeWpRange[1].xu[0] = 0;
1020 awbHwConfig->excludeWpRange[1].xu[1] = 0;
1021 awbHwConfig->excludeWpRange[1].yv[0] = 0;
1022 awbHwConfig->excludeWpRange[1].yv[1] = 0;
1023 awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1024 awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1025 awbHwConfig->excludeWpRange[2].measureEnable = 0;
1026 awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)0;
1027 awbHwConfig->excludeWpRange[2].xu[0] = 0;
1028 awbHwConfig->excludeWpRange[2].xu[1] = 0;
1029 awbHwConfig->excludeWpRange[2].yv[0] = 0;
1030 awbHwConfig->excludeWpRange[2].yv[1] = 0;
1031 awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1032 awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1033 awbHwConfig->excludeWpRange[3].measureEnable = 0;
1034 awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)0;
1035 awbHwConfig->excludeWpRange[3].xu[0] = 0;
1036 awbHwConfig->excludeWpRange[3].xu[1] = 0;
1037 awbHwConfig->excludeWpRange[3].yv[0] = 0;
1038 awbHwConfig->excludeWpRange[3].yv[1] = 0;
1039 awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1040 awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1041 awbHwConfig->excludeWpRange[4].measureEnable = 0;
1042 awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)0;
1043 awbHwConfig->excludeWpRange[4].xu[0] = 0;
1044 awbHwConfig->excludeWpRange[4].xu[1] = 0;
1045 awbHwConfig->excludeWpRange[4].yv[0] = 0;
1046 awbHwConfig->excludeWpRange[4].yv[1] = 0;
1047 awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1048 awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1049 awbHwConfig->excludeWpRange[5].measureEnable = 0;
1050 awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)0;
1051 awbHwConfig->excludeWpRange[5].xu[0] = 0;
1052 awbHwConfig->excludeWpRange[5].xu[1] = 0;
1053 awbHwConfig->excludeWpRange[5].yv[0] = 0;
1054 awbHwConfig->excludeWpRange[5].yv[1] = 0;
1055 awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = 1;
1056 awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = 1;
1057 awbHwConfig->excludeWpRange[6].measureEnable = 0;
1058 awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)0;
1059 awbHwConfig->excludeWpRange[6].xu[0] = 0;
1060 awbHwConfig->excludeWpRange[6].xu[1] = 0;
1061 awbHwConfig->excludeWpRange[6].yv[0] = 0;
1062 awbHwConfig->excludeWpRange[6].yv[1] = 0;
1063 awbHwConfig->wpDiffwei_y[0] =0;
1064 awbHwConfig->wpDiffwei_y[1] =16;
1065 awbHwConfig->wpDiffwei_y[2] =32;
1066 awbHwConfig->wpDiffwei_y[3] =64;
1067 awbHwConfig->wpDiffwei_y[4] =96;
1068 awbHwConfig->wpDiffwei_y[5] =128;
1069 awbHwConfig->wpDiffwei_y[6] =192;
1070 awbHwConfig->wpDiffwei_y[7] =224;
1071 awbHwConfig->wpDiffwei_y[8] =240;
1072 awbHwConfig->wpDiffwei_w[0] =31;
1073 awbHwConfig->wpDiffwei_w[1] =31;
1074 awbHwConfig->wpDiffwei_w[2] =31;
1075 awbHwConfig->wpDiffwei_w[3] =31;
1076 awbHwConfig->wpDiffwei_w[4] =31;
1077 awbHwConfig->wpDiffwei_w[5] =31;
1078 awbHwConfig->wpDiffwei_w[6] =31;
1079 awbHwConfig->wpDiffwei_w[7] =31;
1080 awbHwConfig->wpDiffwei_w[8] =31;
1081 awbHwConfig->blkWeight[0] =6;
1082 awbHwConfig->blkWeight[1] =6;
1083 awbHwConfig->blkWeight[2] =6;
1084 awbHwConfig->blkWeight[3] =8;
1085 awbHwConfig->blkWeight[4] =8;
1086 awbHwConfig->blkWeight[5] =8;
1087 awbHwConfig->blkWeight[6] =8;
1088 awbHwConfig->blkWeight[7] =10;
1089 awbHwConfig->blkWeight[8] =8;
1090 awbHwConfig->blkWeight[9] =8;
1091 awbHwConfig->blkWeight[10] =8;
1092 awbHwConfig->blkWeight[11] =8;
1093 awbHwConfig->blkWeight[12] =6;
1094 awbHwConfig->blkWeight[13] =6;
1095 awbHwConfig->blkWeight[14] =6;
1096 awbHwConfig->blkWeight[15] =6;
1097 awbHwConfig->blkWeight[16] =6;
1098 awbHwConfig->blkWeight[17] =8;
1099 awbHwConfig->blkWeight[18] =8;
1100 awbHwConfig->blkWeight[19] =10;
1101 awbHwConfig->blkWeight[20] =10;
1102 awbHwConfig->blkWeight[21] =12;
1103 awbHwConfig->blkWeight[22] =12;
1104 awbHwConfig->blkWeight[23] =12;
1105 awbHwConfig->blkWeight[24] =10;
1106 awbHwConfig->blkWeight[25] =10;
1107 awbHwConfig->blkWeight[26] =8;
1108 awbHwConfig->blkWeight[27] =8;
1109 awbHwConfig->blkWeight[28] =6;
1110 awbHwConfig->blkWeight[29] =6;
1111 awbHwConfig->blkWeight[30] =6;
1112 awbHwConfig->blkWeight[31] =8;
1113 awbHwConfig->blkWeight[32] =10;
1114 awbHwConfig->blkWeight[33] =12;
1115 awbHwConfig->blkWeight[34] =14;
1116 awbHwConfig->blkWeight[35] =16;
1117 awbHwConfig->blkWeight[36] =18;
1118 awbHwConfig->blkWeight[37] =20;
1119 awbHwConfig->blkWeight[38] =18;
1120 awbHwConfig->blkWeight[39] =16;
1121 awbHwConfig->blkWeight[40] =14;
1122 awbHwConfig->blkWeight[41] =12;
1123 awbHwConfig->blkWeight[42] =10;
1124 awbHwConfig->blkWeight[43] =8;
1125 awbHwConfig->blkWeight[44] =6;
1126 awbHwConfig->blkWeight[45] =8;
1127 awbHwConfig->blkWeight[46] =8;
1128 awbHwConfig->blkWeight[47] =12;
1129 awbHwConfig->blkWeight[48] =16;
1130 awbHwConfig->blkWeight[49] =22;
1131 awbHwConfig->blkWeight[50] =26;
1132 awbHwConfig->blkWeight[51] =30;
1133 awbHwConfig->blkWeight[52] =32;
1134 awbHwConfig->blkWeight[53] =30;
1135 awbHwConfig->blkWeight[54] =26;
1136 awbHwConfig->blkWeight[55] =22;
1137 awbHwConfig->blkWeight[56] =16;
1138 awbHwConfig->blkWeight[57] =12;
1139 awbHwConfig->blkWeight[58] =8;
1140 awbHwConfig->blkWeight[59] =8;
1141 awbHwConfig->blkWeight[60] =8;
1142 awbHwConfig->blkWeight[61] =10;
1143 awbHwConfig->blkWeight[62] =14;
1144 awbHwConfig->blkWeight[63] =22;
1145 awbHwConfig->blkWeight[64] =28;
1146 awbHwConfig->blkWeight[65] =36;
1147 awbHwConfig->blkWeight[66] =42;
1148 awbHwConfig->blkWeight[67] =46;
1149 awbHwConfig->blkWeight[68] =42;
1150 awbHwConfig->blkWeight[69] =36;
1151 awbHwConfig->blkWeight[70] =28;
1152 awbHwConfig->blkWeight[71] =22;
1153 awbHwConfig->blkWeight[72] =14;
1154 awbHwConfig->blkWeight[73] =10;
1155 awbHwConfig->blkWeight[74] =8;
1156 awbHwConfig->blkWeight[75] =8;
1157 awbHwConfig->blkWeight[76] =10;
1158 awbHwConfig->blkWeight[77] =16;
1159 awbHwConfig->blkWeight[78] =26;
1160 awbHwConfig->blkWeight[79] =36;
1161 awbHwConfig->blkWeight[80] =46;
1162 awbHwConfig->blkWeight[81] =54;
1163 awbHwConfig->blkWeight[82] =58;
1164 awbHwConfig->blkWeight[83] =54;
1165 awbHwConfig->blkWeight[84] =46;
1166 awbHwConfig->blkWeight[85] =36;
1167 awbHwConfig->blkWeight[86] =26;
1168 awbHwConfig->blkWeight[87] =16;
1169 awbHwConfig->blkWeight[88] =10;
1170 awbHwConfig->blkWeight[89] =8;
1171 awbHwConfig->blkWeight[90] =8;
1172 awbHwConfig->blkWeight[91] =12;
1173 awbHwConfig->blkWeight[92] =18;
1174 awbHwConfig->blkWeight[93] =30;
1175 awbHwConfig->blkWeight[94] =42;
1176 awbHwConfig->blkWeight[95] =54;
1177 awbHwConfig->blkWeight[96] =63;
1178 awbHwConfig->blkWeight[97] =63;
1179 awbHwConfig->blkWeight[98] =63;
1180 awbHwConfig->blkWeight[99] =54;
1181 awbHwConfig->blkWeight[100] =42;
1182 awbHwConfig->blkWeight[101] =30;
1183 awbHwConfig->blkWeight[102] =18;
1184 awbHwConfig->blkWeight[103] =12;
1185 awbHwConfig->blkWeight[104] =8;
1186 awbHwConfig->blkWeight[105] =10;
1187 awbHwConfig->blkWeight[106] =12;
1188 awbHwConfig->blkWeight[107] =20;
1189 awbHwConfig->blkWeight[108] =32;
1190 awbHwConfig->blkWeight[109] =46;
1191 awbHwConfig->blkWeight[110] =58;
1192 awbHwConfig->blkWeight[111] =63;
1193 awbHwConfig->blkWeight[112] =63;
1194 awbHwConfig->blkWeight[113] =63;
1195 awbHwConfig->blkWeight[114] =58;
1196 awbHwConfig->blkWeight[115] =46;
1197 awbHwConfig->blkWeight[116] =32;
1198 awbHwConfig->blkWeight[117] =20;
1199 awbHwConfig->blkWeight[118] =12;
1200 awbHwConfig->blkWeight[119] =10;
1201 awbHwConfig->blkWeight[120] =8;
1202 awbHwConfig->blkWeight[121] =12;
1203 awbHwConfig->blkWeight[122] =18;
1204 awbHwConfig->blkWeight[123] =30;
1205 awbHwConfig->blkWeight[124] =42;
1206 awbHwConfig->blkWeight[125] =54;
1207 awbHwConfig->blkWeight[126] =63;
1208 awbHwConfig->blkWeight[127] =63;
1209 awbHwConfig->blkWeight[128] =63;
1210 awbHwConfig->blkWeight[129] =54;
1211 awbHwConfig->blkWeight[130] =42;
1212 awbHwConfig->blkWeight[131] =30;
1213 awbHwConfig->blkWeight[132] =18;
1214 awbHwConfig->blkWeight[133] =12;
1215 awbHwConfig->blkWeight[134] =8;
1216 awbHwConfig->blkWeight[135] =8;
1217 awbHwConfig->blkWeight[136] =10;
1218 awbHwConfig->blkWeight[137] =16;
1219 awbHwConfig->blkWeight[138] =26;
1220 awbHwConfig->blkWeight[139] =36;
1221 awbHwConfig->blkWeight[140] =46;
1222 awbHwConfig->blkWeight[141] =54;
1223 awbHwConfig->blkWeight[142] =58;
1224 awbHwConfig->blkWeight[143] =54;
1225 awbHwConfig->blkWeight[144] =46;
1226 awbHwConfig->blkWeight[145] =36;
1227 awbHwConfig->blkWeight[146] =26;
1228 awbHwConfig->blkWeight[147] =16;
1229 awbHwConfig->blkWeight[148] =10;
1230 awbHwConfig->blkWeight[149] =8;
1231 awbHwConfig->blkWeight[150] =8;
1232 awbHwConfig->blkWeight[151] =10;
1233 awbHwConfig->blkWeight[152] =14;
1234 awbHwConfig->blkWeight[153] =22;
1235 awbHwConfig->blkWeight[154] =28;
1236 awbHwConfig->blkWeight[155] =36;
1237 awbHwConfig->blkWeight[156] =42;
1238 awbHwConfig->blkWeight[157] =46;
1239 awbHwConfig->blkWeight[158] =42;
1240 awbHwConfig->blkWeight[159] =36;
1241 awbHwConfig->blkWeight[160] =28;
1242 awbHwConfig->blkWeight[161] =22;
1243 awbHwConfig->blkWeight[162] =14;
1244 awbHwConfig->blkWeight[163] =10;
1245 awbHwConfig->blkWeight[164] =8;
1246 awbHwConfig->blkWeight[165] =8;
1247 awbHwConfig->blkWeight[166] =8;
1248 awbHwConfig->blkWeight[167] =12;
1249 awbHwConfig->blkWeight[168] =16;
1250 awbHwConfig->blkWeight[169] =22;
1251 awbHwConfig->blkWeight[170] =26;
1252 awbHwConfig->blkWeight[171] =30;
1253 awbHwConfig->blkWeight[172] =32;
1254 awbHwConfig->blkWeight[173] =30;
1255 awbHwConfig->blkWeight[174] =26;
1256 awbHwConfig->blkWeight[175] =22;
1257 awbHwConfig->blkWeight[176] =16;
1258 awbHwConfig->blkWeight[177] =12;
1259 awbHwConfig->blkWeight[178] =8;
1260 awbHwConfig->blkWeight[179] =8;
1261 awbHwConfig->blkWeight[180] =6;
1262 awbHwConfig->blkWeight[181] =8;
1263 awbHwConfig->blkWeight[182] =10;
1264 awbHwConfig->blkWeight[183] =12;
1265 awbHwConfig->blkWeight[184] =14;
1266 awbHwConfig->blkWeight[185] =16;
1267 awbHwConfig->blkWeight[186] =18;
1268 awbHwConfig->blkWeight[187] =20;
1269 awbHwConfig->blkWeight[188] =18;
1270 awbHwConfig->blkWeight[189] =16;
1271 awbHwConfig->blkWeight[190] =14;
1272 awbHwConfig->blkWeight[191] =12;
1273 awbHwConfig->blkWeight[192] =10;
1274 awbHwConfig->blkWeight[193] =8;
1275 awbHwConfig->blkWeight[194] =6;
1276 awbHwConfig->blkWeight[195] =6;
1277 awbHwConfig->blkWeight[196] =6;
1278 awbHwConfig->blkWeight[197] =8;
1279 awbHwConfig->blkWeight[198] =8;
1280 awbHwConfig->blkWeight[199] =10;
1281 awbHwConfig->blkWeight[200] =10;
1282 awbHwConfig->blkWeight[201] =12;
1283 awbHwConfig->blkWeight[202] =12;
1284 awbHwConfig->blkWeight[203] =12;
1285 awbHwConfig->blkWeight[204] =10;
1286 awbHwConfig->blkWeight[205] =10;
1287 awbHwConfig->blkWeight[206] =8;
1288 awbHwConfig->blkWeight[207] =8;
1289 awbHwConfig->blkWeight[208] =6;
1290 awbHwConfig->blkWeight[209] =6;
1291 awbHwConfig->blkWeight[210] =6;
1292 awbHwConfig->blkWeight[211] =6;
1293 awbHwConfig->blkWeight[212] =6;
1294 awbHwConfig->blkWeight[213] =8;
1295 awbHwConfig->blkWeight[214] =8;
1296 awbHwConfig->blkWeight[215] =8;
1297 awbHwConfig->blkWeight[216] =8;
1298 awbHwConfig->blkWeight[217] =10;
1299 awbHwConfig->blkWeight[218] =8;
1300 awbHwConfig->blkWeight[219] =8;
1301 awbHwConfig->blkWeight[220] =8;
1302 awbHwConfig->blkWeight[221] =8;
1303 awbHwConfig->blkWeight[222] =6;
1304 awbHwConfig->blkWeight[223] =6;
1305 awbHwConfig->blkWeight[224] =6;
1306 awbHwConfig->blk_rtdw_measure_en = 0;
1307
1308 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1309 return ret;
1310 }
1311
1312
initCustomAwbRes(rk_aiq_customeAwb_results_t * customAwb,rk_aiq_rkAwb_config_t * pConfig)1313 static void initCustomAwbRes(rk_aiq_customeAwb_results_t* customAwb, rk_aiq_rkAwb_config_t* pConfig)
1314 {
1315 customAwb->IsConverged = false;
1316 customAwb->awb_gain_algo.rgain =1.0;
1317 customAwb->awb_gain_algo.bgain =1.0;
1318 customAwb->awb_gain_algo.grgain =1.0;
1319 customAwb->awb_gain_algo.gbgain =1.0;
1320 customAwb->awb_smooth_factor = 0.5;
1321 rk_aiq_customAwb_hw_cfg_t *awbHwConfig = &customAwb->awbHwConfig;
1322 const rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull = &pConfig->awbHwConfig;
1323 awbHwConfig->awbEnable = awbHwConfigFull->awbEnable;
1324 awbHwConfig->lscBypEnable = awbHwConfigFull->lscBypEnable;
1325 awbHwConfig->uvDetectionEnable = awbHwConfigFull->uvDetectionEnable[0];
1326 awbHwConfig->xyDetectionEnable = awbHwConfigFull->xyDetectionEnable[0];
1327 awbHwConfig->threeDyuvEnable = awbHwConfigFull->threeDyuvEnable[0];
1328 memcpy(awbHwConfig->threeDyuvIllu,awbHwConfigFull->threeDyuvIllu, sizeof(awbHwConfigFull->threeDyuvIllu));
1329 awbHwConfig->wpDiffWeiEnable = awbHwConfigFull->wpDiffWeiEnable[0];
1330 awbHwConfig->blkWeightEnable = awbHwConfigFull->blkWeightEnable[0];
1331 awbHwConfig->blkMeasureMode = awbHwConfigFull->blkMeasureMode;
1332 #ifdef ISP_HW_V30
1333 awbHwConfig->multiwindow_en = awbHwConfigFull->multiwindow_en;
1334 memcpy(awbHwConfig->multiwindow, awbHwConfigFull->multiwindow,sizeof(awbHwConfigFull->multiwindow));
1335 #endif
1336 awbHwConfig->frameChoose = awbHwConfigFull->frameChoose;
1337 memcpy(awbHwConfig->windowSet,awbHwConfigFull->windowSet,sizeof(awbHwConfigFull->windowSet));
1338 awbHwConfig->lightNum = awbHwConfigFull->lightNum;
1339 awbHwConfig->maxR = awbHwConfigFull->maxR;
1340 awbHwConfig->minR = awbHwConfigFull->minR;
1341 awbHwConfig->maxG = awbHwConfigFull->maxG;
1342 awbHwConfig->minG = awbHwConfigFull->minG;
1343 awbHwConfig->maxB = awbHwConfigFull->maxB;
1344 awbHwConfig->minB = awbHwConfigFull->minB;
1345 awbHwConfig->maxY = awbHwConfigFull->maxY;
1346 awbHwConfig->minY = awbHwConfigFull->minY;
1347 memcpy(awbHwConfig->icrgb2RYuv_matrix,awbHwConfigFull->icrgb2RYuv_matrix,sizeof(awbHwConfigFull->icrgb2RYuv_matrix));
1348 memcpy(awbHwConfig->ic3Dyuv2Range_param,awbHwConfigFull->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM));
1349 memcpy(awbHwConfig->uvRange_param,awbHwConfigFull->uvRange_param,sizeof(awbHwConfigFull->uvRange_param));
1350 awbHwConfig->rgb2xy_param = awbHwConfigFull->rgb2xy_param;
1351 memcpy(awbHwConfig->xyRange_param,awbHwConfigFull->xyRange_param,sizeof(awbHwConfigFull->xyRange_param));
1352 memcpy(awbHwConfig->excludeWpRange,awbHwConfigFull->excludeWpRange,sizeof(awbHwConfig->excludeWpRange));
1353 memcpy(awbHwConfig->wpDiffwei_y, awbHwConfigFull->wpDiffwei_y,sizeof(awbHwConfigFull->wpDiffwei_y));
1354 memcpy(awbHwConfig->wpDiffwei_w, awbHwConfigFull->wpDiffwei_w,sizeof(awbHwConfigFull->wpDiffwei_w));
1355 awbHwConfig->xyRangeTypeForWpHist = awbHwConfigFull->xyRangeTypeForWpHist;
1356 memcpy(awbHwConfig->blkWeight, awbHwConfigFull->blkWeight,sizeof(awbHwConfigFull->blkWeight));
1357 awbHwConfig->xyRangeTypeForBlkStatistics = awbHwConfigFull->xyRangeTypeForBlkStatistics;
1358 awbHwConfig->illIdxForBlkStatistics = awbHwConfigFull->illIdxForBlkStatistics;
1359
1360 }
1361
awb_window_init(void * ctx,rk_aiq_rkAwb_config_t * rkCfg)1362 int32_t awb_window_init(void* ctx, rk_aiq_rkAwb_config_t *rkCfg)
1363 {
1364 rkCfg->awbHwConfig.windowSet[0]=0;
1365 rkCfg->awbHwConfig.windowSet[1]=0;
1366 rkCfg->awbHwConfig.windowSet[2]=rkCfg->RawWidth;
1367 rkCfg->awbHwConfig.windowSet[3]=rkCfg->RawHeight;
1368 return 0;
1369 }
frame_choose_init(void * ctx,rk_aiq_rkAwb_config_t * rkCfg)1370 int32_t frame_choose_init(void* ctx, rk_aiq_rkAwb_config_t *rkCfg)
1371 {
1372
1373 if((rk_aiq_working_mode_t)rkCfg->Working_mode == RK_AIQ_WORKING_MODE_NORMAL) {
1374 rkCfg->awbHwConfig.frameChoose = 0;
1375 } else{
1376 rkCfg->awbHwConfig.frameChoose = 1;//Middle frame
1377 }
1378
1379 return 0;
1380 }
1381
awb_window_check(const rk_aiq_rkAwb_config_t * rkCfg,unsigned short * windowSet)1382 int32_t awb_window_check(const rk_aiq_rkAwb_config_t *rkCfg, unsigned short *windowSet)
1383 {
1384
1385 if(windowSet[0] > rkCfg->RawWidth ||
1386 windowSet[0] + windowSet[2] > rkCfg->RawWidth ||
1387 windowSet[1] > rkCfg->RawHeight ||
1388 windowSet[1] + windowSet[3] > rkCfg->RawHeight ) {
1389 LOGW_AWB("windowSet[%d,%d,%d,%d]is invaild!!! Reset to full window\n", windowSet[0],
1390 windowSet[1], windowSet[2], windowSet[3]);
1391 windowSet[0]=0;
1392 windowSet[1]=0;
1393 windowSet[2]=rkCfg->RawWidth;
1394 windowSet[3]=rkCfg->RawHeight;
1395 }
1396
1397 return 0;
1398 }
1399
1400
1401
1402 static
_rkAwbStats2CustomAwbStats(rk_aiq_customAwb_stats_t * customAwb,rk_aiq_awb_stat_res_v201_t * rkAwb)1403 void _rkAwbStats2CustomAwbStats(rk_aiq_customAwb_stats_t* customAwb,
1404 rk_aiq_awb_stat_res_v201_t* rkAwb)
1405 {
1406 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1407 memcpy(customAwb->light,rkAwb->light,sizeof(customAwb->light));
1408 #ifdef ISP_HW_V30
1409 memcpy(customAwb->WpNo2,rkAwb->WpNo2,sizeof(customAwb->WpNo2));
1410 #endif
1411 memcpy(customAwb->blockResult,rkAwb->blockResult,sizeof(customAwb->blockResult));
1412 #ifdef ISP_HW_V30
1413 memcpy(customAwb->multiwindowLightResult,rkAwb->multiwindowLightResult,sizeof(customAwb->multiwindowLightResult));
1414 memcpy(customAwb->excWpRangeResult,rkAwb->excWpRangeResult,sizeof(customAwb->excWpRangeResult));
1415 #endif
1416 memcpy(customAwb->WpNoHist,rkAwb->WpNoHist,sizeof(customAwb->WpNoHist));
1417 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1418 }
1419
_customAwbHw2rkAwbHwCfg(const rk_aiq_customeAwb_results_t * customAwbProcRes,rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfigFull)1420 static void _customAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_results_t* customAwbProcRes, rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull)
1421 {
1422 const rk_aiq_customAwb_hw_cfg_t *awbHwConfig = &customAwbProcRes->awbHwConfig;
1423 awbHwConfigFull->awbEnable = awbHwConfig->awbEnable;
1424 awbHwConfigFull->lscBypEnable = awbHwConfig->lscBypEnable;
1425 for(int i=0;i<RK_AIQ_AWB_XY_TYPE_MAX_V201;i++){
1426 awbHwConfigFull->uvDetectionEnable[i] = awbHwConfig->uvDetectionEnable;
1427 awbHwConfigFull->xyDetectionEnable[i] = awbHwConfig->xyDetectionEnable;
1428 awbHwConfigFull->threeDyuvEnable[i] = awbHwConfig->threeDyuvEnable;
1429 awbHwConfigFull->wpDiffWeiEnable[i] = awbHwConfig->wpDiffWeiEnable;
1430 awbHwConfigFull->blkWeightEnable[i] = awbHwConfig->blkWeightEnable;
1431 }
1432 memcpy(awbHwConfigFull->threeDyuvIllu,awbHwConfig->threeDyuvIllu, sizeof(awbHwConfig->threeDyuvIllu));
1433 awbHwConfigFull->blkMeasureMode = awbHwConfig->blkMeasureMode;
1434 #ifdef ISP_HW_V30
1435 awbHwConfigFull->multiwindow_en = awbHwConfig->multiwindow_en;
1436 memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow));
1437 #endif
1438 awbHwConfigFull->frameChoose = awbHwConfig->frameChoose;
1439 memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet));
1440 awbHwConfigFull->lightNum = awbHwConfig->lightNum;
1441 awbHwConfigFull->maxR = awbHwConfig->maxR;
1442 awbHwConfigFull->minR = awbHwConfig->minR;
1443 awbHwConfigFull->maxG = awbHwConfig->maxG;
1444 awbHwConfigFull->minG = awbHwConfig->minG;
1445 awbHwConfigFull->maxB = awbHwConfig->maxB;
1446 awbHwConfigFull->minB = awbHwConfig->minB;
1447 awbHwConfigFull->maxY = awbHwConfig->maxY;
1448 awbHwConfigFull->minY = awbHwConfig->minY;
1449 memcpy(awbHwConfigFull->icrgb2RYuv_matrix,awbHwConfig->icrgb2RYuv_matrix,sizeof(awbHwConfig->icrgb2RYuv_matrix));
1450 memcpy(awbHwConfigFull->ic3Dyuv2Range_param,awbHwConfig->ic3Dyuv2Range_param,sizeof(RK_AIQ_AWB_YUV_LS_PARA_NUM));
1451 memcpy(awbHwConfigFull->uvRange_param,awbHwConfig->uvRange_param,sizeof(awbHwConfig->uvRange_param));
1452 awbHwConfigFull->rgb2xy_param = awbHwConfig->rgb2xy_param;
1453 memcpy(awbHwConfigFull->xyRange_param,awbHwConfig->xyRange_param,sizeof(awbHwConfig->xyRange_param));
1454 memcpy(awbHwConfigFull->excludeWpRange,awbHwConfig->excludeWpRange,sizeof(awbHwConfigFull->excludeWpRange));
1455 memcpy(awbHwConfigFull->wpDiffwei_y, awbHwConfig->wpDiffwei_y,sizeof(awbHwConfig->wpDiffwei_y));
1456 memcpy(awbHwConfigFull->wpDiffwei_w, awbHwConfig->wpDiffwei_w,sizeof(awbHwConfig->wpDiffwei_w));
1457 awbHwConfigFull->xyRangeTypeForWpHist = awbHwConfig->xyRangeTypeForWpHist;
1458 memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight));
1459 awbHwConfigFull->xyRangeTypeForBlkStatistics = awbHwConfig->xyRangeTypeForBlkStatistics;
1460 awbHwConfigFull->illIdxForBlkStatistics = awbHwConfig->illIdxForBlkStatistics;
1461
1462 }
1463
1464
1465 static
_customAwbRes2rkAwbRes(RkAiqAlgoProcResAwb * rkAwbProcRes,rk_aiq_customeAwb_results_t * customAwbProcRes,const rk_aiq_isp_awb_meas_cfg_v3x_t & awbHwConfig)1466 void _customAwbRes2rkAwbRes( RkAiqAlgoProcResAwb* rkAwbProcRes,
1467 rk_aiq_customeAwb_results_t* customAwbProcRes, const rk_aiq_isp_awb_meas_cfg_v3x_t &awbHwConfig)
1468 {
1469
1470 rkAwbProcRes->awbConverged = customAwbProcRes->IsConverged;
1471 *rkAwbProcRes->awb_gain_algo= customAwbProcRes->awb_gain_algo;
1472 rkAwbProcRes->awb_smooth_factor = customAwbProcRes->awb_smooth_factor;
1473 *rkAwbProcRes->awb_hw1_para= awbHwConfig;
1474 }
1475
_rkAwbStats2CustomGroupAwbStats(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result,int camera_num,rk_aiq_customAwb_stats_t * customStats)1476 static XCamReturn _rkAwbStats2CustomGroupAwbStats( rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num,rk_aiq_customAwb_stats_t *customStats)
1477 {
1478 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1479 XCamReturn ret = XCAM_RETURN_NO_ERROR;
1480 XCamVideoBuffer* awbStatsBuf = nullptr;
1481 RkAiqAwbStats* xAwbStats = nullptr;
1482 rk_aiq_customAwb_stats_t *awbStat = customStats;
1483 rk_aiq_customAwb_stats_t *awbStat2 = customStats;
1484 for(int i=0;i<camera_num;i++){
1485 awbStatsBuf = rk_aiq_singlecam_3a_result[i]->awb._awbStats;
1486 if (awbStatsBuf) {
1487 xAwbStats = (RkAiqAwbStats*)awbStatsBuf->map(awbStatsBuf);
1488 if (!xAwbStats) {
1489 LOGE_AWBGROUP("awb stats is null for %dth camera",i);
1490 return(XCAM_RETURN_ERROR_FAILED);
1491 }
1492 } else {
1493 LOGE_AWBGROUP("awb stats is null for %dth camera",i);
1494 return(XCAM_RETURN_ERROR_FAILED);
1495 }
1496 if(i>0){
1497 if(awbStat->next ==nullptr){
1498 awbStat2 = (rk_aiq_customAwb_stats_t*)malloc(sizeof(rk_aiq_customAwb_stats_t));
1499 memset(awbStat2,0,sizeof(rk_aiq_customAwb_stats_t));
1500 awbStat->next = awbStat2;
1501 // LOGE_AWB_SUBM(0xff, "%s %dth camera:,malloc awbStat:%p", __func__,i,awbStat2);
1502 }else{
1503 awbStat2 = awbStat->next;
1504 }
1505 awbStat = awbStat->next;
1506
1507 }
1508 _rkAwbStats2CustomAwbStats(awbStat2, &xAwbStats->awb_stats_v3x);
1509 //WriteMeasureResult(xAwbStats->awb_stats_v3x,XCORE_LOG_LEVEL_LOW1+1,i);
1510 }
1511 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1512 return(ret);
1513
1514 }
1515
customAwbStatsRelease(rk_aiq_customAwb_stats_t * customStats)1516 static XCamReturn customAwbStatsRelease( rk_aiq_customAwb_stats_t *customStats)
1517 {
1518 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1519 XCamReturn ret = XCAM_RETURN_NO_ERROR;
1520 rk_aiq_customAwb_stats_t *awbStat = customStats->next;
1521 rk_aiq_customAwb_stats_t *awbStat2;
1522 while(awbStat!=nullptr){
1523 awbStat2 = awbStat->next;
1524 //LOGE_AWB_SUBM(0xff, "%s free awbStat %p ", __func__,awbStat);
1525 free(awbStat);
1526 awbStat = awbStat2;
1527 }
1528 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1529 return(ret);
1530
1531 }
1532
_customGruopAwbHw2rkAwbHwCfg(const rk_aiq_customeAwb_single_results_t * customAwbSingelRes,rk_aiq_isp_awb_meas_cfg_v3x_t * awbHwConfigFull,const rk_aiq_wb_gain_t ** awb_gain_algo)1533 static void _customGruopAwbHw2rkAwbHwCfg( const rk_aiq_customeAwb_single_results_t* customAwbSingelRes,
1534 rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull, const rk_aiq_wb_gain_t** awb_gain_algo)
1535 {
1536 const rk_aiq_customAwb_single_hw_cfg_t *awbHwConfig = &customAwbSingelRes->awbHwConfig;
1537 for(int i=0;i<RK_AIQ_AWB_XY_TYPE_MAX_V201;i++){
1538 awbHwConfigFull->blkWeightEnable[i] = awbHwConfig->blkWeightEnable;
1539 }
1540 #ifdef ISP_HW_V30
1541 awbHwConfigFull->multiwindow_en = awbHwConfig->multiwindow_en;
1542 memcpy(awbHwConfigFull->multiwindow, awbHwConfig->multiwindow,sizeof(awbHwConfig->multiwindow));
1543 #endif
1544 memcpy(awbHwConfigFull->windowSet,awbHwConfig->windowSet,sizeof(awbHwConfig->windowSet));
1545 memcpy(awbHwConfigFull->blkWeight, awbHwConfig->blkWeight,sizeof(awbHwConfig->blkWeight));
1546 *awb_gain_algo = &customAwbSingelRes->awb_gain_algo;
1547 }
_customGruopAwbRes2rkAwbRes(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result,int camera_num,rk_aiq_rkAwb_config_t * rkCfg,rk_aiq_customeAwb_results_t * customAwbProcRes)1548 static XCamReturn _customGruopAwbRes2rkAwbRes(rk_aiq_singlecam_3a_result_t ** rk_aiq_singlecam_3a_result , int camera_num,
1549 rk_aiq_rkAwb_config_t *rkCfg, rk_aiq_customeAwb_results_t* customAwbProcRes)
1550 {
1551 LOG1_AWB_SUBM(0xff, "%s ENTER", __func__);
1552 XCamReturn ret = XCAM_RETURN_NO_ERROR;
1553 rk_aiq_isp_awb_meas_cfg_v3x_t *awbHwConfigFull = &rkCfg->awbHwConfig;
1554 const rk_aiq_wb_gain_t* _awbGainParams = &customAwbProcRes->awb_gain_algo;//update by first camera
1555 //awb_window_check(rkCfg,customAwbProcRes->awbHwConfig.windowSet);
1556 _customAwbHw2rkAwbHwCfg(customAwbProcRes,awbHwConfigFull);//update by first camera
1557 awb_window_check(rkCfg,awbHwConfigFull->windowSet);
1558 XCamVideoBuffer* xCamAwbProcRes;
1559 RkAiqAlgoProcResAwb* procResPara;
1560 rk_aiq_customeAwb_single_results_t* customAwbProcRes2 = customAwbProcRes->next;
1561 for(int i=0; i<camera_num; i++){
1562 xCamAwbProcRes =rk_aiq_singlecam_3a_result[i]->awb._awbProcRes;
1563 procResPara = nullptr;
1564 if (xCamAwbProcRes) {
1565 procResPara = (RkAiqAlgoProcResAwb*)xCamAwbProcRes->map(xCamAwbProcRes);
1566 if(procResPara==nullptr){
1567 LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i);
1568 return(XCAM_RETURN_ERROR_FAILED);
1569 }
1570 }else {
1571 LOGE_AWBGROUP("_awbProcRes is null for %dth camera",i);
1572 return(XCAM_RETURN_ERROR_FAILED);
1573 }
1574 if(i>0 && customAwbProcRes2 != nullptr){
1575 _customGruopAwbHw2rkAwbHwCfg(customAwbProcRes2,awbHwConfigFull,&_awbGainParams);//update by each camera
1576 customAwbProcRes2 = customAwbProcRes2->next;
1577 awb_window_check(rkCfg,awbHwConfigFull->windowSet);
1578 }
1579 memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
1580 memcpy(&procResPara->awb_hw1_para,awbHwConfigFull,sizeof(rk_aiq_isp_awb_meas_cfg_v3x_t));
1581 memcpy(rk_aiq_singlecam_3a_result[i]->awb._awbGainParams,_awbGainParams,sizeof(rk_aiq_wb_gain_t));
1582 memcpy(&procResPara->awb_gain_algo, _awbGainParams, sizeof(rk_aiq_wb_gain_t));
1583 procResPara->awb_smooth_factor = customAwbProcRes->awb_smooth_factor;
1584 procResPara->awbConverged = customAwbProcRes->IsConverged;
1585 procResPara->awb_cfg_update = true;
1586 procResPara->awb_gain_update= true;
1587 //WriteDataForThirdParty(*rk_aiq_singlecam_3a_result[i]->awb._awbCfgV3x,XCORE_LOG_LEVEL_LOW1+1,i);
1588 }
1589 LOG1_AWB_SUBM(0xff, "%s EXIT", __func__);
1590 return(ret);
1591
1592 }
1593
WriteMeasureResult(rk_aiq_awb_stat_res_v201_t & awb_measure_result,int log_level,int camera_id=0)1594 static void WriteMeasureResult(rk_aiq_awb_stat_res_v201_t &awb_measure_result, int log_level ,int camera_id = 0)
1595 {
1596
1597 if(log_level <XCORE_LOG_LEVEL_LOW1) {
1598 return;
1599 }
1600 FILE * fid;
1601 char fName[100];
1602 sprintf(fName, "./tmp/MeasureResultByCustom_camera%d.txt",camera_id);
1603 fid = fopen(fName, "w");
1604 if (fid == NULL) {
1605 return;
1606 }
1607 fprintf(fid, "WpNoHist: ");
1608 for (int i = 0; i < RK_AIQ_AWB_WP_HIST_BIN_NUM; i++) {
1609 fprintf(fid, "%6d,", awb_measure_result.WpNoHist[i]);
1610 }
1611 fprintf(fid, "\n");
1612 {
1613 for (int i = 0; i < RK_AIQ_AWB_MAX_WHITEREGIONS_NUM; i++)
1614 {
1615 fprintf(fid, " illuminant %dth:\n", i);
1616 #ifdef AWB_WPNUM2_EN
1617 fprintf(fid, "WPNUM2[%d]= %7d\n", i, awb_measure_result.WpNo2[i]);
1618 #endif
1619 fprintf(fid, "SUM_RGain_NOR[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[0].RgainValue);
1620 fprintf(fid, "SUM_BGain_NOR[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[0].BgainValue);
1621 fprintf(fid, "WPNUM_NOR[%d]= %7lld\n", i, awb_measure_result.light[i].xYType[0].WpNo);
1622 fprintf(fid, "SUM_RGain_BIG[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[1].RgainValue);
1623 fprintf(fid, "SUM_BGain_BIG[%d]=%7lld\n", i, awb_measure_result.light[i].xYType[1].BgainValue);
1624 fprintf(fid, "WPNUM_BIG[%d]= %7lld\n", i, awb_measure_result.light[i].xYType[1].WpNo);
1625
1626
1627 }
1628 fprintf(fid, "blockresult[15][15]:\n");
1629 for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_VERHOR * RK_AIQ_AWB_GRID_NUM_VERHOR; i++)
1630 {
1631
1632 fprintf(fid, "blk[%2d,%2d]: blk_sum_r=%7lld, blk_sum_g=%7lld, blk_sum_b=%7lld, blk_sum_num=%7lld\n"
1633 , i / 15, i % 15, awb_measure_result.blockResult[i].Rvalue,
1634 awb_measure_result.blockResult[i].Gvalue, awb_measure_result.blockResult[i].Bvalue,
1635 awb_measure_result.blockResult[i].WpNo);
1636
1637 }
1638 fprintf(fid, "\n");
1639 }
1640 //new measurement
1641 {
1642 #ifdef AWB_MULTI_WINDOW_EN
1643 fprintf(fid, " multiwindowLightResult:\n");
1644 for (int i = 0; i < 4; i++)
1645 {
1646 fprintf(fid, " illuminant %dth:\n", i);
1647 fprintf(fid, "SUM_RGain_NOR[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].RgainValue);
1648 fprintf(fid, "SUM_BGain_NOR[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].BgainValue);
1649 fprintf(fid, "WPNUM_NOR[%d]= %7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[0].WpNo);
1650 fprintf(fid, "SUM_RGain_BIG[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].RgainValue);
1651 fprintf(fid, "SUM_BGain_BIG[%d]=%7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].BgainValue);
1652 fprintf(fid, "WPNUM_BIG[%d]= %7lld\n", i, awb_measure_result.multiwindowLightResult[i].xYType[1].WpNo);
1653
1654 }
1655 #endif
1656 #ifdef AWB_EXCWP_RANGE_STAT_EN
1657 fprintf(fid, " excWpRangeResult:\n");
1658 for (int i = 0; i < RK_AIQ_AWB_STAT_WP_RANGE_NUM_V201; i++)
1659 {
1660 fprintf(fid, " %d:\n", i);
1661 fprintf(fid, " SUM_RGain[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].RgainValue);
1662 fprintf(fid, " SUM_RGain[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].BgainValue);
1663 fprintf(fid, " WPNUM_NOR[%d]=%7lld\n", i, awb_measure_result.excWpRangeResult[i].WpNo);
1664 }
1665 #endif
1666 }
1667 fclose(fid);
1668 }
1669
1670
WriteDataForThirdParty(const rk_aiq_isp_awb_meas_cfg_v3x_t & wpDetectPara,int log_level,int camera_id=0)1671 static void WriteDataForThirdParty(const rk_aiq_isp_awb_meas_cfg_v3x_t &wpDetectPara,int log_level ,int camera_id=0)
1672 {
1673 if(log_level < XCORE_LOG_LEVEL_LOW1){
1674 return;
1675 }
1676 char fName[100];
1677 sprintf(fName, "./tmp/awbHwConfigByCustom_%d.txt",camera_id);
1678 FILE* fp = fopen(fName, "wb");
1679 if(fp != NULL)
1680 {
1681
1682 fprintf(fp, "awbHwConfig->awbEnable = %d;//rawawb enable\n", wpDetectPara.awbEnable);
1683 fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//xy detect enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1684 fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//uv detect enable for all light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1685 fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;//uv detect enable for all light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1686 fprintf(fp, "awbHwConfig->xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//xy detect enable for all light\n", wpDetectPara.xyDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1687 fprintf(fp, "awbHwConfig->uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//uv detect enable for all light\n", wpDetectPara.uvDetectionEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1688 fprintf(fp, "awbHwConfig->threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;//uv detect enable for all light\n", wpDetectPara.threeDyuvEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1689 fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1690 fprintf(fp, "awbHwConfig->blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.blkWeightEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1691 fprintf(fp, "awbHwConfig->lscBypEnable = %d;\n", wpDetectPara.lscBypEnable);
1692
1693 fprintf(fp, "awbHwConfig->blkStatisticsEnable = %d;\n", wpDetectPara.blkStatisticsEnable);
1694 fprintf(fp, "awbHwConfig->blkMeasureMode = (rk_aiq_awb_blk_stat_mode_v201_t)%d;\n", wpDetectPara.blkMeasureMode);
1695 fprintf(fp, "awbHwConfig->xyRangeTypeForBlkStatistics = (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForBlkStatistics);
1696 fprintf(fp, "awbHwConfig->illIdxForBlkStatistics = (rk_aiq_awb_blk_stat_realwp_ill_e)%d;\n", wpDetectPara.illIdxForBlkStatistics);
1697 fprintf(fp, "awbHwConfig->blkStatisticsWithLumaWeightEn = %d;\n", wpDetectPara.blkStatisticsWithLumaWeightEn);
1698
1699 fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]);
1700 fprintf(fp, "awbHwConfig->wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.wpDiffWeiEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]);
1701 fprintf(fp, "awbHwConfig->xyRangeTypeForWpHist = (rk_aiq_awb_xy_type_v201_t)%d;\n", wpDetectPara.xyRangeTypeForWpHist);
1702
1703 fprintf(fp, "awbHwConfig->threeDyuvIllu[0] = %d;\n", wpDetectPara.threeDyuvIllu[0]);
1704 fprintf(fp, "awbHwConfig->threeDyuvIllu[1] = %d;\n", wpDetectPara.threeDyuvIllu[1]);
1705 fprintf(fp, "awbHwConfig->threeDyuvIllu[2] = %d;\n", wpDetectPara.threeDyuvIllu[2]);
1706 fprintf(fp, "awbHwConfig->threeDyuvIllu[3] = %d;\n", wpDetectPara.threeDyuvIllu[3]);
1707
1708
1709
1710 fprintf(fp, "awbHwConfig->lightNum = %d; //measurment light num ,0~7\n", wpDetectPara.lightNum );
1711 fprintf(fp, "awbHwConfig->windowSet[0] = %d;//crop h_offs mod 2 == 0\n", wpDetectPara.windowSet[0] );
1712 fprintf(fp, "awbHwConfig->windowSet[1] = %d;//crop v_offs mod 2 == 0\n", wpDetectPara.windowSet[1] );
1713 fprintf(fp, "awbHwConfig->windowSet[2] = %d;//crop h_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[2] );
1714 fprintf(fp, "awbHwConfig->windowSet[3] = %d;//crop v_size,8x8:mod 8==0,4x4:mod 4==0\n", wpDetectPara.windowSet[3] );
1715
1716 /*if (wpDetectPara.windowSet[2]>2560||wpDetectPara.windowSet[3]>2560)
1717 Ds_rate = 8;*/
1718 int tmp;
1719 switch (wpDetectPara.dsMode)
1720 {
1721 case RK_AIQ_AWB_DS_4X4:
1722 tmp = 0;
1723 break;
1724 default:
1725 tmp = 1;
1726 }
1727 fprintf(fp, "awbHwConfig->dsMode = (rk_aiq_down_scale_mode_t)%d;//downscale,1:8x8,0:4x4\n", tmp );
1728 fprintf(fp, "awbHwConfig->maxR = %d;\n", wpDetectPara.maxR );
1729 fprintf(fp, "awbHwConfig->maxG = %d;\n", wpDetectPara.maxG );
1730 fprintf(fp, "awbHwConfig->maxB = %d;\n", wpDetectPara.maxB );
1731 fprintf(fp, "awbHwConfig->maxY = %d;\n", wpDetectPara.maxY );
1732 fprintf(fp, "awbHwConfig->minR = %d;\n", wpDetectPara.minR );
1733 fprintf(fp, "awbHwConfig->minG = %d;\n", wpDetectPara.minG );
1734 fprintf(fp, "awbHwConfig->minB = %d;\n", wpDetectPara.minB );
1735 fprintf(fp, "awbHwConfig->minY = %d;\n", wpDetectPara.minY );
1736 fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[0] = %d;//uv detect white point region vertex and inverse slope\n", wpDetectPara.uvRange_param[0].pu_region[0]);
1737 fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[0]);
1738 fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[1]);
1739 fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[1]);
1740 fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[2]);
1741 fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[2]);
1742 fprintf(fp, "awbHwConfig->uvRange_param[0].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[0].pu_region[3]);
1743 fprintf(fp, "awbHwConfig->uvRange_param[0].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[0].pv_region[3]);
1744 fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[0]);
1745 fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[1]);
1746 fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[2]);
1747 fprintf(fp, "awbHwConfig->uvRange_param[0].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[0].slope_inv[3]);
1748 fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[0]);
1749 fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[0]);
1750 fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[1]);
1751 fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[1]);
1752 fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[2]);
1753 fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[2]);
1754 fprintf(fp, "awbHwConfig->uvRange_param[1].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[1].pu_region[3]);
1755 fprintf(fp, "awbHwConfig->uvRange_param[1].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[1].pv_region[3]);
1756 fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[0]);
1757 fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[1]);
1758 fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[2]);
1759 fprintf(fp, "awbHwConfig->uvRange_param[1].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[1].slope_inv[3]);
1760 fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[0]);
1761 fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[0]);
1762 fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[1]);
1763 fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[1]);
1764 fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[2]);
1765 fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[2]);
1766 fprintf(fp, "awbHwConfig->uvRange_param[2].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[2].pu_region[3]);
1767 fprintf(fp, "awbHwConfig->uvRange_param[2].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[2].pv_region[3]);
1768 fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[0]);
1769 fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[1]);
1770 fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[2]);
1771 fprintf(fp, "awbHwConfig->uvRange_param[2].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[2].slope_inv[3]);
1772 fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[0]);
1773 fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[0]);
1774 fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[1]);
1775 fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[1]);
1776 fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[2]);
1777 fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[2]);
1778 fprintf(fp, "awbHwConfig->uvRange_param[3].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[3].pu_region[3]);
1779 fprintf(fp, "awbHwConfig->uvRange_param[3].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[3].pv_region[3]);
1780 fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[0]);
1781 fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[1]);
1782 fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[2]);
1783 fprintf(fp, "awbHwConfig->uvRange_param[3].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[3].slope_inv[3]);
1784 fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[0]);
1785 fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[0]);
1786 fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[1]);
1787 fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[1]);
1788 fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[2]);
1789 fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[2]);
1790 fprintf(fp, "awbHwConfig->uvRange_param[4].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[4].pu_region[3]);
1791 fprintf(fp, "awbHwConfig->uvRange_param[4].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[4].pv_region[3]);
1792 fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[0]);
1793 fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[1]);
1794 fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[2]);
1795 fprintf(fp, "awbHwConfig->uvRange_param[4].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[4].slope_inv[3]);
1796 fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[0]);
1797 fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[0]);
1798 fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[1]);
1799 fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[1]);
1800 fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[2]);
1801 fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[2]);
1802 fprintf(fp, "awbHwConfig->uvRange_param[5].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[5].pu_region[3]);
1803 fprintf(fp, "awbHwConfig->uvRange_param[5].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[5].pv_region[3]);
1804 fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[0]);
1805 fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[1]);
1806 fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[2]);
1807 fprintf(fp, "awbHwConfig->uvRange_param[5].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[5].slope_inv[3]);
1808 fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[0] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[0]);
1809 fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[0] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[0]);
1810 fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[1] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[1]);
1811 fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[1] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[1]);
1812 fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[2] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[2]);
1813 fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[2] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[2]);
1814 fprintf(fp, "awbHwConfig->uvRange_param[6].pu_region[3] = %d;\n", wpDetectPara.uvRange_param[6].pu_region[3]);
1815 fprintf(fp, "awbHwConfig->uvRange_param[6].pv_region[3] = %d;\n", wpDetectPara.uvRange_param[6].pv_region[3]);
1816 fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[0] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[0]);
1817 fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[1] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[1]);
1818 fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[2] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[2]);
1819 fprintf(fp, "awbHwConfig->uvRange_param[6].slope_inv[3] = %d;\n", wpDetectPara.uvRange_param[6].slope_inv[3]);
1820
1821 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[0] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[0]);
1822 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[1] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[1]);
1823 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[2] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[2]);
1824 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[3] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[3]);
1825 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[4] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[4]);
1826 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[5] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[5]);
1827 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[6] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[6]);
1828 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[7] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[7]);
1829 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[8] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[8]);
1830 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[9] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[9]);
1831 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[10] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[10]);
1832 fprintf(fp, "awbHwConfig->icrgb2RYuv_matrix[11] = %d;\n", wpDetectPara.icrgb2RYuv_matrix[11]);
1833
1834 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[0]);
1835 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[1]);
1836 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[2]);
1837 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[3]);
1838 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[4]);
1839 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcurve_u[5]);
1840 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[0]);
1841 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[1]);
1842 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[2]);
1843 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[3]);
1844 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[4]);
1845 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].thcure_th[5]);
1846 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[0]);
1847 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[1]);
1848 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].lineP1[2]);
1849 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[0]);
1850 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[1]);
1851 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].vP1P2[2]);
1852 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[0].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[0].disP1P2);
1853
1854 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[0]);
1855 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[1]);
1856 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[2]);
1857 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[3]);
1858 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[4]);
1859 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcurve_u[5]);
1860 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[0]);
1861 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[1]);
1862 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[2]);
1863 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[3]);
1864 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[4]);
1865 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].thcure_th[5]);
1866 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[0]);
1867 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[1]);
1868 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].lineP1[2]);
1869 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[0]);
1870 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[1]);
1871 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].vP1P2[2]);
1872 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[1].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[1].disP1P2);
1873
1874 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[0]);
1875 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[1]);
1876 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[2]);
1877 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[3]);
1878 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[4]);
1879 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcurve_u[5]);
1880 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[0]);
1881 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[1]);
1882 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[2]);
1883 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[3]);
1884 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[4]);
1885 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].thcure_th[5]);
1886 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[0]);
1887 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[1]);
1888 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].lineP1[2]);
1889 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[0]);
1890 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[1]);
1891 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].vP1P2[2]);
1892 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[2].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[2].disP1P2);
1893
1894 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[0]);
1895 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[1]);
1896 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[2]);
1897 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[3]);
1898 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[4]);
1899 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcurve_u[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcurve_u[5]);
1900 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[0]);
1901 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[1]);
1902 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[2]);
1903 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[3] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[3]);
1904 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[4] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[4]);
1905 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].thcure_th[5] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].thcure_th[5]);
1906 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[0]);
1907 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[1]);
1908 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].lineP1[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].lineP1[2]);
1909 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[0] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[0]);
1910 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[1] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[1]);
1911 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].vP1P2[2] = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].vP1P2[2]);
1912 fprintf(fp, "awbHwConfig->ic3Dyuv2Range_param[3].disP1P2 = %d;\n", wpDetectPara.ic3Dyuv2Range_param[3].disP1P2);
1913 fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[0] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[0] ); //rgb2xy parpmeter
1914 fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[1] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[1] ); //rgb2xy parpmeter
1915 fprintf(fp, "awbHwConfig->rgb2xy_param.pseudoLuminanceWeight[2] = %d;\n", wpDetectPara.rgb2xy_param.pseudoLuminanceWeight[2] ); //rgb2xy parpmeter
1916 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[0] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[0] ); //rgb2xy parpmeter
1917 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[1] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[1] ); //rgb2xy parpmeter
1918 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[2] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[2] ); //rgb2xy parpmeter
1919 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[3] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[3] ); //rgb2xy parpmeter
1920 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[4] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[4] ); //rgb2xy parpmeter
1921 fprintf(fp, "awbHwConfig->rgb2xy_param.rotationMat[5] = %d;\n", wpDetectPara.rgb2xy_param.rotationMat[5] ); //rgb2xy parpmeter
1922 fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[0] ); //xy detect xy region
1923 fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeX[1] ); //xy detect xy region
1924 fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[0] ); //xy detect xy region
1925 fprintf(fp, "awbHwConfig->xyRange_param[0].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[0].NorrangeY[1] ); //xy detect xy region
1926 fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[0].SperangeX[0] ); //xy detect xy region
1927 fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[0].SperangeX[1] ); //xy detect xy region
1928 fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[0].SperangeY[0] ); //xy detect xy region
1929 fprintf(fp, "awbHwConfig->xyRange_param[0].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[0].SperangeY[1] ); //xy detect xy region
1930 fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[0] );
1931 fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeX[1] );
1932 fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[0] );
1933 fprintf(fp, "awbHwConfig->xyRange_param[1].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[1].NorrangeY[1] );
1934 fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[1].SperangeX[0] );
1935 fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[1].SperangeX[1] );
1936 fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[1].SperangeY[0] );
1937 fprintf(fp, "awbHwConfig->xyRange_param[1].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[1].SperangeY[1] );
1938 fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[0] );
1939 fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeX[1] );
1940 fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[0] );
1941 fprintf(fp, "awbHwConfig->xyRange_param[2].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[2].NorrangeY[1] );
1942 fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[2].SperangeX[0] );
1943 fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[2].SperangeX[1] );
1944 fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[2].SperangeY[0] );
1945 fprintf(fp, "awbHwConfig->xyRange_param[2].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[2].SperangeY[1] );
1946 fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[0] );
1947 fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeX[1] );
1948 fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[0] );
1949 fprintf(fp, "awbHwConfig->xyRange_param[3].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[3].NorrangeY[1] );
1950 fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[3].SperangeX[0] );
1951 fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[3].SperangeX[1] );
1952 fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[3].SperangeY[0] );
1953 fprintf(fp, "awbHwConfig->xyRange_param[3].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[3].SperangeY[1] );
1954 fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[0] );
1955 fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeX[1] );
1956 fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[0] );
1957 fprintf(fp, "awbHwConfig->xyRange_param[4].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[4].NorrangeY[1] );
1958 fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[4].SperangeX[0] );
1959 fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[4].SperangeX[1] );
1960 fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[4].SperangeY[0] );
1961 fprintf(fp, "awbHwConfig->xyRange_param[4].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[4].SperangeY[1] );
1962 fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[0] );
1963 fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeX[1] );
1964 fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[0] );
1965 fprintf(fp, "awbHwConfig->xyRange_param[5].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[5].NorrangeY[1] );
1966 fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[5].SperangeX[0] );
1967 fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[5].SperangeX[1] );
1968 fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[5].SperangeY[0] );
1969 fprintf(fp, "awbHwConfig->xyRange_param[5].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[5].SperangeY[1] );
1970 fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[0] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[0] );
1971 fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeX[1] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeX[1] );
1972 fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[0] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[0] );
1973 fprintf(fp, "awbHwConfig->xyRange_param[6].NorrangeY[1] = %d;\n", wpDetectPara.xyRange_param[6].NorrangeY[1] );
1974 fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[0] = %d;\n", wpDetectPara.xyRange_param[6].SperangeX[0] );
1975 fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeX[1] = %d;\n", wpDetectPara.xyRange_param[6].SperangeX[1] );
1976 fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[0] = %d;\n", wpDetectPara.xyRange_param[6].SperangeY[0] );
1977 fprintf(fp, "awbHwConfig->xyRange_param[6].SperangeY[1] = %d;\n", wpDetectPara.xyRange_param[6].SperangeY[1] );
1978 fprintf(fp, "awbHwConfig->pre_wbgain_inv_r = %d;\n", wpDetectPara.pre_wbgain_inv_r);
1979 fprintf(fp, "awbHwConfig->pre_wbgain_inv_g = %d;\n", wpDetectPara.pre_wbgain_inv_g);
1980 fprintf(fp, "awbHwConfig->pre_wbgain_inv_b = %d;\n", wpDetectPara.pre_wbgain_inv_b);
1981 //add new
1982 #if defined(ISP_HW_V30)
1983 fprintf(fp, "awbHwConfig->multiwindow_en = %d;\n", wpDetectPara.multiwindow_en); // multiwindow auto white balance measure enable
1984 fprintf(fp, "awbHwConfig->multiwindow[0][0] = %d;\n", wpDetectPara.multiwindow[0][0]); // multiwindow0 row start
1985 fprintf(fp, "awbHwConfig->multiwindow[0][1] = %d;\n", wpDetectPara.multiwindow[0][1]); // multiwindow0 column start
1986 fprintf(fp, "awbHwConfig->multiwindow[0][2] = %d;\n", wpDetectPara.multiwindow[0][2]); // multiwindow0 row size
1987 fprintf(fp, "awbHwConfig->multiwindow[0][3] = %d;\n", wpDetectPara.multiwindow[0][3]); // multiwindow0 column size
1988 fprintf(fp, "awbHwConfig->multiwindow[1][0] = %d;\n", wpDetectPara.multiwindow[1][0]); // multiwindow1 row start
1989 fprintf(fp, "awbHwConfig->multiwindow[1][1] = %d;\n", wpDetectPara.multiwindow[1][1]); // multiwindow1 column start
1990 fprintf(fp, "awbHwConfig->multiwindow[1][2] = %d;\n", wpDetectPara.multiwindow[1][2]); // multiwindow1 row size
1991 fprintf(fp, "awbHwConfig->multiwindow[1][3] = %d;\n", wpDetectPara.multiwindow[1][3]); // multiwindow1 column size
1992 fprintf(fp, "awbHwConfig->multiwindow[2][0] = %d;\n", wpDetectPara.multiwindow[2][0]); // multiwindow2 row start
1993 fprintf(fp, "awbHwConfig->multiwindow[2][1] = %d;\n", wpDetectPara.multiwindow[2][1]); // multiwindow2 column start
1994 fprintf(fp, "awbHwConfig->multiwindow[2][2] = %d;\n", wpDetectPara.multiwindow[2][2]); // multiwindow2 row size
1995 fprintf(fp, "awbHwConfig->multiwindow[2][3] = %d;\n", wpDetectPara.multiwindow[2][3]); // multiwindow2 column size
1996 fprintf(fp, "awbHwConfig->multiwindow[3][0] = %d;\n", wpDetectPara.multiwindow[3][0]); // multiwindow3 row start
1997 fprintf(fp, "awbHwConfig->multiwindow[3][1] = %d;\n", wpDetectPara.multiwindow[3][1]); // multiwindow3 column start
1998 fprintf(fp, "awbHwConfig->multiwindow[3][2] = %d;\n", wpDetectPara.multiwindow[3][2]); // multiwindow3 row size
1999 fprintf(fp, "awbHwConfig->multiwindow[3][3] = %d;\n", wpDetectPara.multiwindow[3][3]); // multiwindow3 column size
2000 #endif
2001 fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2002 fprintf(fp, "awbHwConfig->excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[0].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2003 fprintf(fp, "awbHwConfig->excludeWpRange[0].measureEnable = %d;\n", wpDetectPara.excludeWpRange[0].measureEnable); //white points region0 measure enable
2004 fprintf(fp, "awbHwConfig->excludeWpRange[0].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[0].domain ); //white points region0 exclusion in domain,1 uv domain,2 xy domain.
2005 fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[0] = %d;\n", wpDetectPara.excludeWpRange[0].xu[0] ); //left x/u boundary of white points exclusion region0
2006 fprintf(fp, "awbHwConfig->excludeWpRange[0].xu[1] = %d;\n", wpDetectPara.excludeWpRange[0].xu[1] ); //right x/u boundary of white points exclusion region0
2007 fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[0] = %d;\n", wpDetectPara.excludeWpRange[0].yv[0] ); //up y/v boundary of white points exclusion region0
2008 fprintf(fp, "awbHwConfig->excludeWpRange[0].yv[1] = %d;\n", wpDetectPara.excludeWpRange[0].yv[1] ); //down y/v boundary of white points exclusion region0
2009 fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2010 fprintf(fp, "awbHwConfig->excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[1].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2011 fprintf(fp, "awbHwConfig->excludeWpRange[1].measureEnable = %d;\n", wpDetectPara.excludeWpRange[1].measureEnable); //white points region1 measure enable
2012 fprintf(fp, "awbHwConfig->excludeWpRange[1].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[1].domain ); //white points region1 exclusion in domain,1 uv domain,2 xy domain.
2013 fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[0] = %d;\n", wpDetectPara.excludeWpRange[1].xu[0] ); //left x/u boundary of white points exclusion region1
2014 fprintf(fp, "awbHwConfig->excludeWpRange[1].xu[1] = %d;\n", wpDetectPara.excludeWpRange[1].xu[1] ); //right x/u boundary of white points exclusion region1
2015 fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[0] = %d;\n", wpDetectPara.excludeWpRange[1].yv[0] ); //up y/v boundary of white points exclusion region1
2016 fprintf(fp, "awbHwConfig->excludeWpRange[1].yv[1] = %d;\n", wpDetectPara.excludeWpRange[1].yv[1] ); //down y/v boundary of white points exclusion region1
2017 fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2018 fprintf(fp, "awbHwConfig->excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[2].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2019 fprintf(fp, "awbHwConfig->excludeWpRange[2].measureEnable = %d;\n", wpDetectPara.excludeWpRange[2].measureEnable); //white points region2 measure enable
2020 fprintf(fp, "awbHwConfig->excludeWpRange[2].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[2].domain ); //white points region2 exclusion in domain,1 uv domain,2 xy domain.
2021 fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[0] = %d;\n", wpDetectPara.excludeWpRange[2].xu[0] ); //left x/u boundary of white points exclusion region2
2022 fprintf(fp, "awbHwConfig->excludeWpRange[2].xu[1] = %d;\n", wpDetectPara.excludeWpRange[2].xu[1] ); //right x/u boundary of white points exclusion region2
2023 fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[0] = %d;\n", wpDetectPara.excludeWpRange[2].yv[0] ); //up y/v boundary of white points exclusion region2
2024 fprintf(fp, "awbHwConfig->excludeWpRange[2].yv[1] = %d;\n", wpDetectPara.excludeWpRange[2].yv[1] ); //down y/v boundary of white points exclusion region2
2025 fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2026 fprintf(fp, "awbHwConfig->excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[3].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2027 fprintf(fp, "awbHwConfig->excludeWpRange[3].measureEnable = %d;\n", wpDetectPara.excludeWpRange[3].measureEnable); //white points region3 measure enable
2028 fprintf(fp, "awbHwConfig->excludeWpRange[3].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[3].domain ); //white points region3 exclusion in domain,1 uv domain,2 xy domain.
2029 fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[0] = %d;\n", wpDetectPara.excludeWpRange[3].xu[0] ); //left x/u boundary of white points exclusion region3
2030 fprintf(fp, "awbHwConfig->excludeWpRange[3].xu[1] = %d;\n", wpDetectPara.excludeWpRange[3].xu[1] ); //right x/u boundary of white points exclusion region3
2031 fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[0] = %d;\n", wpDetectPara.excludeWpRange[3].yv[0] ); //up y/v boundary of white points exclusion region3
2032 fprintf(fp, "awbHwConfig->excludeWpRange[3].yv[1] = %d;\n", wpDetectPara.excludeWpRange[3].yv[1] ); //down y/v boundary of white points exclusion region3
2033 fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2034 fprintf(fp, "awbHwConfig->excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[4].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2035 fprintf(fp, "awbHwConfig->excludeWpRange[4].measureEnable = %d;\n", wpDetectPara.excludeWpRange[4].measureEnable); //white points region4 measure enable
2036 fprintf(fp, "awbHwConfig->excludeWpRange[4].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[4].domain ); //white points region4 exclusion in domain,1 uv domain,2 xy domain.
2037 fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[0] = %d;\n", wpDetectPara.excludeWpRange[4].xu[0] ); //left x/u boundary of white points exclusion region4
2038 fprintf(fp, "awbHwConfig->excludeWpRange[4].xu[1] = %d;\n", wpDetectPara.excludeWpRange[4].xu[1] ); //right x/u boundary of white points exclusion region4
2039 fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[0] = %d;\n", wpDetectPara.excludeWpRange[4].yv[0] ); //up y/v boundary of white points exclusion region4
2040 fprintf(fp, "awbHwConfig->excludeWpRange[4].yv[1] = %d;\n", wpDetectPara.excludeWpRange[4].yv[1] ); //down y/v boundary of white points exclusion region4
2041 fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2042 fprintf(fp, "awbHwConfig->excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[5].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2043 fprintf(fp, "awbHwConfig->excludeWpRange[5].measureEnable = %d;\n", wpDetectPara.excludeWpRange[5].measureEnable); //white points region5 measure enable
2044 fprintf(fp, "awbHwConfig->excludeWpRange[5].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[5].domain ); //white points region5 exclusion in domain,1 uv domain,2 xy domain.
2045 fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[0] = %d;\n", wpDetectPara.excludeWpRange[5].xu[0] ); //left x/u boundary of white points exclusion region5
2046 fprintf(fp, "awbHwConfig->excludeWpRange[5].xu[1] = %d;\n", wpDetectPara.excludeWpRange[5].xu[1] ); //right x/u boundary of white points exclusion region5
2047 fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[0] = %d;\n", wpDetectPara.excludeWpRange[5].yv[0] ); //up y/v boundary of white points exclusion region5
2048 fprintf(fp, "awbHwConfig->excludeWpRange[5].yv[1] = %d;\n", wpDetectPara.excludeWpRange[5].yv[1] ); //down y/v boundary of white points exclusion region5
2049 fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201] = %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_NORMAL_V201]); //white points region0 exclusion enable
2050 fprintf(fp, "awbHwConfig->excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201] = %d;\n", wpDetectPara.excludeWpRange[6].excludeEnable[RK_AIQ_AWB_XY_TYPE_BIG_V201]); //white points region0 exclusion enable
2051 fprintf(fp, "awbHwConfig->excludeWpRange[6].measureEnable = %d;\n", wpDetectPara.excludeWpRange[6].measureEnable); //white points region6 measure enable
2052 fprintf(fp, "awbHwConfig->excludeWpRange[6].domain = (rk_aiq_awb_exc_range_domain_t)%d;\n", wpDetectPara.excludeWpRange[6].domain ); //white points region6 exclusion in domain,1 uv domain,2 xy domain.
2053 fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[0] = %d;\n", wpDetectPara.excludeWpRange[6].xu[0] ); //left x/u boundary of white points exclusion region6
2054 fprintf(fp, "awbHwConfig->excludeWpRange[6].xu[1] = %d;\n", wpDetectPara.excludeWpRange[6].xu[1] ); //right x/u boundary of white points exclusion region6
2055 fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[0] = %d;\n", wpDetectPara.excludeWpRange[6].yv[0] ); //up y/v boundary of white points exclusion region6
2056 fprintf(fp, "awbHwConfig->excludeWpRange[6].yv[1] = %d;\n", wpDetectPara.excludeWpRange[6].yv[1] ); //down y/v boundary of white points exclusion region6
2057
2058 for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) {
2059 fprintf(fp, "awbHwConfig->wpDiffwei_y[%d] =%d;\n", i, wpDetectPara.wpDiffwei_y[i]);
2060 }
2061 for (int i = 0; i < RK_AIQ_AWBWP_WEIGHT_CURVE_DOT_NUM; i++) {
2062 fprintf(fp, "awbHwConfig->wpDiffwei_w[%d] =%d;\n", i, wpDetectPara.wpDiffwei_w[i]);
2063 }
2064 for (int i = 0; i < RK_AIQ_AWB_GRID_NUM_TOTAL; i++) {
2065 fprintf(fp, "awbHwConfig->blkWeight[%d] =%d;\n", i, wpDetectPara.blkWeight[i]);
2066 }
2067 fprintf(fp, "awbHwConfig->blk_rtdw_measure_en = %d;\n", wpDetectPara.blk_rtdw_measure_en );
2068 fclose(fp);
2069
2070 }
2071 }
2072
2073
2074 RKAIQ_END_DECLARE
2075