xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_abayer2dnr_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_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