xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_acnr_module.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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