xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkisp_demo/demo/sample/sample_again_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_again_usage()20 static void sample_again_usage()
21 {
22     printf("Usage : \n");
23     printf("\t 0) AGAIN:         get again attri on sync mode.\n");
24     printf("\t 1) AGAIN:         set again attri auto on sync mode.\n");
25     printf("\t 2) AGAIN:         set again attri manual on sync mode.\n");
26     printf("\t 3) AGAIN:         set again attri to default vaule on sync mode.\n");
27     printf("\t 4) AGAIN:         get again attri on async mode.\n");
28     printf("\t 5) AGAIN:         set again attri auto on async mode.\n");
29     printf("\t 6) AGAIN:         set again attri manual on async mode.\n");
30     printf("\t 7) AGAIN:         set again attri to default vaule on async mode.\n");
31     printf("\t q) AGAIN:         press key q or Q to quit.\n");
32 
33 }
34 
sample_print_again_info(const void * arg)35 void sample_print_again_info(const void *arg)
36 {
37     printf ("enter AGAIN modult test!\n");
38 }
39 
sample_again_getAttr_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)40 XCamReturn sample_again_getAttr_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
41 {
42     XCamReturn ret = XCAM_RETURN_NO_ERROR;
43 
44     rk_aiq_gain_attrib_v2_t gainV2_attr;
45     gainV2_attr.sync.sync_mode = sync_mode;
46     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &gainV2_attr);
47     printf("get again v2 attri ret:%d done:%d\n\n", ret, gainV2_attr.sync.done);
48 
49     return ret;
50 }
51 
sample_again_setAuto_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)52 XCamReturn sample_again_setAuto_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
53 {
54     XCamReturn ret = XCAM_RETURN_NO_ERROR;
55 
56     rk_aiq_gain_attrib_v2_t gainV2_attr;
57     gainV2_attr.sync.sync_mode = sync_mode;
58     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &gainV2_attr);
59     gainV2_attr.sync.sync_mode = sync_mode;
60     gainV2_attr.eMode = AGAINV2_OP_MODE_AUTO;
61     gainV2_attr.stAuto.stParams.hdrgain_ctrl_enable = 1;
62     for(int i = 0; i < RK_GAIN_V2_MAX_ISO_NUM; i++) {
63         gainV2_attr.stAuto.stParams.iso[i] = 50 * pow(2, i);
64 
65         gainV2_attr.stAuto.stParams.iso_params[i].hdr_gain_scale_s = 1.0;
66         gainV2_attr.stAuto.stParams.iso_params[i].hdr_gain_scale_m = 1.0;
67     }
68 
69     ret = rk_aiq_user_api2_againV2_SetAttrib(ctx, &gainV2_attr);
70     printf("set again attri auto ret:%d \n\n", ret);
71 
72     rk_aiq_gain_attrib_v2_t get_gainV2_attr;
73     get_gainV2_attr.sync.sync_mode = sync_mode;
74     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &get_gainV2_attr);
75     printf("get again v2 attri ret:%d done:%d\n\n", ret, get_gainV2_attr.sync.done);
76     return ret;
77 }
78 
sample_again_setManual_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode)79 XCamReturn sample_again_setManual_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode)
80 {
81     XCamReturn ret = XCAM_RETURN_NO_ERROR;
82 
83     rk_aiq_gain_attrib_v2_t gainV2_attr;
84     gainV2_attr.sync.sync_mode = sync_mode;
85     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &gainV2_attr);
86     gainV2_attr.sync.sync_mode = sync_mode;
87     gainV2_attr.eMode = AGAINV2_OP_MODE_MANUAL;
88     gainV2_attr.stManual.stSelect.hdrgain_ctrl_enable = 1;
89 
90     gainV2_attr.stManual.stSelect.hdr_gain_scale_s = 1.0;
91     gainV2_attr.stManual.stSelect.hdr_gain_scale_m = 1.0;
92 
93     ret = rk_aiq_user_api2_againV2_SetAttrib(ctx, &gainV2_attr);
94     printf("set gain v2 attri manual ret:%d \n\n", ret);
95 
96     rk_aiq_gain_attrib_v2_t get_gainV2_attr;
97     get_gainV2_attr.sync.sync_mode = sync_mode;
98     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &get_gainV2_attr);
99     printf("get again v2 attri ret:%d done:%d\n\n", ret, get_gainV2_attr.sync.done);
100 
101     return ret;
102 }
103 
sample_again_setDefault_v2(const rk_aiq_sys_ctx_t * ctx,rk_aiq_uapi_mode_sync_e sync_mode,rk_aiq_gain_attrib_v2_t & default_gainV2_attr)104 XCamReturn sample_again_setDefault_v2 (const rk_aiq_sys_ctx_t* ctx, rk_aiq_uapi_mode_sync_e sync_mode, rk_aiq_gain_attrib_v2_t& default_gainV2_attr)
105 {
106     XCamReturn ret = XCAM_RETURN_NO_ERROR;
107     default_gainV2_attr.sync.sync_mode = sync_mode;
108     ret = rk_aiq_user_api2_againV2_SetAttrib(ctx, &default_gainV2_attr);
109     printf("Set again v2 set default attri ret:%d \n\n", ret);
110 
111     rk_aiq_gain_attrib_v2_t get_gainV2_attr;
112     get_gainV2_attr.sync.sync_mode = sync_mode;
113     ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &get_gainV2_attr);
114     printf("get again v2 attri ret:%d done:%d\n\n", ret, get_gainV2_attr.sync.done);
115 
116     return ret;
117 }
118 
sample_again_module(const void * arg)119 XCamReturn sample_again_module (const void *arg)
120 {
121     int key = -1;
122     CLEAR();
123     XCamReturn ret = XCAM_RETURN_NO_ERROR;
124     const demo_context_t *demo_ctx = (demo_context_t *)arg;
125     const rk_aiq_sys_ctx_t* ctx ;
126 
127     if(demo_ctx->camGroup) {
128         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->camgroup_ctx);
129         printf("##################group !!!!########################\n");
130     } else {
131         ctx = (const rk_aiq_sys_ctx_t*)(demo_ctx->aiq_ctx);
132         printf("##################sigle !!!!########################\n");
133     }
134 
135     if (ctx == nullptr) {
136         ERR ("%s, ctx is nullptr\n", __FUNCTION__);
137         return XCAM_RETURN_ERROR_PARAM;
138     }
139 
140     rk_aiq_gain_attrib_v2_t default_gainV2_attr;
141     if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
142         ret = rk_aiq_user_api2_againV2_GetAttrib(ctx, &default_gainV2_attr);
143         printf("get again v2 default attri ret:%d \n\n", ret);
144     }
145 
146     do {
147         sample_again_usage ();
148 
149         key = getchar ();
150         while (key == '\n' || key == '\r')
151             key = getchar ();
152         printf ("\n");
153 
154         switch (key) {
155         case '0':
156             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
157                 sample_again_getAttr_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
158             }
159             break;
160         case '1':
161             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
162                 sample_again_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
163             }
164             break;
165         case '2':
166             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
167                 sample_again_setManual_v2(ctx, RK_AIQ_UAPI_MODE_SYNC);
168             }
169             break;
170         case '3':
171             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
172                 sample_again_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_SYNC, default_gainV2_attr);
173             }
174             break;
175         case '4':
176             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
177                 sample_again_getAttr_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
178             }
179             break;
180         case '5':
181             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
182                 sample_again_setAuto_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
183             }
184             break;
185         case '6':
186             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
187                 sample_again_setManual_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC);
188             }
189             break;
190         case '7':
191             if (CHECK_ISP_HW_V30() || CHECK_ISP_HW_V32() || CHECK_ISP_HW_V32_LITE()) {
192                 sample_again_setDefault_v2(ctx, RK_AIQ_UAPI_MODE_ASYNC, default_gainV2_attr);
193             }
194             break;
195         default:
196             printf("not support test\n\n");
197             break;
198         }
199 
200     } while (key != 'q' && key != 'Q');
201 
202     return ret;
203 }
204 
205