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_v2.h"
17
18 #include "RkAiqCamGroupHandleInt.h"
19 #include "algo_handlers/RkAiqAcnrV2Handle.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_V2
28
29 XCamReturn
rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_attrib_v2_t * attr)30 rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v2_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 RkAiqCamGroupAcnrV2HandleInt* algo_handle =
39 camgroupAlgoHandle<RkAiqCamGroupAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* singleCam_algo_handle =
52 algoHandle<RkAiqAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* algo_handle =
63 algoHandle<RkAiqAcnrV2HandleInt>(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_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_attrib_v2_t * attr)74 rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v2_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 RkAiqCamGroupAcnrV2HandleInt* algo_handle =
81 camgroupAlgoHandle<RkAiqCamGroupAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* singleCam_algo_handle =
93 algoHandle<RkAiqAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* algo_handle =
104 algoHandle<RkAiqAcnrV2HandleInt>(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_acnrV2_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_strength_v2_t * pStrength)116 rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v2_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 RkAiqCamGroupAcnrV2HandleInt* algo_handle =
125 camgroupAlgoHandle<RkAiqCamGroupAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* singleCam_algo_handle =
138 algoHandle<RkAiqAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* algo_handle =
150 algoHandle<RkAiqAcnrV2HandleInt>(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_acnrV2_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_strength_v2_t * pStrength)162 rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v2_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 RkAiqCamGroupAcnrV2HandleInt* algo_handle =
172 camgroupAlgoHandle<RkAiqCamGroupAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* singleCam_algo_handle =
184 algoHandle<RkAiqAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* algo_handle =
195 algoHandle<RkAiqAcnrV2HandleInt>(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_api2_acnrV2_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_cnr_info_v2_t * pInfo)207 rk_aiq_user_api2_acnrV2_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v2_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 RkAiqCamGroupAcnrV2HandleInt* algo_handle =
217 camgroupAlgoHandle<RkAiqCamGroupAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* singleCam_algo_handle =
229 algoHandle<RkAiqAcnrV2HandleInt>(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 RkAiqAcnrV2HandleInt* algo_handle =
240 algoHandle<RkAiqAcnrV2HandleInt>(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 #else
252 XCamReturn
253 rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v2_t* attr)
254 {
255 return XCAM_RETURN_ERROR_UNKNOWN;
256 }
257
258
259 XCamReturn
260 rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_attrib_v2_t* attr)
261 {
262 return XCAM_RETURN_ERROR_UNKNOWN;
263 }
264
265
266 XCamReturn
267 rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v2_t *pStrength)
268 {
269 return XCAM_RETURN_ERROR_UNKNOWN;
270 }
271
272
273 XCamReturn
274 rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_strength_v2_t *pStrength)
275 {
276 return XCAM_RETURN_ERROR_UNKNOWN;
277 }
278
279 XCamReturn
280 rk_aiq_user_api2_acnrV2_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_cnr_info_v2_t *pInfo)
281 {
282 return XCAM_RETURN_ERROR_UNKNOWN;
283 }
284
285 #endif
286
287 RKAIQ_END_DECLARE
288