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_abayer2dnr_v23.h"
17
18 #include "RkAiqCamGroupHandleInt.h"
19 #include "algo_handlers/RkAiqAbayer2dnrV23Handle.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_V23
28
29 XCamReturn
rk_aiq_user_api_abayer2dnrV23_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_bayer2dnr_attrib_v23_t * attr)30 rk_aiq_user_api_abayer2dnrV23_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_attrib_v23_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 RkAiqCamGroupAbayer2dnrV23HandleInt* algo_handle =
39 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* singleCam_algo_handle =
52 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* algo_handle =
63 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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_api_abayer2dnrV23_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_attrib_v23_t * attr)74 rk_aiq_user_api_abayer2dnrV23_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_attrib_v23_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 RkAiqCamGroupAbayer2dnrV23HandleInt* algo_handle =
82 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* singleCam_algo_handle =
94 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* algo_handle =
105 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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_api_abayer2dnrV23_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_bayer2dnr_strength_v23_t * pStrength)117 rk_aiq_user_api_abayer2dnrV23_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_strength_v23_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 RkAiqCamGroupAbayer2dnrV23HandleInt* algo_handle =
126 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* singleCam_algo_handle =
139 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* algo_handle =
151 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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_api_abayer2dnrV23_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_strength_v23_t * pStrength)163 rk_aiq_user_api_abayer2dnrV23_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v23_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 RkAiqCamGroupAbayer2dnrV23HandleInt* algo_handle =
173 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* singleCam_algo_handle =
185 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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 RkAiqAbayer2dnrV23HandleInt* algo_handle =
196 algoHandle<RkAiqAbayer2dnrV23HandleInt>(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
rk_aiq_user_api_abayer2ndrV23_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_info_v23_t * pInfo)206 XCamReturn rk_aiq_user_api_abayer2ndrV23_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx,
207 rk_aiq_bayer2dnr_info_v23_t* pInfo) {
208 XCamReturn ret = XCAM_RETURN_NO_ERROR;
209 RKAIQ_API_SMART_LOCK(sys_ctx);
210
211 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
212 #ifdef RKAIQ_ENABLE_CAMGROUP
213 RkAiqCamGroupAbayer2dnrV23HandleInt* algo_handle =
214 camgroupAlgoHandle<RkAiqCamGroupAbayer2dnrV23HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
215
216 if (algo_handle) {
217 LOGD_ASHARP("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
218 return algo_handle->getInfo(pInfo);
219 } else {
220 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t*)sys_ctx;
221 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
222 if (!camCtx) continue;
223
224 LOGD_ASHARP("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
225 RkAiqAbayer2dnrV23HandleInt* singleCam_algo_handle =
226 algoHandle<RkAiqAbayer2dnrV23HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ARAWNR);
227 if (singleCam_algo_handle) ret = singleCam_algo_handle->getInfo(pInfo);
228 }
229 }
230 #else
231 return XCAM_RETURN_ERROR_FAILED;
232 #endif // RKAIQ_ENABLE_CAMGROUP
233 } else {
234 RkAiqAbayer2dnrV23HandleInt* algo_handle =
235 algoHandle<RkAiqAbayer2dnrV23HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ARAWNR);
236 LOGD_ASHARP("%s:%d !!!!!!!!!!!!! single!!!!!!!!\n", __FUNCTION__, __LINE__);
237 if (algo_handle) {
238 return algo_handle->getInfo(pInfo);
239 }
240 }
241
242 return ret;
243 }
244
245
246
247 #else
248
249 XCamReturn
250 rk_aiq_user_api_abayer2dnrV23_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_attrib_v23_t* attr)
251 {
252 return XCAM_RETURN_ERROR_UNKNOWN;
253 }
254
255 XCamReturn
256 rk_aiq_user_api_abayer2dnrV23_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_attrib_v23_t* attr)
257 {
258 return XCAM_RETURN_ERROR_UNKNOWN;
259 }
260
261 XCamReturn
262 rk_aiq_user_api_abayer2dnrV23_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_strength_v23_t *pStrength)
263 {
264 return XCAM_RETURN_ERROR_UNKNOWN;
265 }
266
267 XCamReturn
268 rk_aiq_user_api_abayer2dnrV23_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v23_t *pStrength)
269 {
270 return XCAM_RETURN_ERROR_UNKNOWN;
271 }
272
273 XCamReturn
274 rk_aiq_user_api_abayer2ndrV23_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx,
275 rk_aiq_bayer2dnr_info_v23_t* pInfo)
276 {
277 return XCAM_RETURN_ERROR_UNKNOWN;
278 }
279
280 #endif
281
282
283 RKAIQ_END_DECLARE
284