1 /*
2 * Copyright (c) 2019 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 "sample_comm.h"
19
sample_acnr_usage()20 static void sample_acnr_usage()
21 {
22 printf("Usage : \n");
23 printf("\t 0) ACNR: get acnr attri on sync mode.\n");
24 printf("\t 1) ACNR: get acnr strength on sync mode.\n");
25 printf("\t 2) ACNR: set acnr attri auto on sync mode.\n");
26 printf("\t 3) ACNR: set acnr attri manual on sync mode.\n");
27 printf("\t 4) ACNR: set acnr attri reg value on sync mode.\n");
28 printf("\t 5) ACNR: set acnr strength max value 1.0 on sync mode, only on auto mode has effect.\n");
29 printf("\t 6) ACNR: set acnr strength min value 0.0 on sync mode, only on auto mode has effect.\n");
30 printf("\t 7) ACNR: set acnr strength med value 0.5 on sync mode, only on auto mode has effect.\n");
31 printf("\t 8) ACNR: set acnr attri to default vaule on sync mode.\n");
32 printf("\t a) ACNR: get acnr attri on async mode.\n");
33 printf("\t b) ACNR: get acnr strength on async mode.\n");
34 printf("\t c) ACNR: set acnr attri auto on async mode.\n");
35 printf("\t d) ACNR: set acnr attri manual on async mode.\n");
36 printf("\t e) ACNR: set acnr attri reg value on async mode.\n");
37 printf("\t f) ACNR: set acnr strength max value 1.0 on async mode, only on auto mode has effect.\n");
38 printf("\t g) ACNR: set acnr strength min value 0.0 on async mode, only on auto mode has effect.\n");
39 printf("\t h) ACNR: set acnr strength med value 0.5 on async mode, only on auto mode has effect.\n");
40 printf("\t i) ACNR: set acnr attri to default vaule on async mode.\n");
41 printf("\t q) ACNR: press key q or Q to quit.\n");
42
43 }
44
sample_print_acnr_info(const void * arg)45 void sample_print_acnr_info(const void *arg)
46 {
47 printf ("enter ACNR modult test!\n");
48 }
49
sample_acnr_getAtrr_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)50 XCamReturn sample_acnr_getAtrr_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
51 {
52 XCamReturn ret = XCAM_RETURN_NO_ERROR;
53 rk_aiq_cnr_attrib_v2_t cnrV2_attr;
54 cnrV2_attr.sync.sync_mode = sync_mode;
55 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &cnrV2_attr);
56 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, cnrV2_attr.sync.done);
57 return ret;
58 }
59
sample_acnr_getAtrr_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)60 XCamReturn sample_acnr_getAtrr_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
61 {
62 XCamReturn ret = XCAM_RETURN_NO_ERROR;
63 rk_aiq_cnr_attrib_v30_t cnr_attr;
64 cnr_attr.sync.sync_mode = sync_mode;
65 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &cnr_attr);
66 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, cnr_attr.sync.done);
67 return ret;
68 }
69
70
sample_acnr_getStrength_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)71 XCamReturn sample_acnr_getStrength_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
72 {
73 XCamReturn ret = XCAM_RETURN_NO_ERROR;
74 rk_aiq_cnr_strength_v2_t cnrV2_Strenght;
75 cnrV2_Strenght.sync.sync_mode = sync_mode;
76 ret = rk_aiq_user_api2_acnrV2_GetStrength(ctx, &cnrV2_Strenght);
77 printf("get acnr v2 attri ret:%d strength:%f done:%d \n\n",
78 ret, cnrV2_Strenght.percent, cnrV2_Strenght.sync.done);
79 return ret;
80 }
81
sample_acnr_getStrength_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)82 XCamReturn sample_acnr_getStrength_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
83 {
84 XCamReturn ret = XCAM_RETURN_NO_ERROR;
85 rk_aiq_cnr_strength_v30_t cnr_Strength;
86 cnr_Strength.sync.sync_mode = sync_mode;
87 ret = rk_aiq_user_api2_acnrV30_GetStrength(ctx, &cnr_Strength);
88 printf("get acnr v2 attri ret:%d strength:%f done:%d \n\n",
89 ret, cnr_Strength.percent, cnr_Strength.sync.done);
90 return ret;
91 }
92
93
sample_acnr_setAuto_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)94 XCamReturn sample_acnr_setAuto_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
95 {
96 XCamReturn ret = XCAM_RETURN_NO_ERROR;
97 rk_aiq_cnr_attrib_v2_t cnrV2_attr;
98 cnrV2_attr.sync.sync_mode = sync_mode;
99 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &cnrV2_attr);
100 cnrV2_attr.sync.sync_mode = sync_mode;
101 cnrV2_attr.eMode = ACNRV2_OP_MODE_AUTO;
102 cnrV2_attr.stAuto.stParams.enable = 1;
103 for(int i = 0; i < RK_CNR_V2_MAX_ISO_NUM; i++) {
104 cnrV2_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
105
106 cnrV2_attr.stAuto.stParams.hf_bypass[i] = 0;
107 cnrV2_attr.stAuto.stParams.lf_bypass[i] = 0;
108 cnrV2_attr.stAuto.stParams.global_gain[i] = 1.0;
109 cnrV2_attr.stAuto.stParams.global_gain_alpha[i] = 0.0;
110 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][0] = 256.0;
111 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][1] = 256.0;
112 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][2] = 128.0;
113 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][3] = 85.0;
114 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][4] = 64.0;
115 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][5] = 43.0;
116 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][6] = 32.0;
117 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][7] = 21.0;
118 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][8] = 16.0;
119 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][9] = 8.0;
120 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][10] = 4.0;
121 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][11] = 1.0;
122 cnrV2_attr.stAuto.stParams.gain_adj_strength_ratio[i][12] = 1.0;
123
124 cnrV2_attr.stAuto.stParams.color_sat_adj[i] = 40.0;
125 cnrV2_attr.stAuto.stParams.color_sat_adj_alpha[i] = 0.8;
126 cnrV2_attr.stAuto.stParams.hf_spikes_reducion_strength[i] = 0.5;
127 cnrV2_attr.stAuto.stParams.hf_denoise_strength[i] = 16.0;
128 cnrV2_attr.stAuto.stParams.hf_color_sat[i] = 1.5;
129 cnrV2_attr.stAuto.stParams.hf_denoise_alpha[i] = 0.0;
130 cnrV2_attr.stAuto.stParams.hf_bf_wgt_clip[i] = 0;
131 cnrV2_attr.stAuto.stParams.thumb_spikes_reducion_strength[i] = 0.5;
132 cnrV2_attr.stAuto.stParams.thumb_denoise_strength[i] = 16.0;
133 cnrV2_attr.stAuto.stParams.thumb_color_sat[i] = 4.0;
134 cnrV2_attr.stAuto.stParams.lf_denoise_strength[i] = 16.0;
135 cnrV2_attr.stAuto.stParams.lf_color_sat[i] = 4.0;
136 cnrV2_attr.stAuto.stParams.lf_denoise_alpha[i] = 0.5;
137
138 cnrV2_attr.stAuto.stParams.kernel_5x5[0] = 1.0;
139 cnrV2_attr.stAuto.stParams.kernel_5x5[1] = 0.8825;
140 cnrV2_attr.stAuto.stParams.kernel_5x5[2] = 0.7788;
141 cnrV2_attr.stAuto.stParams.kernel_5x5[3] = 0.6065;
142 cnrV2_attr.stAuto.stParams.kernel_5x5[4] = 0.3679;
143
144 }
145
146 ret = rk_aiq_user_api2_acnrV2_SetAttrib(ctx, &cnrV2_attr);
147 printf("set acnr attri auto ret:%d \n\n", ret);
148
149 rk_aiq_cnr_attrib_v2_t get_cnrV2_attr;
150 get_cnrV2_attr.sync.sync_mode = sync_mode;
151 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &get_cnrV2_attr);
152 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnrV2_attr.sync.done);
153 return ret;
154 }
155
156
157
sample_acnr_setAuto_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)158 XCamReturn sample_acnr_setAuto_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
159 {
160 XCamReturn ret = XCAM_RETURN_NO_ERROR;
161 rk_aiq_cnr_attrib_v30_t cnr_attr;
162 cnr_attr.sync.sync_mode = sync_mode;
163 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &cnr_attr);
164 cnr_attr.sync.sync_mode = sync_mode;
165 cnr_attr.eMode = ACNRV30_OP_MODE_AUTO;
166
167
168 int enable;
169
170 int down_scale_x;
171 int down_scale_y;
172
173 float thumb_sigma;
174 float thumb_bf_ratio;
175
176 float chroma_filter_strength;
177 float chroma_filter_wgt_clip;
178 float anti_chroma_ghost;
179 float chroma_filter_uv_gain;
180 float wgt_slope;
181
182 float gaus_ratio;
183
184 float bf_sigmaR;
185 float bf_uvgain;
186 float bf_ratio;
187 float hbf_wgt_clip;
188 float bf_wgt0_sel;
189 float global_alpha;
190
191 float saturation_adj_offset;
192 float saturation_adj_ratio;
193
194 float global_gain;
195 float global_gain_alpha;
196 float local_gain_scale;
197 float global_gain_thumb;
198 float global_gain_alpha_thumb;
199
200 float gain_adj_strength_ratio[13];
201
202 float thumb_filter_wgt_coeff[4];
203 float gaus_coeff[6];
204
205
206 for(int i = 0; i < RK_CNR_V30_MAX_ISO_NUM; i++) {
207 cnr_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
208 cnr_attr.stAuto.stParams.CnrParamsISO[i].enable = 1;
209
210 cnr_attr.stAuto.stParams.CnrParamsISO[i].down_scale_x = 4;
211 cnr_attr.stAuto.stParams.CnrParamsISO[i].down_scale_y = 4;
212 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_sigma = 0.01;
213 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_bf_ratio = 1.0;
214
215 cnr_attr.stAuto.stParams.CnrParamsISO[i].chroma_filter_strength = 0.01;
216 cnr_attr.stAuto.stParams.CnrParamsISO[i].chroma_filter_wgt_clip = 0.9;
217 cnr_attr.stAuto.stParams.CnrParamsISO[i].anti_chroma_ghost = 0.0313;
218 cnr_attr.stAuto.stParams.CnrParamsISO[i].chroma_filter_uv_gain = 0.333;
219 cnr_attr.stAuto.stParams.CnrParamsISO[i].wgt_slope = 0.7;
220
221 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_ratio = 1;
222 cnr_attr.stAuto.stParams.CnrParamsISO[i].bf_sigmaR = 0.03;
223 cnr_attr.stAuto.stParams.CnrParamsISO[i].bf_uvgain = 3;
224 cnr_attr.stAuto.stParams.CnrParamsISO[i].bf_ratio = 0.0625;
225 cnr_attr.stAuto.stParams.CnrParamsISO[i].hbf_wgt_clip = 0.0078;
226 cnr_attr.stAuto.stParams.CnrParamsISO[i].bf_wgt0_sel = 0;
227 cnr_attr.stAuto.stParams.CnrParamsISO[i].global_alpha = 1.0;
228
229 cnr_attr.stAuto.stParams.CnrParamsISO[i].saturation_adj_offset = 0.0;
230 cnr_attr.stAuto.stParams.CnrParamsISO[i].saturation_adj_ratio = 0.0;
231
232 cnr_attr.stAuto.stParams.CnrParamsISO[i].global_gain = 1.0;
233 cnr_attr.stAuto.stParams.CnrParamsISO[i].global_gain_alpha = 0.0;
234 cnr_attr.stAuto.stParams.CnrParamsISO[i].local_gain_scale = 1.0;
235 cnr_attr.stAuto.stParams.CnrParamsISO[i].global_gain_thumb = 1.0;
236 cnr_attr.stAuto.stParams.CnrParamsISO[i].global_gain_alpha_thumb = 1.0;
237
238 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[0] = 1.0;
239 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[1] = 1.0;
240 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[2] = 1.0;
241 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[3] = 1.0;
242 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[4] = 1.0;
243 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[5] = 1.0;
244 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[6] = 1.0;
245 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[7] = 1.0;
246 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[8] = 1.0;
247 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[9] = 1.0;
248 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[10] = 1.0;
249 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[11] = 1.0;
250 cnr_attr.stAuto.stParams.CnrParamsISO[i].gain_adj_strength_ratio[12] = 1.0;
251
252
253 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_filter_wgt_coeff[0] = 1.0;
254 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_filter_wgt_coeff[1] = 1.0;
255 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_filter_wgt_coeff[2] = 1.0;
256 cnr_attr.stAuto.stParams.CnrParamsISO[i].thumb_filter_wgt_coeff[3] = 1.0;
257
258 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[0] = 48;
259 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[1] = 28;
260 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[2] = 6;
261 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[3] = 28;
262 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[4] = 17;
263 cnr_attr.stAuto.stParams.CnrParamsISO[i].gaus_coeff[5] = 4;
264
265 }
266
267 ret = rk_aiq_user_api2_acnrV30_SetAttrib(ctx, &cnr_attr);
268 printf("set acnr attri auto ret:%d \n\n", ret);
269
270 rk_aiq_cnr_attrib_v30_t get_cnr_attr;
271 get_cnr_attr.sync.sync_mode = sync_mode;
272 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &get_cnr_attr);
273 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnr_attr.sync.done);
274 return ret;
275 }
276
sample_acnr_setManual_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)277 XCamReturn sample_acnr_setManual_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
278 {
279 XCamReturn ret = XCAM_RETURN_NO_ERROR;
280 rk_aiq_cnr_attrib_v2_t cnrV2_attr;
281 cnrV2_attr.sync.sync_mode = sync_mode;
282 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &cnrV2_attr);
283 cnrV2_attr.sync.sync_mode = sync_mode;
284 cnrV2_attr.eMode = ACNRV2_OP_MODE_MANUAL;
285 cnrV2_attr.stManual.stSelect.enable = 1;
286
287 cnrV2_attr.stManual.stSelect.hf_bypass = 0;
288 cnrV2_attr.stManual.stSelect.lf_bypass = 0;
289 cnrV2_attr.stManual.stSelect.global_gain = 1.0;
290 cnrV2_attr.stManual.stSelect.global_gain_alpha = 0.0;
291 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[0] = 256.0;
292 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[1] = 256.0;
293 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[2] = 128.0;
294 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[3] = 85.0;
295 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[4] = 64.0;
296 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[5] = 43.0;
297 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[6] = 32.0;
298 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[7] = 21.0;
299 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[8] = 16.0;
300 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[9] = 8.0;
301 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[10] = 4.0;
302 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[11] = 1.0;
303 cnrV2_attr.stManual.stSelect.gain_adj_strength_ratio[12] = 1.0;
304
305 cnrV2_attr.stManual.stSelect.color_sat_adj = 40.0;
306 cnrV2_attr.stManual.stSelect.color_sat_adj_alpha = 0.8;
307 cnrV2_attr.stManual.stSelect.hf_spikes_reducion_strength = 0.5;
308 cnrV2_attr.stManual.stSelect.hf_denoise_strength = 16.0;
309 cnrV2_attr.stManual.stSelect.hf_color_sat = 1.5;
310 cnrV2_attr.stManual.stSelect.hf_denoise_alpha = 0.0;
311 cnrV2_attr.stManual.stSelect.hf_bf_wgt_clip = 0;
312 cnrV2_attr.stManual.stSelect.thumb_spikes_reducion_strength = 0.5;
313 cnrV2_attr.stManual.stSelect.thumb_denoise_strength = 16.0;
314 cnrV2_attr.stManual.stSelect.thumb_color_sat = 4.0;
315 cnrV2_attr.stManual.stSelect.lf_denoise_strength = 16.0;
316 cnrV2_attr.stManual.stSelect.lf_color_sat = 4.0;
317 cnrV2_attr.stManual.stSelect.lf_denoise_alpha = 0.5;
318
319 cnrV2_attr.stManual.stSelect.kernel_5x5[0] = 1.0;
320 cnrV2_attr.stManual.stSelect.kernel_5x5[1] = 0.8825;
321 cnrV2_attr.stManual.stSelect.kernel_5x5[2] = 0.7788;
322 cnrV2_attr.stManual.stSelect.kernel_5x5[3] = 0.6065;
323 cnrV2_attr.stManual.stSelect.kernel_5x5[4] = 0.3679;
324
325 ret = rk_aiq_user_api2_acnrV2_SetAttrib(ctx, &cnrV2_attr);
326 printf("set cnr v2 attri manual ret:%d \n\n", ret);
327
328 rk_aiq_cnr_attrib_v2_t get_cnrV2_attr;
329 get_cnrV2_attr.sync.sync_mode = sync_mode;
330 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &get_cnrV2_attr);
331 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnrV2_attr.sync.done);
332 return ret;
333 }
334
sample_acnr_setManual_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)335 XCamReturn sample_acnr_setManual_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
336 {
337 XCamReturn ret = XCAM_RETURN_NO_ERROR;
338 rk_aiq_cnr_attrib_v30_t cnr_attr;
339 cnr_attr.sync.sync_mode = sync_mode;
340 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &cnr_attr);
341 cnr_attr.sync.sync_mode = sync_mode;
342 cnr_attr.eMode = ACNRV30_OP_MODE_MANUAL;
343 cnr_attr.stManual.stSelect.enable = 1;
344 cnr_attr.stManual.stSelect.down_scale_x = 4;
345 cnr_attr.stManual.stSelect.down_scale_y = 4;
346
347 cnr_attr.stManual.stSelect.thumb_sigma = 0.01;
348 cnr_attr.stManual.stSelect.thumb_bf_ratio = 1.0;
349
350 cnr_attr.stManual.stSelect.chroma_filter_strength = 0.01;
351 cnr_attr.stManual.stSelect.chroma_filter_wgt_clip = 0.9;
352 cnr_attr.stManual.stSelect.anti_chroma_ghost = 0.0313;
353 cnr_attr.stManual.stSelect.chroma_filter_uv_gain = 0.333;
354 cnr_attr.stManual.stSelect.wgt_slope = 0.7;
355
356 cnr_attr.stManual.stSelect.gaus_ratio = 1;
357 cnr_attr.stManual.stSelect.bf_sigmaR = 0.03;
358 cnr_attr.stManual.stSelect.bf_uvgain = 3;
359 cnr_attr.stManual.stSelect.bf_ratio = 0.0625;
360 cnr_attr.stManual.stSelect.hbf_wgt_clip = 0.0078;
361 cnr_attr.stManual.stSelect.bf_wgt0_sel = 0;
362 cnr_attr.stManual.stSelect.global_alpha = 1.0;
363
364 cnr_attr.stManual.stSelect.saturation_adj_offset = 0.0;
365 cnr_attr.stManual.stSelect.saturation_adj_ratio = 0.0;
366
367 cnr_attr.stManual.stSelect.global_gain = 1.0;
368 cnr_attr.stManual.stSelect.global_gain_alpha = 0.0;
369 cnr_attr.stManual.stSelect.local_gain_scale = 1.0;
370 cnr_attr.stManual.stSelect.global_gain_thumb = 1.0;
371 cnr_attr.stManual.stSelect.global_gain_alpha_thumb = 1.0;
372
373
374 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[0] = 1.0;
375 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[1] = 1.0;
376 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[2] = 1.0;
377 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[3] = 1.0;
378 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[4] = 1.0;
379 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[5] = 1.0;
380 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[6] = 1.0;
381 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[7] = 1.0;
382 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[8] = 1.0;
383 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[9] = 1.0;
384 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[10] = 1.0;
385 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[11] = 1.0;
386 cnr_attr.stManual.stSelect.gain_adj_strength_ratio[12] = 1.0;
387
388 cnr_attr.stManual.stSelect.gaus_coeff[0] = 1;
389 cnr_attr.stManual.stSelect.gaus_coeff[1] = 1;
390 cnr_attr.stManual.stSelect.gaus_coeff[2] = 1;
391 cnr_attr.stManual.stSelect.gaus_coeff[3] = 1;
392
393 cnr_attr.stManual.stSelect.gaus_coeff[0] = 48;
394 cnr_attr.stManual.stSelect.gaus_coeff[1] = 28;
395 cnr_attr.stManual.stSelect.gaus_coeff[2] = 6;
396 cnr_attr.stManual.stSelect.gaus_coeff[3] = 28;
397 cnr_attr.stManual.stSelect.gaus_coeff[4] = 17;
398 cnr_attr.stManual.stSelect.gaus_coeff[5] = 4;
399
400 ret = rk_aiq_user_api2_acnrV30_SetAttrib(ctx, &cnr_attr);
401 printf("set cnr v2 attri manual ret:%d \n\n", ret);
402
403 rk_aiq_cnr_attrib_v30_t get_cnr_attr;
404 get_cnr_attr.sync.sync_mode = sync_mode;
405 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &get_cnr_attr);
406 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnr_attr.sync.done);
407 return ret;
408 }
409
410
411
sample_acnr_setReg_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)412 XCamReturn sample_acnr_setReg_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
413 {
414 XCamReturn ret = XCAM_RETURN_NO_ERROR;
415 rk_aiq_cnr_attrib_v2_t cnrV2_attr;
416 cnrV2_attr.sync.sync_mode = sync_mode;
417 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &cnrV2_attr);
418 cnrV2_attr.sync.sync_mode = sync_mode;
419 cnrV2_attr.eMode = ACNRV2_OP_MODE_REG_MANUAL;
420
421 //ISP_CNR_2800_CTR
422 cnrV2_attr.stManual.stFix.cnr_thumb_mix_cur_en = 0;
423 cnrV2_attr.stManual.stFix.cnr_lq_bila_bypass = 0;
424 cnrV2_attr.stManual.stFix.cnr_hq_bila_bypass = 0;
425 cnrV2_attr.stManual.stFix.cnr_exgain_bypass = 0;
426 cnrV2_attr.stManual.stFix.cnr_en_i = 1;
427
428 // ISP_CNR_2800_EXGAIN
429 cnrV2_attr.stManual.stFix.cnr_global_gain_alpha = 0x0;
430 cnrV2_attr.stManual.stFix.cnr_global_gain = 0x80;
431
432 // ISP_CNR_2800_GAIN_PARA
433 cnrV2_attr.stManual.stFix.cnr_gain_iso = 0x16;
434 cnrV2_attr.stManual.stFix.cnr_gain_offset = 0x0c;
435 cnrV2_attr.stManual.stFix.cnr_gain_1sigma = 0x3c;
436
437 // ISP_CNR_2800_GAIN_UV_PARA
438 cnrV2_attr.stManual.stFix.cnr_gain_uvgain1 = 0x40;
439 cnrV2_attr.stManual.stFix.cnr_gain_uvgain0 = 0x30;
440
441 // ISP_CNR_2800_LMED3
442 cnrV2_attr.stManual.stFix.cnr_lmed3_alpha = 0x03;
443
444 // ISP_CNR_2800_LBF5_GAIN
445 cnrV2_attr.stManual.stFix.cnr_lbf5_gain_y = 0x1;
446 cnrV2_attr.stManual.stFix.cnr_lbf5_gain_c = 0x02;
447
448 // ISP_CNR_2800_LBF5_WEITD0_4
449 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_d[0] = 0x80;
450 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_d[1] = 0x70;
451 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_d[2] = 0x63;
452 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_d[3] = 0x4d;
453 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_d[4] = 0x2f;
454
455 // ISP_CNR_2800_HMED3
456 cnrV2_attr.stManual.stFix.cnr_hmed3_alpha = 0x03;
457
458 // ISP_CNR_2800_HBF5
459 cnrV2_attr.stManual.stFix.cnr_hbf5_weit_src = 0x0f;
460 cnrV2_attr.stManual.stFix.cnr_hbf5_min_wgt = 0x00;
461 cnrV2_attr.stManual.stFix.cnr_hbf5_sigma = 0x0438;
462
463 // ISP_CNR_2800_LBF3
464 cnrV2_attr.stManual.stFix.cnr_lbf5_weit_src = 0xff;
465 cnrV2_attr.stManual.stFix.cnr_lbf3_sigma = 0x0438;
466
467 //ISP_CNR_2800_SIGMA0-SIGMA3
468 cnrV2_attr.stManual.stFix.cnr_sigma_y[0] = 0xff;
469 cnrV2_attr.stManual.stFix.cnr_sigma_y[1] = 0x80;
470 cnrV2_attr.stManual.stFix.cnr_sigma_y[2] = 0x55;
471 cnrV2_attr.stManual.stFix.cnr_sigma_y[3] = 0x40;
472 cnrV2_attr.stManual.stFix.cnr_sigma_y[4] = 0x2b;
473 cnrV2_attr.stManual.stFix.cnr_sigma_y[5] = 0x20;
474 cnrV2_attr.stManual.stFix.cnr_sigma_y[6] = 0x15;
475 cnrV2_attr.stManual.stFix.cnr_sigma_y[7] = 0x10;
476 cnrV2_attr.stManual.stFix.cnr_sigma_y[8] = 0x08;
477 cnrV2_attr.stManual.stFix.cnr_sigma_y[9] = 0x04;
478 cnrV2_attr.stManual.stFix.cnr_sigma_y[10] = 0x02;
479 cnrV2_attr.stManual.stFix.cnr_sigma_y[11] = 0x01;
480 cnrV2_attr.stManual.stFix.cnr_sigma_y[12] = 0x01;
481
482 ret = rk_aiq_user_api2_acnrV2_SetAttrib(ctx, &cnrV2_attr);
483 printf("set cnr v2 attri manual ret:%d \n\n", ret);
484
485 rk_aiq_cnr_attrib_v2_t get_cnrV2_attr;
486 get_cnrV2_attr.sync.sync_mode = sync_mode;
487 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &get_cnrV2_attr);
488 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnrV2_attr.sync.done);
489 return ret;
490 }
491
492
493
sample_acnr_setReg_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)494 XCamReturn sample_acnr_setReg_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
495 {
496 XCamReturn ret = XCAM_RETURN_NO_ERROR;
497 rk_aiq_cnr_attrib_v30_t cnr_attr;
498 cnr_attr.sync.sync_mode = sync_mode;
499 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &cnr_attr);
500 cnr_attr.sync.sync_mode = sync_mode;
501 cnr_attr.eMode = ACNRV30_OP_MODE_REG_MANUAL;
502
503
504 //CNR_CTRL
505 cnr_attr.stManual.stFix.bf3x3_wgt0_sel = 0;
506 cnr_attr.stManual.stFix.thumb_mode = 0;
507 cnr_attr.stManual.stFix.yuv422_mode = 0;
508 cnr_attr.stManual.stFix.exgain_bypass = 0;
509 cnr_attr.stManual.stFix.cnr_en = 1;
510
511 // CNR_EXGAIN
512 cnr_attr.stManual.stFix.global_gain_alpha = 0x0;
513 cnr_attr.stManual.stFix.gain_iso = 0x33;
514 cnr_attr.stManual.stFix.global_gain = 0x10;
515
516 // CNR_THUMB1
517 cnr_attr.stManual.stFix.thumb_sigma_c = 0x88;
518 cnr_attr.stManual.stFix.thumb_sigma_y = 0xa3;
519
520 // CNR_THUMB_BF_RATIO
521 cnr_attr.stManual.stFix.thumb_bf_ratio = 0x400;
522
523 // CNR_LBF_WEITD
524 cnr_attr.stManual.stFix.lbf1x7_weit_d[0] = 0x80;
525 cnr_attr.stManual.stFix.lbf1x7_weit_d[1] = 0x80;
526 cnr_attr.stManual.stFix.lbf1x7_weit_d[2] = 0x80;
527 cnr_attr.stManual.stFix.lbf1x7_weit_d[3] = 0x80;
528
529 // CNR_IIR_PARA1
530 cnr_attr.stManual.stFix.iir_uvgain = 0x05;
531 cnr_attr.stManual.stFix.iir_strength = 0xd9;
532 cnr_attr.stManual.stFix.exp_shift = 0x06;
533 cnr_attr.stManual.stFix.wgt_slope = 0x5a;
534
535 // CNR_IIR_PARA2
536 cnr_attr.stManual.stFix.chroma_ghost = 0x02;
537 cnr_attr.stManual.stFix.iir_uv_clip = 0x3a;
538
539 // CNR_GAUS_COE
540 cnr_attr.stManual.stFix.gaus_coe[0] = 0x30;
541 cnr_attr.stManual.stFix.gaus_coe[1] = 0x1c;
542 cnr_attr.stManual.stFix.gaus_coe[2] = 0x6;
543 cnr_attr.stManual.stFix.gaus_coe[3] = 0x1c;
544 cnr_attr.stManual.stFix.gaus_coe[4] = 0x11;
545 cnr_attr.stManual.stFix.gaus_coe[5] = 0x4;
546
547
548 // CNR_GAUS_RATIO
549 cnr_attr.stManual.stFix.gaus_ratio = 0x400;
550 cnr_attr.stManual.stFix.bf_wgt_clip = 0x01;
551 cnr_attr.stManual.stFix.global_alpha = 0x400;
552
553 // CNR_BF_PARA1
554 cnr_attr.stManual.stFix.uv_gain = 0x30;
555 cnr_attr.stManual.stFix.sigma_r = 0x6c;
556 cnr_attr.stManual.stFix.bf_ratio = 0x8;
557
558
559 // CNR_SIGMA
560 cnr_attr.stManual.stFix.adj_offset = 0x00;
561 cnr_attr.stManual.stFix.adj_ratio = 0x00;
562
563 //CNR_SIGMA-SIGMA3
564 cnr_attr.stManual.stFix.sigma_y[0] = 0xff;
565 cnr_attr.stManual.stFix.sigma_y[1] = 0xff;
566 cnr_attr.stManual.stFix.sigma_y[2] = 0xff;
567 cnr_attr.stManual.stFix.sigma_y[3] = 0xff;
568 cnr_attr.stManual.stFix.sigma_y[4] = 0xff;
569 cnr_attr.stManual.stFix.sigma_y[5] = 0xff;
570 cnr_attr.stManual.stFix.sigma_y[6] = 0xff;
571 cnr_attr.stManual.stFix.sigma_y[7] = 0xff;
572 cnr_attr.stManual.stFix.sigma_y[8] = 0xff;
573 cnr_attr.stManual.stFix.sigma_y[9] = 0xff;
574 cnr_attr.stManual.stFix.sigma_y[10] = 0xff;
575 cnr_attr.stManual.stFix.sigma_y[11] = 0xff;
576 cnr_attr.stManual.stFix.sigma_y[12] = 0xff;
577
578 // CNR_IIR_GLOBAL_GAIN
579 cnr_attr.stManual.stFix.iir_gain_alpha = 0x08;
580 cnr_attr.stManual.stFix.iir_global_gain = 0x40;
581
582 ret = rk_aiq_user_api2_acnrV30_SetAttrib(ctx, &cnr_attr);
583 printf("set cnr v2 attri manual ret:%d \n\n", ret);
584
585 rk_aiq_cnr_attrib_v30_t get_cnr_attr;
586 get_cnr_attr.sync.sync_mode = sync_mode;
587 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &get_cnr_attr);
588 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnr_attr.sync.done);
589 return ret;
590 }
591
sample_acnr_setStrength_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)592 XCamReturn sample_acnr_setStrength_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
593 {
594 XCamReturn ret = XCAM_RETURN_NO_ERROR;
595 rk_aiq_cnr_strength_v2_t cnrV2_Strenght;
596 cnrV2_Strenght.sync.sync_mode = sync_mode;
597 cnrV2_Strenght.percent = fStrength;
598 ret = rk_aiq_user_api2_acnrV2_SetStrength(ctx, &cnrV2_Strenght);
599 printf("Set acnr v2 set streangth ret:%d strength:%f \n\n", ret, cnrV2_Strenght.percent);
600
601 rk_aiq_cnr_strength_v2_t get_cnrV2_Strenght;
602 get_cnrV2_Strenght.sync.sync_mode = sync_mode;
603 ret = rk_aiq_user_api2_acnrV2_GetStrength(ctx, &get_cnrV2_Strenght);
604 printf("get acnr v2 attri ret:%d strength:%f done:%d \n\n",
605 ret, get_cnrV2_Strenght.percent, get_cnrV2_Strenght.sync.done);
606 return ret;
607 }
608
sample_acnr_setStrength_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)609 XCamReturn sample_acnr_setStrength_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
610 {
611 XCamReturn ret = XCAM_RETURN_NO_ERROR;
612 rk_aiq_cnr_strength_v30_t cnr_Strength;
613 cnr_Strength.sync.sync_mode = sync_mode;
614 cnr_Strength.percent = fStrength;
615 cnr_Strength.strength_enable = true;
616 ret = rk_aiq_user_api2_acnrV30_SetStrength(ctx, &cnr_Strength);
617 printf("Set acnr v30 set streangth ret:%d strength:%f \n\n", ret, cnr_Strength.percent);
618
619 rk_aiq_cnr_strength_v30_t get_cnr_Strength;
620 get_cnr_Strength.sync.sync_mode = sync_mode;
621 ret = rk_aiq_user_api2_acnrV30_GetStrength(ctx, &get_cnr_Strength);
622 printf("get acnr v30 attri ret:%d strength:%f done:%d \n\n",
623 ret, get_cnr_Strength.percent, get_cnr_Strength.sync.done);
624 return ret;
625 }
626
sample_acnr_setDefault_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_cnr_attrib_v2_t default_cnrV2_attr)627 XCamReturn sample_acnr_setDefault_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_cnr_attrib_v2_t default_cnrV2_attr)
628 {
629 XCamReturn ret = XCAM_RETURN_NO_ERROR;
630 default_cnrV2_attr.sync.sync_mode = sync_mode;
631 ret = rk_aiq_user_api2_acnrV2_SetAttrib(ctx, &default_cnrV2_attr);
632 printf("Set acnr v2 set default attri ret:%d \n\n", ret);
633
634 rk_aiq_cnr_attrib_v2_t get_cnrV2_attr;
635 get_cnrV2_attr.sync.sync_mode = sync_mode;
636 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &get_cnrV2_attr);
637 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnrV2_attr.sync.done);
638
639 return ret;
640 }
641
sample_acnr_setDefault_v30(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_cnr_attrib_v30_t & default_cnr_attr)642 XCamReturn sample_acnr_setDefault_v30(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_cnr_attrib_v30_t & default_cnr_attr)
643 {
644 XCamReturn ret = XCAM_RETURN_NO_ERROR;
645 default_cnr_attr.sync.sync_mode = sync_mode;
646 ret = rk_aiq_user_api2_acnrV30_SetAttrib(ctx, &default_cnr_attr);
647 printf("Set acnr v2 set default attri ret:%d \n\n", ret);
648
649 rk_aiq_cnr_attrib_v30_t get_cnr_attr;
650 get_cnr_attr.sync.sync_mode = sync_mode;
651 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &get_cnr_attr);
652 printf("get acnr v2 attri ret:%d done:%d\n\n", ret, get_cnr_attr.sync.done);
653
654 return ret;
655 }
656
657
658
sample_acnr_module(const void * arg)659 XCamReturn sample_acnr_module (const void *arg)
660 {
661 int key = -1;
662 CLEAR();
663 XCamReturn ret = XCAM_RETURN_NO_ERROR;
664 const demo_context_t *demo_ctx = (demo_context_t *)arg;
665 const rk_aiq_sys_ctx_t* ctx ;
666
667 if(demo_ctx->camGroup) {
668 ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
669 printf("##################group !!!!########################\n");
670 } else {
671 ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
672 printf("##################sigle !!!!########################\n");
673 }
674
675 if (ctx == nullptr) {
676 ERR ("%s, ctx is nullptr\n", __FUNCTION__);
677 return XCAM_RETURN_ERROR_PARAM;
678 }
679
680 rk_aiq_cnr_attrib_v2_t default_cnrV2_attr;
681 if (CHECK_ISP_HW_V30()) {
682 ret = rk_aiq_user_api2_acnrV2_GetAttrib(ctx, &default_cnrV2_attr);
683 printf("get acnr v2 default attri ret:%d \n\n", ret);
684 }
685
686 rk_aiq_cnr_attrib_v30_t default_cnrV30_attr;
687 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
688 ret = rk_aiq_user_api2_acnrV30_GetAttrib(ctx, &default_cnrV30_attr);
689 printf("get acnr v2 default attri ret:%d \n\n", ret);
690 }
691
692 do {
693 sample_acnr_usage ();
694
695 key = getchar ();
696 while (key == '\n' || key == '\r')
697 key = getchar ();
698 printf ("\n");
699
700 switch (key) {
701 case '0':
702 if (CHECK_ISP_HW_V30()) {
703 sample_acnr_getAtrr_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
704 }
705 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
706 sample_acnr_getAtrr_v30(ctx, RK_AIQ_UAPI_MODE_SYNC);
707 }
708 break;
709 case '1':
710 if (CHECK_ISP_HW_V30()) {
711 sample_acnr_getStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
712 }
713 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
714 sample_acnr_getStrength_v30(ctx, RK_AIQ_UAPI_MODE_SYNC);
715 }
716 break;
717 case '2':
718 if (CHECK_ISP_HW_V30()) {
719 sample_acnr_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
720 }
721 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
722 sample_acnr_setAuto_v30(ctx, RK_AIQ_UAPI_MODE_SYNC);
723 }
724 break;
725 case '3':
726 if (CHECK_ISP_HW_V30()) {
727 sample_acnr_setManual_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
728 }
729 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
730 sample_acnr_setManual_v30(ctx, RK_AIQ_UAPI_MODE_SYNC);
731 }
732 break;
733 case '4':
734 if (CHECK_ISP_HW_V30()) {
735 sample_acnr_setReg_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
736 }
737 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
738 sample_acnr_setReg_v30(ctx, RK_AIQ_UAPI_MODE_SYNC);
739 }
740 break;
741 case '5':
742 if (CHECK_ISP_HW_V30()) {
743 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
744 }
745 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
746 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
747 }
748 break;
749 case '6':
750 if (CHECK_ISP_HW_V30()) {
751 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
752 }
753 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
754 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
755 }
756 break;
757 case '7':
758 if (CHECK_ISP_HW_V30()) {
759 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
760 }
761 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
762 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
763 }
764 break;
765 case '8':
766 if (CHECK_ISP_HW_V30()) {
767 sample_acnr_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, default_cnrV2_attr);
768 }
769 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
770 sample_acnr_setDefault_v30(ctx, RK_AIQ_UAPI_MODE_SYNC, default_cnrV30_attr);
771 }
772 break;
773 case 'a':
774 if (CHECK_ISP_HW_V30()) {
775 sample_acnr_getAtrr_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
776 }
777 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
778 sample_acnr_getAtrr_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC);
779 }
780 break;
781 case 'b':
782 if (CHECK_ISP_HW_V30()) {
783 sample_acnr_getStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
784 }
785 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
786 sample_acnr_getStrength_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC);
787 }
788 break;
789 case 'c':
790 if (CHECK_ISP_HW_V30()) {
791 sample_acnr_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
792 }
793 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
794 sample_acnr_setAuto_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC);
795 }
796 break;
797 case 'd':
798 if (CHECK_ISP_HW_V30()) {
799 sample_acnr_setManual_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
800 }
801 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
802 sample_acnr_setManual_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC);
803 }
804 break;
805 case 'e':
806 if (CHECK_ISP_HW_V30()) {
807 sample_acnr_setReg_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
808 }
809 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
810 sample_acnr_setReg_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC);
811 }
812 break;
813 case 'f':
814 if (CHECK_ISP_HW_V30()) {
815 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
816 }
817 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
818 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
819 }
820 break;
821 case 'g':
822 if (CHECK_ISP_HW_V30()) {
823 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
824 }
825 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
826 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
827 }
828 break;
829 case 'h':
830 if (CHECK_ISP_HW_V30()) {
831 sample_acnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
832 }
833 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
834 sample_acnr_setStrength_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
835 }
836 break;
837 case 'i':
838 if (CHECK_ISP_HW_V30()) {
839 sample_acnr_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_cnrV2_attr);
840 }
841 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
842 sample_acnr_setDefault_v30(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_cnrV30_attr);
843 }
844 break;
845 default:
846 printf("not support test\n\n");
847 break;
848 }
849
850 } while (key != 'q' && key != 'Q');
851
852 return ret;
853 }
854
855