xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_adrc_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 #include "uAPI2/rk_aiq_user_api2_adrc.h"
20 
sample_adrc_usage()21 static void sample_adrc_usage()
22 {
23     printf("Usage : \n");
24     printf("\t 0) ADRC:         test rk_aiq_user_api2_adrc_v10_SetAttrib stManual Sync.\n");
25     printf("\t 1) ADRC:         test rk_aiq_user_api2_adrc_v10_GetAttrib stManual Async.\n");
26     printf("\t 2) ADRC:         test rk_aiq_user_api2_adrc_v10_GetAttrib.\n");
27     printf("\t 3) ADRC:         test rk_aiq_user_api2_adrc_v11_SetAttrib stManual Sync.\n");
28     printf("\t 4) ADRC:         test rk_aiq_user_api2_adrc_v11_GetAttrib stManual Async.\n");
29     printf("\t 5) ADRC:         test rk_aiq_user_api2_adrc_v11_GetAttrib.\n");
30     printf("\t 6) ADRC:         test rk_aiq_user_api2_adrc_v12_SetAttrib stManual Sync.\n");
31     printf("\t 7) ADRC:         test rk_aiq_user_api2_adrc_v12_GetAttrib stManual Async.\n");
32     printf("\t 8) ADRC:         test rk_aiq_user_api2_adrc_v12_GetAttrib.\n");
33     printf("\t 9) ADRC:         test rk_aiq_user_api2_adrc_v12_lite_SetAttrib stManual Sync.\n");
34     printf("\t a) ADRC:         test rk_aiq_user_api2_adrc_v12_lite_GetAttrib stManual Async.\n");
35     printf("\t b) ADRC:         test rk_aiq_user_api2_adrc_v12_lite_GetAttrib.\n");
36     printf("\t c) ADRC:         test rk_aiq_user_api2_adrc_SetAttrib stManual Sync.\n");
37     printf("\t d) ADRC:         test rk_aiq_user_api2_adrc_SetAttrib stManual Async.\n");
38     printf("\t e) ADRC:         test rk_aiq_user_api2_adrc_GetAttrib.\n");
39     printf("\t f) ADRC:         test rk_aiq_uapi2_getDrcGain.\n");
40     printf("\t g) ADRC:         test rk_aiq_uapi2_setDrcGain.\n");
41     printf("\t h) ADRC:         test rk_aiq_uapi2_getDrcHiLit.\n");
42     printf("\t i) ADRC:         test rk_aiq_uapi2_setDrcHiLit.\n");
43     printf("\t j) ADRC:         test rk_aiq_uapi2_getDrcLocalData.\n");
44     printf("\t k) ADRC:         test rk_aiq_uapi2_setDrcLocalData.\n");
45     printf("\t q) ADRC:         return to main sample screen.\n");
46 
47     printf("\n");
48     printf("\t please press the key: ");
49 
50     return;
51 }
52 
sample_print_adrc_info(const void * arg)53 void sample_print_adrc_info(const void *arg)
54 {
55     printf ("enter ADRC modult test!\n");
56 }
57 
sample_adrc_module(const void * arg)58 XCamReturn sample_adrc_module(const void *arg)
59 {
60     int key = -1;
61     CLEAR();
62 
63     drcAttrV10_t attr_v10;
64     drcAttrV11_t attr_v11;
65     drcAttrV12_t attr_v12;
66     drcAttrV12Lite_t attr_v12_lite;
67     drc_attrib_t attr_v2;
68     const demo_context_t *demo_ctx = (demo_context_t *)arg;
69     const rk_aiq_sys_ctx_t* ctx ;
70     if (demo_ctx->camGroup) {
71         ctx = (rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
72     } else {
73         ctx = (rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
74     }
75 
76     do {
77         sample_adrc_usage ();
78 
79         key = getchar ();
80         while (key == '\n' || key == '\r')
81             key = getchar();
82         printf ("\n");
83 
84         switch (key) {
85             case '0': {
86                 printf("\t ADRC test rk_aiq_user_api2_adrc_v10_SetAttrib stManual Sync\n\n");
87                 attr_v10.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_DEFAULT;
88                 attr_v10.sync.done                                       = false;
89                 attr_v10.opMode                                          = DRC_OPMODE_MANUAL;
90                 attr_v10.stManual.Enable                                 = true;
91                 attr_v10.stManual.DrcGain.Alpha                          = 0.2;
92                 attr_v10.stManual.DrcGain.DrcGain                        = 2;
93                 attr_v10.stManual.DrcGain.Clip                           = 1;
94                 attr_v10.stManual.HiLight.Strength                       = 0.5;
95                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.LocalWeit = 1;
96                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.GlobalContrast = 0.5;
97                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.LoLitContrast  = 0.5;
98                 attr_v10.stManual.LocalTMOSetting.curPixWeit                  = 0.376471;
99                 attr_v10.stManual.LocalTMOSetting.preFrameWeit                = 0.8;
100                 attr_v10.stManual.LocalTMOSetting.Range_force_sgm             = 0.0;
101                 attr_v10.stManual.LocalTMOSetting.Range_sgm_cur               = 0.2;
102                 attr_v10.stManual.LocalTMOSetting.Range_sgm_pre               = 0.2;
103                 attr_v10.stManual.LocalTMOSetting.Space_sgm_cur               = 4068;
104                 attr_v10.stManual.LocalTMOSetting.Space_sgm_pre               = 3068;
105                 attr_v10.stManual.CompressSetting.Mode                        = COMPRESS_AUTO;
106                 attr_v10.stManual.CompressSetting.Manual_curve[0]             = 0;
107                 attr_v10.stManual.CompressSetting.Manual_curve[1]             = 558;
108                 attr_v10.stManual.CompressSetting.Manual_curve[2]             = 1087;
109                 attr_v10.stManual.CompressSetting.Manual_curve[3]             = 1588;
110                 attr_v10.stManual.CompressSetting.Manual_curve[4]             = 2063;
111                 attr_v10.stManual.CompressSetting.Manual_curve[5]             = 2515;
112                 attr_v10.stManual.CompressSetting.Manual_curve[6]             = 2944;
113                 attr_v10.stManual.CompressSetting.Manual_curve[7]             = 3353;
114                 attr_v10.stManual.CompressSetting.Manual_curve[8]             = 3744;
115                 attr_v10.stManual.CompressSetting.Manual_curve[9]             = 4473;
116                 attr_v10.stManual.CompressSetting.Manual_curve[10]            = 5139;
117                 attr_v10.stManual.CompressSetting.Manual_curve[11]            = 5751;
118                 attr_v10.stManual.CompressSetting.Manual_curve[12]            = 6316;
119                 attr_v10.stManual.CompressSetting.Manual_curve[13]            = 6838;
120                 attr_v10.stManual.CompressSetting.Manual_curve[14]            = 7322;
121                 attr_v10.stManual.CompressSetting.Manual_curve[15]            = 7772;
122                 attr_v10.stManual.CompressSetting.Manual_curve[16]            = 8192;
123                 attr_v10.stManual.Scale_y[0]                                  = 0;
124                 attr_v10.stManual.Scale_y[1]                                  = 2;
125                 attr_v10.stManual.Scale_y[2]                                  = 20;
126                 attr_v10.stManual.Scale_y[3]                                  = 76;
127                 attr_v10.stManual.Scale_y[4]                                  = 193;
128                 attr_v10.stManual.Scale_y[5]                                  = 381;
129                 attr_v10.stManual.Scale_y[6]                                  = 631;
130                 attr_v10.stManual.Scale_y[7]                                  = 772;
131                 attr_v10.stManual.Scale_y[8]                                  = 919;
132                 attr_v10.stManual.Scale_y[9]                                  = 1066;
133                 attr_v10.stManual.Scale_y[10]                                 = 1210;
134                 attr_v10.stManual.Scale_y[11]                                 = 1479;
135                 attr_v10.stManual.Scale_y[12]                                 = 1700;
136                 attr_v10.stManual.Scale_y[13]                                 = 1863;
137                 attr_v10.stManual.Scale_y[14]                                 = 1968;
138                 attr_v10.stManual.Scale_y[15]                                 = 2024;
139                 attr_v10.stManual.Scale_y[16]                                 = 2048;
140                 attr_v10.stManual.Edge_Weit                                   = 0.02;
141                 attr_v10.stManual.OutPutLongFrame                             = false;
142                 attr_v10.stManual.IIR_frame                                   = 2;
143                 rk_aiq_user_api2_adrc_v10_SetAttrib(ctx, &attr_v10);
144                 break;
145             }
146             case '1': {
147                 printf("\t ADRC test rk_aiq_user_api2_adrc_v10_SetAttrib stManual Async\n\n");
148                 attr_v10.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_ASYNC;
149                 attr_v10.sync.done                                       = false;
150                 attr_v10.opMode                                          = DRC_OPMODE_MANUAL;
151                 attr_v10.stManual.Enable                                 = true;
152                 attr_v10.stManual.DrcGain.Alpha                          = 0.1;
153                 attr_v10.stManual.DrcGain.DrcGain                        = 2;
154                 attr_v10.stManual.DrcGain.Clip                           = 1;
155                 attr_v10.stManual.HiLight.Strength                       = 0.5;
156                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.LocalWeit = 1;
157                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.GlobalContrast = 0.5;
158                 attr_v10.stManual.LocalTMOSetting.LocalTMOData.LoLitContrast  = 0.5;
159                 attr_v10.stManual.LocalTMOSetting.curPixWeit                  = 0.376471;
160                 attr_v10.stManual.LocalTMOSetting.preFrameWeit                = 0.8;
161                 attr_v10.stManual.LocalTMOSetting.Range_force_sgm             = 0.0;
162                 attr_v10.stManual.LocalTMOSetting.Range_sgm_cur               = 0.2;
163                 attr_v10.stManual.LocalTMOSetting.Range_sgm_pre               = 0.2;
164                 attr_v10.stManual.LocalTMOSetting.Space_sgm_cur               = 4068;
165                 attr_v10.stManual.LocalTMOSetting.Space_sgm_pre               = 3068;
166                 attr_v10.stManual.CompressSetting.Mode                        = COMPRESS_AUTO;
167                 attr_v10.stManual.CompressSetting.Manual_curve[0]             = 0;
168                 attr_v10.stManual.CompressSetting.Manual_curve[1]             = 558;
169                 attr_v10.stManual.CompressSetting.Manual_curve[2]             = 1087;
170                 attr_v10.stManual.CompressSetting.Manual_curve[3]             = 1588;
171                 attr_v10.stManual.CompressSetting.Manual_curve[4]             = 2063;
172                 attr_v10.stManual.CompressSetting.Manual_curve[5]             = 2515;
173                 attr_v10.stManual.CompressSetting.Manual_curve[6]             = 2944;
174                 attr_v10.stManual.CompressSetting.Manual_curve[7]             = 3353;
175                 attr_v10.stManual.CompressSetting.Manual_curve[8]             = 3744;
176                 attr_v10.stManual.CompressSetting.Manual_curve[9]             = 4473;
177                 attr_v10.stManual.CompressSetting.Manual_curve[10]            = 5139;
178                 attr_v10.stManual.CompressSetting.Manual_curve[11]            = 5751;
179                 attr_v10.stManual.CompressSetting.Manual_curve[12]            = 6316;
180                 attr_v10.stManual.CompressSetting.Manual_curve[13]            = 6838;
181                 attr_v10.stManual.CompressSetting.Manual_curve[14]            = 7322;
182                 attr_v10.stManual.CompressSetting.Manual_curve[15]            = 7772;
183                 attr_v10.stManual.CompressSetting.Manual_curve[16]            = 8192;
184                 attr_v10.stManual.Scale_y[0]                                  = 0;
185                 attr_v10.stManual.Scale_y[1]                                  = 2;
186                 attr_v10.stManual.Scale_y[2]                                  = 20;
187                 attr_v10.stManual.Scale_y[3]                                  = 76;
188                 attr_v10.stManual.Scale_y[4]                                  = 193;
189                 attr_v10.stManual.Scale_y[5]                                  = 381;
190                 attr_v10.stManual.Scale_y[6]                                  = 631;
191                 attr_v10.stManual.Scale_y[7]                                  = 772;
192                 attr_v10.stManual.Scale_y[8]                                  = 919;
193                 attr_v10.stManual.Scale_y[9]                                  = 1066;
194                 attr_v10.stManual.Scale_y[10]                                 = 1210;
195                 attr_v10.stManual.Scale_y[11]                                 = 1479;
196                 attr_v10.stManual.Scale_y[12]                                 = 1700;
197                 attr_v10.stManual.Scale_y[13]                                 = 1863;
198                 attr_v10.stManual.Scale_y[14]                                 = 1968;
199                 attr_v10.stManual.Scale_y[15]                                 = 2024;
200                 attr_v10.stManual.Scale_y[16]                                 = 2048;
201                 attr_v10.stManual.Edge_Weit                                   = 0.02;
202                 attr_v10.stManual.OutPutLongFrame                             = false;
203                 attr_v10.stManual.IIR_frame                                   = 2;
204                 rk_aiq_user_api2_adrc_v10_SetAttrib(ctx, &attr_v10);
205                 break;
206             }
207             case '2': {
208                 printf("\t ADRC test rk_aiq_user_api2_adrc_GetAttrib\n\n");
209                 rk_aiq_user_api2_adrc_v10_GetAttrib(ctx, &attr_v10);
210                 printf("\t sync = %d, done = %d\n", attr_v10.sync.sync_mode, attr_v10.sync.done);
211                 printf("\t opMode:%d EnvLv:%f ISO:%f\n\n", attr_v10.opMode,
212                        attr_v10.Info.CtrlInfo.EnvLv, attr_v10.Info.CtrlInfo.ISO);
213                 printf("\t stManual DrcGain:%f Alpha:%f Clip:%f\n\n",
214                        attr_v10.stManual.DrcGain.DrcGain, attr_v10.stManual.DrcGain.Alpha,
215                        attr_v10.stManual.DrcGain.Clip);
216                 break;
217             }
218             case '3': {
219                 printf("\t ADRC test rk_aiq_user_api2_adrc_v11_SetAttrib stManual Sync\n\n");
220                 attr_v11.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_DEFAULT;
221                 attr_v11.sync.done                                       = false;
222                 attr_v11.opMode                                          = DRC_OPMODE_MANUAL;
223                 attr_v11.stManual.Enable                                 = true;
224                 attr_v11.stManual.DrcGain.Alpha                          = 0.2;
225                 attr_v11.stManual.DrcGain.DrcGain                        = 2;
226                 attr_v11.stManual.DrcGain.Clip                           = 1;
227                 attr_v11.stManual.HiLight.Strength                       = 0.5;
228                 attr_v11.stManual.LocalSetting.LocalData.LocalWeit       = 1;
229                 attr_v11.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
230                 attr_v11.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
231                 attr_v11.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
232                 attr_v11.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
233                 attr_v11.stManual.LocalSetting.curPixWeit                = 0.376471;
234                 attr_v11.stManual.LocalSetting.preFrameWeit              = 0.8;
235                 attr_v11.stManual.LocalSetting.Range_force_sgm           = 0.0;
236                 attr_v11.stManual.LocalSetting.Range_sgm_cur             = 0.2;
237                 attr_v11.stManual.LocalSetting.Range_sgm_pre             = 0.2;
238                 attr_v11.stManual.LocalSetting.Space_sgm_cur             = 4068;
239                 attr_v11.stManual.LocalSetting.Space_sgm_pre             = 3068;
240                 attr_v11.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
241                 attr_v11.stManual.CompressSetting.Manual_curve[0]        = 0;
242                 attr_v11.stManual.CompressSetting.Manual_curve[1]        = 558;
243                 attr_v11.stManual.CompressSetting.Manual_curve[2]        = 1087;
244                 attr_v11.stManual.CompressSetting.Manual_curve[3]        = 1588;
245                 attr_v11.stManual.CompressSetting.Manual_curve[4]        = 2063;
246                 attr_v11.stManual.CompressSetting.Manual_curve[5]        = 2515;
247                 attr_v11.stManual.CompressSetting.Manual_curve[6]        = 2944;
248                 attr_v11.stManual.CompressSetting.Manual_curve[7]        = 3353;
249                 attr_v11.stManual.CompressSetting.Manual_curve[8]        = 3744;
250                 attr_v11.stManual.CompressSetting.Manual_curve[9]        = 4473;
251                 attr_v11.stManual.CompressSetting.Manual_curve[10]       = 5139;
252                 attr_v11.stManual.CompressSetting.Manual_curve[11]       = 5751;
253                 attr_v11.stManual.CompressSetting.Manual_curve[12]       = 6316;
254                 attr_v11.stManual.CompressSetting.Manual_curve[13]       = 6838;
255                 attr_v11.stManual.CompressSetting.Manual_curve[14]       = 7322;
256                 attr_v11.stManual.CompressSetting.Manual_curve[15]       = 7772;
257                 attr_v11.stManual.CompressSetting.Manual_curve[16]       = 8192;
258                 attr_v11.stManual.Scale_y[0]                             = 0;
259                 attr_v11.stManual.Scale_y[1]                             = 2;
260                 attr_v11.stManual.Scale_y[2]                             = 20;
261                 attr_v11.stManual.Scale_y[3]                             = 76;
262                 attr_v11.stManual.Scale_y[4]                             = 193;
263                 attr_v11.stManual.Scale_y[5]                             = 381;
264                 attr_v11.stManual.Scale_y[6]                             = 631;
265                 attr_v11.stManual.Scale_y[7]                             = 772;
266                 attr_v11.stManual.Scale_y[8]                             = 919;
267                 attr_v11.stManual.Scale_y[9]                             = 1066;
268                 attr_v11.stManual.Scale_y[10]                            = 1211;
269                 attr_v11.stManual.Scale_y[11]                            = 1479;
270                 attr_v11.stManual.Scale_y[12]                            = 1700;
271                 attr_v11.stManual.Scale_y[13]                            = 1863;
272                 attr_v11.stManual.Scale_y[14]                            = 1968;
273                 attr_v11.stManual.Scale_y[15]                            = 2024;
274                 attr_v11.stManual.Scale_y[16]                            = 2048;
275                 attr_v11.stManual.Edge_Weit                              = 0.02;
276                 attr_v11.stManual.OutPutLongFrame                        = false;
277                 attr_v11.stManual.IIR_frame                              = 2;
278                 rk_aiq_user_api2_adrc_v11_SetAttrib(ctx, &attr_v11);
279                 break;
280             }
281             case '4': {
282                 printf("\t ADRC test rk_aiq_user_api2_adrc_v11_SetAttrib stManual Async\n\n");
283                 attr_v11.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_ASYNC;
284                 attr_v11.sync.done                                       = false;
285                 attr_v11.opMode                                          = DRC_OPMODE_MANUAL;
286                 attr_v11.stManual.Enable                                 = true;
287                 attr_v11.stManual.DrcGain.Alpha                          = 0.1;
288                 attr_v11.stManual.DrcGain.DrcGain                        = 2;
289                 attr_v11.stManual.DrcGain.Clip                           = 1;
290                 attr_v11.stManual.HiLight.Strength                       = 0.5;
291                 attr_v11.stManual.LocalSetting.LocalData.LocalWeit       = 1;
292                 attr_v11.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
293                 attr_v11.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
294                 attr_v11.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
295                 attr_v11.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
296                 attr_v11.stManual.LocalSetting.curPixWeit                = 0.376471;
297                 attr_v11.stManual.LocalSetting.preFrameWeit              = 0.8;
298                 attr_v11.stManual.LocalSetting.Range_force_sgm           = 0.0;
299                 attr_v11.stManual.LocalSetting.Range_sgm_cur             = 0.2;
300                 attr_v11.stManual.LocalSetting.Range_sgm_pre             = 0.2;
301                 attr_v11.stManual.LocalSetting.Space_sgm_cur             = 4068;
302                 attr_v11.stManual.LocalSetting.Space_sgm_pre             = 3068;
303                 attr_v11.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
304                 attr_v11.stManual.CompressSetting.Manual_curve[0]        = 0;
305                 attr_v11.stManual.CompressSetting.Manual_curve[1]        = 558;
306                 attr_v11.stManual.CompressSetting.Manual_curve[2]        = 1087;
307                 attr_v11.stManual.CompressSetting.Manual_curve[3]        = 1588;
308                 attr_v11.stManual.CompressSetting.Manual_curve[4]        = 2063;
309                 attr_v11.stManual.CompressSetting.Manual_curve[5]        = 2515;
310                 attr_v11.stManual.CompressSetting.Manual_curve[6]        = 2944;
311                 attr_v11.stManual.CompressSetting.Manual_curve[7]        = 3353;
312                 attr_v11.stManual.CompressSetting.Manual_curve[8]        = 3744;
313                 attr_v11.stManual.CompressSetting.Manual_curve[9]        = 4473;
314                 attr_v11.stManual.CompressSetting.Manual_curve[10]       = 5139;
315                 attr_v11.stManual.CompressSetting.Manual_curve[11]       = 5751;
316                 attr_v11.stManual.CompressSetting.Manual_curve[12]       = 6316;
317                 attr_v11.stManual.CompressSetting.Manual_curve[13]       = 6838;
318                 attr_v11.stManual.CompressSetting.Manual_curve[14]       = 7322;
319                 attr_v11.stManual.CompressSetting.Manual_curve[15]       = 7772;
320                 attr_v11.stManual.CompressSetting.Manual_curve[16]       = 8192;
321                 attr_v11.stManual.Scale_y[0]                             = 0;
322                 attr_v11.stManual.Scale_y[1]                             = 2;
323                 attr_v11.stManual.Scale_y[2]                             = 20;
324                 attr_v11.stManual.Scale_y[3]                             = 76;
325                 attr_v11.stManual.Scale_y[4]                             = 193;
326                 attr_v11.stManual.Scale_y[5]                             = 381;
327                 attr_v11.stManual.Scale_y[6]                             = 631;
328                 attr_v11.stManual.Scale_y[7]                             = 772;
329                 attr_v11.stManual.Scale_y[8]                             = 919;
330                 attr_v11.stManual.Scale_y[9]                             = 1066;
331                 attr_v11.stManual.Scale_y[10]                            = 1211;
332                 attr_v11.stManual.Scale_y[11]                            = 1479;
333                 attr_v11.stManual.Scale_y[12]                            = 1700;
334                 attr_v11.stManual.Scale_y[13]                            = 1863;
335                 attr_v11.stManual.Scale_y[14]                            = 1968;
336                 attr_v11.stManual.Scale_y[15]                            = 2024;
337                 attr_v11.stManual.Scale_y[16]                            = 2048;
338                 attr_v11.stManual.Edge_Weit                              = 0.02;
339                 attr_v11.stManual.OutPutLongFrame                        = false;
340                 attr_v11.stManual.IIR_frame                              = 2;
341                 rk_aiq_user_api2_adrc_v11_SetAttrib(ctx, &attr_v11);
342                 break;
343             }
344             case '5': {
345                 printf("\t ADRC test rk_aiq_user_api2_adrc_GetAttrib\n\n");
346                 rk_aiq_user_api2_adrc_v11_GetAttrib(ctx, &attr_v11);
347                 printf("\t sync = %d, done = %d\n", attr_v11.sync.sync_mode, attr_v11.sync.done);
348                 printf("\t opMode:%d EnvLv:%f ISO:%f\n\n", attr_v11.opMode,
349                        attr_v11.Info.CtrlInfo.EnvLv, attr_v11.Info.CtrlInfo.ISO);
350                 printf("\t stManual DrcGain:%f Alpha:%f Clip:%f\n\n",
351                        attr_v11.stManual.DrcGain.DrcGain, attr_v11.stManual.DrcGain.Alpha,
352                        attr_v11.stManual.DrcGain.Clip);
353                 break;
354             }
355             case '6': {
356                 printf("\t ADRC test rk_aiq_user_api2_adrc_v12_SetAttrib stManual Sync\n\n");
357                 attr_v12.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_DEFAULT;
358                 attr_v12.sync.done                                       = false;
359                 attr_v12.opMode                                          = DRC_OPMODE_MANUAL;
360                 attr_v12.stManual.Enable                                 = true;
361                 attr_v12.stManual.DrcGain.Alpha                          = 0.2;
362                 attr_v12.stManual.DrcGain.DrcGain                        = 2;
363                 attr_v12.stManual.DrcGain.Clip                           = 1;
364                 attr_v12.stManual.HiLight.HiLightData.Strength           = 0.5;
365                 attr_v12.stManual.HiLight.HiLightData.gas_t              = 0.5;
366                 attr_v12.stManual.HiLight.gas_l0                         = 24;
367                 attr_v12.stManual.HiLight.gas_l1                         = 10;
368                 attr_v12.stManual.HiLight.gas_l2                         = 10;
369                 attr_v12.stManual.HiLight.gas_l3                         = 5;
370                 attr_v12.stManual.LocalSetting.LocalData.LocalWeit       = 1;
371                 attr_v12.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
372                 attr_v12.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
373                 attr_v12.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
374                 attr_v12.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
375                 attr_v12.stManual.LocalSetting.MotionData.MotionStr      = 0.0;
376                 attr_v12.stManual.LocalSetting.curPixWeit                = 0.376471;
377                 attr_v12.stManual.LocalSetting.preFrameWeit              = 0.8;
378                 attr_v12.stManual.LocalSetting.Range_force_sgm           = 0.0;
379                 attr_v12.stManual.LocalSetting.Range_sgm_cur             = 0.2;
380                 attr_v12.stManual.LocalSetting.Range_sgm_pre             = 0.2;
381                 attr_v12.stManual.LocalSetting.Space_sgm_cur             = 4068;
382                 attr_v12.stManual.LocalSetting.Space_sgm_pre             = 3068;
383                 attr_v12.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
384                 attr_v12.stManual.CompressSetting.Manual_curve[0]        = 0;
385                 attr_v12.stManual.CompressSetting.Manual_curve[1]        = 558;
386                 attr_v12.stManual.CompressSetting.Manual_curve[2]        = 1087;
387                 attr_v12.stManual.CompressSetting.Manual_curve[3]        = 1588;
388                 attr_v12.stManual.CompressSetting.Manual_curve[4]        = 2063;
389                 attr_v12.stManual.CompressSetting.Manual_curve[5]        = 2515;
390                 attr_v12.stManual.CompressSetting.Manual_curve[6]        = 2944;
391                 attr_v12.stManual.CompressSetting.Manual_curve[7]        = 3353;
392                 attr_v12.stManual.CompressSetting.Manual_curve[8]        = 3744;
393                 attr_v12.stManual.CompressSetting.Manual_curve[9]        = 4473;
394                 attr_v12.stManual.CompressSetting.Manual_curve[10]       = 5139;
395                 attr_v12.stManual.CompressSetting.Manual_curve[11]       = 5751;
396                 attr_v12.stManual.CompressSetting.Manual_curve[12]       = 6316;
397                 attr_v12.stManual.CompressSetting.Manual_curve[13]       = 6838;
398                 attr_v12.stManual.CompressSetting.Manual_curve[14]       = 7322;
399                 attr_v12.stManual.CompressSetting.Manual_curve[15]       = 7772;
400                 attr_v12.stManual.CompressSetting.Manual_curve[16]       = 8192;
401                 attr_v12.stManual.Scale_y[0]                             = 0;
402                 attr_v12.stManual.Scale_y[1]                             = 2;
403                 attr_v12.stManual.Scale_y[2]                             = 20;
404                 attr_v12.stManual.Scale_y[3]                             = 76;
405                 attr_v12.stManual.Scale_y[4]                             = 193;
406                 attr_v12.stManual.Scale_y[5]                             = 381;
407                 attr_v12.stManual.Scale_y[6]                             = 631;
408                 attr_v12.stManual.Scale_y[7]                             = 772;
409                 attr_v12.stManual.Scale_y[8]                             = 919;
410                 attr_v12.stManual.Scale_y[9]                             = 1066;
411                 attr_v12.stManual.Scale_y[10]                            = 1212;
412                 attr_v12.stManual.Scale_y[11]                            = 1479;
413                 attr_v12.stManual.Scale_y[12]                            = 1700;
414                 attr_v12.stManual.Scale_y[13]                            = 1863;
415                 attr_v12.stManual.Scale_y[14]                            = 1968;
416                 attr_v12.stManual.Scale_y[15]                            = 2024;
417                 attr_v12.stManual.Scale_y[16]                            = 2048;
418                 attr_v12.stManual.Edge_Weit                              = 0.02;
419                 attr_v12.stManual.OutPutLongFrame                        = false;
420                 attr_v12.stManual.IIR_frame                              = 2;
421                 rk_aiq_user_api2_adrc_v12_SetAttrib(ctx, &attr_v12);
422                 break;
423             }
424             case '7': {
425                 printf("\t ADRC test rk_aiq_user_api2_adrc_v12_SetAttrib stManual Async\n\n");
426                 attr_v12.sync.sync_mode                                  = RK_AIQ_UAPI_MODE_ASYNC;
427                 attr_v12.sync.done                                       = false;
428                 attr_v12.opMode                                          = DRC_OPMODE_MANUAL;
429                 attr_v12.stManual.Enable                                 = true;
430                 attr_v12.stManual.DrcGain.Alpha                          = 0.1;
431                 attr_v12.stManual.DrcGain.DrcGain                        = 2;
432                 attr_v12.stManual.DrcGain.Clip                           = 1;
433                 attr_v12.stManual.HiLight.HiLightData.Strength           = 0.5;
434                 attr_v12.stManual.HiLight.HiLightData.gas_t              = 0.5;
435                 attr_v12.stManual.HiLight.gas_l0                         = 24;
436                 attr_v12.stManual.HiLight.gas_l1                         = 10;
437                 attr_v12.stManual.HiLight.gas_l2                         = 10;
438                 attr_v12.stManual.HiLight.gas_l3                         = 5;
439                 attr_v12.stManual.LocalSetting.LocalData.LocalWeit       = 1;
440                 attr_v12.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
441                 attr_v12.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
442                 attr_v12.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
443                 attr_v12.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
444                 attr_v12.stManual.LocalSetting.MotionData.MotionStr      = 0.0;
445                 attr_v12.stManual.LocalSetting.curPixWeit                = 0.376471;
446                 attr_v12.stManual.LocalSetting.preFrameWeit              = 0.8;
447                 attr_v12.stManual.LocalSetting.Range_force_sgm           = 0.0;
448                 attr_v12.stManual.LocalSetting.Range_sgm_cur             = 0.2;
449                 attr_v12.stManual.LocalSetting.Range_sgm_pre             = 0.2;
450                 attr_v12.stManual.LocalSetting.Space_sgm_cur             = 4068;
451                 attr_v12.stManual.LocalSetting.Space_sgm_pre             = 3068;
452                 attr_v12.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
453                 attr_v12.stManual.CompressSetting.Manual_curve[0]        = 0;
454                 attr_v12.stManual.CompressSetting.Manual_curve[1]        = 558;
455                 attr_v12.stManual.CompressSetting.Manual_curve[2]        = 1087;
456                 attr_v12.stManual.CompressSetting.Manual_curve[3]        = 1588;
457                 attr_v12.stManual.CompressSetting.Manual_curve[4]        = 2063;
458                 attr_v12.stManual.CompressSetting.Manual_curve[5]        = 2515;
459                 attr_v12.stManual.CompressSetting.Manual_curve[6]        = 2944;
460                 attr_v12.stManual.CompressSetting.Manual_curve[7]        = 3353;
461                 attr_v12.stManual.CompressSetting.Manual_curve[8]        = 3744;
462                 attr_v12.stManual.CompressSetting.Manual_curve[9]        = 4473;
463                 attr_v12.stManual.CompressSetting.Manual_curve[10]       = 5139;
464                 attr_v12.stManual.CompressSetting.Manual_curve[11]       = 5751;
465                 attr_v12.stManual.CompressSetting.Manual_curve[12]       = 6316;
466                 attr_v12.stManual.CompressSetting.Manual_curve[13]       = 6838;
467                 attr_v12.stManual.CompressSetting.Manual_curve[14]       = 7322;
468                 attr_v12.stManual.CompressSetting.Manual_curve[15]       = 7772;
469                 attr_v12.stManual.CompressSetting.Manual_curve[16]       = 8192;
470                 attr_v12.stManual.Scale_y[0]                             = 0;
471                 attr_v12.stManual.Scale_y[1]                             = 2;
472                 attr_v12.stManual.Scale_y[2]                             = 20;
473                 attr_v12.stManual.Scale_y[3]                             = 76;
474                 attr_v12.stManual.Scale_y[4]                             = 193;
475                 attr_v12.stManual.Scale_y[5]                             = 381;
476                 attr_v12.stManual.Scale_y[6]                             = 631;
477                 attr_v12.stManual.Scale_y[7]                             = 772;
478                 attr_v12.stManual.Scale_y[8]                             = 919;
479                 attr_v12.stManual.Scale_y[9]                             = 1066;
480                 attr_v12.stManual.Scale_y[10]                            = 1212;
481                 attr_v12.stManual.Scale_y[11]                            = 1479;
482                 attr_v12.stManual.Scale_y[12]                            = 1700;
483                 attr_v12.stManual.Scale_y[13]                            = 1863;
484                 attr_v12.stManual.Scale_y[14]                            = 1968;
485                 attr_v12.stManual.Scale_y[15]                            = 2024;
486                 attr_v12.stManual.Scale_y[16]                            = 2048;
487                 attr_v12.stManual.Edge_Weit                              = 0.02;
488                 attr_v12.stManual.OutPutLongFrame                        = false;
489                 attr_v12.stManual.IIR_frame                              = 2;
490                 rk_aiq_user_api2_adrc_v12_SetAttrib(ctx, &attr_v12);
491                 break;
492             }
493             case '8': {
494                 printf("\t ADRC test rk_aiq_user_api2_adrc_GetAttrib\n\n");
495                 rk_aiq_user_api2_adrc_v12_GetAttrib(ctx, &attr_v12);
496                 printf("\t sync = %d, done = %d\n", attr_v12.sync.sync_mode, attr_v12.sync.done);
497                 printf("\t opMode:%d EnvLv:%f ISO:%f\n\n", attr_v12.opMode,
498                        attr_v12.Info.CtrlInfo.EnvLv, attr_v12.Info.CtrlInfo.ISO);
499                 printf("\t stManual DrcGain:%f Alpha:%f Clip:%f\n\n",
500                        attr_v12.stManual.DrcGain.DrcGain, attr_v12.stManual.DrcGain.Alpha,
501                        attr_v12.stManual.DrcGain.Clip);
502                 break;
503             }
504             case '9': {
505                 printf("\t ADRC test rk_aiq_user_api2_adrc_v12_lite_SetAttrib stManual Sync\n\n");
506                 attr_v12_lite.sync.sync_mode                            = RK_AIQ_UAPI_MODE_DEFAULT;
507                 attr_v12_lite.sync.done                                 = false;
508                 attr_v12_lite.opMode                                    = DRC_OPMODE_MANUAL;
509                 attr_v12_lite.stManual.Enable                           = true;
510                 attr_v12_lite.stManual.DrcGain.Alpha                    = 0.2;
511                 attr_v12_lite.stManual.DrcGain.DrcGain                  = 2;
512                 attr_v12_lite.stManual.DrcGain.Clip                     = 1;
513                 attr_v12_lite.stManual.HiLight.HiLightData.Strength     = 0.5;
514                 attr_v12_lite.stManual.HiLight.HiLightData.gas_t        = 0.5;
515                 attr_v12_lite.stManual.HiLight.gas_l0                   = 24;
516                 attr_v12_lite.stManual.HiLight.gas_l1                   = 10;
517                 attr_v12_lite.stManual.HiLight.gas_l2                   = 10;
518                 attr_v12_lite.stManual.HiLight.gas_l3                   = 5;
519                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalWeit = 1;
520                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
521                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
522                 attr_v12_lite.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
523                 attr_v12_lite.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
524                 attr_v12_lite.stManual.LocalSetting.MotionData.MotionStr      = 0.0;
525                 attr_v12_lite.stManual.LocalSetting.curPixWeit                = 0.376471;
526                 attr_v12_lite.stManual.LocalSetting.Range_force_sgm           = 0.0;
527                 attr_v12_lite.stManual.LocalSetting.Range_sgm_cur             = 0.2;
528                 attr_v12_lite.stManual.LocalSetting.Space_sgm_cur             = 4068;
529                 attr_v12_lite.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
530                 attr_v12_lite.stManual.CompressSetting.Manual_curve[0]        = 0;
531                 attr_v12_lite.stManual.CompressSetting.Manual_curve[1]        = 558;
532                 attr_v12_lite.stManual.CompressSetting.Manual_curve[2]        = 1087;
533                 attr_v12_lite.stManual.CompressSetting.Manual_curve[3]        = 1588;
534                 attr_v12_lite.stManual.CompressSetting.Manual_curve[4]        = 2063;
535                 attr_v12_lite.stManual.CompressSetting.Manual_curve[5]        = 2515;
536                 attr_v12_lite.stManual.CompressSetting.Manual_curve[6]        = 2944;
537                 attr_v12_lite.stManual.CompressSetting.Manual_curve[7]        = 3353;
538                 attr_v12_lite.stManual.CompressSetting.Manual_curve[8]        = 3744;
539                 attr_v12_lite.stManual.CompressSetting.Manual_curve[9]        = 4473;
540                 attr_v12_lite.stManual.CompressSetting.Manual_curve[10]       = 5139;
541                 attr_v12_lite.stManual.CompressSetting.Manual_curve[11]       = 5751;
542                 attr_v12_lite.stManual.CompressSetting.Manual_curve[12]       = 6316;
543                 attr_v12_lite.stManual.CompressSetting.Manual_curve[13]       = 6838;
544                 attr_v12_lite.stManual.CompressSetting.Manual_curve[14]       = 7322;
545                 attr_v12_lite.stManual.CompressSetting.Manual_curve[15]       = 7772;
546                 attr_v12_lite.stManual.CompressSetting.Manual_curve[16]       = 8192;
547                 attr_v12_lite.stManual.Scale_y[0]                             = 0;
548                 attr_v12_lite.stManual.Scale_y[1]                             = 2;
549                 attr_v12_lite.stManual.Scale_y[2]                             = 20;
550                 attr_v12_lite.stManual.Scale_y[3]                             = 76;
551                 attr_v12_lite.stManual.Scale_y[4]                             = 193;
552                 attr_v12_lite.stManual.Scale_y[5]                             = 381;
553                 attr_v12_lite.stManual.Scale_y[6]                             = 631;
554                 attr_v12_lite.stManual.Scale_y[7]                             = 772;
555                 attr_v12_lite.stManual.Scale_y[8]                             = 919;
556                 attr_v12_lite.stManual.Scale_y[9]                             = 1066;
557                 attr_v12_lite.stManual.Scale_y[10]                            = 1212;
558                 attr_v12_lite.stManual.Scale_y[11]                            = 1479;
559                 attr_v12_lite.stManual.Scale_y[12]                            = 1700;
560                 attr_v12_lite.stManual.Scale_y[13]                            = 1863;
561                 attr_v12_lite.stManual.Scale_y[14]                            = 1968;
562                 attr_v12_lite.stManual.Scale_y[15]                            = 2024;
563                 attr_v12_lite.stManual.Scale_y[16]                            = 2048;
564                 attr_v12_lite.stManual.Edge_Weit                              = 0.02;
565                 attr_v12_lite.stManual.OutPutLongFrame                        = false;
566                 attr_v12_lite.stManual.IIR_frame                              = 2;
567                 rk_aiq_user_api2_adrc_v12_lite_SetAttrib(ctx, &attr_v12_lite);
568                 break;
569             }
570             case 'a': {
571                 printf("\t ADRC test rk_aiq_user_api2_adrc_v12_lite_SetAttrib stManual Async\n\n");
572                 attr_v12_lite.sync.sync_mode                            = RK_AIQ_UAPI_MODE_ASYNC;
573                 attr_v12_lite.sync.done                                 = false;
574                 attr_v12_lite.opMode                                    = DRC_OPMODE_MANUAL;
575                 attr_v12_lite.stManual.Enable                           = true;
576                 attr_v12_lite.stManual.DrcGain.Alpha                    = 0.1;
577                 attr_v12_lite.stManual.DrcGain.DrcGain                  = 2;
578                 attr_v12_lite.stManual.DrcGain.Clip                     = 1;
579                 attr_v12_lite.stManual.HiLight.HiLightData.Strength     = 0.5;
580                 attr_v12_lite.stManual.HiLight.HiLightData.gas_t        = 0.5;
581                 attr_v12_lite.stManual.HiLight.gas_l0                   = 24;
582                 attr_v12_lite.stManual.HiLight.gas_l1                   = 10;
583                 attr_v12_lite.stManual.HiLight.gas_l2                   = 10;
584                 attr_v12_lite.stManual.HiLight.gas_l3                   = 5;
585                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalWeit = 1;
586                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalAutoEnable = 1;
587                 attr_v12_lite.stManual.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
588                 attr_v12_lite.stManual.LocalSetting.LocalData.GlobalContrast  = 0.5;
589                 attr_v12_lite.stManual.LocalSetting.LocalData.LoLitContrast   = 0.5;
590                 attr_v12_lite.stManual.LocalSetting.MotionData.MotionStr      = 0.0;
591                 attr_v12_lite.stManual.LocalSetting.curPixWeit                = 0.376471;
592                 attr_v12_lite.stManual.LocalSetting.Range_force_sgm           = 0.0;
593                 attr_v12_lite.stManual.LocalSetting.Range_sgm_cur             = 0.2;
594                 attr_v12_lite.stManual.LocalSetting.Space_sgm_cur             = 4068;
595                 attr_v12_lite.stManual.CompressSetting.Mode                   = COMPRESS_AUTO;
596                 attr_v12_lite.stManual.CompressSetting.Manual_curve[0]        = 0;
597                 attr_v12_lite.stManual.CompressSetting.Manual_curve[1]        = 558;
598                 attr_v12_lite.stManual.CompressSetting.Manual_curve[2]        = 1087;
599                 attr_v12_lite.stManual.CompressSetting.Manual_curve[3]        = 1588;
600                 attr_v12_lite.stManual.CompressSetting.Manual_curve[4]        = 2063;
601                 attr_v12_lite.stManual.CompressSetting.Manual_curve[5]        = 2515;
602                 attr_v12_lite.stManual.CompressSetting.Manual_curve[6]        = 2944;
603                 attr_v12_lite.stManual.CompressSetting.Manual_curve[7]        = 3353;
604                 attr_v12_lite.stManual.CompressSetting.Manual_curve[8]        = 3744;
605                 attr_v12_lite.stManual.CompressSetting.Manual_curve[9]        = 4473;
606                 attr_v12_lite.stManual.CompressSetting.Manual_curve[10]       = 5139;
607                 attr_v12_lite.stManual.CompressSetting.Manual_curve[11]       = 5751;
608                 attr_v12_lite.stManual.CompressSetting.Manual_curve[12]       = 6316;
609                 attr_v12_lite.stManual.CompressSetting.Manual_curve[13]       = 6838;
610                 attr_v12_lite.stManual.CompressSetting.Manual_curve[14]       = 7322;
611                 attr_v12_lite.stManual.CompressSetting.Manual_curve[15]       = 7772;
612                 attr_v12_lite.stManual.CompressSetting.Manual_curve[16]       = 8192;
613                 attr_v12_lite.stManual.Scale_y[0]                             = 0;
614                 attr_v12_lite.stManual.Scale_y[1]                             = 2;
615                 attr_v12_lite.stManual.Scale_y[2]                             = 20;
616                 attr_v12_lite.stManual.Scale_y[3]                             = 76;
617                 attr_v12_lite.stManual.Scale_y[4]                             = 193;
618                 attr_v12_lite.stManual.Scale_y[5]                             = 381;
619                 attr_v12_lite.stManual.Scale_y[6]                             = 631;
620                 attr_v12_lite.stManual.Scale_y[7]                             = 772;
621                 attr_v12_lite.stManual.Scale_y[8]                             = 919;
622                 attr_v12_lite.stManual.Scale_y[9]                             = 1066;
623                 attr_v12_lite.stManual.Scale_y[10]                            = 1212;
624                 attr_v12_lite.stManual.Scale_y[11]                            = 1479;
625                 attr_v12_lite.stManual.Scale_y[12]                            = 1700;
626                 attr_v12_lite.stManual.Scale_y[13]                            = 1863;
627                 attr_v12_lite.stManual.Scale_y[14]                            = 1968;
628                 attr_v12_lite.stManual.Scale_y[15]                            = 2024;
629                 attr_v12_lite.stManual.Scale_y[16]                            = 2048;
630                 attr_v12_lite.stManual.Edge_Weit                              = 0.02;
631                 attr_v12_lite.stManual.OutPutLongFrame                        = false;
632                 attr_v12_lite.stManual.IIR_frame                              = 2;
633                 rk_aiq_user_api2_adrc_v12_lite_SetAttrib(ctx, &attr_v12_lite);
634                 break;
635             }
636             case 'b': {
637                 printf("\t ADRC test rk_aiq_user_api2_lite_adrc_GetAttrib\n\n");
638                 rk_aiq_user_api2_adrc_v12_lite_GetAttrib(ctx, &attr_v12_lite);
639                 printf("\t sync = %d, done = %d\n", attr_v12_lite.sync.sync_mode,
640                        attr_v12_lite.sync.done);
641                 printf("\t opMode:%d EnvLv:%f ISO:%f\n\n", attr_v12_lite.opMode,
642                        attr_v12_lite.Info.CtrlInfo.EnvLv, attr_v12_lite.Info.CtrlInfo.ISO);
643                 printf("\t stManual DrcGain:%f Alpha:%f Clip:%f\n\n",
644                        attr_v12_lite.stManual.DrcGain.DrcGain, attr_v12_lite.stManual.DrcGain.Alpha,
645                        attr_v12_lite.stManual.DrcGain.Clip);
646                 break;
647             }
648             case 'c': {
649                 printf("\t ADRC test rk_aiq_user_api2_adrc_SetAttrib stManual Sync\n\n");
650                 attr_v2.sync.sync_mode                               = RK_AIQ_UAPI_MODE_DEFAULT;
651                 attr_v2.sync.done                                    = false;
652                 attr_v2.opMode                                       = DRC_OPMODE_MANUAL;
653                 attr_v2.stManualV30.Enable                           = true;
654                 attr_v2.stManualV30.DrcGain.Alpha                    = 0.2;
655                 attr_v2.stManualV30.DrcGain.DrcGain                  = 2;
656                 attr_v2.stManualV30.DrcGain.Clip                     = 1;
657                 attr_v2.stManualV30.HiLight.Strength                 = 0.5;
658                 attr_v2.stManualV30.LocalSetting.LocalData.LocalWeit = 1;
659                 attr_v2.stManualV30.LocalSetting.LocalData.LocalAutoEnable = 1;
660                 attr_v2.stManualV30.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
661                 attr_v2.stManualV30.LocalSetting.LocalData.GlobalContrast  = 0.5;
662                 attr_v2.stManualV30.LocalSetting.LocalData.LoLitContrast   = 0.5;
663                 attr_v2.stManualV30.LocalSetting.curPixWeit                = 0.376471;
664                 attr_v2.stManualV30.LocalSetting.preFrameWeit              = 0.8;
665                 attr_v2.stManualV30.LocalSetting.Range_force_sgm           = 0.0;
666                 attr_v2.stManualV30.LocalSetting.Range_sgm_cur             = 0.2;
667                 attr_v2.stManualV30.LocalSetting.Range_sgm_pre             = 0.2;
668                 attr_v2.stManualV30.LocalSetting.Space_sgm_cur             = 4068;
669                 attr_v2.stManualV30.LocalSetting.Space_sgm_pre             = 3068;
670                 attr_v2.stManualV30.LocalSetting.Space_sgm_pre             = 3068;
671                 attr_v2.stManualV30.CompressSetting.Mode                   = COMPRESS_AUTO;
672                 attr_v2.stManualV30.CompressSetting.Manual_curve[0]        = 0;
673                 attr_v2.stManualV30.CompressSetting.Manual_curve[1]        = 558;
674                 attr_v2.stManualV30.CompressSetting.Manual_curve[2]        = 1087;
675                 attr_v2.stManualV30.CompressSetting.Manual_curve[3]        = 1588;
676                 attr_v2.stManualV30.CompressSetting.Manual_curve[4]        = 2063;
677                 attr_v2.stManualV30.CompressSetting.Manual_curve[5]        = 2515;
678                 attr_v2.stManualV30.CompressSetting.Manual_curve[6]        = 2944;
679                 attr_v2.stManualV30.CompressSetting.Manual_curve[7]        = 3353;
680                 attr_v2.stManualV30.CompressSetting.Manual_curve[8]        = 3744;
681                 attr_v2.stManualV30.CompressSetting.Manual_curve[9]        = 4473;
682                 attr_v2.stManualV30.CompressSetting.Manual_curve[10]       = 5139;
683                 attr_v2.stManualV30.CompressSetting.Manual_curve[11]       = 5751;
684                 attr_v2.stManualV30.CompressSetting.Manual_curve[12]       = 6316;
685                 attr_v2.stManualV30.CompressSetting.Manual_curve[13]       = 6838;
686                 attr_v2.stManualV30.CompressSetting.Manual_curve[14]       = 7322;
687                 attr_v2.stManualV30.CompressSetting.Manual_curve[15]       = 7772;
688                 attr_v2.stManualV30.CompressSetting.Manual_curve[16]       = 8192;
689                 attr_v2.stManualV30.Scale_y[0]                             = 0;
690                 attr_v2.stManualV30.Scale_y[1]                             = 2;
691                 attr_v2.stManualV30.Scale_y[2]                             = 20;
692                 attr_v2.stManualV30.Scale_y[3]                             = 76;
693                 attr_v2.stManualV30.Scale_y[4]                             = 193;
694                 attr_v2.stManualV30.Scale_y[5]                             = 381;
695                 attr_v2.stManualV30.Scale_y[6]                             = 631;
696                 attr_v2.stManualV30.Scale_y[7]                             = 772;
697                 attr_v2.stManualV30.Scale_y[8]                             = 919;
698                 attr_v2.stManualV30.Scale_y[9]                             = 1066;
699                 attr_v2.stManualV30.Scale_y[10]                            = 1212;
700                 attr_v2.stManualV30.Scale_y[11]                            = 1479;
701                 attr_v2.stManualV30.Scale_y[12]                            = 1700;
702                 attr_v2.stManualV30.Scale_y[13]                            = 1863;
703                 attr_v2.stManualV30.Scale_y[14]                            = 1968;
704                 attr_v2.stManualV30.Scale_y[15]                            = 2024;
705                 attr_v2.stManualV30.Scale_y[16]                            = 2048;
706                 attr_v2.stManualV30.Edge_Weit                              = 0.02;
707                 attr_v2.stManualV30.OutPutLongFrame                        = false;
708                 attr_v2.stManualV30.IIR_frame                              = 2;
709                 rk_aiq_user_api2_adrc_SetAttrib(ctx, attr_v2);
710                 break;
711             }
712             case 'd': {
713                 printf("\t ADRC test rk_aiq_user_api2_adrc_SetAttrib stManual Async\n\n");
714                 attr_v2.sync.sync_mode                                     = RK_AIQ_UAPI_MODE_ASYNC;
715                 attr_v2.sync.done                                          = false;
716                 attr_v2.opMode                                             = DRC_OPMODE_MANUAL;
717                 attr_v2.stManualV30.Enable                                 = true;
718                 attr_v2.stManualV30.DrcGain.Alpha                          = 0.1;
719                 attr_v2.stManualV30.DrcGain.DrcGain                        = 2;
720                 attr_v2.stManualV30.DrcGain.Clip                           = 1;
721                 attr_v2.stManualV30.HiLight.Strength                       = 0.5;
722                 attr_v2.stManualV30.LocalSetting.LocalData.LocalWeit       = 1;
723                 attr_v2.stManualV30.LocalSetting.LocalData.LocalAutoEnable = 1;
724                 attr_v2.stManualV30.LocalSetting.LocalData.LocalAutoWeit   = 0.5;
725                 attr_v2.stManualV30.LocalSetting.LocalData.GlobalContrast  = 0.5;
726                 attr_v2.stManualV30.LocalSetting.LocalData.LoLitContrast   = 0.5;
727                 attr_v2.stManualV30.LocalSetting.curPixWeit                = 0.376471;
728                 attr_v2.stManualV30.LocalSetting.preFrameWeit              = 0.8;
729                 attr_v2.stManualV30.LocalSetting.Range_force_sgm           = 0.0;
730                 attr_v2.stManualV30.LocalSetting.Range_sgm_cur             = 0.2;
731                 attr_v2.stManualV30.LocalSetting.Range_sgm_pre             = 0.2;
732                 attr_v2.stManualV30.LocalSetting.Space_sgm_cur             = 4068;
733                 attr_v2.stManualV30.LocalSetting.Space_sgm_pre             = 3068;
734                 attr_v2.stManualV30.LocalSetting.Space_sgm_pre             = 3068;
735                 attr_v2.stManualV30.CompressSetting.Mode                   = COMPRESS_AUTO;
736                 attr_v2.stManualV30.CompressSetting.Manual_curve[0]        = 0;
737                 attr_v2.stManualV30.CompressSetting.Manual_curve[1]        = 558;
738                 attr_v2.stManualV30.CompressSetting.Manual_curve[2]        = 1087;
739                 attr_v2.stManualV30.CompressSetting.Manual_curve[3]        = 1588;
740                 attr_v2.stManualV30.CompressSetting.Manual_curve[4]        = 2063;
741                 attr_v2.stManualV30.CompressSetting.Manual_curve[5]        = 2515;
742                 attr_v2.stManualV30.CompressSetting.Manual_curve[6]        = 2944;
743                 attr_v2.stManualV30.CompressSetting.Manual_curve[7]        = 3353;
744                 attr_v2.stManualV30.CompressSetting.Manual_curve[8]        = 3744;
745                 attr_v2.stManualV30.CompressSetting.Manual_curve[9]        = 4473;
746                 attr_v2.stManualV30.CompressSetting.Manual_curve[10]       = 5139;
747                 attr_v2.stManualV30.CompressSetting.Manual_curve[11]       = 5751;
748                 attr_v2.stManualV30.CompressSetting.Manual_curve[12]       = 6316;
749                 attr_v2.stManualV30.CompressSetting.Manual_curve[13]       = 6838;
750                 attr_v2.stManualV30.CompressSetting.Manual_curve[14]       = 7322;
751                 attr_v2.stManualV30.CompressSetting.Manual_curve[15]       = 7772;
752                 attr_v2.stManualV30.CompressSetting.Manual_curve[16]       = 8192;
753                 attr_v2.stManualV30.Scale_y[0]                             = 0;
754                 attr_v2.stManualV30.Scale_y[1]                             = 2;
755                 attr_v2.stManualV30.Scale_y[2]                             = 20;
756                 attr_v2.stManualV30.Scale_y[3]                             = 76;
757                 attr_v2.stManualV30.Scale_y[4]                             = 193;
758                 attr_v2.stManualV30.Scale_y[5]                             = 381;
759                 attr_v2.stManualV30.Scale_y[6]                             = 631;
760                 attr_v2.stManualV30.Scale_y[7]                             = 772;
761                 attr_v2.stManualV30.Scale_y[8]                             = 919;
762                 attr_v2.stManualV30.Scale_y[9]                             = 1066;
763                 attr_v2.stManualV30.Scale_y[10]                            = 1212;
764                 attr_v2.stManualV30.Scale_y[11]                            = 1479;
765                 attr_v2.stManualV30.Scale_y[12]                            = 1700;
766                 attr_v2.stManualV30.Scale_y[13]                            = 1863;
767                 attr_v2.stManualV30.Scale_y[14]                            = 1968;
768                 attr_v2.stManualV30.Scale_y[15]                            = 2024;
769                 attr_v2.stManualV30.Scale_y[16]                            = 2048;
770                 attr_v2.stManualV30.Edge_Weit                              = 0.02;
771                 attr_v2.stManualV30.OutPutLongFrame                        = false;
772                 attr_v2.stManualV30.IIR_frame                              = 2;
773                 rk_aiq_user_api2_adrc_SetAttrib(ctx, attr_v2);
774                 break;
775             }
776             case 'e': {
777                 printf("\t ADRC test rk_aiq_user_api2_adrc_GetAttrib\n\n");
778                 rk_aiq_user_api2_adrc_GetAttrib(ctx, &attr_v2);
779                 printf("\t sync = %d, done = %d Version:%d\n", attr_v2.sync.sync_mode,
780                        attr_v2.sync.done, attr_v2.Version);
781                 printf("\t opMode:%d EnvLv:%f ISO:%f\n\n", attr_v2.opMode,
782                        attr_v2.Info.CtrlInfo.EnvLv, attr_v2.Info.CtrlInfo.ISO);
783                 printf("\t stManual DrcGain:%f Alpha:%f Clip:%f\n\n",
784                        attr_v2.stManualV30.DrcGain.DrcGain, attr_v2.stManualV30.DrcGain.Alpha,
785                        attr_v2.stManualV30.DrcGain.Clip);
786                 break;
787             }
788             case 'f': {
789                 printf("\t ADRC test rk_aiq_uapi2_getDrcGain\n\n");
790                 float Gain  = 0;
791                 float Alpha = 0;
792                 float Clip  = 0;
793                 rk_aiq_uapi2_getDrcGain(ctx, &Gain, &Alpha, &Clip);
794                 printf("\t ADRC rk_aiq_uapi2_getDrcGain: Gain:%f Alpha:%f Clip:%f\n\n", Gain, Alpha,
795                        Clip);
796                 break;
797             }
798             case 'g': {
799                 printf("\t ADRC test rk_aiq_uapi2_setDrcGain\n\n");
800                 rk_aiq_uapi2_setDrcGain(ctx, 3.5, 0.4, 3);
801                 break;
802             }
803             case 'h': {
804                 printf("\t ADRC test rk_aiq_uapi2_getDrcHiLit\n\n");
805                 float Strength = 0;
806                 rk_aiq_uapi2_getDrcHiLit(ctx, &Strength);
807                 printf("\t ADRC rk_aiq_uapi2_getDrcHiLit: Strength:%f\n\n", Strength);
808                 break;
809             }
810             case 'i': {
811                 printf("\t ADRC test rk_aiq_uapi2_setDrcHiLit\n\n");
812                 rk_aiq_uapi2_setDrcHiLit(ctx, 0.8);
813                 break;
814             }
815             case 'j': {
816                 printf("\t ADRC test rk_aiq_uapi2_getDrcLocalData\n\n");
817                 float LocalWeit      = 0;
818                 float GlobalContrast = 0;
819                 float LoLitContrast  = 0;
820                 int LocalAutoEnable  = 0;
821                 float LocalAutoWeit  = 0;
822                 rk_aiq_uapi2_getDrcLocalData(ctx, &LocalWeit, &GlobalContrast, &LoLitContrast,
823                                              &LocalAutoEnable, &LocalAutoWeit);
824                 printf(
825                     "\t ADRC rk_aiq_uapi2_getDrcLocalData: LocalWeit:%f GlobalContrast:%f "
826                     "LoLitContrast:%f LocalAutoEnable:%d LocalAutoWeit:%f\n\n",
827                     LocalWeit, GlobalContrast, LoLitContrast, LocalAutoEnable, LocalAutoWeit);
828                 break;
829             }
830             case 'k': {
831                 printf("\t ADRC test rk_aiq_uapi2_setDrcLocalData\n\n");
832                 rk_aiq_uapi2_setDrcLocalData(ctx, 1.0, 0.5, 0.5, 1, 0.9);
833                 break;
834             }
835             default:
836                 break;
837         }
838     } while (key != 'q' && key != 'Q');
839 
840     return XCAM_RETURN_NO_ERROR;
841 }
842