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_abayer2dnr_usage()20 static void sample_abayer2dnr_usage()
21 {
22 printf("Usage : \n");
23 printf("\t 0) ABAYER2DNR: get abayer2dnr attri on sync mode.\n");
24 printf("\t 1) ABAYER2DNR: get abayer2dnr strength on sync mode.\n");
25 printf("\t 2) ABAYER2DNR: set abayer2dnr attri auto on sync mode.\n");
26 printf("\t 3) ABAYER2DNR: set abayer2dnr attri manual on sync mode.\n");
27 printf("\t 4) ABAYER2DNR: set abayer2dnr attri reg value on sync mode.\n");
28 printf("\t 5) ABAYER2DNR: set abayer2dnr strength max value 1.0 on sync mode, only on auto mode has effect.\n");
29 printf("\t 6) ABAYER2DNR: set abayer2dnr strength min value 0.0 on sync mode, only on auto mode has effect.\n");
30 printf("\t 7) ABAYER2DNR: set abayer2dnr strength med value 0.5 on sync mode, only on auto mode has effect.\n");
31 printf("\t 8) ABAYER2DNR: set abayer2dnr attri default vaule on sync mode.\n");
32 printf("\t a) ABAYER2DNR: get abayer2dnr attri on async mode.\n");
33 printf("\t b) ABAYER2DNR: get abayer2dnr strength on async mode.\n");
34 printf("\t c) ABAYER2DNR: set abayer2dnr attri auto on async mode.\n");
35 printf("\t d) ABAYER2DNR: set abayer2dnr attri manual on async mode.\n");
36 printf("\t e) ABAYER2DNR: set abayer2dnr attri reg value on async mode.\n");
37 printf("\t f) ABAYER2DNR: set abayer2dnr strength max value 1.0 on async mode, only on auto mode has effect.\n");
38 printf("\t g) ABAYER2DNR: set abayer2dnr strength min value 0.0 on async mode, only on auto mode has effect.\n");
39 printf("\t h) ABAYER2DNR: set abayer2dnr strength med value 0.5 on async mode, only on auto mode has effect.\n");
40 printf("\t i) ABAYER2DNR: set abayer2dnr attri default vaule on async mode.\n");
41 printf("\t q) ABAYER2DNR: press key q or Q to quit.\n");
42 }
43
sample_print_abayer2dnr_info(const void * arg)44 void sample_print_abayer2dnr_info(const void *arg)
45 {
46 printf ("enter ABAYER2DNR modult test!\n");
47 }
48
sample_abayer2dnr_getAttri_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)49 XCamReturn sample_abayer2dnr_getAttri_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
50 {
51 XCamReturn ret = XCAM_RETURN_NO_ERROR;
52
53 rk_aiq_bayer2dnr_attrib_v2_t bayer2dnrV2_attr;
54 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
55 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &bayer2dnrV2_attr);
56 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, bayer2dnrV2_attr.sync.done);
57 return ret;
58 }
59
sample_abayer2dnr_getAttri_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)60 XCamReturn sample_abayer2dnr_getAttri_v23 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
61 {
62 XCamReturn ret = XCAM_RETURN_NO_ERROR;
63
64 rk_aiq_bayer2dnr_attrib_v23_t bayer2dnrV23_attr;
65 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
66 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &bayer2dnrV23_attr);
67 printf("get abayer2dnr v23 attri ret:%d done:%d \n\n", ret, bayer2dnrV23_attr.sync.done);
68
69 return ret;
70 }
71
72
sample_abayer2dnr_getStrength_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)73 XCamReturn sample_abayer2dnr_getStrength_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
74 {
75 XCamReturn ret = XCAM_RETURN_NO_ERROR;
76
77 rk_aiq_bayer2dnr_strength_v2_t bayer2dnrV2Strenght;
78 bayer2dnrV2Strenght.sync.sync_mode = sync_mode;
79 ret = rk_aiq_user_api2_abayer2dnrV2_GetStrength(ctx, &bayer2dnrV2Strenght);
80 printf("get abayer2dnr v2 attri ret:%d strength:%f done:%d\n\n",
81 ret, bayer2dnrV2Strenght.percent, bayer2dnrV2Strenght.sync.done);
82
83
84 return ret;
85 }
86
sample_abayer2dnr_getStrength_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)87 XCamReturn sample_abayer2dnr_getStrength_v23 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
88 {
89 XCamReturn ret = XCAM_RETURN_NO_ERROR;
90
91 rk_aiq_bayer2dnr_strength_v23_t bayer2dnrV23Strenght;
92 bayer2dnrV23Strenght.sync.sync_mode = sync_mode;
93 ret = rk_aiq_user_api2_abayer2dnrV23_GetStrength(ctx, &bayer2dnrV23Strenght);
94 printf("get abayer2dnr v23 attri ret:%d strength:%f done:%d\n\n",
95 ret, bayer2dnrV23Strenght.percent, bayer2dnrV23Strenght.sync.done);
96
97 return ret;
98 }
99
100
sample_abayer2dnr_setDefault_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_bayer2dnr_attrib_v2_t & default_bayer2dnrV2_attr)101 XCamReturn sample_abayer2dnr_setDefault_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_bayer2dnr_attrib_v2_t &default_bayer2dnrV2_attr)
102 {
103 XCamReturn ret = XCAM_RETURN_NO_ERROR;
104
105 default_bayer2dnrV2_attr.sync.sync_mode = sync_mode;
106 ret = rk_aiq_user_api2_abayer2dnrV2_SetAttrib(ctx, &default_bayer2dnrV2_attr);
107 printf("set bayer2dnr v2 default auto attri ret:%d \n\n", ret);
108
109 rk_aiq_bayer2dnr_attrib_v2_t get_bayer2dnrV2_attr;
110 get_bayer2dnrV2_attr.sync.sync_mode = sync_mode;
111 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &get_bayer2dnrV2_attr);
112 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV2_attr.sync.done);
113
114 return ret;
115 }
116
sample_abayer2dnr_setDefault_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_bayer2dnr_attrib_v23_t & default_bayer2dnrV23_attr)117 XCamReturn sample_abayer2dnr_setDefault_v23 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_bayer2dnr_attrib_v23_t &default_bayer2dnrV23_attr)
118 {
119 XCamReturn ret = XCAM_RETURN_NO_ERROR;
120
121 default_bayer2dnrV23_attr.sync.sync_mode = sync_mode;
122 ret = rk_aiq_user_api2_abayer2dnrV23_SetAttrib(ctx, &default_bayer2dnrV23_attr);
123 printf("set bayer2dnr v2 default auto attri ret:%d \n\n", ret);
124
125 rk_aiq_bayer2dnr_attrib_v23_t get_bayer2dnrV23_attr;
126 get_bayer2dnrV23_attr.sync.sync_mode = sync_mode;
127 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &get_bayer2dnrV23_attr);
128 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV23_attr.sync.done);
129
130 return ret;
131 }
132
133
sample_abayer2dnr_setAuto_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)134 XCamReturn sample_abayer2dnr_setAuto_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
135 {
136 XCamReturn ret = XCAM_RETURN_NO_ERROR;
137
138 rk_aiq_bayer2dnr_attrib_v2_t bayer2dnrV2_attr;
139 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
140 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &bayer2dnrV2_attr);
141 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
142 bayer2dnrV2_attr.eMode = ABAYER2DNR_OP_MODE_AUTO;
143 bayer2dnrV2_attr.stAuto.st2DParams.enable = 1;
144 for(int i = 0; i < RK_BAYER2DNR_V2_MAX_ISO_NUM; i++) {
145 bayer2dnrV2_attr.stAuto.st2DParams.iso[i] = 50 * pow(2, i);
146
147 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[0] = 512;
148 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[1] = 1024;
149 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[2] = 1536;
150 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[3] = 2048;
151 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[4] = 3072;
152 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[5] = 4096;
153 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[6] = 5120;
154 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[7] = 6144;
155 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[8] = 7168;
156 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[9] = 8192;
157 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[10] = 9216;
158 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[11] = 10240;
159 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[12] = 11264;
160 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[13] = 12288;
161 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[14] = 13312;
162 bayer2dnrV2_attr.stAuto.st2DParams.lumapoint[15] = 14336;
163
164 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][0] = 90;
165 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][1] = 90;
166 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][2] = 90;
167 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][3] = 90;
168 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][4] = 90;
169 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][5] = 90;
170 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][6] = 90;
171 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][7] = 90;
172 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][8] = 90;
173 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][9] = 90;
174 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][10] = 90;
175 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][11] = 90;
176 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][12] = 90;
177 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][13] = 90;
178 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][14] = 90;
179 bayer2dnrV2_attr.stAuto.st2DParams.sigma[i][15] = 90;
180
181 bayer2dnrV2_attr.stAuto.st2DParams.filter_strength[i] = 1.0;
182 bayer2dnrV2_attr.stAuto.st2DParams.edgesofts[i] = 1.0;
183 bayer2dnrV2_attr.stAuto.st2DParams.ratio[i] = 0.01;
184 bayer2dnrV2_attr.stAuto.st2DParams.weight[i] = 0.7;
185 bayer2dnrV2_attr.stAuto.st2DParams.gauss_guide[i] = 0;
186 bayer2dnrV2_attr.stAuto.st2DParams.pix_diff[i] = 16383;
187 bayer2dnrV2_attr.stAuto.st2DParams.diff_thld[i] = 1024;
188
189 }
190
191 ret = rk_aiq_user_api2_abayer2dnrV2_SetAttrib(ctx, &bayer2dnrV2_attr);
192 printf("set abayer2dnr attri auto ret:%d \n\n", ret);
193
194 rk_aiq_bayer2dnr_attrib_v2_t get_bayer2dnrV2_attr;
195 get_bayer2dnrV2_attr.sync.sync_mode = sync_mode;
196 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &get_bayer2dnrV2_attr);
197 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV2_attr.sync.done);
198
199 return ret;
200 }
201
sample_abayer2dnr_setAuto_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)202 XCamReturn sample_abayer2dnr_setAuto_v23 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
203 {
204 XCamReturn ret = XCAM_RETURN_NO_ERROR;
205
206 rk_aiq_bayer2dnr_attrib_v23_t bayer2dnrV23_attr;
207 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
208 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &bayer2dnrV23_attr);
209 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
210 bayer2dnrV23_attr.eMode = ABAYER2DNR_V23_OP_MODE_AUTO;
211 bayer2dnrV23_attr.stAuto.st2DParams.enable = 1;
212 bayer2dnrV23_attr.stAuto.st2DParams.hdrdgain_ctrl_en = 1;
213
214 for(int i = 0; i < RK_BAYER2DNR_V23_MAX_ISO_NUM; i++) {
215 bayer2dnrV23_attr.stAuto.st2DParams.iso[i] = 50 * pow(2, i);
216
217 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[0] = 512;
218 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[1] = 1024;
219 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[2] = 1536;
220 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[3] = 2048;
221 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[4] = 3072;
222 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[5] = 4096;
223 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[6] = 5120;
224 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[7] = 6144;
225 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[8] = 7168;
226 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[9] = 8192;
227 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[10] = 9216;
228 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[11] = 10240;
229 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[12] = 11264;
230 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[13] = 12288;
231 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[14] = 13312;
232 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].lumapoint[15] = 14336;
233
234 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[0] = 90;
235 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[1] = 90;
236 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[2] = 90;
237 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[3] = 90;
238 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[4] = 90;
239 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[5] = 90;
240 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[6] = 90;
241 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[7] = 90;
242 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[8] = 90;
243 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[9] = 90;
244 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[10] = 90;
245 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[11] = 90;
246 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[12] = 90;
247 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[13] = 90;
248 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[14] = 90;
249 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].sigma[15] = 90;
250
251 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[0] = 16;
252 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[1] = 32;
253 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[2] = 48;
254 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[3] = 64;
255 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[4] = 80;
256 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[5] = 96;
257 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[6] = 112;
258 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[7] = 128;
259 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[8] = 144;
260 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[9] = 160;
261 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[10] = 176;
262 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[11] = 192;
263 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[12] = 208;
264 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[13] = 224;
265 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[14] = 240;
266 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_lumapoint[15] = 256;
267
268 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[0] = 16;
269 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[1] = 32;
270 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[2] = 48;
271 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[3] = 64;
272 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[4] = 80;
273 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[5] = 96;
274 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[6] = 112;
275 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[7] = 128;
276 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[8] = 144;
277 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[9] = 160;
278 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[10] = 176;
279 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[11] = 192;
280 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[12] = 208;
281 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[13] = 224;
282 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[14] = 240;
283 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_adj[15] = 256;
284
285 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].filter_strength = 1.0;
286 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].edgesofts = 1.0;
287 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].ratio = 0.01;
288 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].weight = 0.7;
289 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gauss_guide = 0;
290 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].pix_diff = 16383;
291 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].diff_thld = 1024;
292
293 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_bypass = 0;
294 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].gain_scale = 1;
295
296 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].trans_mode = 0;
297 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].trans_offset = 256;
298 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].itrans_offset = 32768;
299 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].trans_datmax = 1048575;
300
301 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].hdr_dgain_scale_s = 1;
302 bayer2dnrV23_attr.stAuto.st2DParams.Bayer2dnrParamsISO[i].hdr_dgain_scale_m = 1;
303
304 }
305
306 ret = rk_aiq_user_api2_abayer2dnrV23_SetAttrib(ctx, &bayer2dnrV23_attr);
307 printf("set abayer2dnr attri auto ret:%d \n\n", ret);
308
309 rk_aiq_bayer2dnr_attrib_v23_t get_bayer2dnrV23_attr;
310 get_bayer2dnrV23_attr.sync.sync_mode = sync_mode;
311 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &get_bayer2dnrV23_attr);
312 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV23_attr.sync.done);
313
314 return ret;
315 }
316
317
sample_abayer2dnr_setManual_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)318 XCamReturn sample_abayer2dnr_setManual_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
319 {
320 XCamReturn ret = XCAM_RETURN_NO_ERROR;
321
322 rk_aiq_bayer2dnr_attrib_v2_t bayer2dnrV2_attr;
323 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
324 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &bayer2dnrV2_attr);
325 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
326 bayer2dnrV2_attr.eMode = ABAYER2DNR_OP_MODE_MANUAL;
327 bayer2dnrV2_attr.stManual.st2DSelect.enable = 1;
328
329 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[0] = 512;
330 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[1] = 1024;
331 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[2] = 1536;
332 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[3] = 2048;
333 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[4] = 3072;
334 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[5] = 4096;
335 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[6] = 5120;
336 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[7] = 6144;
337 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[8] = 7168;
338 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[9] = 8192;
339 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[10] = 9216;
340 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[11] = 10240;
341 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[12] = 11264;
342 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[13] = 12288;
343 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[14] = 13312;
344 bayer2dnrV2_attr.stManual.st2DSelect.lumapoint[15] = 14336;
345
346 bayer2dnrV2_attr.stManual.st2DSelect.sigma[0] = 90;
347 bayer2dnrV2_attr.stManual.st2DSelect.sigma[1] = 90;
348 bayer2dnrV2_attr.stManual.st2DSelect.sigma[2] = 90;
349 bayer2dnrV2_attr.stManual.st2DSelect.sigma[3] = 90;
350 bayer2dnrV2_attr.stManual.st2DSelect.sigma[4] = 90;
351 bayer2dnrV2_attr.stManual.st2DSelect.sigma[5] = 90;
352 bayer2dnrV2_attr.stManual.st2DSelect.sigma[6] = 90;
353 bayer2dnrV2_attr.stManual.st2DSelect.sigma[7] = 90;
354 bayer2dnrV2_attr.stManual.st2DSelect.sigma[8] = 90;
355 bayer2dnrV2_attr.stManual.st2DSelect.sigma[9] = 90;
356 bayer2dnrV2_attr.stManual.st2DSelect.sigma[10] = 90;
357 bayer2dnrV2_attr.stManual.st2DSelect.sigma[11] = 90;
358 bayer2dnrV2_attr.stManual.st2DSelect.sigma[12] = 90;
359 bayer2dnrV2_attr.stManual.st2DSelect.sigma[13] = 90;
360 bayer2dnrV2_attr.stManual.st2DSelect.sigma[14] = 90;
361 bayer2dnrV2_attr.stManual.st2DSelect.sigma[15] = 90;
362
363 bayer2dnrV2_attr.stManual.st2DSelect.filter_strength = 1.0;
364 bayer2dnrV2_attr.stManual.st2DSelect.edgesofts = 1.0;
365 bayer2dnrV2_attr.stManual.st2DSelect.ratio = 0.01;
366 bayer2dnrV2_attr.stManual.st2DSelect.weight = 0.7;
367 bayer2dnrV2_attr.stManual.st2DSelect.gauss_guide = 0;
368 bayer2dnrV2_attr.stManual.st2DSelect.pix_diff = 16383;
369 bayer2dnrV2_attr.stManual.st2DSelect.diff_thld = 1023;
370
371 ret = rk_aiq_user_api2_abayer2dnrV2_SetAttrib(ctx, &bayer2dnrV2_attr);
372 printf("set bayer2dnr v2 attri manual ret:%d \n\n", ret);
373
374 rk_aiq_bayer2dnr_attrib_v2_t get_bayer2dnrV2_attr;
375 get_bayer2dnrV2_attr.sync.sync_mode = sync_mode;
376 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &get_bayer2dnrV2_attr);
377 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV2_attr.sync.done);
378
379 return ret;
380
381 }
382
sample_abayer2dnr_setManual_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)383 XCamReturn sample_abayer2dnr_setManual_v23 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
384 {
385 XCamReturn ret = XCAM_RETURN_NO_ERROR;
386
387 rk_aiq_bayer2dnr_attrib_v23_t bayer2dnrV23_attr;
388 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
389 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &bayer2dnrV23_attr);
390 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
391 bayer2dnrV23_attr.eMode = ABAYER2DNR_V23_OP_MODE_MANUAL;
392 bayer2dnrV23_attr.stManual.st2DSelect.enable = 1;
393 bayer2dnrV23_attr.stManual.st2DSelect.hdrdgain_ctrl_en = 1;
394
395 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[0] = 512;
396 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[1] = 1024;
397 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[2] = 1536;
398 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[3] = 2048;
399 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[4] = 3072;
400 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[5] = 4096;
401 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[6] = 5120;
402 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[7] = 6144;
403 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[8] = 7168;
404 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[9] = 8192;
405 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[10] = 9216;
406 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[11] = 10240;
407 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[12] = 11264;
408 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[13] = 12288;
409 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[14] = 13312;
410 bayer2dnrV23_attr.stManual.st2DSelect.lumapoint[15] = 14336;
411
412 bayer2dnrV23_attr.stManual.st2DSelect.sigma[0] = 90;
413 bayer2dnrV23_attr.stManual.st2DSelect.sigma[1] = 90;
414 bayer2dnrV23_attr.stManual.st2DSelect.sigma[2] = 90;
415 bayer2dnrV23_attr.stManual.st2DSelect.sigma[3] = 90;
416 bayer2dnrV23_attr.stManual.st2DSelect.sigma[4] = 90;
417 bayer2dnrV23_attr.stManual.st2DSelect.sigma[5] = 90;
418 bayer2dnrV23_attr.stManual.st2DSelect.sigma[6] = 90;
419 bayer2dnrV23_attr.stManual.st2DSelect.sigma[7] = 90;
420 bayer2dnrV23_attr.stManual.st2DSelect.sigma[8] = 90;
421 bayer2dnrV23_attr.stManual.st2DSelect.sigma[9] = 90;
422 bayer2dnrV23_attr.stManual.st2DSelect.sigma[10] = 90;
423 bayer2dnrV23_attr.stManual.st2DSelect.sigma[11] = 90;
424 bayer2dnrV23_attr.stManual.st2DSelect.sigma[12] = 90;
425 bayer2dnrV23_attr.stManual.st2DSelect.sigma[13] = 90;
426 bayer2dnrV23_attr.stManual.st2DSelect.sigma[14] = 90;
427 bayer2dnrV23_attr.stManual.st2DSelect.sigma[15] = 90;
428
429 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[0] = 16;
430 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[1] = 32;
431 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[2] = 48;
432 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[3] = 64;
433 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[4] = 80;
434 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[5] = 96;
435 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[6] = 112;
436 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[7] = 128;
437 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[8] = 144;
438 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[9] = 160;
439 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[10] = 176;
440 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[11] = 192;
441 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[12] = 208;
442 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[13] = 224;
443 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[14] = 240;
444 bayer2dnrV23_attr.stManual.st2DSelect.gain_lumapoint[15] = 256;
445
446 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[0] = 16;
447 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[1] = 32;
448 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[2] = 48;
449 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[3] = 64;
450 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[4] = 80;
451 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[5] = 96;
452 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[6] = 112;
453 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[7] = 128;
454 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[8] = 144;
455 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[9] = 160;
456 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[10] = 176;
457 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[11] = 192;
458 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[12] = 208;
459 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[13] = 224;
460 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[14] = 240;
461 bayer2dnrV23_attr.stManual.st2DSelect.gain_adj[15] = 256;
462
463 bayer2dnrV23_attr.stManual.st2DSelect.filter_strength = 1.0;
464 bayer2dnrV23_attr.stManual.st2DSelect.edgesofts = 1.0;
465 bayer2dnrV23_attr.stManual.st2DSelect.ratio = 0.01;
466 bayer2dnrV23_attr.stManual.st2DSelect.weight = 0.7;
467 bayer2dnrV23_attr.stManual.st2DSelect.gauss_guide = 0;
468 bayer2dnrV23_attr.stManual.st2DSelect.pix_diff = 16383;
469 bayer2dnrV23_attr.stManual.st2DSelect.diff_thld = 1024;
470
471 bayer2dnrV23_attr.stManual.st2DSelect.gain_bypass = 0;
472 bayer2dnrV23_attr.stManual.st2DSelect.gain_scale = 1;
473
474 bayer2dnrV23_attr.stManual.st2DSelect.trans_mode = 0;
475 bayer2dnrV23_attr.stManual.st2DSelect.trans_offset = 256;
476 bayer2dnrV23_attr.stManual.st2DSelect.itrans_offset = 32768;
477 bayer2dnrV23_attr.stManual.st2DSelect.trans_datmax = 1048575;
478
479 bayer2dnrV23_attr.stManual.st2DSelect.hdr_dgain_scale_s = 1;
480 bayer2dnrV23_attr.stManual.st2DSelect.hdr_dgain_scale_m = 1;
481
482
483 ret = rk_aiq_user_api2_abayer2dnrV23_SetAttrib(ctx, &bayer2dnrV23_attr);
484 printf("set bayer2dnr v2 attri manual ret:%d \n\n", ret);
485
486 rk_aiq_bayer2dnr_attrib_v23_t get_bayer2dnrV23_attr;
487 get_bayer2dnrV23_attr.sync.sync_mode = sync_mode;
488 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &get_bayer2dnrV23_attr);
489 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV23_attr.sync.done);
490
491 return ret;
492 }
493
sample_abayer2dnr_setReg_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)494 XCamReturn sample_abayer2dnr_setReg_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
495 {
496 XCamReturn ret = XCAM_RETURN_NO_ERROR;
497
498 rk_aiq_bayer2dnr_attrib_v2_t bayer2dnrV2_attr;
499 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
500 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &bayer2dnrV2_attr);
501 bayer2dnrV2_attr.sync.sync_mode = sync_mode;
502 bayer2dnrV2_attr.eMode = ABAYER2DNR_OP_MODE_REG_MANUAL;
503
504 //ISP_BAYNR_3A00_CTRL
505 bayer2dnrV2_attr.stManual.st2Dfix.baynr_lg2_mode = 0;
506 bayer2dnrV2_attr.stManual.st2Dfix.baynr_gauss_en = 1;
507 bayer2dnrV2_attr.stManual.st2Dfix.baynr_log_bypass = 0;
508 bayer2dnrV2_attr.stManual.st2Dfix.baynr_en = 1;
509
510 // ISP_BAYNR_3A00_DGAIN0-2
511 bayer2dnrV2_attr.stManual.st2Dfix.baynr_dgain[0] = 0x4000;
512 bayer2dnrV2_attr.stManual.st2Dfix.baynr_dgain[1] = 0x4000;
513 bayer2dnrV2_attr.stManual.st2Dfix.baynr_dgain[2] = 0x4000;
514
515 // ISP_BAYNR_3A00_PIXDIFF
516 bayer2dnrV2_attr.stManual.st2Dfix.baynr_pix_diff = 0x3fff;
517
518 // ISP_BAYNR_3A00_THLD
519 bayer2dnrV2_attr.stManual.st2Dfix.baynr_diff_thld = 0x3fff;
520 bayer2dnrV2_attr.stManual.st2Dfix.baynr_softthld = 0x00a;
521
522 // ISP_BAYNR_3A00_W1_STRENG
523 bayer2dnrV2_attr.stManual.st2Dfix.bltflt_streng = 0x0a3;
524 bayer2dnrV2_attr.stManual.st2Dfix.baynr_reg_w1 = 0x3ff;
525
526 // ISP_BAYNR_3A00_SIGMAX0-15
527 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[0] = 0x1010;
528 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[1] = 0x1210;
529 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[2] = 0x1410;
530 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[3] = 0x1610;
531 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[4] = 0x1810;
532 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[5] = 0x1c10;
533 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[6] = 0x2010;
534 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[7] = 0x2410;
535 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[8] = 0x2810;
536 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[9] = 0x2c10;
537 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[10] = 0x3010;
538 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[11] = 0x3410;
539 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[12] = 0x3810;
540 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[13] = 0x3a10;
541 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[14] = 0x3c10;
542 bayer2dnrV2_attr.stManual.st2Dfix.sigma_x[15] = 0x4010;
543
544 // ISP_BAYNR_3A00_SIGMAY0-15
545 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[0] = 0x0300;
546 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[1] = 0x0300;
547 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[2] = 0x0300;
548 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[3] = 0x0300;
549 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[4] = 0x0300;
550 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[5] = 0x0300;
551 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[6] = 0x0300;
552 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[7] = 0x0300;
553 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[8] = 0x0300;
554 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[9] = 0x0300;
555 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[10] = 0x0300;
556 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[11] = 0x0300;
557 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[12] = 0x0300;
558 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[13] = 0x0300;
559 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[14] = 0x0300;
560 bayer2dnrV2_attr.stManual.st2Dfix.sigma_y[15] = 0x0300;
561
562 // ISP_BAYNR_3A00_WRIT_D
563 bayer2dnrV2_attr.stManual.st2Dfix.weit_d[0] = 0x178;
564 bayer2dnrV2_attr.stManual.st2Dfix.weit_d[1] = 0x26d;
565 bayer2dnrV2_attr.stManual.st2Dfix.weit_d[2] = 0x31d;
566
567
568 ret = rk_aiq_user_api2_abayer2dnrV2_SetAttrib(ctx, &bayer2dnrV2_attr);
569 printf("set bayer2dnr v2 attri manual ret:%d \n\n", ret);
570
571 rk_aiq_bayer2dnr_attrib_v2_t get_bayer2dnrV2_attr;
572 get_bayer2dnrV2_attr.sync.sync_mode = sync_mode;
573 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &get_bayer2dnrV2_attr);
574 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV2_attr.sync.done);
575
576 return ret;
577 }
578
579
sample_abayer2dnr_setReg_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)580 XCamReturn sample_abayer2dnr_setReg_v23(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
581 {
582 XCamReturn ret = XCAM_RETURN_NO_ERROR;
583
584 rk_aiq_bayer2dnr_attrib_v23_t bayer2dnrV23_attr;
585 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
586 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &bayer2dnrV23_attr);
587 bayer2dnrV23_attr.sync.sync_mode = sync_mode;
588 bayer2dnrV23_attr.eMode = ABAYER2DNR_V23_OP_MODE_REG_MANUAL;
589
590 //ISP_BAYNR_3A00_CTRL
591 bayer2dnrV23_attr.stManual.st2Dfix.bay3d_gain_en = 1;
592 bayer2dnrV23_attr.stManual.st2Dfix.lg2_mode = 0;
593 bayer2dnrV23_attr.stManual.st2Dfix.gauss_en = 1;
594 bayer2dnrV23_attr.stManual.st2Dfix.log_bypass = 0;
595 bayer2dnrV23_attr.stManual.st2Dfix.bayer_en = 1;
596
597 // ISP_BAYNR_3A00_DGAIN0-2
598 bayer2dnrV23_attr.stManual.st2Dfix.dgain[0] = 0x4000;
599 bayer2dnrV23_attr.stManual.st2Dfix.dgain[1] = 0x4000;
600 bayer2dnrV23_attr.stManual.st2Dfix.dgain[2] = 0x4000;
601
602 // ISP_BAYNR_3A00_PIXDIFF
603 bayer2dnrV23_attr.stManual.st2Dfix.pix_diff = 0x3fff;
604
605 // ISP_BAYNR_3A00_THLD
606 bayer2dnrV23_attr.stManual.st2Dfix.diff_thld = 0x3fff;
607 bayer2dnrV23_attr.stManual.st2Dfix.softthld = 0x00a;
608
609 // ISP_BAYNR_3A00_W1_STRENG
610 bayer2dnrV23_attr.stManual.st2Dfix.bltflt_streng = 0x0a3;
611 bayer2dnrV23_attr.stManual.st2Dfix.reg_w1 = 0x3ff;
612
613 // ISP_BAYNR_3A00_SIGMAX0-15
614 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[0] = 0x1010;
615 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[1] = 0x1210;
616 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[2] = 0x1410;
617 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[3] = 0x1610;
618 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[4] = 0x1810;
619 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[5] = 0x1c10;
620 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[6] = 0x2010;
621 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[7] = 0x2410;
622 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[8] = 0x2810;
623 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[9] = 0x2c10;
624 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[10] = 0x3010;
625 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[11] = 0x3410;
626 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[12] = 0x3810;
627 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[13] = 0x3a10;
628 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[14] = 0x3c10;
629 bayer2dnrV23_attr.stManual.st2Dfix.sigma_x[15] = 0x4010;
630
631 // ISP_BAYNR_3A00_SIGMAY0-15
632 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[0] = 0x0300;
633 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[1] = 0x0300;
634 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[2] = 0x0300;
635 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[3] = 0x0300;
636 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[4] = 0x0300;
637 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[5] = 0x0300;
638 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[6] = 0x0300;
639 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[7] = 0x0300;
640 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[8] = 0x0300;
641 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[9] = 0x0300;
642 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[10] = 0x0300;
643 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[11] = 0x0300;
644 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[12] = 0x0300;
645 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[13] = 0x0300;
646 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[14] = 0x0300;
647 bayer2dnrV23_attr.stManual.st2Dfix.sigma_y[15] = 0x0300;
648
649 // ISP_BAYNR_3A00_WRIT_D
650 bayer2dnrV23_attr.stManual.st2Dfix.weit_d[0] = 0x178;
651 bayer2dnrV23_attr.stManual.st2Dfix.weit_d[1] = 0x26d;
652 bayer2dnrV23_attr.stManual.st2Dfix.weit_d[2] = 0x31d;
653
654 bayer2dnrV23_attr.stManual.st2Dfix.lg2_lgoff = 0x8000;
655 bayer2dnrV23_attr.stManual.st2Dfix.lg2_off = 0x100;
656
657 bayer2dnrV23_attr.stManual.st2Dfix.dat_max = 0xfffff;
658
659 bayer2dnrV23_attr.stManual.st2Dfix.rgain_off = 0x00;
660 bayer2dnrV23_attr.stManual.st2Dfix.bgain_off = 0x00;
661
662 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[0] = 0x10;
663 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[1] = 0x20;
664 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[2] = 0x30;
665 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[3] = 0x40;
666 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[4] = 0x50;
667 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[5] = 0x60;
668 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[6] = 0x70;
669 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[7] = 0x80;
670 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[8] = 0x90;
671 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[9] = 0xa0;
672 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[10] = 0xb0;
673 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[11] = 0xc0;
674 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[12] = 0xd0;
675 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[13] = 0xe0;
676 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[14] = 0xf0;
677 bayer2dnrV23_attr.stManual.st2Dfix.gain_x[15] = 0xff;
678
679 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[0] = 0x10;
680 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[1] = 0x20;
681 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[2] = 0x30;
682 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[3] = 0x40;
683 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[4] = 0x50;
684 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[5] = 0x60;
685 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[6] = 0x70;
686 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[7] = 0x80;
687 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[8] = 0x90;
688 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[9] = 0xa0;
689 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[10] = 0xb0;
690 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[11] = 0xc0;
691 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[12] = 0xd0;
692 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[13] = 0x30;
693 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[14] = 0xf0;
694 bayer2dnrV23_attr.stManual.st2Dfix.gain_y[15] = 0xff;
695
696 ret = rk_aiq_user_api2_abayer2dnrV23_SetAttrib(ctx, &bayer2dnrV23_attr);
697 printf("set bayer2dnr v2 attri manual ret:%d \n\n", ret);
698
699 rk_aiq_bayer2dnr_attrib_v23_t get_bayer2dnrV23_attr;
700 get_bayer2dnrV23_attr.sync.sync_mode = sync_mode;
701 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &get_bayer2dnrV23_attr);
702 printf("get abayer2dnr v2 attri ret:%d done:%d \n\n", ret, get_bayer2dnrV23_attr.sync.done);
703
704 return ret;
705 }
706
sample_abayer2dnr_setStrength_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)707 XCamReturn sample_abayer2dnr_setStrength_v2(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
708 {
709 XCamReturn ret = XCAM_RETURN_NO_ERROR;
710
711 rk_aiq_bayer2dnr_strength_v2_t bayer2dnrV2Strenght;
712 bayer2dnrV2Strenght.sync.sync_mode = sync_mode;
713 bayer2dnrV2Strenght.percent = fStrength;
714 ret = rk_aiq_user_api2_abayer2dnrV2_SetStrength(ctx, &bayer2dnrV2Strenght);
715 printf("Set abayer2dnr v2 set strength ret:%d strength:%f \n\n", ret, bayer2dnrV2Strenght.percent);
716
717 rk_aiq_bayer2dnr_strength_v2_t get_bayer2dnrV2Strenght;
718 get_bayer2dnrV2Strenght.sync.sync_mode = sync_mode;
719 ret = rk_aiq_user_api2_abayer2dnrV2_GetStrength(ctx, &get_bayer2dnrV2Strenght);
720 printf("get abayer2dnr v2 attri ret:%d strength:%f done:%d\n\n",
721 ret, get_bayer2dnrV2Strenght.percent, get_bayer2dnrV2Strenght.sync.done);
722
723 return ret;
724 }
725
sample_abayer2dnr_setStrength_v23(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,float fStrength)726 XCamReturn sample_abayer2dnr_setStrength_v23(const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, float fStrength)
727 {
728 XCamReturn ret = XCAM_RETURN_NO_ERROR;
729
730 rk_aiq_bayer2dnr_strength_v23_t bayer2dnrV23Strenght;
731 bayer2dnrV23Strenght.sync.sync_mode = sync_mode;
732 bayer2dnrV23Strenght.percent = fStrength;
733 bayer2dnrV23Strenght.strength_enable = true;
734 ret = rk_aiq_user_api2_abayer2dnrV23_SetStrength(ctx, &bayer2dnrV23Strenght);
735 printf("Set abayer2dnr v2 set strength ret:%d strength:%f \n\n", ret, bayer2dnrV23Strenght.percent);
736
737 rk_aiq_bayer2dnr_strength_v23_t get_bayer2dnrV23Strenght;
738 get_bayer2dnrV23Strenght.sync.sync_mode = sync_mode;
739 ret = rk_aiq_user_api2_abayer2dnrV23_GetStrength(ctx, &get_bayer2dnrV23Strenght);
740 printf("get abayer2dnr v2 attri ret:%d strength:%f done:%d\n\n",
741 ret, get_bayer2dnrV23Strenght.percent, get_bayer2dnrV23Strenght.sync.done);
742
743 return ret;
744 }
745
746
sample_abayer2dnr_module(const void * arg)747 XCamReturn sample_abayer2dnr_module (const void *arg)
748 {
749 int key = -1;
750 CLEAR();
751 XCamReturn ret = XCAM_RETURN_NO_ERROR;
752 const demo_context_t *demo_ctx = (demo_context_t *)arg;
753 const rk_aiq_sys_ctx_t* ctx ;
754
755 if(demo_ctx->camGroup) {
756 ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
757 printf("##################group !!!!########################\n");
758 } else {
759 ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
760 printf("##################sigle !!!!########################\n");
761 }
762
763 if (ctx == nullptr) {
764 ERR ("%s, ctx is nullptr\n", __FUNCTION__);
765 return XCAM_RETURN_ERROR_PARAM;
766 }
767
768 rk_aiq_bayer2dnr_attrib_v2_t default_bayer2dnrV2_attr;
769 rk_aiq_bayer2dnr_attrib_v23_t default_bayer2dnrV23_attr;
770
771 if (CHECK_ISP_HW_V30()) {
772 ret = rk_aiq_user_api2_abayer2dnrV2_GetAttrib(ctx, &default_bayer2dnrV2_attr);
773 printf("get abayer2dnr v2 default auto attri ret:%d \n\n", ret);
774 }
775 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
776 ret = rk_aiq_user_api2_abayer2dnrV23_GetAttrib(ctx, &default_bayer2dnrV23_attr);
777 printf("get abayer2dnr v23 default auto attri ret:%d \n\n", ret);
778 }
779
780 do {
781 sample_abayer2dnr_usage ();
782
783 key = getchar ();
784 while (key == '\n' || key == '\r')
785 key = getchar ();
786 printf ("\n");
787
788 switch (key) {
789 case '0':
790 if (CHECK_ISP_HW_V30()) {
791 sample_abayer2dnr_getAttri_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
792 }
793 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
794 sample_abayer2dnr_getAttri_v23(ctx, RK_AIQ_UAPI_MODE_SYNC);
795 }
796 break;
797 case '1':
798 if (CHECK_ISP_HW_V30()) {
799 sample_abayer2dnr_getStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
800 }
801 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
802 sample_abayer2dnr_getStrength_v23(ctx, RK_AIQ_UAPI_MODE_SYNC);
803 }
804 break;
805 case '2':
806 if (CHECK_ISP_HW_V30()) {
807 sample_abayer2dnr_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
808 }
809
810 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
811 sample_abayer2dnr_setAuto_v23(ctx, RK_AIQ_UAPI_MODE_SYNC);
812 }
813 break;
814 case '3':
815 if (CHECK_ISP_HW_V30()) {
816 sample_abayer2dnr_setManual_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
817 }
818
819 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
820 sample_abayer2dnr_setManual_v23(ctx, RK_AIQ_UAPI_MODE_SYNC);
821 }
822 break;
823 case '4':
824 if (CHECK_ISP_HW_V30()) {
825 sample_abayer2dnr_setReg_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
826 }
827 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
828 sample_abayer2dnr_setReg_v23(ctx, RK_AIQ_UAPI_MODE_SYNC);
829 }
830 break;
831 case '5':
832 if (CHECK_ISP_HW_V30()) {
833 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
834 }
835 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
836 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_SYNC, 1.0);
837 }
838 break;
839 case '6':
840 if (CHECK_ISP_HW_V30()) {
841 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
842 }
843 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
844 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.0);
845 }
846 break;
847 case '7':
848 if (CHECK_ISP_HW_V30()) {
849 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
850 }
851 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
852 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_SYNC, 0.5);
853 }
854 break;
855 case '8':
856 if (CHECK_ISP_HW_V30()) {
857 sample_abayer2dnr_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, default_bayer2dnrV2_attr);
858 }
859 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
860 sample_abayer2dnr_setDefault_v23(ctx, RK_AIQ_UAPI_MODE_SYNC, default_bayer2dnrV23_attr);
861 }
862 break;
863 case 'a':
864 if (CHECK_ISP_HW_V30()) {
865 sample_abayer2dnr_getAttri_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
866 }
867 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
868 sample_abayer2dnr_getAttri_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC);
869 }
870 break;
871 case 'b':
872 if (CHECK_ISP_HW_V30()) {
873 sample_abayer2dnr_getStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
874 }
875 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
876 sample_abayer2dnr_getStrength_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC);
877 }
878 break;
879 case 'c':
880 if (CHECK_ISP_HW_V30()) {
881 sample_abayer2dnr_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
882 }
883
884 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
885 sample_abayer2dnr_setAuto_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC);
886 }
887
888 break;
889 case 'd':
890 if (CHECK_ISP_HW_V30()) {
891 sample_abayer2dnr_setManual_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
892 }
893
894 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
895 sample_abayer2dnr_setManual_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC);
896 }
897
898 break;
899
900 case 'e':
901 if (CHECK_ISP_HW_V30()) {
902 sample_abayer2dnr_setReg_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
903 }
904 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
905 sample_abayer2dnr_setReg_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC);
906 }
907 break;
908 case 'f':
909 if (CHECK_ISP_HW_V30()) {
910 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
911 }
912 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
913 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC, 1.0);
914 }
915 break;
916 case 'g':
917 if (CHECK_ISP_HW_V30()) {
918 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
919 }
920 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
921 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.0);
922 }
923 break;
924 case 'h':
925 if (CHECK_ISP_HW_V30()) {
926 sample_abayer2dnr_setStrength_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
927 }
928 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
929 sample_abayer2dnr_setStrength_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC, 0.5);
930 }
931 break;
932 case 'i':
933 if (CHECK_ISP_HW_V30()) {
934 sample_abayer2dnr_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_bayer2dnrV2_attr);
935 }
936 if (CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
937 sample_abayer2dnr_setDefault_v23(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_bayer2dnrV23_attr);
938 }
939 break;
940 default:
941 printf("not support test\n\n");
942 break;
943 }
944
945 } while (key != 'q' && key != 'Q');
946
947 return ret;
948 }
949
950