xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI/rk_aiq_user_api_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 "rk_aiq_user_api_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_api_acnrV30_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_cnr_attrib_v30_t * attr)30 rk_aiq_user_api_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_api_acnrV30_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_attrib_v30_t * attr)74 rk_aiq_user_api_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_api_acnrV30_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_cnr_strength_v30_t * pStrength)116 rk_aiq_user_api_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_api_acnrV30_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_strength_v30_t * pStrength)162 rk_aiq_user_api_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 XCamReturn
rk_aiq_user_api_acnrV30_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_info_v30_t * pInfo)207 rk_aiq_user_api_acnrV30_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v30_t *pInfo)
208 {
209     XCamReturn ret = XCAM_RETURN_NO_ERROR;
210     RKAIQ_API_SMART_LOCK(sys_ctx);
211 
212 
213     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
214 #ifdef RKAIQ_ENABLE_CAMGROUP
215 
216         RkAiqCamGroupAcnrV30HandleInt* algo_handle =
217             camgroupAlgoHandle<RkAiqCamGroupAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
218 
219         if (algo_handle) {
220             LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
221             return algo_handle->getInfo(pInfo);
222         } else {
223             const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
224             for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
225                 if (!camCtx)
226                     continue;
227                 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
228                 RkAiqAcnrV30HandleInt* singleCam_algo_handle =
229                     algoHandle<RkAiqAcnrV30HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ACNR);
230                 if (singleCam_algo_handle)
231                     ret = singleCam_algo_handle->getInfo(pInfo);
232             }
233         }
234 #else
235         return XCAM_RETURN_ERROR_FAILED;
236 #endif
237 
238     } else {
239         RkAiqAcnrV30HandleInt* algo_handle =
240             algoHandle<RkAiqAcnrV30HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ACNR);
241         LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
242         if (algo_handle) {
243             return algo_handle->getInfo(pInfo);
244         }
245     }
246 
247     return ret;
248 
249 }
250 
251 
252 #else
253 XCamReturn
254 rk_aiq_user_api_acnrV30_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_attrib_v30_t* attr)
255 {
256     return XCAM_RETURN_ERROR_UNKNOWN;
257 }
258 
259 
260 XCamReturn
261 rk_aiq_user_api_acnrV30_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v30_t* attr)
262 {
263     return XCAM_RETURN_ERROR_UNKNOWN;
264 }
265 
266 
267 XCamReturn
268 rk_aiq_user_api_acnrV30_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_cnr_strength_v30_t *pStrength)
269 {
270     return XCAM_RETURN_ERROR_UNKNOWN;
271 }
272 
273 
274 XCamReturn
275 rk_aiq_user_api_acnrV30_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v30_t *pStrength)
276 {
277     return XCAM_RETURN_ERROR_UNKNOWN;
278 }
279 
280 XCamReturn
281 rk_aiq_user_api_acnrV30_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v30_t *pInfo)
282 {
283     return XCAM_RETURN_ERROR_UNKNOWN;
284 }
285 
286 #endif
287 
288 RKAIQ_END_DECLARE
289