xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI2/rk_aiq_user_api2_abayer2dnr_v2.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_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