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