xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI2/rk_aiq_user_api2_abayer2dnr_v23.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_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_api2_abayer2dnrV23_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_bayer2dnr_attrib_v23_t * attr)30 rk_aiq_user_api2_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_api2_abayer2dnrV23_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_attrib_v23_t * attr)74 rk_aiq_user_api2_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_api2_abayer2dnrV23_SetStrength(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_bayer2dnr_strength_v23_t * pStrength)117 rk_aiq_user_api2_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_api2_abayer2dnrV23_GetStrength(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_strength_v23_t * pStrength)163 rk_aiq_user_api2_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_api2_abayer2dnrV23_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_bayer2dnr_info_v23_t * pInfo)206 XCamReturn rk_aiq_user_api2_abayer2dnrV23_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 #else
246 
247 XCamReturn
248 rk_aiq_user_api2_abayer2dnrV23_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_attrib_v23_t* attr)
249 {
250     return XCAM_RETURN_ERROR_UNKNOWN;
251 }
252 
253 XCamReturn
254 rk_aiq_user_api2_abayer2dnrV23_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_attrib_v23_t* attr)
255 {
256     return XCAM_RETURN_ERROR_UNKNOWN;
257 }
258 
259 XCamReturn
260 rk_aiq_user_api2_abayer2dnrV23_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_bayer2dnr_strength_v23_t *pStrength)
261 {
262     return XCAM_RETURN_ERROR_UNKNOWN;
263 }
264 
265 XCamReturn
266 rk_aiq_user_api2_abayer2dnrV23_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_bayer2dnr_strength_v23_t *pStrength)
267 {
268     return XCAM_RETURN_ERROR_UNKNOWN;
269 }
270 
271 XCamReturn
272 rk_aiq_user_api2_abayer2dnrV23_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx,
273                                        rk_aiq_bayer2dnr_info_v23_t* pInfo)
274 {
275     return XCAM_RETURN_ERROR_UNKNOWN;
276 }
277 
278 
279 #endif
280 
281 
282 RKAIQ_END_DECLARE
283