xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI2/rk_aiq_user_api2_acnr_v30.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
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 #include "uAPI2/rk_aiq_user_api2_acnr_v30.h"
17 
18 #include "RkAiqCamGroupHandleInt.h"
19 #include "algo_handlers/RkAiqAcnrV30Handle.h"
20 
21 RKAIQ_BEGIN_DECLARE
22 
23 #ifdef RK_SIMULATOR_HW
24 #define CHECK_USER_API_ENABLE
25 #endif
26 
27 #if (RKAIQ_HAVE_CNR_V30 || RKAIQ_HAVE_CNR_V30_LITE)
28 
29 XCamReturn
rk_aiq_user_api2_acnrV30_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_cnr_attrib_v30_t * attr)30 rk_aiq_user_api2_acnrV30_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_attrib_v30_t* attr)
31 {
32     XCamReturn ret = XCAM_RETURN_NO_ERROR;
33     CHECK_USER_API_ENABLE2(sys_ctx);
34     CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ACNR);
35     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
36 #ifdef RKAIQ_ENABLE_CAMGROUP
37 
38         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
39             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
40 
41         if (algo_handle) {
42             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
43             return algo_handle->setAttrib(attr);
44         } else {
45             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
46             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
47                 if (!camCtx)
48                     continue;
49 
50                 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
51                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
52                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
53                 if (singleCam_algo_handle)
54                     ret = singleCam_algo_handle->setAttrib(attr);
55             }
56         }
57 #else
58         return XCAM_RETURN_ERROR_FAILED;
59 #endif
60 
61     } else {
62         RkAiqAcnrV30HandleInt* algo_handle =
63             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
64         LOGD_ANR("%s:%d !!!!!!!!!!!!! single!!!!!!!!\n", __FUNCTION__, __LINE__);
65         if (algo_handle) {
66             return algo_handle->setAttrib(attr);
67         }
68     }
69 
70     return ret;
71 }
72 
73 XCamReturn
rk_aiq_user_api2_acnrV30_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_attrib_v30_t * attr)74 rk_aiq_user_api2_acnrV30_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v30_t* attr)
75 {
76     XCamReturn ret = XCAM_RETURN_NO_ERROR;
77 
78     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
79 #ifdef RKAIQ_ENABLE_CAMGROUP
80         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
81             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
82 
83         if (algo_handle) {
84             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
85             return algo_handle->getAttrib(attr);
86         } else {
87             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
88             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
89                 if (!camCtx)
90                     continue;
91                 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
92                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
93                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
94                 if (singleCam_algo_handle)
95                     ret = singleCam_algo_handle->getAttrib(attr);
96             }
97         }
98 #else
99         return XCAM_RETURN_ERROR_FAILED;
100 #endif
101 
102     } else {
103         RkAiqAcnrV30HandleInt* algo_handle =
104             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
105         LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
106         if (algo_handle) {
107             return algo_handle->getAttrib(attr);
108         }
109     }
110 
111 
112     return ret;
113 }
114 
115 XCamReturn
rk_aiq_user_api2_acnrV30_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_cnr_strength_v30_t * pStrength)116 rk_aiq_user_api2_acnrV30_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_strength_v30_t *pStrength)
117 {
118     XCamReturn ret = XCAM_RETURN_NO_ERROR;
119     RKAIQ_API_SMART_LOCK(sys_ctx);
120 
121     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
122 #ifdef RKAIQ_ENABLE_CAMGROUP
123 
124         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
125             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
126 
127         if (algo_handle) {
128             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
129             return algo_handle->setStrength(pStrength);
130         } else {
131             LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
132             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
133             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
134                 if (!camCtx)
135                     continue;
136 
137                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
138                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
139                 if (singleCam_algo_handle)
140                     ret = singleCam_algo_handle->setStrength(pStrength);
141             }
142         }
143 #else
144         return XCAM_RETURN_ERROR_FAILED;
145 #endif
146 
147     } else {
148         LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
149         RkAiqAcnrV30HandleInt* algo_handle =
150             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
151 
152         if (algo_handle) {
153             return algo_handle->setStrength(pStrength);
154         }
155     }
156 
157     return ret;
158 }
159 
160 
161 XCamReturn
rk_aiq_user_api2_acnrV30_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_strength_v30_t * pStrength)162 rk_aiq_user_api2_acnrV30_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v30_t *pStrength)
163 {
164     XCamReturn ret = XCAM_RETURN_NO_ERROR;
165     RKAIQ_API_SMART_LOCK(sys_ctx);
166 
167 
168     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
169 #ifdef RKAIQ_ENABLE_CAMGROUP
170 
171         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
172             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
173 
174         if (algo_handle) {
175             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
176             return algo_handle->getStrength(pStrength);
177         } else {
178             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
179             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
180                 if (!camCtx)
181                     continue;
182                 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
183                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
184                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
185                 if (singleCam_algo_handle)
186                     ret = singleCam_algo_handle->getStrength(pStrength);
187             }
188         }
189 #else
190         return XCAM_RETURN_ERROR_FAILED;
191 #endif
192 
193     } else {
194         RkAiqAcnrV30HandleInt* algo_handle =
195             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
196         LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
197         if (algo_handle) {
198             return algo_handle->getStrength(pStrength);
199         }
200     }
201 
202     return ret;
203 
204 }
205 
206 
207 
208 XCamReturn
rk_aiq_user_api2_acnrV30_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_info_v30_t * pInfo)209 rk_aiq_user_api2_acnrV30_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v30_t *pInfo)
210 {
211     XCamReturn ret = XCAM_RETURN_NO_ERROR;
212     RKAIQ_API_SMART_LOCK(sys_ctx);
213 
214 
215     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
216 #ifdef RKAIQ_ENABLE_CAMGROUP
217 
218         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
219             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
220 
221         if (algo_handle) {
222             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
223             return algo_handle->getInfo(pInfo);
224         } else {
225             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
226             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
227                 if (!camCtx)
228                     continue;
229                 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
230                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
231                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
232                 if (singleCam_algo_handle)
233                     ret = singleCam_algo_handle->getInfo(pInfo);
234             }
235         }
236 #else
237         return XCAM_RETURN_ERROR_FAILED;
238 #endif
239 
240     } else {
241         RkAiqAcnrV30HandleInt* algo_handle =
242             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
243         LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
244         if (algo_handle) {
245             return algo_handle->getInfo(pInfo);
246         }
247     }
248 
249     return ret;
250 
251 }
252 
253 
254 #else
255 XCamReturn
256 rk_aiq_user_api2_acnrV30_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_attrib_v30_t* attr)
257 {
258     return XCAM_RETURN_ERROR_UNKNOWN;
259 }
260 
261 
262 XCamReturn
263 rk_aiq_user_api2_acnrV30_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v30_t* attr)
264 {
265     return XCAM_RETURN_ERROR_UNKNOWN;
266 }
267 
268 
269 XCamReturn
270 rk_aiq_user_api2_acnrV30_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_strength_v30_t *pStrength)
271 {
272     return XCAM_RETURN_ERROR_UNKNOWN;
273 }
274 
275 
276 XCamReturn
277 rk_aiq_user_api2_acnrV30_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v30_t *pStrength)
278 {
279     return XCAM_RETURN_ERROR_UNKNOWN;
280 }
281 
282 XCamReturn
283 rk_aiq_user_api2_acnrV30_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v30_t *pInfo)
284 {
285     return XCAM_RETURN_ERROR_UNKNOWN;
286 }
287 
288 #endif
289 
290 RKAIQ_END_DECLARE
291