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_abayer2dnr_v2.h"
17
18 #include "RkAiqCamGroupHandleInt.h"
19 #include "algo_handlers/RkAiqAbayer2dnrV2Handle.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_BAYER2DNR_V2
28
29 XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_attrib_v2_t * attr)30 rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_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_ARAWNR);
35 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
36 #ifdef RKAIQ_ENABLE_CAMGROUP
37
38 RkAiqCamGroupAbayer2dnrV2HandleInt* algo_handle =
39 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
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 RkAiqAbayer2dnrV2HandleInt* singleCam_algo_handle =
52 algoHandle<RkAiqAbayer2dnrV2HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
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 RkAiqAbayer2dnrV2HandleInt* algo_handle =
63 algoHandle<RkAiqAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
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_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_attrib_v2_t * attr)74 rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_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
81 RkAiqCamGroupAbayer2dnrV2HandleInt* algo_handle =
82 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
83
84 if (algo_handle) {
85 LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
86 return algo_handle->getAttrib(attr);
87 } else {
88 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
89 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
90 if (!camCtx)
91 continue;
92 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
93 RkAiqAbayer2dnrV2HandleInt* singleCam_algo_handle =
94 algoHandle<RkAiqAbayer2dnrV2HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
95 if (singleCam_algo_handle)
96 ret = singleCam_algo_handle->getAttrib(attr);
97 }
98 }
99 #else
100 return XCAM_RETURN_ERROR_FAILED;
101 #endif
102
103 } else {
104 RkAiqAbayer2dnrV2HandleInt* algo_handle =
105 algoHandle<RkAiqAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
106 LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
107 if (algo_handle) {
108 return algo_handle->getAttrib(attr);
109 }
110 }
111
112
113 return ret;
114 }
115
116 XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_strength_v2_t * pStrength)117 rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v2_t *pStrength)
118 {
119 XCamReturn ret = XCAM_RETURN_NO_ERROR;
120 RKAIQ_API_SMART_LOCK(sys_ctx);
121
122 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
123 #ifdef RKAIQ_ENABLE_CAMGROUP
124
125 RkAiqCamGroupAbayer2dnrV2HandleInt* algo_handle =
126 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
127
128 if (algo_handle) {
129 LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
130 return algo_handle->setStrength(pStrength);
131 } else {
132 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
133 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
134 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
135 if (!camCtx)
136 continue;
137
138 RkAiqAbayer2dnrV2HandleInt* singleCam_algo_handle =
139 algoHandle<RkAiqAbayer2dnrV2HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
140 if (singleCam_algo_handle)
141 ret = singleCam_algo_handle->setStrength(pStrength);
142 }
143 }
144 #else
145 return XCAM_RETURN_ERROR_FAILED;
146 #endif
147
148 } else {
149 LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
150 RkAiqAbayer2dnrV2HandleInt* algo_handle =
151 algoHandle<RkAiqAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
152
153 if (algo_handle) {
154 return algo_handle->setStrength(pStrength);
155 }
156 }
157
158 return ret;
159 }
160
161
162 XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_strength_v2_t * pStrength)163 rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v2_t *pStrength)
164 {
165 XCamReturn ret = XCAM_RETURN_NO_ERROR;
166 RKAIQ_API_SMART_LOCK(sys_ctx);
167
168
169 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
170 #ifdef RKAIQ_ENABLE_CAMGROUP
171
172 RkAiqCamGroupAbayer2dnrV2HandleInt* algo_handle =
173 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
174
175 if (algo_handle) {
176 LOGD_ANR("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
177 return algo_handle->getStrength(pStrength);
178 } else {
179 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
180 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
181 if (!camCtx)
182 continue;
183 LOGD_ANR("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
184 RkAiqAbayer2dnrV2HandleInt* singleCam_algo_handle =
185 algoHandle<RkAiqAbayer2dnrV2HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
186 if (singleCam_algo_handle)
187 ret = singleCam_algo_handle->getStrength(pStrength);
188 }
189 }
190 #else
191 return XCAM_RETURN_ERROR_FAILED;
192 #endif
193
194 } else {
195 RkAiqAbayer2dnrV2HandleInt* algo_handle =
196 algoHandle<RkAiqAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
197 LOGD_ANR("%s:%d !!!!!!!!!!!!!single!!!!!!!!\n", __FUNCTION__, __LINE__);
198 if (algo_handle) {
199 return algo_handle->getStrength(pStrength);
200 }
201 }
202
203 return ret;
204 }
205
206 XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_info_v2_t * pInfo)207 rk_aiq_user_api2_abayer2dnrV2_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_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 RkAiqCamGroupAbayer2dnrV2HandleInt* algo_handle =
217 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
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 RkAiqAbayer2dnrV2HandleInt* singleCam_algo_handle =
229 algoHandle<RkAiqAbayer2dnrV2HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
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 RkAiqAbayer2dnrV2HandleInt* algo_handle =
240 algoHandle<RkAiqAbayer2dnrV2HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
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 #else
251
252 XCamReturn
253 rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_attrib_v2_t* attr)
254 {
255 return XCAM_RETURN_ERROR_UNKNOWN;
256 }
257
258 XCamReturn
259 rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_attrib_v2_t* attr)
260 {
261 return XCAM_RETURN_ERROR_UNKNOWN;
262 }
263
264 XCamReturn
265 rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v2_t *pStrength)
266 {
267 return XCAM_RETURN_ERROR_UNKNOWN;
268 }
269
270 XCamReturn
271 rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v2_t *pStrength)
272 {
273 return XCAM_RETURN_ERROR_UNKNOWN;
274 }
275
276 XCamReturn
277 rk_aiq_user_api2_abayer2dnrV2_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_info_v2_t *pInfo)
278 {
279 return XCAM_RETURN_ERROR_UNKNOWN;
280 }
281 #endif
282
283
284 RKAIQ_END_DECLARE
285