xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_aynr_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_aynr_usage()20 static void sample_aynr_usage()
21 {
22     printf("Usage : \n");
23     printf("\t 0) AYNR:         get aynr attri on sync mode.\n");
24     printf("\t 1) AYNR:         get aynr strength on sync mode.\n");
25     printf("\t 2) AYNR:         set aynr attri auto on sync mode.\n");
26     printf("\t 3) AYNR:         set aynr attri manual on sync mode.\n");
27     printf("\t 4) AYNR:         set aynr attri reg value on sync mode.\n");
28     printf("\t 5) AYNR:         set aynr strength max value 1.0 on sync mode, only on auto mode has effect.\n");
29     printf("\t 6) AYNR:         set aynr strength min value 0.0 on sync mode, only on auto mode has effect.\n");
30     printf("\t 7) AYNR:         set aynr strength med value 0.5 on sync mode, only on auto mode has effect.\n");
31     printf("\t 8) AYNR:         set aynr attri to default vaule on sync mode.\n");
32     printf("\t a) AYNR:         get aynr attri on async mode.\n");
33     printf("\t b) AYNR:         get aynr strength on async mode.\n");
34     printf("\t c) AYNR:         set aynr attri auto on async mode.\n");
35     printf("\t d) AYNR:         set aynr attri manual on async mode.\n");
36     printf("\t e) AYNR:         set aynr attri reg value on async mode.\n");
37     printf("\t f) AYNR:         set aynr strength max value 1.0 on async mode, only on auto mode has effect.\n");
38     printf("\t g) AYNR:         set aynr strength min value 0.0 on async mode, only on auto mode has effect.\n");
39     printf("\t h) AYNR:         set aynr strength med value 0.5 on async mode, only on auto mode has effect.\n");
40     printf("\t i) AYNR:         set aynr attri to default vaule on async mode.\n");
41     printf("\t q) AYNR:         press key q or Q to quit.\n");
42 
43 }
44 
sample_print_aynr_info(const void * arg)45 void sample_print_aynr_info(const void *arg)
46 {
47     printf ("enter AYNR modult test!\n");
48 }
49 
sample_ynr_getAttr_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)50 XCamReturn sample_ynr_getAttr_v3(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_ynr_attrib_v3_t ynrV3_attr;
54     ynrV3_attr.sync.sync_mode = sync_mode;
55     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &ynrV3_attr);
56     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, ynrV3_attr.sync.done);
57     return ret;
58 }
59 
sample_ynr_getAttr_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)60 XCamReturn sample_ynr_getAttr_v22(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_ynr_attrib_v22_t ynr_attr;
64     ynr_attr.sync.sync_mode = sync_mode;
65     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &ynr_attr);
66     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, ynr_attr.sync.done);
67     return ret;
68 }
69 
70 
sample_ynr_getStrength_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)71 XCamReturn sample_ynr_getStrength_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
72 {
73     XCamReturn ret = XCAM_RETURN_NO_ERROR;
74 
75     rk_aiq_ynr_strength_v3_t ynrV3_strength;
76     ynrV3_strength.sync.sync_mode = sync_mode;
77     ret = rk_aiq_user_api2_aynrV3_GetStrength(ctx, &ynrV3_strength);
78     printf("get aynr v3 attri ret:%d strength:%f done:%d\n\n",
79            ret, ynrV3_strength.percent, ynrV3_strength.sync.done);
80 
81     return ret;
82 }
83 
sample_ynr_getStrength_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)84 XCamReturn sample_ynr_getStrength_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
85 {
86     XCamReturn ret = XCAM_RETURN_NO_ERROR;
87 
88     rk_aiq_ynr_strength_v22_t ynr_strength;
89     ynr_strength.sync.sync_mode = sync_mode;
90     ret = rk_aiq_user_api2_aynrV22_GetStrength(ctx, &ynr_strength);
91     printf("get aynr v3 attri ret:%d strength:%f done:%d\n\n",
92            ret, ynr_strength.percent, ynr_strength.sync.done);
93 
94     return ret;
95 }
96 
sample_ynr_setAuto_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)97 XCamReturn sample_ynr_setAuto_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
98 {
99     XCamReturn ret = XCAM_RETURN_NO_ERROR;
100     rk_aiq_ynr_attrib_v3_t ynrV3_attr;
101     ynrV3_attr.sync.sync_mode = sync_mode;
102     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &ynrV3_attr);
103     ynrV3_attr.sync.sync_mode = sync_mode;
104     ynrV3_attr.eMode = AYNRV3_OP_MODE_AUTO;
105     ynrV3_attr.stAuto.stParams.enable = 1;
106     for(int i = 0; i < RK_YNR_V3_MAX_ISO_NUM; i++) {
107         ynrV3_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
108 
109         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[0] = 0x000;
110         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[1] = 0x040;
111         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[2] = 0x080;
112         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[3] = 0x0c0;
113         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[4] = 0x100;
114         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[5] = 0x140;
115         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[6] = 0x180;
116         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[7] = 0x1c0;
117         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[8] = 0x200;
118         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[9] = 0x240;
119         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[10] = 0x280;
120         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[11] = 0x2c0;
121         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[12] = 0x300;
122         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[13] = 0x340;
123         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[14] = 0x380;
124         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[15] = 0x3c0;
125         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[16] = 0x400;
126 
127         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[0] = 16;
128         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[1] = 20;
129         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[2] = 24;
130         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[3] = 30;
131         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[4] = 40;
132         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[5] = 60;
133         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[6] = 40;
134         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[7] = 38;
135         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[8] = 36;
136         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[9] = 32;
137         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[10] = 30;
138         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[11] = 28;
139         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[12] = 24;
140         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[13] = 24;
141         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[14] = 20;
142         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[15] = 20;
143         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].sigma[16] = 16;
144 
145         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lci = 1.0;
146         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hci = 1.0;
147 
148         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_bft3x3_bypass = 0;
149         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_lbft5x5_bypass = 0;
150         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_lgft3x3_bypass = 0;
151         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_flt1x1_bypass = 0;
152         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_sft5x5_bypass = 0;
153 
154         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_global_gain_alpha = 0.0;
155         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_global_gain = 1.0;
156         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_adjust_thresh = 0.3;
157         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].ynr_adjust_scale = 1.0;
158 
159         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_bf1 = 0.5;
160         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_bf2 = 0.5;
161         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_thred_adj = 0.5;
162         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_peak_supress = 0.5;
163         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_edge_adj_thresh = 7;
164         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_lbf_weight_thresh = 0.25;
165         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_center_weight = 0.5;
166         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_dist_adj = 0.8;
167         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_weight = 0.5;
168         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_filt1_strength = 0.7;
169         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_filt2_strength = 0.85;
170         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].low_bi_weight = 0.3;
171 
172         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].base_filter_weight1 = 0.28;
173         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].base_filter_weight1 = 0.46;
174         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].base_filter_weight1 = 0.26;
175 
176         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_thred_adj = 0.5;
177         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_weight = 0.78;
178         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_min_adj = 0.9;
179         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_edge_thed = 100;
180 
181         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[0] = 1.0;
182         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[1] = 1.0;
183         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[2] = 1.0;
184         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[3] = 1.0;
185         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[4] = 0.5;
186         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[5] = 0.5;
187         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[6] = 0.5;
188         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].high_direction_weight[7] = 0.5;
189 
190         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[0] = 0;
191         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[1] = 32;
192         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[2] = 64;
193         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[3] = 128;
194         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[4] = 192;
195         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[5] = 256;
196 
197         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[0] = 0;
198         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[1] = 32;
199         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[2] = 64;
200         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[3] = 128;
201         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[4] = 192;
202         ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[5] = 256;
203 
204         for(int j = 0; j < 6; j++) {
205             ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].lo_ratio[j] = 1.0;
206             ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].hi_ratio[j] = 1.0;
207         }
208 
209         for(int j = 0; j < 17; j++) {
210             ynrV3_attr.stAuto.stParams.arYnrParamsISO[i].rnr_strength[j] = 1.0;
211         }
212     }
213 
214     ret = rk_aiq_user_api2_aynrV3_SetAttrib(ctx, &ynrV3_attr);
215     printf("set aynr attri auto ret:%d \n\n", ret);
216 
217     rk_aiq_ynr_attrib_v3_t get_ynrV3_attr;
218     get_ynrV3_attr.sync.sync_mode = sync_mode;
219     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &get_ynrV3_attr);
220     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, get_ynrV3_attr.sync.done);
221     return ret;
222 }
223 
sample_ynr_setAuto_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)224 XCamReturn sample_ynr_setAuto_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
225 {
226     XCamReturn ret = XCAM_RETURN_NO_ERROR;
227     rk_aiq_ynr_attrib_v22_t ynr_attr;
228     ynr_attr.sync.sync_mode = sync_mode;
229     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &ynr_attr);
230     ynr_attr.sync.sync_mode = sync_mode;
231     ynr_attr.eMode = AYNRV22_OP_MODE_AUTO;
232     ynr_attr.stAuto.stParams.enable = 1;
233 
234     for(int i = 0; i < RK_YNR_V22_MAX_ISO_NUM; i++) {
235         ynr_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
236 
237         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[0] = 0x000;
238         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[1] = 0x040;
239         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[2] = 0x080;
240         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[3] = 0x0c0;
241         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[4] = 0x100;
242         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[5] = 0x140;
243         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[6] = 0x180;
244         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[7] = 0x1c0;
245         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[8] = 0x200;
246         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[9] = 0x240;
247         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[10] = 0x280;
248         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[11] = 0x2c0;
249         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[12] = 0x300;
250         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[13] = 0x340;
251         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[14] = 0x380;
252         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[15] = 0x3c0;
253         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lumaPoint[16] = 0x400;
254 
255         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[0] = 16;
256         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[1] = 20;
257         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[2] = 24;
258         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[3] = 30;
259         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[4] = 40;
260         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[5] = 60;
261         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[6] = 40;
262         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[7] = 38;
263         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[8] = 36;
264         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[9] = 32;
265         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[10] = 30;
266         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[11] = 28;
267         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[12] = 24;
268         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[13] = 24;
269         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[14] = 20;
270         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[15] = 20;
271         ynr_attr.stAuto.stParams.arYnrParamsISO[i].sigma[16] = 16;
272 
273         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lci = 1.0;
274         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hci = 1.0;
275 
276         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_bft3x3_bypass = 0;
277         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_lbft5x5_bypass = 0;
278         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_lgft3x3_bypass = 0;
279         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_flt1x1_bypass = 0;
280         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_nlm11x11_bypass = 0;
281 
282         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_global_gain_alpha = 0.0;
283         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_global_gain = 1.0;
284         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_adjust_thresh = 0.3;
285         ynr_attr.stAuto.stParams.arYnrParamsISO[i].ynr_adjust_scale = 1.0;
286 
287         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_bf1 = 0.5;
288         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_bf2 = 0.5;
289         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_thred_adj = 0.5;
290         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_peak_supress = 0.5;
291         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_edge_adj_thresh = 7;
292         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_lbf_weight_thresh = 0.25;
293         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_center_weight = 0.5;
294         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_dist_adj = 0.8;
295         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_weight = 0.5;
296         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_filt1_strength = 0.7;
297         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_filt2_strength = 0.85;
298         ynr_attr.stAuto.stParams.arYnrParamsISO[i].low_bi_weight = 0.3;
299 
300         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_weight_offset = 0.0498;
301         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_center_weight = 0.8;
302         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_bf_scale = 1.0;
303         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_min_sigma = 0.0068;
304         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_nr_weight = 0.5;
305         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_gain_alpha = 1;
306 
307         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff1_1 = 7;
308         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff1_2 = 6;
309         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff1_3 = 3;
310         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff2_1 = 6;
311         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff2_2 = 5;
312         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_filter_coeff2_3 = 3;
313 
314         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[0] = 0;
315         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[1] = 32;
316         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[2] = 64;
317         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[3] = 128;
318         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[4] = 192;
319         ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_lumaPoint[5] = 256;
320 
321         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[0] = 0;
322         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[1] = 32;
323         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[2] = 64;
324         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[3] = 128;
325         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[4] = 192;
326         ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_lumaPoint[5] = 256;
327 
328         for(int j = 0; j < 6; j++) {
329             ynr_attr.stAuto.stParams.arYnrParamsISO[i].lo_ratio[j] = 1.0;
330             ynr_attr.stAuto.stParams.arYnrParamsISO[i].hi_ratio[j] = 1.0;
331         }
332 
333         for(int j = 0; j < 17; j++) {
334             ynr_attr.stAuto.stParams.arYnrParamsISO[i].rnr_strength[j] = 1.0;
335         }
336     }
337 
338     ret = rk_aiq_user_api2_aynrV22_SetAttrib(ctx, &ynr_attr);
339     printf("set aynr attri auto ret:%d \n\n", ret);
340 
341     rk_aiq_ynr_attrib_v22_t get_ynr_attr;
342     get_ynr_attr.sync.sync_mode = sync_mode;
343     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &get_ynr_attr);
344     printf("get aynr attri ret:%d done:%d \n\n", ret, get_ynr_attr.sync.done);
345     return ret;
346 }
347 
348 
sample_ynr_setManual_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)349 XCamReturn sample_ynr_setManual_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
350 {
351     XCamReturn ret = XCAM_RETURN_NO_ERROR;
352 
353     rk_aiq_ynr_attrib_v3_t ynrV3_attr;
354     ynrV3_attr.sync.sync_mode = sync_mode;
355     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &ynrV3_attr);
356     ynrV3_attr.sync.sync_mode = sync_mode;
357     ynrV3_attr.eMode = AYNRV3_OP_MODE_MANUAL;
358     ynrV3_attr.stManual.stSelect.enable = 1;
359 
360     ynrV3_attr.stManual.stSelect.lumaPoint[0] = 0x000;
361     ynrV3_attr.stManual.stSelect.lumaPoint[1] = 0x040;
362     ynrV3_attr.stManual.stSelect.lumaPoint[2] = 0x080;
363     ynrV3_attr.stManual.stSelect.lumaPoint[3] = 0x0c0;
364     ynrV3_attr.stManual.stSelect.lumaPoint[4] = 0x100;
365     ynrV3_attr.stManual.stSelect.lumaPoint[5] = 0x140;
366     ynrV3_attr.stManual.stSelect.lumaPoint[6] = 0x180;
367     ynrV3_attr.stManual.stSelect.lumaPoint[7] = 0x1c0;
368     ynrV3_attr.stManual.stSelect.lumaPoint[8] = 0x200;
369     ynrV3_attr.stManual.stSelect.lumaPoint[9] = 0x240;
370     ynrV3_attr.stManual.stSelect.lumaPoint[10] = 0x280;
371     ynrV3_attr.stManual.stSelect.lumaPoint[11] = 0x2c0;
372     ynrV3_attr.stManual.stSelect.lumaPoint[12] = 0x300;
373     ynrV3_attr.stManual.stSelect.lumaPoint[13] = 0x340;
374     ynrV3_attr.stManual.stSelect.lumaPoint[14] = 0x380;
375     ynrV3_attr.stManual.stSelect.lumaPoint[15] = 0x3c0;
376     ynrV3_attr.stManual.stSelect.lumaPoint[16] = 0x400;
377 
378     ynrV3_attr.stManual.stSelect.sigma[0] = 16;
379     ynrV3_attr.stManual.stSelect.sigma[1] = 20;
380     ynrV3_attr.stManual.stSelect.sigma[2] = 24;
381     ynrV3_attr.stManual.stSelect.sigma[3] = 30;
382     ynrV3_attr.stManual.stSelect.sigma[4] = 40;
383     ynrV3_attr.stManual.stSelect.sigma[5] = 60;
384     ynrV3_attr.stManual.stSelect.sigma[6] = 40;
385     ynrV3_attr.stManual.stSelect.sigma[7] = 38;
386     ynrV3_attr.stManual.stSelect.sigma[8] = 36;
387     ynrV3_attr.stManual.stSelect.sigma[9] = 32;
388     ynrV3_attr.stManual.stSelect.sigma[10] = 30;
389     ynrV3_attr.stManual.stSelect.sigma[11] = 28;
390     ynrV3_attr.stManual.stSelect.sigma[12] = 24;
391     ynrV3_attr.stManual.stSelect.sigma[13] = 24;
392     ynrV3_attr.stManual.stSelect.sigma[14] = 20;
393     ynrV3_attr.stManual.stSelect.sigma[15] = 20;
394     ynrV3_attr.stManual.stSelect.sigma[16] = 16;
395 
396     ynrV3_attr.stManual.stSelect.lci = 1.0;
397     ynrV3_attr.stManual.stSelect.hci = 1.0;
398 
399     ynrV3_attr.stManual.stSelect.ynr_bft3x3_bypass = 0;
400     ynrV3_attr.stManual.stSelect.ynr_lbft5x5_bypass = 0;
401     ynrV3_attr.stManual.stSelect.ynr_lgft3x3_bypass = 0;
402     ynrV3_attr.stManual.stSelect.ynr_flt1x1_bypass = 0;
403     ynrV3_attr.stManual.stSelect.ynr_sft5x5_bypass = 0;
404 
405     ynrV3_attr.stManual.stSelect.ynr_global_gain_alpha = 0.0;
406     ynrV3_attr.stManual.stSelect.ynr_global_gain = 1.0;
407     ynrV3_attr.stManual.stSelect.ynr_adjust_thresh = 0.3;
408     ynrV3_attr.stManual.stSelect.ynr_adjust_scale = 1.0;
409 
410     ynrV3_attr.stManual.stSelect.low_bf1 = 0.5;
411     ynrV3_attr.stManual.stSelect.low_bf2 = 0.5;
412     ynrV3_attr.stManual.stSelect.low_thred_adj = 0.5;
413     ynrV3_attr.stManual.stSelect.low_peak_supress = 0.5;
414     ynrV3_attr.stManual.stSelect.low_edge_adj_thresh = 7;
415     ynrV3_attr.stManual.stSelect.low_lbf_weight_thresh = 0.25;
416     ynrV3_attr.stManual.stSelect.low_center_weight = 0.5;
417     ynrV3_attr.stManual.stSelect.low_dist_adj = 0.8;
418     ynrV3_attr.stManual.stSelect.low_weight = 0.5;
419     ynrV3_attr.stManual.stSelect.low_filt1_strength = 0.7;
420     ynrV3_attr.stManual.stSelect.low_filt2_strength = 0.85;
421     ynrV3_attr.stManual.stSelect.low_bi_weight = 0.3;
422 
423     ynrV3_attr.stManual.stSelect.base_filter_weight1 = 0.28;
424     ynrV3_attr.stManual.stSelect.base_filter_weight1 = 0.46;
425     ynrV3_attr.stManual.stSelect.base_filter_weight1 = 0.26;
426 
427     ynrV3_attr.stManual.stSelect.high_thred_adj = 0.5;
428     ynrV3_attr.stManual.stSelect.high_weight = 0.78;
429     ynrV3_attr.stManual.stSelect.hi_min_adj = 0.9;
430     ynrV3_attr.stManual.stSelect.hi_edge_thed = 100;
431 
432     ynrV3_attr.stManual.stSelect.high_direction_weight[0] = 1.0;
433     ynrV3_attr.stManual.stSelect.high_direction_weight[1] = 1.0;
434     ynrV3_attr.stManual.stSelect.high_direction_weight[2] = 1.0;
435     ynrV3_attr.stManual.stSelect.high_direction_weight[3] = 1.0;
436     ynrV3_attr.stManual.stSelect.high_direction_weight[4] = 0.5;
437     ynrV3_attr.stManual.stSelect.high_direction_weight[5] = 0.5;
438     ynrV3_attr.stManual.stSelect.high_direction_weight[6] = 0.5;
439     ynrV3_attr.stManual.stSelect.high_direction_weight[7] = 0.5;
440 
441 
442     ynrV3_attr.stManual.stSelect.lo_lumaPoint[0] = 0;
443     ynrV3_attr.stManual.stSelect.lo_lumaPoint[1] = 32;
444     ynrV3_attr.stManual.stSelect.lo_lumaPoint[2] = 64;
445     ynrV3_attr.stManual.stSelect.lo_lumaPoint[3] = 128;
446     ynrV3_attr.stManual.stSelect.lo_lumaPoint[4] = 192;
447     ynrV3_attr.stManual.stSelect.lo_lumaPoint[5] = 256;
448 
449     ynrV3_attr.stManual.stSelect.hi_lumaPoint[0] = 0;
450     ynrV3_attr.stManual.stSelect.hi_lumaPoint[1] = 32;
451     ynrV3_attr.stManual.stSelect.hi_lumaPoint[2] = 64;
452     ynrV3_attr.stManual.stSelect.hi_lumaPoint[3] = 128;
453     ynrV3_attr.stManual.stSelect.hi_lumaPoint[4] = 192;
454     ynrV3_attr.stManual.stSelect.hi_lumaPoint[5] = 256;
455 
456     for(int j = 0; j < 6; j++) {
457         ynrV3_attr.stManual.stSelect.lo_ratio[j] = 1.0;
458         ynrV3_attr.stManual.stSelect.hi_ratio[j] = 1.0;
459     }
460 
461     for(int j = 0; j < 17; j++) {
462         ynrV3_attr.stManual.stSelect.rnr_strength[j] = 1.0;
463     }
464 
465     ret = rk_aiq_user_api2_aynrV3_SetAttrib(ctx, &ynrV3_attr);
466     printf("set ynr v3 attri manual ret:%d \n\n", ret);
467 
468     rk_aiq_ynr_attrib_v3_t get_ynrV3_attr;
469     get_ynrV3_attr.sync.sync_mode = sync_mode;
470     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &get_ynrV3_attr);
471     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, get_ynrV3_attr.sync.done);
472     return ret;
473 }
474 
475 
476 
sample_ynr_setManual_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)477 XCamReturn sample_ynr_setManual_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
478 {
479     XCamReturn ret = XCAM_RETURN_NO_ERROR;
480 
481     rk_aiq_ynr_attrib_v22_t ynr_attr;
482     ynr_attr.sync.sync_mode = sync_mode;
483     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &ynr_attr);
484     ynr_attr.sync.sync_mode = sync_mode;
485     ynr_attr.eMode = AYNRV22_OP_MODE_MANUAL;
486     ynr_attr.stManual.stSelect.enable = 1;
487 
488     ynr_attr.stManual.stSelect.lumaPoint[0] = 0x000;
489     ynr_attr.stManual.stSelect.lumaPoint[1] = 0x040;
490     ynr_attr.stManual.stSelect.lumaPoint[2] = 0x080;
491     ynr_attr.stManual.stSelect.lumaPoint[3] = 0x0c0;
492     ynr_attr.stManual.stSelect.lumaPoint[4] = 0x100;
493     ynr_attr.stManual.stSelect.lumaPoint[5] = 0x140;
494     ynr_attr.stManual.stSelect.lumaPoint[6] = 0x180;
495     ynr_attr.stManual.stSelect.lumaPoint[7] = 0x1c0;
496     ynr_attr.stManual.stSelect.lumaPoint[8] = 0x200;
497     ynr_attr.stManual.stSelect.lumaPoint[9] = 0x240;
498     ynr_attr.stManual.stSelect.lumaPoint[10] = 0x280;
499     ynr_attr.stManual.stSelect.lumaPoint[11] = 0x2c0;
500     ynr_attr.stManual.stSelect.lumaPoint[12] = 0x300;
501     ynr_attr.stManual.stSelect.lumaPoint[13] = 0x340;
502     ynr_attr.stManual.stSelect.lumaPoint[14] = 0x380;
503     ynr_attr.stManual.stSelect.lumaPoint[15] = 0x3c0;
504     ynr_attr.stManual.stSelect.lumaPoint[16] = 0x400;
505 
506     ynr_attr.stManual.stSelect.sigma[0] = 16;
507     ynr_attr.stManual.stSelect.sigma[1] = 20;
508     ynr_attr.stManual.stSelect.sigma[2] = 24;
509     ynr_attr.stManual.stSelect.sigma[3] = 30;
510     ynr_attr.stManual.stSelect.sigma[4] = 40;
511     ynr_attr.stManual.stSelect.sigma[5] = 60;
512     ynr_attr.stManual.stSelect.sigma[6] = 40;
513     ynr_attr.stManual.stSelect.sigma[7] = 38;
514     ynr_attr.stManual.stSelect.sigma[8] = 36;
515     ynr_attr.stManual.stSelect.sigma[9] = 32;
516     ynr_attr.stManual.stSelect.sigma[10] = 30;
517     ynr_attr.stManual.stSelect.sigma[11] = 28;
518     ynr_attr.stManual.stSelect.sigma[12] = 24;
519     ynr_attr.stManual.stSelect.sigma[13] = 24;
520     ynr_attr.stManual.stSelect.sigma[14] = 20;
521     ynr_attr.stManual.stSelect.sigma[15] = 20;
522     ynr_attr.stManual.stSelect.sigma[16] = 16;
523 
524     ynr_attr.stManual.stSelect.lci = 1.0;
525     ynr_attr.stManual.stSelect.hci = 1.0;
526 
527     ynr_attr.stManual.stSelect.ynr_bft3x3_bypass = 0;
528     ynr_attr.stManual.stSelect.ynr_lbft5x5_bypass = 0;
529     ynr_attr.stManual.stSelect.ynr_lgft3x3_bypass = 0;
530     ynr_attr.stManual.stSelect.ynr_flt1x1_bypass = 0;
531     ynr_attr.stManual.stSelect.ynr_nlm11x11_bypass = 0;
532 
533     ynr_attr.stManual.stSelect.ynr_global_gain_alpha = 0.0;
534     ynr_attr.stManual.stSelect.ynr_global_gain = 1.0;
535     ynr_attr.stManual.stSelect.ynr_adjust_thresh = 0.3;
536     ynr_attr.stManual.stSelect.ynr_adjust_scale = 1.0;
537 
538     ynr_attr.stManual.stSelect.low_bf1 = 0.5;
539     ynr_attr.stManual.stSelect.low_bf2 = 0.5;
540     ynr_attr.stManual.stSelect.low_thred_adj = 0.5;
541     ynr_attr.stManual.stSelect.low_peak_supress = 0.5;
542     ynr_attr.stManual.stSelect.low_edge_adj_thresh = 7;
543     ynr_attr.stManual.stSelect.low_lbf_weight_thresh = 0.25;
544     ynr_attr.stManual.stSelect.low_center_weight = 0.5;
545     ynr_attr.stManual.stSelect.low_dist_adj = 0.8;
546     ynr_attr.stManual.stSelect.low_weight = 0.5;
547     ynr_attr.stManual.stSelect.low_filt1_strength = 0.7;
548     ynr_attr.stManual.stSelect.low_filt2_strength = 0.85;
549     ynr_attr.stManual.stSelect.low_bi_weight = 0.3;
550 
551     ynr_attr.stManual.stSelect.hi_weight_offset = 0.0498;
552     ynr_attr.stManual.stSelect.hi_center_weight = 0.8;
553     ynr_attr.stManual.stSelect.hi_bf_scale = 1.0;
554     ynr_attr.stManual.stSelect.hi_min_sigma = 0.0068;
555     ynr_attr.stManual.stSelect.hi_nr_weight = 0.5;
556     ynr_attr.stManual.stSelect.hi_gain_alpha = 1;
557 
558     ynr_attr.stManual.stSelect.hi_filter_coeff1_1 = 7;
559     ynr_attr.stManual.stSelect.hi_filter_coeff1_2 = 6;
560     ynr_attr.stManual.stSelect.hi_filter_coeff1_3 = 3;
561     ynr_attr.stManual.stSelect.hi_filter_coeff2_1 = 6;
562     ynr_attr.stManual.stSelect.hi_filter_coeff2_2 = 5;
563     ynr_attr.stManual.stSelect.hi_filter_coeff2_3 = 3;
564 
565     ynr_attr.stManual.stSelect.lo_lumaPoint[0] = 0;
566     ynr_attr.stManual.stSelect.lo_lumaPoint[1] = 32;
567     ynr_attr.stManual.stSelect.lo_lumaPoint[2] = 64;
568     ynr_attr.stManual.stSelect.lo_lumaPoint[3] = 128;
569     ynr_attr.stManual.stSelect.lo_lumaPoint[4] = 192;
570     ynr_attr.stManual.stSelect.lo_lumaPoint[5] = 256;
571 
572     ynr_attr.stManual.stSelect.hi_lumaPoint[0] = 0;
573     ynr_attr.stManual.stSelect.hi_lumaPoint[1] = 32;
574     ynr_attr.stManual.stSelect.hi_lumaPoint[2] = 64;
575     ynr_attr.stManual.stSelect.hi_lumaPoint[3] = 128;
576     ynr_attr.stManual.stSelect.hi_lumaPoint[4] = 192;
577     ynr_attr.stManual.stSelect.hi_lumaPoint[5] = 256;
578 
579     for(int j = 0; j < 6; j++) {
580         ynr_attr.stManual.stSelect.lo_ratio[j] = 1.0;
581         ynr_attr.stManual.stSelect.hi_ratio[j] = 1.0;
582     }
583 
584     for(int j = 0; j < 17; j++) {
585         ynr_attr.stManual.stSelect.rnr_strength[j] = 1.0;
586     }
587 
588     ret = rk_aiq_user_api2_aynrV22_SetAttrib(ctx, &ynr_attr);
589     printf("set ynr v3 attri manual ret:%d \n\n", ret);
590 
591     rk_aiq_ynr_attrib_v22_t get_ynr_attr;
592     get_ynr_attr.sync.sync_mode = sync_mode;
593     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &get_ynr_attr);
594     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, get_ynr_attr.sync.done);
595     return ret;
596 }
597 
sample_ynr_setReg_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)598 XCamReturn sample_ynr_setReg_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
599 {
600     XCamReturn ret = XCAM_RETURN_NO_ERROR;
601     rk_aiq_ynr_attrib_v3_t ynrV3_attr;
602     ynrV3_attr.sync.sync_mode = sync_mode;
603     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &ynrV3_attr);
604     ynrV3_attr.sync.sync_mode = sync_mode;
605     ynrV3_attr.eMode = AYNRV3_OP_MODE_REG_MANUAL;
606 
607     // YNR_2700_GLOBAL_CTRL (0x0000)
608     ynrV3_attr.stManual.stFix.ynr_rnr_en = 1;
609     ynrV3_attr.stManual.stFix.ynr_gate_dis = 0;
610     ynrV3_attr.stManual.stFix.ynr_thumb_mix_cur_en = 0;
611     ynrV3_attr.stManual.stFix.ynr_global_gain_alpha = 0x0;
612     ynrV3_attr.stManual.stFix.ynr_global_gain = 0x10;
613     ynrV3_attr.stManual.stFix.ynr_flt1x1_bypass_sel = 0;
614     ynrV3_attr.stManual.stFix.ynr_sft5x5_bypass = 0;
615     ynrV3_attr.stManual.stFix.ynr_flt1x1_bypass = 0;
616     ynrV3_attr.stManual.stFix.ynr_lgft3x3_bypass = 0;
617     ynrV3_attr.stManual.stFix.ynr_lbft5x5_bypass = 0;
618     ynrV3_attr.stManual.stFix.ynr_bft3x3_bypass = 0;
619     ynrV3_attr.stManual.stFix.ynr_en = 1;
620 
621     // YNR_2700_RNR_MAX_R  (0x0004)
622     ynrV3_attr.stManual.stFix.ynr_local_gainscale = 0x80;
623     ynrV3_attr.stManual.stFix.ynr_rnr_max_r = 0x3754;
624 
625     // YNR_2700_RNR_MAX_R  (0x0008)
626     ynrV3_attr.stManual.stFix.ynr_rnr_center_coorv = 0x0000;
627     ynrV3_attr.stManual.stFix.ynr_rnr_center_coorh = 0x0001;
628 
629     // YNR_2700_RNR_MAX_R  (0x000c)
630     ynrV3_attr.stManual.stFix.ynr_localgain_adj = 0x10;
631     ynrV3_attr.stManual.stFix.ynr_localgain_adj_thresh = 0x10;
632 
633     // YNR_2700_LOWNR_CTRL0 (0x0010)
634     ynrV3_attr.stManual.stFix.ynr_low_bf_inv[1] = 0x100;
635     ynrV3_attr.stManual.stFix.ynr_low_bf_inv[0] = 0x100;
636 
637     // YNR_2700_LOWNR_CTRL1  (0x0014)
638     ynrV3_attr.stManual.stFix.ynr_low_peak_supress = 0x00;
639     ynrV3_attr.stManual.stFix.ynr_low_thred_adj = 0x80;
640 
641     // YNR_2700_LOWNR_CTRL2 (0x0018)
642     ynrV3_attr.stManual.stFix.ynr_low_dist_adj = 0x010;
643     ynrV3_attr.stManual.stFix.ynr_low_edge_adj_thresh = 0x007;
644 
645     // YNR_2700_LOWNR_CTRL3 (0x001c)
646     ynrV3_attr.stManual.stFix.ynr_low_bi_weight = 0x40;
647     ynrV3_attr.stManual.stFix.ynr_low_weight = 0x64;
648     ynrV3_attr.stManual.stFix.ynr_low_center_weight = 0x133;
649 
650     // YNR_2700_HIGHNR_CTRL0 (0x0020)
651     ynrV3_attr.stManual.stFix.ynr_hi_min_adj = 0x3a;
652     ynrV3_attr.stManual.stFix.ynr_high_thred_adj = 0x080;
653 
654     // YNR_2700_HIGHNR_CTRL1  (0x0024)
655     ynrV3_attr.stManual.stFix.ynr_high_retain_weight = 0x6e;
656     ynrV3_attr.stManual.stFix.ynr_hi_edge_thed = 0x64;
657 
658     // YNR_2700_HIGHNR_BASE_FILTER_WEIGHT  (0x0028)
659     ynrV3_attr.stManual.stFix.ynr_base_filter_weight[0] = 0x12;
660     ynrV3_attr.stManual.stFix.ynr_base_filter_weight[1] = 0x0f;
661     ynrV3_attr.stManual.stFix.ynr_base_filter_weight[2] = 0x8;
662 
663     // YNR_2700_HIGHNR_CTRL1  (0x002c)
664     ynrV3_attr.stManual.stFix.ynr_frame_full_size = 0x0000;
665     ynrV3_attr.stManual.stFix.ynr_lbf_weight_thres = 0x000;
666 
667     // YNR_2700_GAUSS1_COEFF  (0x0030)
668     ynrV3_attr.stManual.stFix.ynr_low_gauss1_coeff[0] = 0x0b;
669     ynrV3_attr.stManual.stFix.ynr_low_gauss1_coeff[1] = 0x20;
670     ynrV3_attr.stManual.stFix.ynr_low_gauss1_coeff[2] = 0x054;
671 
672     // YNR_2700_GAUSS2_COEFF  (0x0034)
673     ynrV3_attr.stManual.stFix.ynr_low_gauss2_coeff[0] = 0x10;
674     ynrV3_attr.stManual.stFix.ynr_low_gauss2_coeff[1] = 0x20;
675     ynrV3_attr.stManual.stFix.ynr_low_gauss2_coeff[2] = 0x040;
676 
677     // YNR_2700_DIRECTION_W_0_3  (0x0038 - 0x003c)
678     ynrV3_attr.stManual.stFix.ynr_direction_weight[0] = 0x08;
679     ynrV3_attr.stManual.stFix.ynr_direction_weight[1] = 0x08;
680     ynrV3_attr.stManual.stFix.ynr_direction_weight[2] = 0x08;
681     ynrV3_attr.stManual.stFix.ynr_direction_weight[3] = 0x08;
682     ynrV3_attr.stManual.stFix.ynr_direction_weight[4] = 0x04;
683     ynrV3_attr.stManual.stFix.ynr_direction_weight[5] = 0x04;
684     ynrV3_attr.stManual.stFix.ynr_direction_weight[6] = 0x04;
685     ynrV3_attr.stManual.stFix.ynr_direction_weight[7] = 0x04;
686 
687 
688     // YNR_2700_SGM_DX_0_1 (0x0040 - 0x0060)
689     ynrV3_attr.stManual.stFix.ynr_luma_points_x[0] = 0x000;
690     ynrV3_attr.stManual.stFix.ynr_luma_points_x[1] = 0x040;
691     ynrV3_attr.stManual.stFix.ynr_luma_points_x[2] = 0x080;
692     ynrV3_attr.stManual.stFix.ynr_luma_points_x[3] = 0x0c0;
693     ynrV3_attr.stManual.stFix.ynr_luma_points_x[4] = 0x100;
694     ynrV3_attr.stManual.stFix.ynr_luma_points_x[5] = 0x140;
695     ynrV3_attr.stManual.stFix.ynr_luma_points_x[6] = 0x180;
696     ynrV3_attr.stManual.stFix.ynr_luma_points_x[7] = 0x1c0;
697     ynrV3_attr.stManual.stFix.ynr_luma_points_x[8] = 0x200;
698     ynrV3_attr.stManual.stFix.ynr_luma_points_x[9] = 0x240;
699     ynrV3_attr.stManual.stFix.ynr_luma_points_x[10] = 0x280;
700     ynrV3_attr.stManual.stFix.ynr_luma_points_x[11] = 0x2c0;
701     ynrV3_attr.stManual.stFix.ynr_luma_points_x[12] = 0x300;
702     ynrV3_attr.stManual.stFix.ynr_luma_points_x[13] = 0x340;
703     ynrV3_attr.stManual.stFix.ynr_luma_points_x[14] = 0x380;
704     ynrV3_attr.stManual.stFix.ynr_luma_points_x[15] = 0x3c0;
705     ynrV3_attr.stManual.stFix.ynr_luma_points_x[16] = 0x400;
706 
707 
708     // YNR_2700_LSGM_Y_0_1 (0x0070- 0x0090)
709     ynrV3_attr.stManual.stFix.ynr_lsgm_y[0] = 0x04c;
710     ynrV3_attr.stManual.stFix.ynr_lsgm_y[1] = 0x0a0;
711     ynrV3_attr.stManual.stFix.ynr_lsgm_y[2] = 0x0d0;
712     ynrV3_attr.stManual.stFix.ynr_lsgm_y[3] = 0x0e4;
713     ynrV3_attr.stManual.stFix.ynr_lsgm_y[4] = 0x0e8;
714     ynrV3_attr.stManual.stFix.ynr_lsgm_y[5] = 0x0e4;
715     ynrV3_attr.stManual.stFix.ynr_lsgm_y[6] = 0x0d8;
716     ynrV3_attr.stManual.stFix.ynr_lsgm_y[7] = 0x0cc;
717     ynrV3_attr.stManual.stFix.ynr_lsgm_y[8] = 0x0c4;
718     ynrV3_attr.stManual.stFix.ynr_lsgm_y[9] = 0x0c0;
719     ynrV3_attr.stManual.stFix.ynr_lsgm_y[10] = 0x0bc;
720     ynrV3_attr.stManual.stFix.ynr_lsgm_y[11] = 0x0b8;
721     ynrV3_attr.stManual.stFix.ynr_lsgm_y[12] = 0x0b4;
722     ynrV3_attr.stManual.stFix.ynr_lsgm_y[13] = 0x0a4;
723     ynrV3_attr.stManual.stFix.ynr_lsgm_y[14] = 0x088;
724     ynrV3_attr.stManual.stFix.ynr_lsgm_y[15] = 0x054;
725     ynrV3_attr.stManual.stFix.ynr_lsgm_y[16] = 0x028;
726 
727     // YNR_2700_HSGM_Y_0_1 (0x00a0- 0x00c0)
728     ynrV3_attr.stManual.stFix.ynr_hsgm_y[0] = 0x04c;
729     ynrV3_attr.stManual.stFix.ynr_hsgm_y[1] = 0x0a0;
730     ynrV3_attr.stManual.stFix.ynr_hsgm_y[2] = 0x0d0;
731     ynrV3_attr.stManual.stFix.ynr_hsgm_y[3] = 0x0e4;
732     ynrV3_attr.stManual.stFix.ynr_hsgm_y[4] = 0x0e8;
733     ynrV3_attr.stManual.stFix.ynr_hsgm_y[5] = 0x0e4;
734     ynrV3_attr.stManual.stFix.ynr_hsgm_y[6] = 0x0d8;
735     ynrV3_attr.stManual.stFix.ynr_hsgm_y[7] = 0x0cc;
736     ynrV3_attr.stManual.stFix.ynr_hsgm_y[8] = 0x0c4;
737     ynrV3_attr.stManual.stFix.ynr_hsgm_y[9] = 0x0c0;
738     ynrV3_attr.stManual.stFix.ynr_hsgm_y[10] = 0x0bc;
739     ynrV3_attr.stManual.stFix.ynr_hsgm_y[11] = 0x0b8;
740     ynrV3_attr.stManual.stFix.ynr_hsgm_y[12] = 0x0b4;
741     ynrV3_attr.stManual.stFix.ynr_hsgm_y[13] = 0x0a4;
742     ynrV3_attr.stManual.stFix.ynr_hsgm_y[14] = 0x088;
743     ynrV3_attr.stManual.stFix.ynr_hsgm_y[15] = 0x054;
744     ynrV3_attr.stManual.stFix.ynr_hsgm_y[16] = 0x028;
745 
746     for(int j = 0; j < 17; j++) {
747         // YNR_2700_RNR_STRENGTH03 (0x00d0- 0x00e0)
748         ynrV3_attr.stManual.stFix.ynr_rnr_strength[j] = 0x10;
749     }
750 
751     ret = rk_aiq_user_api2_aynrV3_SetAttrib(ctx, &ynrV3_attr);
752     printf("set ynr v3 attri manual ret:%d \n\n", ret);
753 
754     rk_aiq_ynr_attrib_v3_t get_ynrV3_attr;
755     get_ynrV3_attr.sync.sync_mode = sync_mode;
756     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &get_ynrV3_attr);
757     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, get_ynrV3_attr.sync.done);
758 
759     return ret;
760 }
761 
762 
sample_ynr_setReg_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)763 XCamReturn sample_ynr_setReg_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
764 {
765     XCamReturn ret = XCAM_RETURN_NO_ERROR;
766     rk_aiq_ynr_attrib_v22_t ynr_attr;
767     ynr_attr.sync.sync_mode = sync_mode;
768     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &ynr_attr);
769     ynr_attr.sync.sync_mode = sync_mode;
770     ynr_attr.eMode = AYNRV22_OP_MODE_REG_MANUAL;
771 
772     // YNR_2700_GLOBAL_CTRL (0x0000)
773     ynr_attr.stManual.stFix.rnr_en = 1;
774     ynr_attr.stManual.stFix.gate_dis = 0;
775     ynr_attr.stManual.stFix.thumb_mix_cur_en = 0;
776     ynr_attr.stManual.stFix.global_gain_alpha = 0x0;
777     ynr_attr.stManual.stFix.global_gain = 0x10;
778     ynr_attr.stManual.stFix.flt1x1_bypass_sel = 0;
779     ynr_attr.stManual.stFix.nlm11x11_bypass = 0;
780     ynr_attr.stManual.stFix.flt1x1_bypass = 0;
781     ynr_attr.stManual.stFix.lgft3x3_bypass = 0;
782     ynr_attr.stManual.stFix.lbft5x5_bypass = 0;
783     ynr_attr.stManual.stFix.bft3x3_bypass = 0;
784     ynr_attr.stManual.stFix.ynr_en = 1;
785 
786     // YNR_2700_RNR_MAX_R  (0x0004)
787     ynr_attr.stManual.stFix.local_gainscale = 0x80;
788     ynr_attr.stManual.stFix.rnr_max_r = 0x1c33;
789 
790     // YNR_2700_RNR_MAX_R  (0x0008)
791     ynr_attr.stManual.stFix.rnr_center_coorv = 0x2f8;
792     ynr_attr.stManual.stFix.rnr_center_coorh = 0x540;
793 
794     // YNR_2700_RNR_MAX_R  (0x000c)
795     ynr_attr.stManual.stFix.localgain_adj = 0x80;
796     ynr_attr.stManual.stFix.localgain_adj_thresh = 0x04;
797 
798     // YNR_2700_LOWNR_CTRL0 (0x0010)
799     ynr_attr.stManual.stFix.low_bf_inv1 = 0x100;
800     ynr_attr.stManual.stFix.low_bf_inv0 = 0x100;
801 
802     // YNR_2700_LOWNR_CTRL1  (0x0014)
803     ynr_attr.stManual.stFix.low_peak_supress = 0x40;
804     ynr_attr.stManual.stFix.low_thred_adj = 0x80;
805 
806     // YNR_2700_LOWNR_CTRL2 (0x0018)
807     ynr_attr.stManual.stFix.low_dist_adj = 0x010;
808     ynr_attr.stManual.stFix.low_edge_adj_thresh = 0x007;
809 
810     // YNR_2700_LOWNR_CTRL3 (0x001c)
811     ynr_attr.stManual.stFix.low_bi_weight = 0x40;
812     ynr_attr.stManual.stFix.low_weight = 0x64;
813     ynr_attr.stManual.stFix.low_center_weight = 0x133;
814 
815 
816     // YNR_2700_HIGHNR_CTRL1  (0x002c)
817     ynr_attr.stManual.stFix.frame_full_size = 0x00;
818     ynr_attr.stManual.stFix.lbf_weight_thres = 0xff;
819 
820     // YNR_2700_GAUSS1_COEFF  (0x0030)
821     ynr_attr.stManual.stFix.low_gauss1_coeff0 = 0xb;
822     ynr_attr.stManual.stFix.low_gauss1_coeff1 = 0x1f;
823     ynr_attr.stManual.stFix.low_gauss1_coeff2 = 0x58;
824 
825     // YNR_2700_GAUSS2_COEFF  (0x0034)
826     ynr_attr.stManual.stFix.low_gauss2_coeff0 = 0x10;
827     ynr_attr.stManual.stFix.low_gauss2_coeff1 = 0x20;
828     ynr_attr.stManual.stFix.low_gauss2_coeff2 = 0x40;
829 
830     // YNR_2700_SGM_DX_0_1 (0x0040 - 0x0060)
831     ynr_attr.stManual.stFix.luma_points_x[0] = 0x000;
832     ynr_attr.stManual.stFix.luma_points_x[1] = 0x040;
833     ynr_attr.stManual.stFix.luma_points_x[2] = 0x080;
834     ynr_attr.stManual.stFix.luma_points_x[3] = 0x0c0;
835     ynr_attr.stManual.stFix.luma_points_x[4] = 0x100;
836     ynr_attr.stManual.stFix.luma_points_x[5] = 0x140;
837     ynr_attr.stManual.stFix.luma_points_x[6] = 0x180;
838     ynr_attr.stManual.stFix.luma_points_x[7] = 0x1c0;
839     ynr_attr.stManual.stFix.luma_points_x[8] = 0x200;
840     ynr_attr.stManual.stFix.luma_points_x[9] = 0x240;
841     ynr_attr.stManual.stFix.luma_points_x[10] = 0x280;
842     ynr_attr.stManual.stFix.luma_points_x[11] = 0x2c0;
843     ynr_attr.stManual.stFix.luma_points_x[12] = 0x300;
844     ynr_attr.stManual.stFix.luma_points_x[13] = 0x340;
845     ynr_attr.stManual.stFix.luma_points_x[14] = 0x380;
846     ynr_attr.stManual.stFix.luma_points_x[15] = 0x3c0;
847     ynr_attr.stManual.stFix.luma_points_x[16] = 0x400;
848 
849 
850     // YNR_2700_LSGM_Y_0_1 (0x0070- 0x0090)
851     ynr_attr.stManual.stFix.lsgm_y[0] = 0x04c;
852     ynr_attr.stManual.stFix.lsgm_y[1] = 0x0a0;
853     ynr_attr.stManual.stFix.lsgm_y[2] = 0x0d0;
854     ynr_attr.stManual.stFix.lsgm_y[3] = 0x0e4;
855     ynr_attr.stManual.stFix.lsgm_y[4] = 0x0e8;
856     ynr_attr.stManual.stFix.lsgm_y[5] = 0x0e4;
857     ynr_attr.stManual.stFix.lsgm_y[6] = 0x0d8;
858     ynr_attr.stManual.stFix.lsgm_y[7] = 0x0cc;
859     ynr_attr.stManual.stFix.lsgm_y[8] = 0x0c4;
860     ynr_attr.stManual.stFix.lsgm_y[9] = 0x0c0;
861     ynr_attr.stManual.stFix.lsgm_y[10] = 0x0bc;
862     ynr_attr.stManual.stFix.lsgm_y[11] = 0x0b8;
863     ynr_attr.stManual.stFix.lsgm_y[12] = 0x0b4;
864     ynr_attr.stManual.stFix.lsgm_y[13] = 0x0a4;
865     ynr_attr.stManual.stFix.lsgm_y[14] = 0x088;
866     ynr_attr.stManual.stFix.lsgm_y[15] = 0x054;
867     ynr_attr.stManual.stFix.lsgm_y[16] = 0x028;
868 
869     for(int j = 0; j < 17; j++) {
870         // YNR_2700_RNR_STRENGTH03 (0x00d0- 0x00e0)
871         ynr_attr.stManual.stFix.rnr_strength[j] = 0x10;
872     }
873 
874     //YNR_NLM_SIGMA_GAIN
875     ynr_attr.stManual.stFix.nlm_min_sigma = 0x0d;
876     ynr_attr.stManual.stFix.nlm_hi_gain_alpha = 0x10;
877     ynr_attr.stManual.stFix.nlm_hi_bf_scale = 0x40;
878 
879     // YNR_NLM_COE  (0x0038 - 0x003c)
880     ynr_attr.stManual.stFix.nlm_coe_0 = 0x07;
881     ynr_attr.stManual.stFix.nlm_coe_1 = 0x06;
882     ynr_attr.stManual.stFix.nlm_coe_2 = 0x00;
883     ynr_attr.stManual.stFix.nlm_coe_3 = 0x06;
884     ynr_attr.stManual.stFix.nlm_coe_4 = 0x05;
885     ynr_attr.stManual.stFix.nlm_coe_5 = 0x03;
886 
887     // YNR_NLM_WEIGHT
888     ynr_attr.stManual.stFix.nlm_center_weight = 0x400;
889     ynr_attr.stManual.stFix.nlm_weight_offset = 0x32;
890 
891     // YNR_NLM_NR_WEIGHT
892     ynr_attr.stManual.stFix.nlm_nr_weight = 0x31e;
893 
894     ret = rk_aiq_user_api2_aynrV22_SetAttrib(ctx, &ynr_attr);
895     printf("set ynr v3 attri manual ret:%d \n\n", ret);
896 
897     rk_aiq_ynr_attrib_v22_t get_ynr_attr;
898     get_ynr_attr.sync.sync_mode = sync_mode;
899     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &get_ynr_attr);
900     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, get_ynr_attr.sync.done);
901 
902     return ret;
903 }
904 
905 
sample_ynr_setStrength_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)906 XCamReturn sample_ynr_setStrength_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
907 {
908     XCamReturn ret = XCAM_RETURN_NO_ERROR;
909     rk_aiq_ynr_strength_v3_t ynrV3_strength;
910     ynrV3_strength.sync.sync_mode = sync_mode;
911     ynrV3_strength.percent = fStrength;
912     ret = rk_aiq_user_api2_aynrV3_SetStrength(ctx, &ynrV3_strength);
913     printf("Set aynr v3 set streangth ret:%d strength:%f \n\n", ret, ynrV3_strength.percent);
914 
915     rk_aiq_ynr_strength_v3_t get_ynrV3_strength;
916     get_ynrV3_strength.sync.sync_mode = sync_mode;
917     ret = rk_aiq_user_api2_aynrV3_GetStrength(ctx, &get_ynrV3_strength);
918     printf("get aynr v3 attri ret:%d strength:%f done:%d\n\n",
919            ret, get_ynrV3_strength.percent, get_ynrV3_strength.sync.done);
920 
921     return ret;
922 }
923 
sample_ynr_setStrength_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)924 XCamReturn sample_ynr_setStrength_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
925 {
926     XCamReturn ret = XCAM_RETURN_NO_ERROR;
927     rk_aiq_ynr_strength_v22_t ynr_strength;
928     ynr_strength.sync.sync_mode = sync_mode;
929     ynr_strength.percent = fStrength;
930     ynr_strength.strength_enable = true;
931     ret = rk_aiq_user_api2_aynrV22_SetStrength(ctx, &ynr_strength);
932     printf("Set aynr v3 set streangth ret:%d strength:%f \n\n", ret, ynr_strength.percent);
933 
934     rk_aiq_ynr_strength_v22_t get_ynr_strength;
935     get_ynr_strength.sync.sync_mode = sync_mode;
936     ret = rk_aiq_user_api2_aynrV22_GetStrength(ctx, &get_ynr_strength);
937     printf("get aynr v3 attri ret:%d strength:%f done:%d\n\n",
938            ret, get_ynr_strength.percent, get_ynr_strength.sync.done);
939 
940     return ret;
941 }
942 
943 
944 
sample_ynr_setDefault_v3(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_ynr_attrib_v3_t default_ynrV3_attr)945 XCamReturn sample_ynr_setDefault_v3(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_ynr_attrib_v3_t default_ynrV3_attr)
946 {
947     XCamReturn ret = XCAM_RETURN_NO_ERROR;
948 
949     default_ynrV3_attr.sync.sync_mode = sync_mode;
950     ret = rk_aiq_user_api2_aynrV3_SetAttrib(ctx, &default_ynrV3_attr);
951     printf("set ynr v3 attri auto default value ret:%d \n\n", ret);
952 
953     ret = rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &default_ynrV3_attr);
954     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, default_ynrV3_attr.sync.done);
955 
956     return ret;
957 }
958 
959 
sample_ynr_setDefault_v22(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_ynr_attrib_v22_t default_ynr_attr)960 XCamReturn sample_ynr_setDefault_v22(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_ynr_attrib_v22_t default_ynr_attr)
961 {
962     XCamReturn ret = XCAM_RETURN_NO_ERROR;
963 
964     default_ynr_attr.sync.sync_mode = sync_mode;
965     ret = rk_aiq_user_api2_aynrV22_SetAttrib(ctx, &default_ynr_attr);
966     printf("set ynr v3 attri auto default value ret:%d \n\n", ret);
967 
968     ret = rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &default_ynr_attr);
969     printf("get aynr v3 attri ret:%d done:%d \n\n", ret, default_ynr_attr.sync.done);
970 
971     return ret;
972 }
973 
974 
sample_aynr_module(const void * arg)975 XCamReturn sample_aynr_module (const void *arg)
976 {
977     int key = -1;
978     CLEAR();
979     XCamReturn ret = XCAM_RETURN_NO_ERROR;
980     const demo_context_t *demo_ctx = (demo_context_t *)arg;
981     const rk_aiq_sys_ctx_t* ctx ;
982 
983     if(demo_ctx->camGroup) {
984         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
985         printf("##################group !!!!########################\n");
986     } else {
987         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
988         printf("##################sigle !!!!########################\n");
989     }
990 
991     if (ctx == nullptr) {
992         ERR ("%s, ctx is nullptr\n", __FUNCTION__);
993         return XCAM_RETURN_ERROR_PARAM;
994     }
995 
996     rk_aiq_ynr_attrib_v3_t default_ynrV3_attr;
997     if (CHECK_ISP_HW_V30()) {
998         rk_aiq_user_api2_aynrV3_GetAttrib(ctx, &default_ynrV3_attr);
999     }
1000 
1001     rk_aiq_ynr_attrib_v22_t default_ynrV22_attr;
1002     if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1003         rk_aiq_user_api2_aynrV22_GetAttrib(ctx, &default_ynrV22_attr);
1004     }
1005 
1006     do {
1007         sample_aynr_usage ();
1008 
1009         key = getchar ();
1010         while (key == '\n' || key == '\r')
1011             key = getchar ();
1012         printf ("\n");
1013 
1014         switch (key) {
1015         case '0':
1016             if (CHECK_ISP_HW_V30()) {
1017                 sample_ynr_getAttr_v3(ctx, RK_AIQ_UAPI_MODE_SYNC);
1018             }
1019             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1020                 sample_ynr_getAttr_v22(ctx, RK_AIQ_UAPI_MODE_SYNC);
1021             }
1022             break;
1023         case '1':
1024             if (CHECK_ISP_HW_V30()) {
1025                 sample_ynr_getStrength_v3(ctx, RK_AIQ_UAPI_MODE_SYNC);
1026             }
1027             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1028                 sample_ynr_getStrength_v22(ctx, RK_AIQ_UAPI_MODE_SYNC);
1029             }
1030             break;
1031         case '2':
1032             if (CHECK_ISP_HW_V30()) {
1033                 sample_ynr_setAuto_v3(ctx, RK_AIQ_UAPI_MODE_SYNC);
1034             }
1035             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1036                 sample_ynr_setAuto_v22(ctx, RK_AIQ_UAPI_MODE_SYNC);
1037             }
1038             break;
1039         case '3':
1040             if (CHECK_ISP_HW_V30()) {
1041                 sample_ynr_setManual_v3(ctx, RK_AIQ_UAPI_MODE_SYNC);
1042             }
1043             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1044                 sample_ynr_setManual_v22(ctx, RK_AIQ_UAPI_MODE_SYNC);
1045             }
1046             break;
1047         case '4':
1048             if (CHECK_ISP_HW_V30()) {
1049                 sample_ynr_setReg_v3(ctx, RK_AIQ_UAPI_MODE_SYNC);
1050             }
1051             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1052                 sample_ynr_setReg_v22(ctx, RK_AIQ_UAPI_MODE_SYNC);
1053             }
1054             break;
1055         case '5':
1056             if (CHECK_ISP_HW_V30()) {
1057                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
1058             }
1059             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1060                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
1061             }
1062             break;
1063         case '6':
1064             if (CHECK_ISP_HW_V30()) {
1065                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
1066             }
1067             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1068                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
1069             }
1070             break;
1071         case '7':
1072             if (CHECK_ISP_HW_V30()) {
1073                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
1074             }
1075             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1076                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
1077             }
1078             break;
1079         case '8':
1080             if (CHECK_ISP_HW_V30()) {
1081                 sample_ynr_setDefault_v3(ctx, RK_AIQ_UAPI_MODE_SYNC, default_ynrV3_attr);
1082             }
1083             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1084                 sample_ynr_setDefault_v22(ctx, RK_AIQ_UAPI_MODE_SYNC, default_ynrV22_attr);
1085             }
1086             break;
1087         case 'a':
1088             if (CHECK_ISP_HW_V30()) {
1089                 sample_ynr_getAttr_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1090             }
1091             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1092                 sample_ynr_getAttr_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1093             }
1094             break;
1095         case 'b':
1096             if (CHECK_ISP_HW_V30()) {
1097                 sample_ynr_getStrength_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1098             }
1099             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1100                 sample_ynr_getStrength_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1101             }
1102             break;
1103         case 'c':
1104             if (CHECK_ISP_HW_V30()) {
1105                 sample_ynr_setAuto_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1106             }
1107             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1108                 sample_ynr_setAuto_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1109             }
1110             break;
1111         case 'd':
1112             if (CHECK_ISP_HW_V30()) {
1113                 sample_ynr_setManual_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1114             }
1115             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1116                 sample_ynr_setManual_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1117             }
1118             break;
1119         case 'e':
1120             if (CHECK_ISP_HW_V30()) {
1121                 sample_ynr_setReg_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1122             }
1123             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1124                 sample_ynr_setReg_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1125             }
1126             break;
1127         case 'f':
1128             if (CHECK_ISP_HW_V30()) {
1129                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
1130             }
1131             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1132                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
1133             }
1134             break;
1135         case 'g':
1136             if (CHECK_ISP_HW_V30()) {
1137                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
1138             }
1139             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1140                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
1141             }
1142             break;
1143         case 'h':
1144             if (CHECK_ISP_HW_V30()) {
1145                 sample_ynr_setStrength_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
1146             }
1147             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1148                 sample_ynr_setStrength_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
1149             }
1150             break;
1151         case 'i':
1152             if (CHECK_ISP_HW_V30()) {
1153                 sample_ynr_setDefault_v3(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_ynrV3_attr);
1154             }
1155             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1156                 sample_ynr_setDefault_v22(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_ynrV22_attr);
1157             }
1158             break;
1159 
1160 
1161         default:
1162             printf("not support test\n\n");
1163             break;
1164         }
1165 
1166     } while (key != 'q' && key != 'Q');
1167 
1168     return ret;
1169 }
1170 
1171