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_amerge_usage()20 static void sample_amerge_usage()
21 {
22 printf("Usage : \n");
23 printf("\t 0) AMERGE: test rk_aiq_user_api2_amerge_v10_SetAttrib stManual Sync.\n");
24 printf("\t 1) AMERGE: test rk_aiq_user_api2_amerge_v10_SetAttrib stManual Async.\n");
25 printf("\t 2) AMERGE: test rk_aiq_user_api2_amerge_v10_GetAttrib.\n");
26 printf(
27 "\t 3) AMERGE: test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_SHORT "
28 "Sync.\n");
29 printf(
30 "\t 4) AMERGE: test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_SHORT "
31 "Async.\n");
32 printf(
33 "\t 5) AMERGE: test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_LONG "
34 "Sync.\n");
35 printf(
36 "\t 6) AMERGE: test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_LONG "
37 "Async.\n");
38 printf("\t 7) AMERGE: test rk_aiq_user_api2_amerge_v11_GetAttrib.\n");
39 printf(
40 "\t 8) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_SHORT "
41 "Sync.\n");
42 printf(
43 "\t 9) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_SHORT "
44 "Async.\n");
45 printf(
46 "\t a) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
47 "EnableEachChn off Sync.\n");
48 printf(
49 "\t b) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
50 "EnableEachChn off Async.\n");
51 printf(
52 "\t c) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
53 "EnableEachChn on Sync.\n");
54 printf(
55 "\t d) AMERGE: test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
56 "EnableEachChn on Async.\n");
57 printf("\t e) AMERGE: test rk_aiq_user_api2_amerge_v12_GetAttrib.\n");
58 printf(
59 "\t f) AMERGE: test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_SHORT "
60 "Sync.\n");
61 printf(
62 "\t g) AMERGE: test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_SHORT "
63 "Async.\n");
64 printf(
65 "\t h) AMERGE: test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_LONG "
66 "Sync.\n");
67 printf(
68 "\t i) AMERGE: test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_LONG "
69 "Async.\n");
70 printf("\t j) AMERGE: test rk_aiq_user_api2_amerge_GetAttrib.\n");
71 printf("\t q) AMERGE: return to main sample screen.\n");
72
73 printf("\n");
74 printf("\t please press the key: ");
75
76 return;
77 }
78
sample_print_amerge_info(const void * arg)79 void sample_print_amerge_info(const void *arg)
80 {
81 printf ("enter AMERGE modult test!\n");
82 }
83
sample_amerge_module(const void * arg)84 XCamReturn sample_amerge_module(const void *arg)
85 {
86 int key = -1;
87 CLEAR();
88
89 mergeAttrV10_t attr_v10;
90 memset(&attr_v10, 0x0, sizeof(mergeAttrV10_t));
91 mergeAttrV11_t attr_v11;
92 memset(&attr_v11, 0x0, sizeof(mergeAttrV11_t));
93 mergeAttrV12_t attr_v12;
94 memset(&attr_v12, 0x0, sizeof(mergeAttrV12_t));
95 amerge_attrib_t attr_v2;
96 memset(&attr_v2, 0x0, sizeof(amerge_attrib_t));
97 const demo_context_t *demo_ctx = (demo_context_t *)arg;
98 const rk_aiq_sys_ctx_t* ctx ;
99 if (demo_ctx->camGroup) {
100 ctx = (rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
101 } else {
102 ctx = (rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
103 }
104
105 do {
106 sample_amerge_usage ();
107
108 key = getchar ();
109 while (key == '\n' || key == '\r')
110 key = getchar();
111 printf ("\n");
112
113 switch (key) {
114 case '0': {
115 printf(
116 "\t AMERGE test rk_aiq_user_api2_amerge_v10_SetAttrib stManual BASEFRAME_SHORT "
117 "Sync\n\n");
118 attr_v10.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
119 attr_v10.sync.done = false;
120 attr_v10.opMode = MERGE_OPMODE_MANUAL;
121 attr_v10.stManual.OECurve.Smooth = 0.4;
122 attr_v10.stManual.OECurve.Offset = 210;
123 attr_v10.stManual.MDCurve.LM_smooth = 0.4;
124 attr_v10.stManual.MDCurve.LM_offset = 0.38;
125 attr_v10.stManual.MDCurve.MS_smooth = 0.4;
126 attr_v10.stManual.MDCurve.MS_offset = 0.38;
127 rk_aiq_user_api2_amerge_v10_SetAttrib(ctx, &attr_v10);
128 break;
129 }
130 case '1': {
131 printf(
132 "\t AMERGE test rk_aiq_user_api2_amerge_v10_SetAttrib stManual BASEFRAME_SHORT "
133 "Async\n\n");
134 attr_v10.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
135 attr_v10.sync.done = false;
136 attr_v10.opMode = MERGE_OPMODE_MANUAL;
137 attr_v10.stManual.OECurve.Smooth = 0.4;
138 attr_v10.stManual.OECurve.Offset = 210;
139 attr_v10.stManual.MDCurve.LM_smooth = 0.4;
140 attr_v10.stManual.MDCurve.LM_offset = 0.38;
141 attr_v10.stManual.MDCurve.MS_smooth = 0.4;
142 attr_v10.stManual.MDCurve.MS_offset = 0.38;
143 rk_aiq_user_api2_amerge_v10_SetAttrib(ctx, &attr_v10);
144 break;
145 }
146 case '2': {
147 printf("\t AMERGE test rk_aiq_user_api2_amerge_v10_GetAttrib\n\n");
148 rk_aiq_user_api2_amerge_v10_GetAttrib(ctx, &attr_v10);
149 printf("\t sync = %d, done = %d\n", attr_v10.sync.sync_mode, attr_v10.sync.done);
150 printf("\t attr_v10.mode:%d Envlv:%f MoveCoef:%f\n\n", attr_v10.opMode,
151 attr_v10.Info.Envlv, attr_v10.Info.MoveCoef);
152 printf("\t OECurve Smooth:%f Offset:%f\n\n", attr_v10.stManual.OECurve.Smooth,
153 attr_v10.stManual.OECurve.Offset);
154 printf(
155 "\t MDCurve LM_smooth:%f LM_offset:%f MS_smooth%f "
156 "MS_offset:%f\n\n",
157 attr_v10.stManual.MDCurve.LM_smooth, attr_v10.stManual.MDCurve.LM_offset,
158 attr_v10.stManual.MDCurve.MS_smooth, attr_v10.stManual.MDCurve.MS_offset);
159 break;
160 }
161 case '3': {
162 printf(
163 "\t AMERGE test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_SHORT "
164 "Sync\n\n");
165 attr_v11.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
166 attr_v11.sync.done = false;
167 attr_v11.opMode = MERGE_OPMODE_MANUAL;
168 attr_v11.stManual.BaseFrm = BASEFRAME_SHORT;
169 attr_v11.stManual.ShortFrmModeData.OECurve.Smooth = 0.4;
170 attr_v11.stManual.ShortFrmModeData.OECurve.Offset = 210;
171 attr_v11.stManual.ShortFrmModeData.MDCurve.Coef = 0.05;
172 attr_v11.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
173 attr_v11.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
174 rk_aiq_user_api2_amerge_v11_SetAttrib(ctx, &attr_v11);
175 break;
176 }
177 case '4': {
178 printf(
179 "\t AMERGE test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_SHORT "
180 "Async\n\n");
181 attr_v11.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
182 attr_v11.sync.done = false;
183 attr_v11.opMode = MERGE_OPMODE_MANUAL;
184 attr_v11.stManual.BaseFrm = BASEFRAME_SHORT;
185 attr_v11.stManual.ShortFrmModeData.OECurve.Smooth = 0.5;
186 attr_v11.stManual.ShortFrmModeData.OECurve.Offset = 230;
187 attr_v11.stManual.ShortFrmModeData.MDCurve.Coef = 0.07;
188 attr_v11.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
189 attr_v11.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
190 rk_aiq_user_api2_amerge_v11_SetAttrib(ctx, &attr_v11);
191 break;
192 }
193 case '5': {
194 printf(
195 "\t AMERGE test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_LONG "
196 "Sync\n\n");
197 attr_v11.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
198 attr_v11.sync.done = false;
199 attr_v11.opMode = MERGE_OPMODE_MANUAL;
200 attr_v11.stManual.BaseFrm = BASEFRAME_LONG;
201 attr_v11.stManual.LongFrmModeData.OECurve.Smooth = 0.6;
202 attr_v11.stManual.LongFrmModeData.OECurve.Offset = 240;
203 attr_v11.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
204 attr_v11.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
205 attr_v11.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
206 attr_v11.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
207 rk_aiq_user_api2_amerge_v11_SetAttrib(ctx, &attr_v11);
208 break;
209 }
210 case '6': {
211 printf(
212 "\t AMERGE test rk_aiq_user_api2_amerge_v11_SetAttrib stManual BASEFRAME_LONG "
213 "Async\n\n");
214 attr_v11.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
215 attr_v11.sync.done = false;
216 attr_v11.opMode = MERGE_OPMODE_MANUAL;
217 attr_v11.stManual.BaseFrm = BASEFRAME_LONG;
218 attr_v11.stManual.LongFrmModeData.OECurve.Smooth = 0.7;
219 attr_v11.stManual.LongFrmModeData.OECurve.Offset = 280;
220 attr_v11.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
221 attr_v11.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
222 attr_v11.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
223 attr_v11.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
224 rk_aiq_user_api2_amerge_v11_SetAttrib(ctx, &attr_v11);
225 break;
226 }
227 case '7': {
228 printf("\t AMERGE test rk_aiq_user_api2_amerge_v11_GetAttrib\n\n");
229 rk_aiq_user_api2_amerge_v11_GetAttrib(ctx, &attr_v11);
230 printf("\t sync = %d, done = %d\n", attr_v11.sync.sync_mode, attr_v11.sync.done);
231 printf("\t attr_v11.mode:%d Envlv:%f MoveCoef:%f\n\n", attr_v11.opMode,
232 attr_v11.Info.Envlv, attr_v11.Info.MoveCoef);
233 printf("\t BaseFrm:%d \n\n", attr_v11.stManual.BaseFrm);
234 printf("\t LongFrmModeData OECurve Smooth:%f Offset:%f\n\n",
235 attr_v11.stManual.LongFrmModeData.OECurve.Smooth,
236 attr_v11.stManual.LongFrmModeData.OECurve.Offset);
237 printf(
238 "\t LongFrmModeData MDCurve LM_smooth:%f LM_offset:%f MS_smooth%f "
239 "MS_offset:%f\n\n",
240 attr_v11.stManual.LongFrmModeData.MDCurve.LM_smooth,
241 attr_v11.stManual.LongFrmModeData.MDCurve.LM_offset,
242 attr_v11.stManual.LongFrmModeData.MDCurve.MS_smooth,
243 attr_v11.stManual.LongFrmModeData.MDCurve.MS_offset);
244 printf("\t ShortFrmModeData OECurve Smooth:%f Offset:%f\n\n",
245 attr_v11.stManual.ShortFrmModeData.OECurve.Smooth,
246 attr_v11.stManual.ShortFrmModeData.OECurve.Offset);
247 printf("\t ShortFrmModeData MDCurve Coef:%f ms_thd0:%f lm_thd0%f\n\n",
248 attr_v11.stManual.ShortFrmModeData.MDCurve.Coef,
249 attr_v11.stManual.ShortFrmModeData.MDCurve.ms_thd0,
250 attr_v11.stManual.ShortFrmModeData.MDCurve.lm_thd0);
251 break;
252 }
253 case '8': {
254 printf(
255 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_SHORT "
256 "Sync\n\n");
257 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
258 attr_v12.sync.done = false;
259 attr_v12.opMode = MERGE_OPMODE_MANUAL;
260 attr_v12.stManual.BaseFrm = BASEFRAME_SHORT;
261 attr_v12.stManual.ShortFrmModeData.OECurve.Smooth = 0.4;
262 attr_v12.stManual.ShortFrmModeData.OECurve.Offset = 210;
263 attr_v12.stManual.ShortFrmModeData.MDCurve.Coef = 0.05;
264 attr_v12.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
265 attr_v12.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
266 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
267 break;
268 }
269 case '9': {
270 printf(
271 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_SHORT "
272 "Async\n\n");
273 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
274 attr_v12.sync.done = false;
275 attr_v12.opMode = MERGE_OPMODE_MANUAL;
276 attr_v12.stManual.BaseFrm = BASEFRAME_SHORT;
277 attr_v12.stManual.ShortFrmModeData.OECurve.Smooth = 0.5;
278 attr_v12.stManual.ShortFrmModeData.OECurve.Offset = 230;
279 attr_v12.stManual.ShortFrmModeData.MDCurve.Coef = 0.07;
280 attr_v12.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
281 attr_v12.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
282 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
283 break;
284 }
285 case 'a': {
286 printf(
287 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
288 "EnableEachChn off"
289 "Sync\n\n");
290 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
291 attr_v12.sync.done = false;
292 attr_v12.opMode = MERGE_OPMODE_MANUAL;
293 attr_v12.stManual.BaseFrm = BASEFRAME_LONG;
294 attr_v12.stManual.LongFrmModeData.EnableEachChn = false;
295 attr_v12.stManual.LongFrmModeData.OECurve.Smooth = 0.6;
296 attr_v12.stManual.LongFrmModeData.OECurve.Offset = 240;
297 attr_v12.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
298 attr_v12.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
299 attr_v12.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
300 attr_v12.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
301 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
302 break;
303 }
304 case 'b': {
305 printf(
306 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
307 "EnableEachChn off"
308 "Async\n\n");
309 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
310 attr_v12.sync.done = false;
311 attr_v12.opMode = MERGE_OPMODE_MANUAL;
312 attr_v12.stManual.BaseFrm = BASEFRAME_LONG;
313 attr_v12.stManual.LongFrmModeData.EnableEachChn = false;
314 attr_v12.stManual.LongFrmModeData.OECurve.Smooth = 0.7;
315 attr_v12.stManual.LongFrmModeData.OECurve.Offset = 280;
316 attr_v12.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
317 attr_v12.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
318 attr_v12.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
319 attr_v12.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
320 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
321 break;
322 }
323 case 'c': {
324 printf(
325 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
326 "EnableEachChn on"
327 "Sync\n\n");
328 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
329 attr_v12.sync.done = false;
330 attr_v12.opMode = MERGE_OPMODE_MANUAL;
331 attr_v12.stManual.BaseFrm = BASEFRAME_LONG;
332 attr_v12.stManual.LongFrmModeData.EnableEachChn = true;
333 attr_v12.stManual.LongFrmModeData.OECurve.Smooth = 0.6;
334 attr_v12.stManual.LongFrmModeData.OECurve.Offset = 240;
335 attr_v12.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
336 attr_v12.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
337 attr_v12.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
338 attr_v12.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
339 attr_v12.stManual.LongFrmModeData.EachChnCurve.Smooth = 0.5;
340 attr_v12.stManual.LongFrmModeData.EachChnCurve.Offset = 0.5;
341 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
342 break;
343 }
344 case 'd': {
345 printf(
346 "\t AMERGE test rk_aiq_user_api2_amerge_v12_SetAttrib stManual BASEFRAME_LONG "
347 "EnableEachChn on"
348 "Async\n\n");
349 attr_v12.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
350 attr_v12.sync.done = false;
351 attr_v12.opMode = MERGE_OPMODE_MANUAL;
352 attr_v12.stManual.BaseFrm = BASEFRAME_LONG;
353 attr_v12.stManual.LongFrmModeData.EnableEachChn = true;
354 attr_v12.stManual.LongFrmModeData.OECurve.Smooth = 0.7;
355 attr_v12.stManual.LongFrmModeData.OECurve.Offset = 280;
356 attr_v12.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
357 attr_v12.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
358 attr_v12.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
359 attr_v12.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
360 attr_v12.stManual.LongFrmModeData.EachChnCurve.Smooth = 0.4;
361 attr_v12.stManual.LongFrmModeData.EachChnCurve.Offset = 0.38;
362 rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, &attr_v12);
363 break;
364 }
365 case 'e': {
366 printf("\t AMERGE test rk_aiq_user_api2_amerge_v12_GetAttrib\n\n");
367 rk_aiq_user_api2_amerge_v12_GetAttrib(ctx, &attr_v12);
368 printf("\t sync = %d, done = %d\n", attr_v12.sync.sync_mode, attr_v12.sync.done);
369 printf("\t attr_v12.mode:%d Envlv:%f MoveCoef:%f\n\n", attr_v12.opMode,
370 attr_v12.Info.Envlv, attr_v12.Info.MoveCoef);
371 printf("\t stManual BaseFrm:%d \n\n", attr_v12.stManual.BaseFrm);
372 printf("\t stManual LongFrmModeData OECurve Smooth:%f Offset:%f\n\n",
373 attr_v12.stManual.LongFrmModeData.OECurve.Smooth,
374 attr_v12.stManual.LongFrmModeData.OECurve.Offset);
375 printf(
376 "\t stManual LongFrmModeData MDCurve LM_smooth:%f LM_offset:%f MS_smooth%f "
377 "MS_offset:%f\n\n",
378 attr_v12.stManual.LongFrmModeData.MDCurve.LM_smooth,
379 attr_v12.stManual.LongFrmModeData.MDCurve.LM_offset,
380 attr_v12.stManual.LongFrmModeData.MDCurve.MS_smooth,
381 attr_v12.stManual.LongFrmModeData.MDCurve.MS_offset);
382 printf(
383 "\t stManual LongFrmModeData EnableEachChn:%d EachChnCurve Smooth:%f Offset%f ",
384 attr_v12.stManual.LongFrmModeData.EnableEachChn,
385 attr_v12.stManual.LongFrmModeData.EachChnCurve.Smooth,
386 attr_v12.stManual.LongFrmModeData.EachChnCurve.Offset);
387 printf("\t stManual ShortFrmModeData OECurve Smooth:%f Offset:%f\n\n",
388 attr_v12.stManual.ShortFrmModeData.OECurve.Smooth,
389 attr_v12.stManual.ShortFrmModeData.OECurve.Offset);
390 printf("\t stManual ShortFrmModeData MDCurve Coef:%f ms_thd0:%f lm_thd0%f\n\n",
391 attr_v12.stManual.ShortFrmModeData.MDCurve.Coef,
392 attr_v12.stManual.ShortFrmModeData.MDCurve.ms_thd0,
393 attr_v12.stManual.ShortFrmModeData.MDCurve.lm_thd0);
394 break;
395 }
396 case 'f': {
397 printf(
398 "\t AMERGE test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_SHORT "
399 "Sync\n\n");
400 attr_v2.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
401 attr_v2.sync.done = false;
402 attr_v2.attrV30.opMode = MERGE_OPMODE_MANU;
403 attr_v2.attrV30.stManual.BaseFrm = BASEFRAME_SHORT;
404 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Smooth = 0.4;
405 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Offset = 210;
406 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.Coef = 0.05;
407 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
408 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
409 rk_aiq_user_api2_amerge_SetAttrib(ctx, attr_v2);
410 break;
411 }
412 case 'g': {
413 printf(
414 "\t AMERGE test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_SHORT "
415 "Async\n\n");
416 attr_v2.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
417 attr_v2.sync.done = false;
418 attr_v2.attrV30.opMode = MERGE_OPMODE_MANU;
419 attr_v2.attrV30.stManual.BaseFrm = BASEFRAME_SHORT;
420 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Smooth = 0.5;
421 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Offset = 230;
422 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.Coef = 0.07;
423 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.ms_thd0 = 0.00;
424 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.lm_thd0 = 0.00;
425 rk_aiq_user_api2_amerge_SetAttrib(ctx, attr_v2);
426 break;
427 }
428 case 'h': {
429 printf(
430 "\t AMERGE test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_LONG "
431 "Sync\n\n");
432 attr_v2.sync.sync_mode = RK_AIQ_UAPI_MODE_DEFAULT;
433 attr_v2.sync.done = false;
434 attr_v2.attrV30.opMode = MERGE_OPMODE_MANU;
435 attr_v2.attrV30.stManual.BaseFrm = BASEFRAME_LONG;
436 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Smooth = 0.6;
437 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Offset = 240;
438 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
439 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
440 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
441 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
442 rk_aiq_user_api2_amerge_SetAttrib(ctx, attr_v2);
443 break;
444 }
445 case 'i': {
446 printf(
447 "\t AMERGE test rk_aiq_user_api2_amerge_SetAttrib stManual BASEFRAME_LONG "
448 "Async\n\n");
449 attr_v2.sync.sync_mode = RK_AIQ_UAPI_MODE_ASYNC;
450 attr_v2.sync.done = false;
451 attr_v2.attrV30.opMode = MERGE_OPMODE_MANU;
452 attr_v2.attrV30.stManual.BaseFrm = BASEFRAME_LONG;
453 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Smooth = 0.7;
454 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Offset = 280;
455 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_smooth = 0.8;
456 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_offset = 38;
457 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_smooth = 0.8;
458 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_offset = 38;
459 rk_aiq_user_api2_amerge_SetAttrib(ctx, attr_v2);
460 break;
461 }
462 case 'j': {
463 printf("\t AMERGE test rk_aiq_user_api2_amerge_GetAttrib\n\n");
464 rk_aiq_user_api2_amerge_GetAttrib(ctx, &attr_v2);
465 printf("\t sync = %d, done = %d\n", attr_v2.sync.sync_mode, attr_v2.sync.done);
466 printf("\t attr_v2.mode:%d Envlv:%f MoveCoef:%f\n\n", attr_v2.attrV30.opMode,
467 attr_v2.attrV30.CtlInfo.Envlv, attr_v2.attrV30.CtlInfo.MoveCoef);
468 printf("\t BaseFrm:%d \n\n", attr_v2.attrV30.stManual.BaseFrm);
469 printf("\t LongFrmModeData OECurve Smooth:%f Offset:%f\n\n",
470 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Smooth,
471 attr_v2.attrV30.stManual.LongFrmModeData.OECurve.Offset);
472 printf(
473 "\t LongFrmModeData MDCurve LM_smooth:%f LM_offset:%f MS_smooth%f "
474 "MS_offset:%f\n\n",
475 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_smooth,
476 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.LM_offset,
477 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_smooth,
478 attr_v2.attrV30.stManual.LongFrmModeData.MDCurve.MS_offset);
479 printf("\t ShortFrmModeData OECurve Smooth:%f Offset:%f\n\n",
480 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Smooth,
481 attr_v2.attrV30.stManual.ShortFrmModeData.OECurve.Offset);
482 printf("\t ShortFrmModeData MDCurve Coef:%f ms_thd0:%f lm_thd0%f\n\n",
483 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.Coef,
484 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.ms_thd0,
485 attr_v2.attrV30.stManual.ShortFrmModeData.MDCurve.lm_thd0);
486 break;
487 }
488 default:
489 break;
490 }
491 } while (key != 'q' && key != 'Q');
492
493 return XCAM_RETURN_NO_ERROR;
494 }
495