xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_asharp_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_asharp_usage()20 static void sample_asharp_usage()
21 {
22     printf("Usage : \n");
23     printf("\t 0) ASHARP:         get asharp attri on sync mode.\n");
24     printf("\t 1) ASHARP:         get asharp strength on sync mode.\n");
25     printf("\t 2) ASHARP:         set asharp attri auto on sync mode.\n");
26     printf("\t 3) ASHARP:         set asharp attri manual on sync mode.\n");
27     printf("\t 4) ASHARP:         set asharp attri reg value on sync mode.\n");
28     printf("\t 5) ASHARP:         set asharp strength max value 1.0 on sync mode, only on auto mode has effect.\n");
29     printf("\t 6) ASHARP:         set asharp strength min value 0.0 on sync mode, only on auto mode has effect.\n");
30     printf("\t 7) ASHARP:         set asharp strength med value 0.5 on sync mode, only on auto mode has effect.\n");
31     printf("\t 8) ASHARP:         set asharp attri to default value on sync mode.\n");
32     printf("\t a) ASHARP:         get asharp attri on async mode.\n");
33     printf("\t b) ASHARP:         get asharp strength on async mode.\n");
34     printf("\t c) ASHARP:         set asharp attri auto on async mode.\n");
35     printf("\t d) ASHARP:         set asharp attri manual on async mode.\n");
36     printf("\t e) ASHARP:         set asharp attri reg value on async mode.\n");
37     printf("\t f) ASHARP:         set asharp strength max value 1.0 on async mode, only on auto mode has effect.\n");
38     printf("\t g) ASHARP:         set asharp strength min value 0.0 on async mode, only on auto mode has effect.\n");
39     printf("\t h) ASHARP:         set asharp strength med value 0.5 on async mode, only on auto mode has effect.\n");
40     printf("\t i) ASHARP:         set asharp attri to default value on async mode.\n");
41     printf("\t q) ASHARP:         press key q or Q to quit.\n");
42 }
43 
sample_print_asharp_info(const void * arg)44 void sample_print_asharp_info(const void *arg)
45 {
46     printf ("enter ASHARP modult test!\n");
47 }
48 
sample_sharp_setAuto_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)49 XCamReturn sample_sharp_setAuto_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
50 {
51     XCamReturn ret = XCAM_RETURN_NO_ERROR;
52     rk_aiq_sharp_attrib_v4_t sharpV4_attr;
53     sharpV4_attr.sync.sync_mode = sync_mode;
54     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &sharpV4_attr);
55     sharpV4_attr.sync.sync_mode = sync_mode;
56     sharpV4_attr.eMode = ASHARP4_OP_MODE_AUTO;
57     sharpV4_attr.stAuto.stParams.enable = 1;
58     for(int i = 0; i < RK_SHARP_V4_MAX_ISO_NUM; i++) {
59         sharpV4_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
60 
61         sharpV4_attr.stAuto.stParams.luma_point[0] = 0;
62         sharpV4_attr.stAuto.stParams.luma_point[1] = 64;
63         sharpV4_attr.stAuto.stParams.luma_point[2] = 128;
64         sharpV4_attr.stAuto.stParams.luma_point[3] = 256;
65         sharpV4_attr.stAuto.stParams.luma_point[4] = 384;
66         sharpV4_attr.stAuto.stParams.luma_point[5] = 640;
67         sharpV4_attr.stAuto.stParams.luma_point[6] = 896;
68         sharpV4_attr.stAuto.stParams.luma_point[7] = 1024;
69 
70         sharpV4_attr.stAuto.stParams.luma_sigma[i][0] = 16;
71         sharpV4_attr.stAuto.stParams.luma_sigma[i][1] = 16;
72         sharpV4_attr.stAuto.stParams.luma_sigma[i][2] = 16;
73         sharpV4_attr.stAuto.stParams.luma_sigma[i][3] = 16;
74         sharpV4_attr.stAuto.stParams.luma_sigma[i][4] = 16;
75         sharpV4_attr.stAuto.stParams.luma_sigma[i][5] = 16;
76         sharpV4_attr.stAuto.stParams.luma_sigma[i][6] = 16;
77         sharpV4_attr.stAuto.stParams.luma_sigma[i][7] = 16;
78 
79         sharpV4_attr.stAuto.stParams.hf_clip[i][0] = 128;
80         sharpV4_attr.stAuto.stParams.hf_clip[i][1] = 128;
81         sharpV4_attr.stAuto.stParams.hf_clip[i][2] = 128;
82         sharpV4_attr.stAuto.stParams.hf_clip[i][3] = 128;
83         sharpV4_attr.stAuto.stParams.hf_clip[i][4] = 128;
84         sharpV4_attr.stAuto.stParams.hf_clip[i][5] = 128;
85         sharpV4_attr.stAuto.stParams.hf_clip[i][6] = 128;
86         sharpV4_attr.stAuto.stParams.hf_clip[i][7] = 128;
87 
88         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][0] = 256;
89         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][1] = 256;
90         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][2] = 256;
91         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][3] = 256;
92         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][4] = 256;
93         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][5] = 256;
94         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][6] = 256;
95         sharpV4_attr.stAuto.stParams.local_sharp_strength[i][7] = 256;
96 
97 
98         sharpV4_attr.stAuto.stParams.pbf_gain[i] = 1.0;
99         sharpV4_attr.stAuto.stParams.pbf_add[i] = 0.0;
100         sharpV4_attr.stAuto.stParams.pbf_ratio[i] = 0.5;
101         sharpV4_attr.stAuto.stParams.gaus_ratio[i] = 0.0;
102         sharpV4_attr.stAuto.stParams.sharp_ratio[i] = 10.0;
103         sharpV4_attr.stAuto.stParams.bf_gain[i] = 1.0;
104         sharpV4_attr.stAuto.stParams.bf_add[i] = 0.0;
105         sharpV4_attr.stAuto.stParams.bf_ratio[i] = 0.5;
106 
107         sharpV4_attr.stAuto.stParams.prefilter_coeff[i][0] = 0.2042;
108         sharpV4_attr.stAuto.stParams.prefilter_coeff[i][1] = 0.1238;
109         sharpV4_attr.stAuto.stParams.prefilter_coeff[i][2] = 0.0751;
110 
111         sharpV4_attr.stAuto.stParams.hfBilateralFilter_coeff[i][0] = 0.2042;
112         sharpV4_attr.stAuto.stParams.hfBilateralFilter_coeff[i][1] = 0.1238;
113         sharpV4_attr.stAuto.stParams.hfBilateralFilter_coeff[i][2] = 0.0751;
114 
115 
116         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][0] = 0.0935;
117         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][1] = 0.0724;
118         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][2] = 0.0561;
119         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][3] = 0.0337;
120         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][4] = 0.0261;
121         sharpV4_attr.stAuto.stParams.GaussianFilter_coeff[i][5] = 0.0121;
122 
123         sharpV4_attr.stAuto.stParams.kernel_sigma_enable = 0;
124         sharpV4_attr.stAuto.stParams.prefilter_sigma[i] = 1.0;
125         sharpV4_attr.stAuto.stParams.hfBilateralFilter_sigma[i] = 1.0;
126         sharpV4_attr.stAuto.stParams.GaussianFilter_sigma[i] = 1.0;
127         sharpV4_attr.stAuto.stParams.GaussianFilter_radius[i] = 2.0;
128 
129     }
130 
131     ret = rk_aiq_user_api2_asharpV4_SetAttrib(ctx, &sharpV4_attr);
132     printf("set asharp attri auto ret:%d \n\n", ret);
133 
134     rk_aiq_sharp_attrib_v4_t get_sharpV4_attr;
135     get_sharpV4_attr.sync.sync_mode = sync_mode;
136     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &get_sharpV4_attr);
137     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV4_attr.sync.done);
138     return ret;
139 }
140 
141 
sample_sharp_setAuto_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)142 XCamReturn sample_sharp_setAuto_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
143 {
144     XCamReturn ret = XCAM_RETURN_NO_ERROR;
145     rk_aiq_sharp_attrib_v33_t sharpV33_attr;
146     sharpV33_attr.sync.sync_mode = sync_mode;
147     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &sharpV33_attr);
148     sharpV33_attr.sync.sync_mode = sync_mode;
149     sharpV33_attr.eMode = ASHARP_V33_OP_MODE_AUTO;
150     sharpV33_attr.stAuto.stParams.enable = 1;
151     sharpV33_attr.stAuto.stParams.kernel_sigma_enable = 1;
152     sharpV33_attr.stAuto.stParams.sharp_ratio_seperate_en = 0;
153 
154     sharpV33_attr.stAuto.stParams.Center_Mode = 0;
155     sharpV33_attr.stAuto.stParams.center_x = 0;
156     sharpV33_attr.stAuto.stParams.center_y = 0;
157 
158     for(int i = 0; i < RK_SHARP_V4_MAX_ISO_NUM; i++) {
159         sharpV33_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
160 
161         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[0] = 0;
162         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[1] = 64;
163         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[2] = 128;
164         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[3] = 256;
165         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[4] = 384;
166         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[5] = 640;
167         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[6] = 896;
168         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[7] = 1024;
169 
170         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[0] = 16;
171         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[1] = 16;
172         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[2] = 16;
173         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[3] = 16;
174         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[4] = 16;
175         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[5] = 16;
176         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[6] = 16;
177         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[7] = 16;
178 
179         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[0] = 256;
180         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[1] = 256;
181         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[2] = 256;
182         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[3] = 256;
183         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[4] = 256;
184         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[5] = 256;
185         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[6] = 256;
186         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[7] = 256;
187 
188         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_gain = 1.0;
189         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_add = 0.0;
190         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_ratio = 0.5;
191         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gaus_ratio = 0.0;
192         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio = 10.0;
193         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio_0 = 10.0;
194         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio_1 = 10.0;
195         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_gain = 1.0;
196         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_add = 0.0;
197         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_ratio = 0.5;
198 
199         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[0] = 0.2042;
200         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[1] = 0.1238;
201         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[2] = 0.0751;
202 
203         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[0] = 0.2042;
204         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[1] = 0.1238;
205         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[2] = 0.0751;
206 
207 
208         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[0] = 0.0935;
209         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[1] = 0.0724;
210         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[2] = 0.0561;
211         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[3] = 0.0337;
212         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[4] = 0.0261;
213         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[5] = 0.0121;
214 
215         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[0] = 0.0935;
216         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[1] = 0.0724;
217         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[2] = 0.0561;
218         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[3] = 0.0337;
219         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[4] = 0.0261;
220         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[5] = 0.0121;
221 
222         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[0] = 0.0935;
223         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[1] = 0.0724;
224         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[2] = 0.0561;
225         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[3] = 0.0337;
226         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[4] = 0.0261;
227         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[5] = 0.0121;
228 
229         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_sigma = 1.0;
230         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_sigma = 1.0;
231         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma = 1.0;
232         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius = 2.0;
233 
234         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma_0 = 1.0;
235         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius_0 = 2.0;
236         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma_1 = 1.0;
237         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius_1 = 2.0;
238 
239         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].global_gain = 1.0;
240         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].global_gain_alpha = 0.0;
241         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_gainscale = 1.0;
242         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].exgain_bypass = 0;
243         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].noiseclip_strength = 1;
244         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].enhance_bit = 3;
245         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].noiseclip_mode = 0;
246         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].noise_sigma_clip = 1023;
247         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].global_hf_clip_pos = 0;
248 
249         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[0] = 1;
250         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[1] = 1;
251         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[2] = 1;
252         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[3] = 1;
253         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[4] = 1;
254         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[5] = 1;
255         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[6] = 1;
256         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[7] = 1;
257         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[8] = 1;
258         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[9] = 1;
259         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[10] = 1;
260         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[11] = 1;
261         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[12] = 1;
262         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[13] = 1;
263 
264         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[0] = 1;
265         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[1] = 1;
266         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[2] = 1;
267         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[3] = 1;
268         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[4] = 1;
269         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[5] = 1;
270         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[6] = 1;
271         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[7] = 1;
272         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[8] = 1;
273         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[9] = 1;
274         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[10] = 1;
275         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[11] = 1;
276         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[12] = 1;
277         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[13] = 1;
278         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[14] = 1;
279         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[15] = 1;
280         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[16] = 1;
281         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[17] = 1;
282         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[18] = 1;
283         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[19] = 1;
284         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[20] = 1;
285         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[21] = 1;
286 
287     }
288 
289     ret = rk_aiq_user_api2_asharpV33_SetAttrib(ctx, &sharpV33_attr);
290     printf("set asharp attri auto ret:%d \n\n", ret);
291 
292     rk_aiq_sharp_attrib_v33_t get_sharpV33_attr;
293     get_sharpV33_attr.sync.sync_mode = sync_mode;
294     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &get_sharpV33_attr);
295     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
296     return ret;
297 }
298 
sample_sharp_setAuto_v33Lite(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)299 XCamReturn sample_sharp_setAuto_v33Lite(const rk_aiq_sys_ctx_t* ctx,
300                                         rk_aiq_uapi_mode_sync_e sync_mode) {
301     XCamReturn ret = XCAM_RETURN_NO_ERROR;
302     rk_aiq_sharp_attrib_v33LT_t sharpV33_attr;
303     sharpV33_attr.sync.sync_mode = sync_mode;
304     ret                          = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &sharpV33_attr);
305     sharpV33_attr.sync.sync_mode = sync_mode;
306     sharpV33_attr.eMode          = ASHARP_V33_OP_MODE_AUTO;
307     sharpV33_attr.stAuto.stParams.enable              = 1;
308     sharpV33_attr.stAuto.stParams.kernel_sigma_enable = 1;
309     sharpV33_attr.stAuto.stParams.sharp_ratio_seperate_en = 0;
310 
311     sharpV33_attr.stAuto.stParams.Center_Mode = 0;
312     sharpV33_attr.stAuto.stParams.center_x    = 0;
313     sharpV33_attr.stAuto.stParams.center_y    = 0;
314 
315     for (int i = 0; i < RK_SHARP_V4_MAX_ISO_NUM; i++) {
316         sharpV33_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
317 
318         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[0] = 0;
319         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[1] = 64;
320         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[2] = 128;
321         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[3] = 256;
322         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[4] = 384;
323         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[5] = 640;
324         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[6] = 896;
325         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_point[7] = 1024;
326 
327         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[0] = 16;
328         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[1] = 16;
329         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[2] = 16;
330         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[3] = 16;
331         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[4] = 16;
332         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[5] = 16;
333         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[6] = 16;
334         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].luma_sigma[7] = 16;
335 
336         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[0] = 256;
337         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[1] = 256;
338         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[2] = 256;
339         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[3] = 256;
340         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[4] = 256;
341         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[5] = 256;
342         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[6] = 256;
343         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip[7] = 256;
344 
345         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[0] = 256;
346         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[1] = 256;
347         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[2] = 256;
348         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[3] = 256;
349         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[4] = 256;
350         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[5] = 256;
351         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[6] = 256;
352         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hf_clip_neg[7] = 256;
353 
354         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[0] = 256;
355         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[1] = 256;
356         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[2] = 256;
357         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[3] = 256;
358         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[4] = 256;
359         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[5] = 256;
360         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[6] = 256;
361         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_sharp_strength[7] = 256;
362 
363         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].clip_hf_mode = 0;
364         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].add_mode     = 0;
365 
366         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_gain    = 1.0;
367         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_add     = 0.0;
368         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].pbf_ratio   = 0.5;
369         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gaus_ratio  = 0.0;
370         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio = 10.0;
371         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_gain     = 1.0;
372         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_add      = 0.0;
373         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].bf_ratio    = 0.5;
374         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio_0 = 10.0;
375         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].sharp_ratio_1 = 10.0;
376 
377         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[0] = 0.2042;
378         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[1] = 0.1238;
379         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_coeff[2] = 0.0751;
380 
381         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[0] = 0.2042;
382         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[1] = 0.1238;
383         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_coeff[2] = 0.0751;
384 
385         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[0] = 0.0935;
386         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[1] = 0.0724;
387         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[2] = 0.0561;
388         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[3] = 0.0337;
389         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[4] = 0.0261;
390         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff[5] = 0.0121;
391 
392         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[0] = 0.0935;
393         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[1] = 0.0724;
394         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[2] = 0.0561;
395         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[3] = 0.0337;
396         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[4] = 0.0261;
397         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_0[5] = 0.0121;
398 
399         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[0] = 0.0935;
400         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[1] = 0.0724;
401         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[2] = 0.0561;
402         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[3] = 0.0337;
403         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[4] = 0.0261;
404         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_coeff_1[5] = 0.0121;
405 
406         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].prefilter_sigma         = 1.0;
407         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].hfBilateralFilter_sigma = 1.0;
408         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma    = 1.0;
409         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius   = 2.0;
410 
411         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma_0 = 1.0;
412         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius_0 = 2.0;
413         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_sigma_1 = 1.0;
414         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].GaussianFilter_radius_1 = 2.0;
415 
416         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].global_gain       = 1.0;
417         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].global_gain_alpha = 0.0;
418         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].local_gainscale   = 1.0;
419         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].exgain_bypass     = 0;
420 
421         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[0]  = 1;
422         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[1]  = 1;
423         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[2]  = 1;
424         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[3]  = 1;
425         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[4]  = 1;
426         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[5]  = 1;
427         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[6]  = 1;
428         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[7]  = 1;
429         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[8]  = 1;
430         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[9]  = 1;
431         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[10] = 1;
432         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[11] = 1;
433         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[12] = 1;
434         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].gain_adj_sharp_strength[13] = 1;
435 
436         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[0]  = 1;
437         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[1]  = 1;
438         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[2]  = 1;
439         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[3]  = 1;
440         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[4]  = 1;
441         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[5]  = 1;
442         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[6]  = 1;
443         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[7]  = 1;
444         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[8]  = 1;
445         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[9]  = 1;
446         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[10] = 1;
447         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[11] = 1;
448         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[12] = 1;
449         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[13] = 1;
450         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[14] = 1;
451         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[15] = 1;
452         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[16] = 1;
453         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[17] = 1;
454         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[18] = 1;
455         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[19] = 1;
456         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[20] = 1;
457         sharpV33_attr.stAuto.stParams.sharpParamsISO[i].dis_adj_sharp_strength[21] = 1;
458     }
459 
460     ret = rk_aiq_user_api2_asharpV33Lite_SetAttrib(ctx, &sharpV33_attr);
461     printf("set asharp attri auto ret:%d \n\n", ret);
462 
463     rk_aiq_sharp_attrib_v33LT_t get_sharpV33_attr;
464     get_sharpV33_attr.sync.sync_mode = sync_mode;
465     ret = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &get_sharpV33_attr);
466     printf("get asharp v33LT attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
467     return ret;
468 }
469 
sample_sharp_setManual_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)470 XCamReturn sample_sharp_setManual_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
471 {
472     XCamReturn ret = XCAM_RETURN_NO_ERROR;
473 
474     rk_aiq_sharp_attrib_v4_t sharpV4_attr;
475     sharpV4_attr.sync.sync_mode = sync_mode;
476     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &sharpV4_attr);
477     sharpV4_attr.sync.sync_mode = sync_mode;
478     sharpV4_attr.eMode = ASHARP4_OP_MODE_MANUAL;
479     sharpV4_attr.stManual.stSelect.enable = 1;
480 
481     sharpV4_attr.stManual.stSelect.luma_point[0] = 0;
482     sharpV4_attr.stManual.stSelect.luma_point[1] = 64;
483     sharpV4_attr.stManual.stSelect.luma_point[2] = 128;
484     sharpV4_attr.stManual.stSelect.luma_point[3] = 256;
485     sharpV4_attr.stManual.stSelect.luma_point[4] = 384;
486     sharpV4_attr.stManual.stSelect.luma_point[5] = 640;
487     sharpV4_attr.stManual.stSelect.luma_point[6] = 896;
488     sharpV4_attr.stManual.stSelect.luma_point[7] = 1024;
489 
490     sharpV4_attr.stManual.stSelect.luma_sigma[0] = 16;
491     sharpV4_attr.stManual.stSelect.luma_sigma[1] = 16;
492     sharpV4_attr.stManual.stSelect.luma_sigma[2] = 16;
493     sharpV4_attr.stManual.stSelect.luma_sigma[3] = 16;
494     sharpV4_attr.stManual.stSelect.luma_sigma[4] = 16;
495     sharpV4_attr.stManual.stSelect.luma_sigma[5] = 16;
496     sharpV4_attr.stManual.stSelect.luma_sigma[6] = 16;
497     sharpV4_attr.stManual.stSelect.luma_sigma[7] = 16;
498 
499     sharpV4_attr.stManual.stSelect.hf_clip[0] = 128;
500     sharpV4_attr.stManual.stSelect.hf_clip[1] = 128;
501     sharpV4_attr.stManual.stSelect.hf_clip[2] = 128;
502     sharpV4_attr.stManual.stSelect.hf_clip[3] = 128;
503     sharpV4_attr.stManual.stSelect.hf_clip[4] = 128;
504     sharpV4_attr.stManual.stSelect.hf_clip[5] = 128;
505     sharpV4_attr.stManual.stSelect.hf_clip[6] = 128;
506     sharpV4_attr.stManual.stSelect.hf_clip[7] = 128;
507 
508     sharpV4_attr.stManual.stSelect.local_sharp_strength[0] = 256;
509     sharpV4_attr.stManual.stSelect.local_sharp_strength[1] = 256;
510     sharpV4_attr.stManual.stSelect.local_sharp_strength[2] = 256;
511     sharpV4_attr.stManual.stSelect.local_sharp_strength[3] = 256;
512     sharpV4_attr.stManual.stSelect.local_sharp_strength[4] = 256;
513     sharpV4_attr.stManual.stSelect.local_sharp_strength[5] = 256;
514     sharpV4_attr.stManual.stSelect.local_sharp_strength[6] = 256;
515     sharpV4_attr.stManual.stSelect.local_sharp_strength[7] = 256;
516 
517 
518     sharpV4_attr.stManual.stSelect.pbf_gain = 1.0;
519     sharpV4_attr.stManual.stSelect.pbf_add = 0.0;
520     sharpV4_attr.stManual.stSelect.pbf_ratio = 0.5;
521     sharpV4_attr.stManual.stSelect.gaus_ratio = 0.0;
522     sharpV4_attr.stManual.stSelect.sharp_ratio = 10.0;
523     sharpV4_attr.stManual.stSelect.bf_gain = 1.0;
524     sharpV4_attr.stManual.stSelect.bf_add = 0.0;
525     sharpV4_attr.stManual.stSelect.bf_ratio = 0.5;
526 
527     sharpV4_attr.stManual.stSelect.prefilter_coeff[0] = 0.2042;
528     sharpV4_attr.stManual.stSelect.prefilter_coeff[1] = 0.1238;
529     sharpV4_attr.stManual.stSelect.prefilter_coeff[2] = 0.0751;
530 
531     sharpV4_attr.stManual.stSelect.hfBilateralFilter_coeff[0] = 0.2042;
532     sharpV4_attr.stManual.stSelect.hfBilateralFilter_coeff[1] = 0.1238;
533     sharpV4_attr.stManual.stSelect.hfBilateralFilter_coeff[2] = 0.0751;
534 
535 
536     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[0] = 0.0935;
537     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[1] = 0.0724;
538     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[2] = 0.0561;
539     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[3] = 0.0337;
540     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[4] = 0.0261;
541     sharpV4_attr.stManual.stSelect.GaussianFilter_coeff[5] = 0.0121;
542 
543     sharpV4_attr.stManual.stSelect.kernel_sigma_enable = 0;
544     sharpV4_attr.stManual.stSelect.prefilter_sigma = 1.0;
545     sharpV4_attr.stManual.stSelect.hfBilateralFilter_sigma = 1.0;
546     sharpV4_attr.stManual.stSelect.GaussianFilter_sigma = 1.0;
547     sharpV4_attr.stManual.stSelect.GaussianFilter_radius = 2.0;
548 
549     ret = rk_aiq_user_api2_asharpV4_SetAttrib(ctx, &sharpV4_attr);
550     printf("set sharp v4 attri manual ret:%d \n\n", ret);
551 
552     rk_aiq_sharp_attrib_v4_t get_sharpV4_attr;
553     get_sharpV4_attr.sync.sync_mode = sync_mode;
554     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &get_sharpV4_attr);
555     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV4_attr.sync.done);
556 
557     return ret;
558 }
559 
560 
sample_sharp_setManual_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)561 XCamReturn sample_sharp_setManual_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
562 {
563     XCamReturn ret = XCAM_RETURN_NO_ERROR;
564 
565     rk_aiq_sharp_attrib_v33_t sharpV33_attr;
566     sharpV33_attr.sync.sync_mode = sync_mode;
567     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &sharpV33_attr);
568     sharpV33_attr.sync.sync_mode = sync_mode;
569     sharpV33_attr.eMode = ASHARP_V33_OP_MODE_MANUAL;
570     sharpV33_attr.stManual.stSelect.enable = 1;
571     sharpV33_attr.stManual.stSelect.kernel_sigma_enable = 0;
572     sharpV33_attr.stAuto.stParams.sharp_ratio_seperate_en = 0;
573 
574     sharpV33_attr.stManual.stSelect.luma_point[0] = 0;
575     sharpV33_attr.stManual.stSelect.luma_point[1] = 64;
576     sharpV33_attr.stManual.stSelect.luma_point[2] = 128;
577     sharpV33_attr.stManual.stSelect.luma_point[3] = 256;
578     sharpV33_attr.stManual.stSelect.luma_point[4] = 384;
579     sharpV33_attr.stManual.stSelect.luma_point[5] = 640;
580     sharpV33_attr.stManual.stSelect.luma_point[6] = 896;
581     sharpV33_attr.stManual.stSelect.luma_point[7] = 1024;
582 
583     sharpV33_attr.stManual.stSelect.luma_sigma[0] = 16;
584     sharpV33_attr.stManual.stSelect.luma_sigma[1] = 16;
585     sharpV33_attr.stManual.stSelect.luma_sigma[2] = 16;
586     sharpV33_attr.stManual.stSelect.luma_sigma[3] = 16;
587     sharpV33_attr.stManual.stSelect.luma_sigma[4] = 16;
588     sharpV33_attr.stManual.stSelect.luma_sigma[5] = 16;
589     sharpV33_attr.stManual.stSelect.luma_sigma[6] = 16;
590     sharpV33_attr.stManual.stSelect.luma_sigma[7] = 16;
591 
592     sharpV33_attr.stManual.stSelect.hf_clip[0] = 256;
593     sharpV33_attr.stManual.stSelect.hf_clip[1] = 256;
594     sharpV33_attr.stManual.stSelect.hf_clip[2] = 256;
595     sharpV33_attr.stManual.stSelect.hf_clip[3] = 256;
596     sharpV33_attr.stManual.stSelect.hf_clip[4] = 256;
597     sharpV33_attr.stManual.stSelect.hf_clip[5] = 256;
598     sharpV33_attr.stManual.stSelect.hf_clip[6] = 256;
599     sharpV33_attr.stManual.stSelect.hf_clip[7] = 256;
600 
601     sharpV33_attr.stManual.stSelect.pbf_gain = 1.0;
602     sharpV33_attr.stManual.stSelect.pbf_add = 0.0;
603     sharpV33_attr.stManual.stSelect.pbf_ratio = 0.5;
604     sharpV33_attr.stManual.stSelect.gaus_ratio = 0.0;
605     sharpV33_attr.stManual.stSelect.sharp_ratio = 10.0;
606     sharpV33_attr.stManual.stSelect.bf_gain = 1.0;
607     sharpV33_attr.stManual.stSelect.bf_add = 0.0;
608     sharpV33_attr.stManual.stSelect.bf_ratio = 0.5;
609     sharpV33_attr.stManual.stSelect.sharp_ratio_0 = 10.0;
610     sharpV33_attr.stManual.stSelect.sharp_ratio_1 = 10.0;
611 
612     sharpV33_attr.stManual.stSelect.prefilter_coeff[0] = 0.2042;
613     sharpV33_attr.stManual.stSelect.prefilter_coeff[1] = 0.1238;
614     sharpV33_attr.stManual.stSelect.prefilter_coeff[2] = 0.0751;
615 
616     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[0] = 0.2042;
617     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[1] = 0.1238;
618     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[2] = 0.0751;
619 
620 
621     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[0] = 0.0935;
622     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[1] = 0.0724;
623     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[2] = 0.0561;
624     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[3] = 0.0337;
625     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[4] = 0.0261;
626     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[5] = 0.0121;
627 
628     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[0] = 0.0935;
629     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[1] = 0.0724;
630     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[2] = 0.0561;
631     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[3] = 0.0337;
632     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[4] = 0.0261;
633     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[5] = 0.0121;
634 
635     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[0] = 0.0935;
636     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[1] = 0.0724;
637     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[2] = 0.0561;
638     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[3] = 0.0337;
639     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[4] = 0.0261;
640     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[5] = 0.0121;
641 
642 
643 
644     sharpV33_attr.stManual.stSelect.prefilter_sigma = 1.0;
645     sharpV33_attr.stManual.stSelect.hfBilateralFilter_sigma = 1.0;
646     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma = 1.0;
647     sharpV33_attr.stManual.stSelect.GaussianFilter_radius = 2.0;
648 
649     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma_0 = 1.0;
650     sharpV33_attr.stManual.stSelect.GaussianFilter_radius_0 = 2.0;
651     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma_1 = 1.0;
652     sharpV33_attr.stManual.stSelect.GaussianFilter_radius_1 = 2.0;
653 
654     sharpV33_attr.stManual.stSelect.global_gain = 1.0;
655     sharpV33_attr.stManual.stSelect.global_gain_alpha = 0.0;
656     sharpV33_attr.stManual.stSelect.local_gainscale = 1.0;
657     sharpV33_attr.stManual.stSelect.exgain_bypass = 0;
658     sharpV33_attr.stManual.stSelect.noiseclip_strength = 1;
659     sharpV33_attr.stManual.stSelect.enhance_bit = 3;
660     sharpV33_attr.stManual.stSelect.noiseclip_mode = 0;
661     sharpV33_attr.stManual.stSelect.noise_sigma_clip = 1023;
662     sharpV33_attr.stManual.stSelect.global_hf_clip_pos = 0;
663 
664     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[0] = 1;
665     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[1] = 1;
666     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[2] = 1;
667     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[3] = 1;
668     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[4] = 1;
669     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[5] = 1;
670     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[6] = 1;
671     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[7] = 1;
672     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[8] = 1;
673     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[9] = 1;
674     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[10] = 1;
675     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[11] = 1;
676     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[12] = 1;
677     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[13] = 1;
678 
679     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[0] = 1;
680     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[1] = 1;
681     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[2] = 1;
682     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[3] = 1;
683     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[4] = 1;
684     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[5] = 1;
685     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[6] = 1;
686     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[7] = 1;
687     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[8] = 1;
688     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[9] = 1;
689     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[10] = 1;
690     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[11] = 1;
691     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[12] = 1;
692     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[13] = 1;
693     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[14] = 1;
694     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[15] = 1;
695     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[16] = 1;
696     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[17] = 1;
697     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[18] = 1;
698     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[19] = 1;
699     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[20] = 1;
700     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[21] = 1;
701 
702     ret = rk_aiq_user_api2_asharpV33_SetAttrib(ctx, &sharpV33_attr);
703     printf("set sharp v4 attri manual ret:%d \n\n", ret);
704 
705     rk_aiq_sharp_attrib_v33_t get_sharpV33_attr;
706     get_sharpV33_attr.sync.sync_mode = sync_mode;
707     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &get_sharpV33_attr);
708     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
709 
710     return ret;
711 }
712 
sample_sharp_setManual_v33Lite(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)713 XCamReturn sample_sharp_setManual_v33Lite(const rk_aiq_sys_ctx_t* ctx,
714         rk_aiq_uapi_mode_sync_e sync_mode) {
715     XCamReturn ret = XCAM_RETURN_NO_ERROR;
716 
717     rk_aiq_sharp_attrib_v33LT_t sharpV33_attr;
718     sharpV33_attr.sync.sync_mode = sync_mode;
719     ret                          = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &sharpV33_attr);
720     sharpV33_attr.sync.sync_mode = sync_mode;
721     sharpV33_attr.eMode          = ASHARP_V33_OP_MODE_MANUAL;
722     sharpV33_attr.stManual.stSelect.enable              = 1;
723     sharpV33_attr.stManual.stSelect.kernel_sigma_enable = 0;
724     sharpV33_attr.stAuto.stParams.sharp_ratio_seperate_en = 0;
725 
726     sharpV33_attr.stManual.stSelect.luma_point[0] = 0;
727     sharpV33_attr.stManual.stSelect.luma_point[1] = 64;
728     sharpV33_attr.stManual.stSelect.luma_point[2] = 128;
729     sharpV33_attr.stManual.stSelect.luma_point[3] = 256;
730     sharpV33_attr.stManual.stSelect.luma_point[4] = 384;
731     sharpV33_attr.stManual.stSelect.luma_point[5] = 640;
732     sharpV33_attr.stManual.stSelect.luma_point[6] = 896;
733     sharpV33_attr.stManual.stSelect.luma_point[7] = 1024;
734 
735     sharpV33_attr.stManual.stSelect.luma_sigma[0] = 16;
736     sharpV33_attr.stManual.stSelect.luma_sigma[1] = 16;
737     sharpV33_attr.stManual.stSelect.luma_sigma[2] = 16;
738     sharpV33_attr.stManual.stSelect.luma_sigma[3] = 16;
739     sharpV33_attr.stManual.stSelect.luma_sigma[4] = 16;
740     sharpV33_attr.stManual.stSelect.luma_sigma[5] = 16;
741     sharpV33_attr.stManual.stSelect.luma_sigma[6] = 16;
742     sharpV33_attr.stManual.stSelect.luma_sigma[7] = 16;
743 
744     sharpV33_attr.stManual.stSelect.hf_clip[0] = 256;
745     sharpV33_attr.stManual.stSelect.hf_clip[1] = 256;
746     sharpV33_attr.stManual.stSelect.hf_clip[2] = 256;
747     sharpV33_attr.stManual.stSelect.hf_clip[3] = 256;
748     sharpV33_attr.stManual.stSelect.hf_clip[4] = 256;
749     sharpV33_attr.stManual.stSelect.hf_clip[5] = 256;
750     sharpV33_attr.stManual.stSelect.hf_clip[6] = 256;
751     sharpV33_attr.stManual.stSelect.hf_clip[7] = 256;
752 
753     sharpV33_attr.stManual.stSelect.hf_clip_neg[0] = 256;
754     sharpV33_attr.stManual.stSelect.hf_clip_neg[1] = 256;
755     sharpV33_attr.stManual.stSelect.hf_clip_neg[2] = 256;
756     sharpV33_attr.stManual.stSelect.hf_clip_neg[3] = 256;
757     sharpV33_attr.stManual.stSelect.hf_clip_neg[4] = 256;
758     sharpV33_attr.stManual.stSelect.hf_clip_neg[5] = 256;
759     sharpV33_attr.stManual.stSelect.hf_clip_neg[6] = 256;
760     sharpV33_attr.stManual.stSelect.hf_clip_neg[7] = 256;
761 
762     sharpV33_attr.stManual.stSelect.local_sharp_strength[0] = 256;
763     sharpV33_attr.stManual.stSelect.local_sharp_strength[1] = 256;
764     sharpV33_attr.stManual.stSelect.local_sharp_strength[2] = 256;
765     sharpV33_attr.stManual.stSelect.local_sharp_strength[3] = 256;
766     sharpV33_attr.stManual.stSelect.local_sharp_strength[4] = 256;
767     sharpV33_attr.stManual.stSelect.local_sharp_strength[5] = 256;
768     sharpV33_attr.stManual.stSelect.local_sharp_strength[6] = 256;
769     sharpV33_attr.stManual.stSelect.local_sharp_strength[7] = 256;
770 
771     sharpV33_attr.stManual.stSelect.clip_hf_mode = 0;
772     sharpV33_attr.stManual.stSelect.add_mode     = 0;
773 
774     sharpV33_attr.stManual.stSelect.pbf_gain    = 1.0;
775     sharpV33_attr.stManual.stSelect.pbf_add     = 0.0;
776     sharpV33_attr.stManual.stSelect.pbf_ratio   = 0.5;
777     sharpV33_attr.stManual.stSelect.gaus_ratio  = 0.0;
778     sharpV33_attr.stManual.stSelect.sharp_ratio = 10.0;
779     sharpV33_attr.stManual.stSelect.bf_gain     = 1.0;
780     sharpV33_attr.stManual.stSelect.bf_add      = 0.0;
781     sharpV33_attr.stManual.stSelect.bf_ratio    = 0.5;
782     sharpV33_attr.stManual.stSelect.sharp_ratio_0 = 10.0;
783     sharpV33_attr.stManual.stSelect.sharp_ratio_1 = 10.0;
784 
785     sharpV33_attr.stManual.stSelect.prefilter_coeff[0] = 0.2042;
786     sharpV33_attr.stManual.stSelect.prefilter_coeff[1] = 0.1238;
787     sharpV33_attr.stManual.stSelect.prefilter_coeff[2] = 0.0751;
788 
789     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[0] = 0.2042;
790     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[1] = 0.1238;
791     sharpV33_attr.stManual.stSelect.hfBilateralFilter_coeff[2] = 0.0751;
792 
793     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[0] = 0.0935;
794     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[1] = 0.0724;
795     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[2] = 0.0561;
796     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[3] = 0.0337;
797     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[4] = 0.0261;
798     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff[5] = 0.0121;
799 
800     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[0] = 0.0935;
801     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[1] = 0.0724;
802     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[2] = 0.0561;
803     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[3] = 0.0337;
804     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[4] = 0.0261;
805     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_0[5] = 0.0121;
806 
807     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[0] = 0.0935;
808     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[1] = 0.0724;
809     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[2] = 0.0561;
810     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[3] = 0.0337;
811     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[4] = 0.0261;
812     sharpV33_attr.stManual.stSelect.GaussianFilter_coeff_1[5] = 0.0121;
813 
814     sharpV33_attr.stManual.stSelect.prefilter_sigma         = 1.0;
815     sharpV33_attr.stManual.stSelect.hfBilateralFilter_sigma = 1.0;
816     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma    = 1.0;
817     sharpV33_attr.stManual.stSelect.GaussianFilter_radius   = 2.0;
818 
819     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma_0    = 1.0;
820     sharpV33_attr.stManual.stSelect.GaussianFilter_radius_0   = 2.0;
821     sharpV33_attr.stManual.stSelect.GaussianFilter_sigma_1    = 1.0;
822     sharpV33_attr.stManual.stSelect.GaussianFilter_radius_1   = 2.0;
823 
824     sharpV33_attr.stManual.stSelect.global_gain       = 1.0;
825     sharpV33_attr.stManual.stSelect.global_gain_alpha = 0.0;
826     sharpV33_attr.stManual.stSelect.local_gainscale   = 1.0;
827     sharpV33_attr.stManual.stSelect.exgain_bypass     = 0;
828 
829     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[0]  = 1;
830     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[1]  = 1;
831     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[2]  = 1;
832     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[3]  = 1;
833     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[4]  = 1;
834     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[5]  = 1;
835     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[6]  = 1;
836     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[7]  = 1;
837     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[8]  = 1;
838     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[9]  = 1;
839     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[10] = 1;
840     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[11] = 1;
841     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[12] = 1;
842     sharpV33_attr.stManual.stSelect.gain_adj_sharp_strength[13] = 1;
843 
844     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[0]  = 1;
845     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[1]  = 1;
846     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[2]  = 1;
847     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[3]  = 1;
848     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[4]  = 1;
849     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[5]  = 1;
850     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[6]  = 1;
851     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[7]  = 1;
852     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[8]  = 1;
853     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[9]  = 1;
854     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[10] = 1;
855     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[11] = 1;
856     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[12] = 1;
857     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[13] = 1;
858     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[14] = 1;
859     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[15] = 1;
860     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[16] = 1;
861     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[17] = 1;
862     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[18] = 1;
863     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[19] = 1;
864     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[20] = 1;
865     sharpV33_attr.stManual.stSelect.dis_adj_sharp_strength[21] = 1;
866 
867     ret = rk_aiq_user_api2_asharpV33Lite_SetAttrib(ctx, &sharpV33_attr);
868     printf("set sharp v4 attri manual ret:%d \n\n", ret);
869 
870     rk_aiq_sharp_attrib_v33LT_t get_sharpV33_attr;
871     get_sharpV33_attr.sync.sync_mode = sync_mode;
872     ret = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &get_sharpV33_attr);
873     printf("get asharp v33Lite attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
874 
875     return ret;
876 }
877 
sample_sharp_setReg_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)878 XCamReturn sample_sharp_setReg_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
879 {
880     XCamReturn ret = XCAM_RETURN_NO_ERROR;
881 
882     rk_aiq_sharp_attrib_v4_t sharpV4_attr;
883     sharpV4_attr.sync.sync_mode = sync_mode;
884     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &sharpV4_attr);
885     sharpV4_attr.sync.sync_mode = sync_mode;
886     sharpV4_attr.eMode = ASHARP4_OP_MODE_REG_MANUAL;
887 
888     // SHARP_SHARP_EN (0x0000)
889     sharpV4_attr.stManual.stFix.sharp_clk_dis = 0;
890     sharpV4_attr.stManual.stFix.sharp_exgain_bypass = 0;
891     sharpV4_attr.stManual.stFix.sharp_center_mode = 0;
892     sharpV4_attr.stManual.stFix.sharp_bypass = 0;
893     sharpV4_attr.stManual.stFix.sharp_en = 1;
894 
895     // SHARP_SHARP_RATIO  (0x0004)
896     sharpV4_attr.stManual.stFix.sharp_sharp_ratio = 0x28;
897     sharpV4_attr.stManual.stFix.sharp_bf_ratio = 0x80;
898     sharpV4_attr.stManual.stFix.sharp_gaus_ratio = 0x00;
899     sharpV4_attr.stManual.stFix.sharp_pbf_ratio = 0x33;
900 
901     // SHARP_SHARP_LUMA_DX (0x0008)
902     sharpV4_attr.stManual.stFix.sharp_luma_dx[0] = 0x6;
903     sharpV4_attr.stManual.stFix.sharp_luma_dx[1] = 0x6;
904     sharpV4_attr.stManual.stFix.sharp_luma_dx[2] = 0x7;
905     sharpV4_attr.stManual.stFix.sharp_luma_dx[3] = 0x7;
906     sharpV4_attr.stManual.stFix.sharp_luma_dx[4] = 0x8;
907     sharpV4_attr.stManual.stFix.sharp_luma_dx[5] = 0x8;
908     sharpV4_attr.stManual.stFix.sharp_luma_dx[6] = 0x7;
909 
910     // SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
911     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[0] = 0x115;
912     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[1] = 0x0c1;
913     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[2] = 0x094;
914     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[3] = 0x094;
915     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[4] = 0x065;
916     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[5] = 0x078;
917     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[6] = 0x094;
918     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_inv[7] = 0x094;
919 
920     // SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 -  0x0020)
921     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[0] = 0x1c7;
922     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[1] = 0x13b;
923     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[2] = 0x0f1;
924     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[3] = 0x0f1;
925     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[4] = 0x0a4;
926     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[5] = 0x0c3;
927     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[6] = 0x0f1;
928     sharpV4_attr.stManual.stFix.sharp_bf_sigma_inv[7] = 0x0f1;
929 
930     // SHARP_SHARP_SIGMA_SHIFT (0x00024)
931     sharpV4_attr.stManual.stFix.sharp_bf_sigma_shift = 0x6;
932     sharpV4_attr.stManual.stFix.sharp_pbf_sigma_shift = 0x7;
933 
934     // SHARP_SHARP_EHF_TH_0 (0x0028 -  0x0030)
935     sharpV4_attr.stManual.stFix.sharp_ehf_th[0] = 0x80;
936     sharpV4_attr.stManual.stFix.sharp_ehf_th[1] = 0x80;
937     sharpV4_attr.stManual.stFix.sharp_ehf_th[2] = 0x80;
938     sharpV4_attr.stManual.stFix.sharp_ehf_th[3] = 0x80;
939     sharpV4_attr.stManual.stFix.sharp_ehf_th[4] = 0x80;
940     sharpV4_attr.stManual.stFix.sharp_ehf_th[5] = 0x80;
941     sharpV4_attr.stManual.stFix.sharp_ehf_th[6] = 0x80;
942     sharpV4_attr.stManual.stFix.sharp_ehf_th[7] = 0x80;
943 
944     // SHARP_SHARP_CLIP_HF_0 (0x0034 -  0x003c)
945     sharpV4_attr.stManual.stFix.sharp_clip_hf[0] = 0x40;
946     sharpV4_attr.stManual.stFix.sharp_clip_hf[1] = 0x40;
947     sharpV4_attr.stManual.stFix.sharp_clip_hf[2] = 0x40;
948     sharpV4_attr.stManual.stFix.sharp_clip_hf[3] = 0x40;
949     sharpV4_attr.stManual.stFix.sharp_clip_hf[4] = 0x40;
950     sharpV4_attr.stManual.stFix.sharp_clip_hf[5] = 0x40;
951     sharpV4_attr.stManual.stFix.sharp_clip_hf[6] = 0x40;
952     sharpV4_attr.stManual.stFix.sharp_clip_hf[7] = 0x40;
953 
954     // SHARP_SHARP_PBF_COEF (0x00040)
955     sharpV4_attr.stManual.stFix.sharp_pbf_coef[0] = 0x18;
956     sharpV4_attr.stManual.stFix.sharp_pbf_coef[1] = 0x10;
957     sharpV4_attr.stManual.stFix.sharp_pbf_coef[2] = 0x0a;
958 
959     // SHARP_SHARP_BF_COEF (0x00044)
960     sharpV4_attr.stManual.stFix.sharp_bf_coef[0] = 0x18;
961     sharpV4_attr.stManual.stFix.sharp_bf_coef[1] = 0x10;
962     sharpV4_attr.stManual.stFix.sharp_bf_coef[2] = 0x0a;
963 
964     // SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
965     sharpV4_attr.stManual.stFix.sharp_gaus_coef[0] = 0x0c;
966     sharpV4_attr.stManual.stFix.sharp_gaus_coef[1] = 0x07;
967     sharpV4_attr.stManual.stFix.sharp_gaus_coef[2] = 0x06;
968     sharpV4_attr.stManual.stFix.sharp_gaus_coef[3] = 0x05;
969     sharpV4_attr.stManual.stFix.sharp_gaus_coef[4] = 0x04;
970     sharpV4_attr.stManual.stFix.sharp_gaus_coef[5] = 0x03;
971 
972 
973     ret = rk_aiq_user_api2_asharpV4_SetAttrib(ctx, &sharpV4_attr);
974     printf("set sharp v4 attri manual ret:%d \n\n", ret);
975 
976     rk_aiq_sharp_attrib_v4_t get_sharpV4_attr;
977     get_sharpV4_attr.sync.sync_mode = sync_mode;
978     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &get_sharpV4_attr);
979     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV4_attr.sync.done);
980 
981     return ret;
982 }
983 
984 
985 
sample_sharp_setReg_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)986 XCamReturn sample_sharp_setReg_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
987 {
988     XCamReturn ret = XCAM_RETURN_NO_ERROR;
989 
990     rk_aiq_sharp_attrib_v33_t sharpV33_attr;
991     sharpV33_attr.sync.sync_mode = sync_mode;
992     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &sharpV33_attr);
993     sharpV33_attr.sync.sync_mode = sync_mode;
994     sharpV33_attr.eMode = ASHARP_V33_OP_MODE_REG_MANUAL;
995 
996 
997     // SHARP_SHARP_EN (0x0000)sharp_noiseclip_mode
998     sharpV33_attr.stManual.stFix.sharp_noiseclip_mode = 0;
999     sharpV33_attr.stManual.stFix.sharp_radius_ds_mode = 0;
1000     sharpV33_attr.stManual.stFix.sharp_exgain_bypass = 0;
1001     sharpV33_attr.stManual.stFix.sharp_center_mode = 0;
1002     sharpV33_attr.stManual.stFix.sharp_bypass = 0;
1003     sharpV33_attr.stManual.stFix.sharp_en = 1;
1004 
1005     // SHARP_SHARP_RATIO  (0x0004)
1006     sharpV33_attr.stManual.stFix.sharp_sharp_ratio = 0x28;
1007     sharpV33_attr.stManual.stFix.sharp_bf_ratio = 0x80;
1008     sharpV33_attr.stManual.stFix.sharp_gaus_ratio = 0x00;
1009     sharpV33_attr.stManual.stFix.sharp_pbf_ratio = 0x33;
1010 
1011     // SHARP_SHARP_LUMA_DX (0x0008)
1012     sharpV33_attr.stManual.stFix.sharp_luma_dx[0] = 0x6;
1013     sharpV33_attr.stManual.stFix.sharp_luma_dx[1] = 0x6;
1014     sharpV33_attr.stManual.stFix.sharp_luma_dx[2] = 0x7;
1015     sharpV33_attr.stManual.stFix.sharp_luma_dx[3] = 0x7;
1016     sharpV33_attr.stManual.stFix.sharp_luma_dx[4] = 0x8;
1017     sharpV33_attr.stManual.stFix.sharp_luma_dx[5] = 0x8;
1018     sharpV33_attr.stManual.stFix.sharp_luma_dx[6] = 0x7;
1019 
1020     // SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
1021     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[0] = 0x115;
1022     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[1] = 0x0c1;
1023     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[2] = 0x094;
1024     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[3] = 0x094;
1025     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[4] = 0x065;
1026     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[5] = 0x078;
1027     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[6] = 0x094;
1028     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[7] = 0x094;
1029 
1030     // SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 -  0x0020)
1031     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[0] = 0x1c7;
1032     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[1] = 0x13b;
1033     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[2] = 0x0f1;
1034     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[3] = 0x0f1;
1035     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[4] = 0x0a4;
1036     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[5] = 0x0c3;
1037     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[6] = 0x0f1;
1038     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[7] = 0x0f1;
1039 
1040     // SHARP_SHARP_SIGMA_SHIFT (0x00024)
1041     sharpV33_attr.stManual.stFix.sharp_bf_sigma_shift = 0x6;
1042     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_shift = 0x7;
1043 
1044     // SHARP_SHARP_CLIP_HF_0 (0x0034 -  0x003c)
1045     sharpV33_attr.stManual.stFix.sharp_clip_hf[0] = 0x40;
1046     sharpV33_attr.stManual.stFix.sharp_clip_hf[1] = 0x40;
1047     sharpV33_attr.stManual.stFix.sharp_clip_hf[2] = 0x40;
1048     sharpV33_attr.stManual.stFix.sharp_clip_hf[3] = 0x40;
1049     sharpV33_attr.stManual.stFix.sharp_clip_hf[4] = 0x40;
1050     sharpV33_attr.stManual.stFix.sharp_clip_hf[5] = 0x40;
1051     sharpV33_attr.stManual.stFix.sharp_clip_hf[6] = 0x40;
1052     sharpV33_attr.stManual.stFix.sharp_clip_hf[7] = 0x40;
1053 
1054     // SHARP_SHARP_PBF_COEF (0x00040)
1055     sharpV33_attr.stManual.stFix.sharp_pbf_coef[0] = 0x18;
1056     sharpV33_attr.stManual.stFix.sharp_pbf_coef[1] = 0x10;
1057     sharpV33_attr.stManual.stFix.sharp_pbf_coef[2] = 0x0a;
1058 
1059     // SHARP_SHARP_BF_COEF (0x00044)
1060     sharpV33_attr.stManual.stFix.sharp_bf_coef[0] = 0x18;
1061     sharpV33_attr.stManual.stFix.sharp_bf_coef[1] = 0x10;
1062     sharpV33_attr.stManual.stFix.sharp_bf_coef[2] = 0x0a;
1063 
1064     // SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
1065     sharpV33_attr.stManual.stFix.sharp_gaus_coef[0] = 0x0c;
1066     sharpV33_attr.stManual.stFix.sharp_gaus_coef[1] = 0x07;
1067     sharpV33_attr.stManual.stFix.sharp_gaus_coef[2] = 0x06;
1068     sharpV33_attr.stManual.stFix.sharp_gaus_coef[3] = 0x05;
1069     sharpV33_attr.stManual.stFix.sharp_gaus_coef[4] = 0x04;
1070     sharpV33_attr.stManual.stFix.sharp_gaus_coef[5] = 0x03;
1071 
1072     // SHARP_GAIN (0x50)
1073     sharpV33_attr.stManual.stFix.sharp_global_gain = 0x10;
1074     sharpV33_attr.stManual.stFix.sharp_global_gain_alpha = 0x0;
1075     sharpV33_attr.stManual.stFix.sharp_local_gainscale = 0x80;
1076 
1077     // SHARP_GAIN_ADJUST (0x54)
1078     sharpV33_attr.stManual.stFix.sharp_gain_adj[0] = 0x400;
1079     sharpV33_attr.stManual.stFix.sharp_gain_adj[1] = 0x400;
1080     sharpV33_attr.stManual.stFix.sharp_gain_adj[2] = 0x400;
1081     sharpV33_attr.stManual.stFix.sharp_gain_adj[3] = 0x400;
1082     sharpV33_attr.stManual.stFix.sharp_gain_adj[4] = 0x400;
1083     sharpV33_attr.stManual.stFix.sharp_gain_adj[5] = 0x400;
1084     sharpV33_attr.stManual.stFix.sharp_gain_adj[6] = 0x400;
1085     sharpV33_attr.stManual.stFix.sharp_gain_adj[7] = 0x400;
1086     sharpV33_attr.stManual.stFix.sharp_gain_adj[8] = 0x400;
1087     sharpV33_attr.stManual.stFix.sharp_gain_adj[9] = 0x400;
1088     sharpV33_attr.stManual.stFix.sharp_gain_adj[10] = 0x400;
1089     sharpV33_attr.stManual.stFix.sharp_gain_adj[11] = 0x400;
1090     sharpV33_attr.stManual.stFix.sharp_gain_adj[12] = 0x400;
1091     sharpV33_attr.stManual.stFix.sharp_gain_adj[13] = 0x400;
1092 
1093     // SHARP_CENTER (0x70)
1094     sharpV33_attr.stManual.stFix.sharp_center_wid = 0x0;
1095     sharpV33_attr.stManual.stFix.sharp_center_wid = 0x0;
1096 
1097     // SHARP_GAIN_DIS_STRENGTH (0x74)
1098     sharpV33_attr.stManual.stFix.sharp_strength[0] = 0x80;
1099     sharpV33_attr.stManual.stFix.sharp_strength[1] = 0x80;
1100     sharpV33_attr.stManual.stFix.sharp_strength[2] = 0x80;
1101     sharpV33_attr.stManual.stFix.sharp_strength[3] = 0x80;
1102     sharpV33_attr.stManual.stFix.sharp_strength[4] = 0x80;
1103     sharpV33_attr.stManual.stFix.sharp_strength[5] = 0x80;
1104     sharpV33_attr.stManual.stFix.sharp_strength[6] = 0x80;
1105     sharpV33_attr.stManual.stFix.sharp_strength[7] = 0x80;
1106     sharpV33_attr.stManual.stFix.sharp_strength[8] = 0x80;
1107     sharpV33_attr.stManual.stFix.sharp_strength[9] = 0x80;
1108     sharpV33_attr.stManual.stFix.sharp_strength[10] = 0x80;
1109     sharpV33_attr.stManual.stFix.sharp_strength[11] = 0x80;
1110     sharpV33_attr.stManual.stFix.sharp_strength[12] = 0x80;
1111     sharpV33_attr.stManual.stFix.sharp_strength[13] = 0x80;
1112     sharpV33_attr.stManual.stFix.sharp_strength[14] = 0x80;
1113     sharpV33_attr.stManual.stFix.sharp_strength[15] = 0x80;
1114     sharpV33_attr.stManual.stFix.sharp_strength[16] = 0x80;
1115     sharpV33_attr.stManual.stFix.sharp_strength[17] = 0x80;
1116     sharpV33_attr.stManual.stFix.sharp_strength[18] = 0x80;
1117     sharpV33_attr.stManual.stFix.sharp_strength[19] = 0x80;
1118     sharpV33_attr.stManual.stFix.sharp_strength[20] = 0x80;
1119     sharpV33_attr.stManual.stFix.sharp_strength[21] = 0x80;
1120 
1121     // SHARP_TEXTURE (0x8c)
1122     sharpV33_attr.stManual.stFix.sharp_noise_sigma = 0x3ff;
1123     sharpV33_attr.stManual.stFix.sharp_enhance_bit = 0x5;
1124     sharpV33_attr.stManual.stFix.sharp_noise_strength = 0x400;
1125 
1126     ret = rk_aiq_user_api2_asharpV33_SetAttrib(ctx, &sharpV33_attr);
1127     printf("set sharp v4 attri manual ret:%d \n\n", ret);
1128 
1129     rk_aiq_sharp_attrib_v33_t get_sharpV33_attr;
1130     get_sharpV33_attr.sync.sync_mode = sync_mode;
1131     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &get_sharpV33_attr);
1132     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
1133 
1134     return ret;
1135 }
1136 
sample_sharp_setReg_v33Lite(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1137 XCamReturn sample_sharp_setReg_v33Lite(const rk_aiq_sys_ctx_t* ctx,
1138                                        rk_aiq_uapi_mode_sync_e sync_mode) {
1139     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1140 
1141     rk_aiq_sharp_attrib_v33LT_t sharpV33_attr;
1142     sharpV33_attr.sync.sync_mode = sync_mode;
1143     ret                          = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &sharpV33_attr);
1144     sharpV33_attr.sync.sync_mode = sync_mode;
1145     sharpV33_attr.eMode          = ASHARP_V33_OP_MODE_REG_MANUAL;
1146 
1147     // SHARP_SHARP_EN (0x0000)sharp_noiseclip_mode
1148     sharpV33_attr.stManual.stFix.sharp_radius_ds_mode = 0;
1149     sharpV33_attr.stManual.stFix.sharp_exgain_bypass  = 0;
1150     sharpV33_attr.stManual.stFix.sharp_center_mode    = 0;
1151     sharpV33_attr.stManual.stFix.sharp_bypass         = 0;
1152     sharpV33_attr.stManual.stFix.sharp_en             = 1;
1153 
1154     sharpV33_attr.stManual.stFix.sharp_clip_hf_mode = 0;
1155     sharpV33_attr.stManual.stFix.sharp_add_mode     = 0;
1156 
1157     // SHARP_SHARP_RATIO  (0x0004)
1158     sharpV33_attr.stManual.stFix.sharp_sharp_ratio = 0x28;
1159     sharpV33_attr.stManual.stFix.sharp_bf_ratio    = 0x80;
1160     sharpV33_attr.stManual.stFix.sharp_gaus_ratio  = 0x00;
1161     sharpV33_attr.stManual.stFix.sharp_pbf_ratio   = 0x33;
1162 
1163     // SHARP_SHARP_LUMA_DX (0x0008)
1164     sharpV33_attr.stManual.stFix.sharp_luma_dx[0] = 0x6;
1165     sharpV33_attr.stManual.stFix.sharp_luma_dx[1] = 0x6;
1166     sharpV33_attr.stManual.stFix.sharp_luma_dx[2] = 0x7;
1167     sharpV33_attr.stManual.stFix.sharp_luma_dx[3] = 0x7;
1168     sharpV33_attr.stManual.stFix.sharp_luma_dx[4] = 0x8;
1169     sharpV33_attr.stManual.stFix.sharp_luma_dx[5] = 0x8;
1170     sharpV33_attr.stManual.stFix.sharp_luma_dx[6] = 0x7;
1171 
1172     // SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
1173     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[0] = 0x115;
1174     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[1] = 0x0c1;
1175     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[2] = 0x094;
1176     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[3] = 0x094;
1177     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[4] = 0x065;
1178     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[5] = 0x078;
1179     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[6] = 0x094;
1180     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_inv[7] = 0x094;
1181 
1182     // SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 -  0x0020)
1183     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[0] = 0x1c7;
1184     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[1] = 0x13b;
1185     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[2] = 0x0f1;
1186     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[3] = 0x0f1;
1187     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[4] = 0x0a4;
1188     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[5] = 0x0c3;
1189     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[6] = 0x0f1;
1190     sharpV33_attr.stManual.stFix.sharp_bf_sigma_inv[7] = 0x0f1;
1191 
1192     // SHARP_SHARP_SIGMA_SHIFT (0x00024)
1193     sharpV33_attr.stManual.stFix.sharp_bf_sigma_shift  = 0x6;
1194     sharpV33_attr.stManual.stFix.sharp_pbf_sigma_shift = 0x7;
1195 
1196     // SHARP_SHARP_CLIP_HF_0 (0x0028 -  0x0030)
1197     sharpV33_attr.stManual.stFix.sharp_ehf_th[0] = 0x40;
1198     sharpV33_attr.stManual.stFix.sharp_ehf_th[1] = 0x40;
1199     sharpV33_attr.stManual.stFix.sharp_ehf_th[2] = 0x40;
1200     sharpV33_attr.stManual.stFix.sharp_ehf_th[3] = 0x40;
1201     sharpV33_attr.stManual.stFix.sharp_ehf_th[4] = 0x40;
1202     sharpV33_attr.stManual.stFix.sharp_ehf_th[5] = 0x40;
1203     sharpV33_attr.stManual.stFix.sharp_ehf_th[6] = 0x40;
1204     sharpV33_attr.stManual.stFix.sharp_ehf_th[7] = 0x40;
1205 
1206     // SHARP_SHARP_CLIP_HF_0 (0x0034 -  0x003c)
1207     sharpV33_attr.stManual.stFix.sharp_clip_hf[0] = 0x40;
1208     sharpV33_attr.stManual.stFix.sharp_clip_hf[1] = 0x40;
1209     sharpV33_attr.stManual.stFix.sharp_clip_hf[2] = 0x40;
1210     sharpV33_attr.stManual.stFix.sharp_clip_hf[3] = 0x40;
1211     sharpV33_attr.stManual.stFix.sharp_clip_hf[4] = 0x40;
1212     sharpV33_attr.stManual.stFix.sharp_clip_hf[5] = 0x40;
1213     sharpV33_attr.stManual.stFix.sharp_clip_hf[6] = 0x40;
1214     sharpV33_attr.stManual.stFix.sharp_clip_hf[7] = 0x40;
1215 
1216     // SHARP_SHARP_PBF_COEF (0x00040)
1217     sharpV33_attr.stManual.stFix.sharp_pbf_coef[0] = 0x18;
1218     sharpV33_attr.stManual.stFix.sharp_pbf_coef[1] = 0x10;
1219     sharpV33_attr.stManual.stFix.sharp_pbf_coef[2] = 0x0a;
1220 
1221     // SHARP_SHARP_BF_COEF (0x00044)
1222     sharpV33_attr.stManual.stFix.sharp_bf_coef[0] = 0x18;
1223     sharpV33_attr.stManual.stFix.sharp_bf_coef[1] = 0x10;
1224     sharpV33_attr.stManual.stFix.sharp_bf_coef[2] = 0x0a;
1225 
1226     // SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
1227     sharpV33_attr.stManual.stFix.sharp_gaus_coef[0] = 0x0c;
1228     sharpV33_attr.stManual.stFix.sharp_gaus_coef[1] = 0x07;
1229     sharpV33_attr.stManual.stFix.sharp_gaus_coef[2] = 0x06;
1230     sharpV33_attr.stManual.stFix.sharp_gaus_coef[3] = 0x05;
1231     sharpV33_attr.stManual.stFix.sharp_gaus_coef[4] = 0x04;
1232     sharpV33_attr.stManual.stFix.sharp_gaus_coef[5] = 0x03;
1233 
1234     // SHARP_GAIN (0x50)
1235     sharpV33_attr.stManual.stFix.sharp_global_gain       = 0x10;
1236     sharpV33_attr.stManual.stFix.sharp_global_gain_alpha = 0x0;
1237     sharpV33_attr.stManual.stFix.sharp_local_gainscale   = 0x80;
1238 
1239     // SHARP_GAIN_ADJUST (0x54)
1240     sharpV33_attr.stManual.stFix.sharp_gain_adj[0]  = 0x400;
1241     sharpV33_attr.stManual.stFix.sharp_gain_adj[1]  = 0x400;
1242     sharpV33_attr.stManual.stFix.sharp_gain_adj[2]  = 0x400;
1243     sharpV33_attr.stManual.stFix.sharp_gain_adj[3]  = 0x400;
1244     sharpV33_attr.stManual.stFix.sharp_gain_adj[4]  = 0x400;
1245     sharpV33_attr.stManual.stFix.sharp_gain_adj[5]  = 0x400;
1246     sharpV33_attr.stManual.stFix.sharp_gain_adj[6]  = 0x400;
1247     sharpV33_attr.stManual.stFix.sharp_gain_adj[7]  = 0x400;
1248     sharpV33_attr.stManual.stFix.sharp_gain_adj[8]  = 0x400;
1249     sharpV33_attr.stManual.stFix.sharp_gain_adj[9]  = 0x400;
1250     sharpV33_attr.stManual.stFix.sharp_gain_adj[10] = 0x400;
1251     sharpV33_attr.stManual.stFix.sharp_gain_adj[11] = 0x400;
1252     sharpV33_attr.stManual.stFix.sharp_gain_adj[12] = 0x400;
1253     sharpV33_attr.stManual.stFix.sharp_gain_adj[13] = 0x400;
1254 
1255     // SHARP_CENTER (0x70)
1256     sharpV33_attr.stManual.stFix.sharp_center_wid = 0x0;
1257     sharpV33_attr.stManual.stFix.sharp_center_wid = 0x0;
1258 
1259     // SHARP_GAIN_DIS_STRENGTH (0x74)
1260     sharpV33_attr.stManual.stFix.sharp_strength[0]  = 0x80;
1261     sharpV33_attr.stManual.stFix.sharp_strength[1]  = 0x80;
1262     sharpV33_attr.stManual.stFix.sharp_strength[2]  = 0x80;
1263     sharpV33_attr.stManual.stFix.sharp_strength[3]  = 0x80;
1264     sharpV33_attr.stManual.stFix.sharp_strength[4]  = 0x80;
1265     sharpV33_attr.stManual.stFix.sharp_strength[5]  = 0x80;
1266     sharpV33_attr.stManual.stFix.sharp_strength[6]  = 0x80;
1267     sharpV33_attr.stManual.stFix.sharp_strength[7]  = 0x80;
1268     sharpV33_attr.stManual.stFix.sharp_strength[8]  = 0x80;
1269     sharpV33_attr.stManual.stFix.sharp_strength[9]  = 0x80;
1270     sharpV33_attr.stManual.stFix.sharp_strength[10] = 0x80;
1271     sharpV33_attr.stManual.stFix.sharp_strength[11] = 0x80;
1272     sharpV33_attr.stManual.stFix.sharp_strength[12] = 0x80;
1273     sharpV33_attr.stManual.stFix.sharp_strength[13] = 0x80;
1274     sharpV33_attr.stManual.stFix.sharp_strength[14] = 0x80;
1275     sharpV33_attr.stManual.stFix.sharp_strength[15] = 0x80;
1276     sharpV33_attr.stManual.stFix.sharp_strength[16] = 0x80;
1277     sharpV33_attr.stManual.stFix.sharp_strength[17] = 0x80;
1278     sharpV33_attr.stManual.stFix.sharp_strength[18] = 0x80;
1279     sharpV33_attr.stManual.stFix.sharp_strength[19] = 0x80;
1280     sharpV33_attr.stManual.stFix.sharp_strength[20] = 0x80;
1281     sharpV33_attr.stManual.stFix.sharp_strength[21] = 0x80;
1282 
1283     // SHARP_SHARP_CLIP_HF_0 (0x0090 -  0x0098)
1284     sharpV33_attr.stManual.stFix.sharp_clip_neg[0] = 0x40;
1285     sharpV33_attr.stManual.stFix.sharp_clip_neg[1] = 0x40;
1286     sharpV33_attr.stManual.stFix.sharp_clip_neg[2] = 0x40;
1287     sharpV33_attr.stManual.stFix.sharp_clip_neg[3] = 0x40;
1288     sharpV33_attr.stManual.stFix.sharp_clip_neg[4] = 0x40;
1289     sharpV33_attr.stManual.stFix.sharp_clip_neg[5] = 0x40;
1290     sharpV33_attr.stManual.stFix.sharp_clip_neg[6] = 0x40;
1291     sharpV33_attr.stManual.stFix.sharp_clip_neg[7] = 0x40;
1292 
1293     ret = rk_aiq_user_api2_asharpV33Lite_SetAttrib(ctx, &sharpV33_attr);
1294     printf("set sharp v4 attri manual ret:%d \n\n", ret);
1295 
1296     rk_aiq_sharp_attrib_v33LT_t get_sharpV33_attr;
1297     get_sharpV33_attr.sync.sync_mode = sync_mode;
1298     ret = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &get_sharpV33_attr);
1299     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
1300 
1301     return ret;
1302 }
1303 
sample_sharp_setStrength_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)1304 XCamReturn sample_sharp_setStrength_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
1305 {
1306     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1307 
1308     rk_aiq_sharp_strength_v4_t set_sharpV4Strength;
1309     set_sharpV4Strength.sync.sync_mode = sync_mode;
1310     set_sharpV4Strength.percent = fStrength;
1311     ret = rk_aiq_user_api2_asharpV4_SetStrength(ctx, &set_sharpV4Strength);
1312     printf("Set asharp v4 set streangth ret:%d strength:%f \n\n", ret, set_sharpV4Strength.percent);
1313 
1314     rk_aiq_sharp_strength_v4_t get_sharpV4Strength;
1315     get_sharpV4Strength.sync.sync_mode = sync_mode;
1316     ret = rk_aiq_user_api2_asharpV4_GetStrength(ctx, &get_sharpV4Strength);
1317     printf("get asharp v4 attri ret:%d strength:%f done:%d\n\n",
1318            ret, get_sharpV4Strength.percent, get_sharpV4Strength.sync.done);
1319 
1320     return ret;
1321 }
1322 
sample_sharp_setStrength_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)1323 XCamReturn sample_sharp_setStrength_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
1324 {
1325     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1326 
1327     rk_aiq_sharp_strength_v33_t set_sharpV33Strength;
1328     set_sharpV33Strength.sync.sync_mode = sync_mode;
1329     set_sharpV33Strength.percent = fStrength;
1330     set_sharpV33Strength.strength_enable = true;
1331     ret = rk_aiq_user_api2_asharpV33_SetStrength(ctx, &set_sharpV33Strength);
1332     printf("Set asharp v4 set streangth ret:%d strength:%f \n\n", ret, set_sharpV33Strength.percent);
1333 
1334     rk_aiq_sharp_strength_v33_t get_sharpV33Strength;
1335     get_sharpV33Strength.sync.sync_mode = sync_mode;
1336     ret = rk_aiq_user_api2_asharpV33_GetStrength(ctx, &get_sharpV33Strength);
1337     printf("get asharp v4 attri ret:%d strength:%f done:%d\n\n",
1338            ret, get_sharpV33Strength.percent, get_sharpV33Strength.sync.done);
1339 
1340     return ret;
1341 }
1342 
1343 
sample_sharp_getStrength_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1344 XCamReturn sample_sharp_getStrength_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
1345 {
1346     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1347 
1348     rk_aiq_sharp_strength_v4_t sharpV4Strength;
1349     sharpV4Strength.sync.sync_mode = sync_mode;
1350     ret = rk_aiq_user_api2_asharpV4_GetStrength(ctx, &sharpV4Strength);
1351     printf("get asharp v4 attri ret:%d strength:%f done:%d\n\n",
1352            ret, sharpV4Strength.percent, sharpV4Strength.sync.done);
1353 
1354     return ret;
1355 }
1356 
1357 
sample_sharp_getStrength_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1358 XCamReturn sample_sharp_getStrength_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
1359 {
1360     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1361 
1362     rk_aiq_sharp_strength_v33_t sharpV33Strength;
1363     sharpV33Strength.sync.sync_mode = sync_mode;
1364     ret = rk_aiq_user_api2_asharpV33_GetStrength(ctx, &sharpV33Strength);
1365     printf("get asharp v4 attri ret:%d strength:%f done:%d\n\n",
1366            ret, sharpV33Strength.percent, sharpV33Strength.sync.done);
1367 
1368     return ret;
1369 }
1370 
sample_sharp_getAttri_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1371 XCamReturn sample_sharp_getAttri_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
1372 {
1373     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1374 
1375     rk_aiq_sharp_attrib_v4_t sharpV4_attr;
1376     sharpV4_attr.sync.sync_mode = sync_mode;
1377     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &sharpV4_attr);
1378     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, sharpV4_attr.sync.done);
1379 
1380     return ret;
1381 }
1382 
sample_sharp_getAttri_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1383 XCamReturn sample_sharp_getAttri_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
1384 {
1385     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1386 
1387     rk_aiq_sharp_attrib_v33_t sharpV33_attr;
1388     sharpV33_attr.sync.sync_mode = sync_mode;
1389     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &sharpV33_attr);
1390     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, sharpV33_attr.sync.done);
1391 
1392     return ret;
1393 }
1394 
sample_sharp_getAttri_v33Lite(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)1395 XCamReturn sample_sharp_getAttri_v33Lite(const rk_aiq_sys_ctx_t* ctx,
1396         rk_aiq_uapi_mode_sync_e sync_mode) {
1397     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1398 
1399     rk_aiq_sharp_attrib_v33LT_t sharpV33_attr;
1400     sharpV33_attr.sync.sync_mode = sync_mode;
1401     ret                          = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &sharpV33_attr);
1402     printf("get asharp v33Lite attri ret:%d done:%d\n\n", ret, sharpV33_attr.sync.done);
1403 
1404     return ret;
1405 }
1406 
sample_sharp_SetDefault_v4(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_sharp_attrib_v4_t & default_sharpV4_attr)1407 XCamReturn sample_sharp_SetDefault_v4(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_sharp_attrib_v4_t &default_sharpV4_attr)
1408 {
1409     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1410 
1411     ret = rk_aiq_user_api2_asharpV4_SetAttrib(ctx, &default_sharpV4_attr);
1412     printf("set sharp v4 default auto attri ret:%d \n\n", ret);
1413 
1414     rk_aiq_sharp_attrib_v4_t get_sharpV4_attr;
1415     get_sharpV4_attr.sync.sync_mode = sync_mode;
1416     ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &get_sharpV4_attr);
1417     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV4_attr.sync.done);
1418 
1419     return ret;
1420 }
1421 
sample_sharp_SetDefault_v33(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_sharp_attrib_v33_t & default_sharpV33_attr)1422 XCamReturn sample_sharp_SetDefault_v33(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_sharp_attrib_v33_t &default_sharpV33_attr)
1423 {
1424     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1425 
1426     ret = rk_aiq_user_api2_asharpV33_SetAttrib(ctx, &default_sharpV33_attr);
1427     printf("set sharp v4 default auto attri ret:%d \n\n", ret);
1428 
1429     rk_aiq_sharp_attrib_v33_t get_sharpV33_attr;
1430     get_sharpV33_attr.sync.sync_mode = sync_mode;
1431     ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &get_sharpV33_attr);
1432     printf("get asharp v4 attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
1433 
1434     return ret;
1435 }
1436 
sample_sharp_SetDefault_v33Lite(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_sharp_attrib_v33LT_t & default_sharpV33_attr)1437 XCamReturn sample_sharp_SetDefault_v33Lite(const rk_aiq_sys_ctx_t* ctx,
1438         rk_aiq_uapi_mode_sync_e sync_mode,
1439         rk_aiq_sharp_attrib_v33LT_t& default_sharpV33_attr) {
1440     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1441 
1442     ret = rk_aiq_user_api2_asharpV33Lite_SetAttrib(ctx, &default_sharpV33_attr);
1443     printf("set sharp v33Lite default auto attri ret:%d \n\n", ret);
1444 
1445     rk_aiq_sharp_attrib_v33LT_t get_sharpV33_attr;
1446     get_sharpV33_attr.sync.sync_mode = sync_mode;
1447     ret = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &get_sharpV33_attr);
1448     printf("get asharp v33Lite attri ret:%d done:%d\n\n", ret, get_sharpV33_attr.sync.done);
1449 
1450     return ret;
1451 }
1452 
sample_asharp_module(const void * arg)1453 XCamReturn sample_asharp_module (const void *arg)
1454 {
1455     int key = -1;
1456     CLEAR();
1457     XCamReturn ret = XCAM_RETURN_NO_ERROR;
1458     const demo_context_t *demo_ctx = (demo_context_t *)arg;
1459     const rk_aiq_sys_ctx_t* ctx ;
1460 
1461     if (demo_ctx->camGroup) {
1462         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
1463         printf("##################group !!!!########################\n");
1464     } else {
1465         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
1466         printf("##################sigle !!!!########################\n");
1467     }
1468     if (ctx == nullptr) {
1469         ERR ("%s, ctx is nullptr\n", __FUNCTION__);
1470         return XCAM_RETURN_ERROR_PARAM;
1471     }
1472 
1473     rk_aiq_sharp_attrib_v4_t default_sharpV4_attr;
1474     rk_aiq_sharp_attrib_v33_t default_sharpV33_attr;
1475     rk_aiq_sharp_attrib_v33LT_t default_sharpV33LT_attr;
1476     if (CHECK_ISP_HW_V30()) {
1477         ret = rk_aiq_user_api2_asharpV4_GetAttrib(ctx, &default_sharpV4_attr);
1478         printf("get asharp v4 default auto attri ret:%d \n\n", ret);
1479     }
1480 
1481     if (CHECK_ISP_HW_V32()) {
1482         ret = rk_aiq_user_api2_asharpV33_GetAttrib(ctx, &default_sharpV33_attr);
1483         printf("get asharp v33 default auto attri ret:%d \n\n", ret);
1484     }
1485 
1486     if (CHECK_ISP_HW_V32_LITE()) {
1487         ret = rk_aiq_user_api2_asharpV33Lite_GetAttrib(ctx, &default_sharpV33LT_attr);
1488         printf("get asharp v33 default auto attri ret:%d \n\n", ret);
1489     }
1490 
1491     do {
1492         sample_asharp_usage ();
1493 
1494         key = getchar ();
1495         while (key == '\n' || key == '\r')
1496             key = getchar ();
1497         printf ("\n");
1498 
1499         switch (key) {
1500         case '0':
1501             if (CHECK_ISP_HW_V30()) {
1502                 sample_sharp_getAttri_v4(ctx, RK_AIQ_UAPI_MODE_SYNC);
1503             }
1504             if (CHECK_ISP_HW_V32()) {
1505                 sample_sharp_getAttri_v33(ctx, RK_AIQ_UAPI_MODE_SYNC);
1506             }
1507             if (CHECK_ISP_HW_V32_LITE()) {
1508                 sample_sharp_getAttri_v33Lite(ctx, RK_AIQ_UAPI_MODE_SYNC);
1509             }
1510             break;
1511         case '1':
1512             if (CHECK_ISP_HW_V30()) {
1513                 sample_sharp_getStrength_v4(ctx, RK_AIQ_UAPI_MODE_SYNC);
1514             }
1515             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1516                 sample_sharp_getStrength_v33(ctx, RK_AIQ_UAPI_MODE_SYNC);
1517             }
1518             break;
1519         case '2':
1520             if (CHECK_ISP_HW_V30()) {
1521                 sample_sharp_setAuto_v4(ctx, RK_AIQ_UAPI_MODE_SYNC);
1522             }
1523             if (CHECK_ISP_HW_V32()) {
1524                 sample_sharp_setAuto_v33(ctx, RK_AIQ_UAPI_MODE_SYNC);
1525             }
1526             if (CHECK_ISP_HW_V32_LITE()) {
1527                 sample_sharp_setAuto_v33Lite(ctx, RK_AIQ_UAPI_MODE_SYNC);
1528             }
1529             break;
1530         case '3':
1531             if (CHECK_ISP_HW_V30()) {
1532                 sample_sharp_setManual_v4(ctx, RK_AIQ_UAPI_MODE_SYNC);
1533             }
1534             if (CHECK_ISP_HW_V32()) {
1535                 sample_sharp_setManual_v33(ctx, RK_AIQ_UAPI_MODE_SYNC);
1536             }
1537             if (CHECK_ISP_HW_V32_LITE()) {
1538                 sample_sharp_setManual_v33Lite(ctx, RK_AIQ_UAPI_MODE_SYNC);
1539             }
1540             break;
1541         case '4':
1542             if (CHECK_ISP_HW_V30()) {
1543                 sample_sharp_setReg_v4(ctx, RK_AIQ_UAPI_MODE_SYNC);
1544             }
1545             if (CHECK_ISP_HW_V32()) {
1546                 sample_sharp_setReg_v33(ctx, RK_AIQ_UAPI_MODE_SYNC);
1547             }
1548             if (CHECK_ISP_HW_V32_LITE()) {
1549                 sample_sharp_setReg_v33Lite(ctx, RK_AIQ_UAPI_MODE_SYNC);
1550             }
1551             break;
1552         case '5':
1553             if (CHECK_ISP_HW_V30()) {
1554                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
1555             }
1556             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1557                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
1558             }
1559             break;
1560         case '6':
1561             if (CHECK_ISP_HW_V30()) {
1562                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
1563             }
1564             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1565                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
1566             }
1567             break;
1568         case '7':
1569             if (CHECK_ISP_HW_V30()) {
1570                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
1571             }
1572             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1573                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
1574             }
1575             break;
1576         case '8':
1577             if (CHECK_ISP_HW_V30()) {
1578                 sample_sharp_SetDefault_v4(ctx, RK_AIQ_UAPI_MODE_SYNC, default_sharpV4_attr);
1579             }
1580             if (CHECK_ISP_HW_V32()) {
1581                 sample_sharp_SetDefault_v33(ctx, RK_AIQ_UAPI_MODE_SYNC, default_sharpV33_attr);
1582             }
1583             if (CHECK_ISP_HW_V32_LITE()) {
1584                 sample_sharp_SetDefault_v33Lite(ctx, RK_AIQ_UAPI_MODE_SYNC,
1585                                                 default_sharpV33LT_attr);
1586             }
1587             break;
1588         case 'a':
1589             if (CHECK_ISP_HW_V30()) {
1590                 sample_sharp_getAttri_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1591             }
1592             if (CHECK_ISP_HW_V32()) {
1593                 sample_sharp_getAttri_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1594             }
1595             if (CHECK_ISP_HW_V32_LITE()) {
1596                 sample_sharp_getAttri_v33Lite(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1597             }
1598             break;
1599         case 'b':
1600             if (CHECK_ISP_HW_V30()) {
1601                 sample_sharp_getStrength_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1602             }
1603             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1604                 sample_sharp_getStrength_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1605             }
1606             break;
1607         case 'c':
1608             if (CHECK_ISP_HW_V30()) {
1609                 sample_sharp_setAuto_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1610             }
1611             if (CHECK_ISP_HW_V32()) {
1612                 sample_sharp_setAuto_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1613             }
1614             if (CHECK_ISP_HW_V32_LITE()) {
1615                 sample_sharp_setAuto_v33Lite(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1616             }
1617             break;
1618         case 'd':
1619             if (CHECK_ISP_HW_V30()) {
1620                 sample_sharp_setManual_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1621             }
1622             if (CHECK_ISP_HW_V32()) {
1623                 sample_sharp_setManual_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1624             }
1625             if (CHECK_ISP_HW_V32_LITE()) {
1626                 sample_sharp_setManual_v33Lite(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1627             }
1628             break;
1629         case 'e':
1630             if (CHECK_ISP_HW_V30()) {
1631                 sample_sharp_setReg_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1632             }
1633             if (CHECK_ISP_HW_V32()) {
1634                 sample_sharp_setReg_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1635             }
1636             if (CHECK_ISP_HW_V32_LITE()) {
1637                 sample_sharp_setReg_v33Lite(ctx, RK_AIQ_UAPI_MODE_ASYNC);
1638             }
1639             break;
1640         case 'f':
1641             if (CHECK_ISP_HW_V30()) {
1642                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
1643             }
1644             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1645                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
1646             }
1647             break;
1648         case 'g':
1649             if (CHECK_ISP_HW_V30()) {
1650                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
1651             }
1652             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1653                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
1654             }
1655             break;
1656         case 'h':
1657             if (CHECK_ISP_HW_V30()) {
1658                 sample_sharp_setStrength_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
1659             }
1660             if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
1661                 sample_sharp_setStrength_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
1662             }
1663             break;
1664         case 'i':
1665             if (CHECK_ISP_HW_V30()) {
1666                 sample_sharp_SetDefault_v4(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_sharpV4_attr);
1667             }
1668             if (CHECK_ISP_HW_V32()) {
1669                 sample_sharp_SetDefault_v33(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_sharpV33_attr);
1670             }
1671             if (CHECK_ISP_HW_V32_LITE()) {
1672                 sample_sharp_SetDefault_v33Lite(ctx, RK_AIQ_UAPI_MODE_ASYNC,
1673                                                 default_sharpV33LT_attr);
1674             }
1675             break;
1676         default:
1677             printf("not support test\n\n");
1678             break;
1679         }
1680 
1681     } while (key != 'q' && key != 'Q');
1682 
1683     return ret;
1684 }
1685 
1686