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_ablc_v32.h"
17
18 #include "RkAiqCamGroupHandleInt.h"
19 #include "algo_handlers/RkAiqAblcV32Handle.h"
20 #include "hwi/isp20/Isp20_module_dbg.h"
21 #include "rk_aiq_user_api2_sysctl.h"
22
23 RKAIQ_BEGIN_DECLARE
24
25 #ifdef RK_SIMULATOR_HW
26 #define CHECK_USER_API_ENABLE
27 #endif
28
29 #if RKAIQ_HAVE_BLC_V32
30
31 XCamReturn
rk_aiq_user_api2_ablcV32_SetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_blc_attrib_V32_t * attr)32 rk_aiq_user_api2_ablcV32_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_blc_attrib_V32_t *attr)
33 {
34 CHECK_USER_API_ENABLE2(sys_ctx);
35 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ABLC);
36 RKAIQ_API_SMART_LOCK(sys_ctx);
37 XCamReturn ret = XCAM_RETURN_NO_ERROR;
38
39 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
40 #ifdef RKAIQ_ENABLE_CAMGROUP
41
42 RkAiqCamGroupAblcV32HandleInt* algo_handle =
43 camgroupAlgoHandle<RkAiqCamGroupAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
44
45 if (algo_handle) {
46 LOGD_ABLC("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
47 return algo_handle->setAttrib(attr);
48 } else {
49 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
50 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
51 if (!camCtx)
52 continue;
53
54 LOGD_ABLC("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
55 RkAiqAblcV32HandleInt* singleCam_algo_handle =
56 algoHandle<RkAiqAblcV32HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ABLC);
57 if (singleCam_algo_handle)
58 ret = singleCam_algo_handle->setAttrib(attr);
59 }
60 }
61 #else
62 return XCAM_RETURN_ERROR_FAILED;
63 #endif
64 } else {
65 RkAiqAblcV32HandleInt* algo_handle =
66 algoHandle<RkAiqAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
67 LOGD_ABLC("%s:%d !!!!!!!!!!!!! single!!!!!!!!\n", __FUNCTION__, __LINE__);
68 if (algo_handle)
69 ret = algo_handle->setAttrib(attr);
70 }
71
72 LOGI_ABLC("attr=%d\n", attr->eMode);
73
74 return ret;
75 }
76
77 XCamReturn
rk_aiq_user_api2_ablcV32_GetAttrib(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_blc_attrib_V32_t * attr)78 rk_aiq_user_api2_ablcV32_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_blc_attrib_V32_t *attr)
79 {
80
81 XCamReturn ret = XCAM_RETURN_NO_ERROR;
82 RKAIQ_API_SMART_LOCK(sys_ctx);
83
84 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
85 #ifdef RKAIQ_ENABLE_CAMGROUP
86
87 RkAiqCamGroupAblcV32HandleInt* algo_handle =
88 camgroupAlgoHandle<RkAiqCamGroupAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
89 if (algo_handle) {
90 LOGD_ABLC("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
91 return algo_handle->getAttrib(attr);
92 } else {
93 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
94 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
95 if (!camCtx)
96 continue;
97 LOGD_ABLC("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
98 RkAiqAblcV32HandleInt* singleCam_algo_handle =
99 algoHandle<RkAiqAblcV32HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ABLC);
100 if (singleCam_algo_handle)
101 ret = singleCam_algo_handle->getAttrib(attr);
102 }
103 }
104 #else
105 return XCAM_RETURN_ERROR_FAILED;
106 #endif
107 } else {
108 RkAiqAblcV32HandleInt* algo_handle =
109 algoHandle<RkAiqAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
110 LOGD_ABLC("%s:%d !!!!!!!!!!!!! single!!!!!!!!\n", __FUNCTION__, __LINE__);
111 if (algo_handle) {
112 return algo_handle->getAttrib(attr);
113 }
114 }
115
116
117 return XCAM_RETURN_NO_ERROR;
118 }
119
120
121 XCamReturn
rk_aiq_user_api2_ablcV32_GetInfo(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_blc_info_v32_t * pInfo)122 rk_aiq_user_api2_ablcV32_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_blc_info_v32_t* pInfo)
123 {
124
125 XCamReturn ret = XCAM_RETURN_NO_ERROR;
126 RKAIQ_API_SMART_LOCK(sys_ctx);
127
128 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
129 #ifdef RKAIQ_ENABLE_CAMGROUP
130
131 RkAiqCamGroupAblcV32HandleInt* algo_handle =
132 camgroupAlgoHandle<RkAiqCamGroupAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
133 if (algo_handle) {
134 LOGD_ABLC("%s:%d !!!!!!!!!!!!!group!!!!!!!!\n", __FUNCTION__, __LINE__);
135 return algo_handle->getInfo(pInfo);
136 } else {
137 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
138 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
139 if (!camCtx)
140 continue;
141 LOGD_ABLC("%s:%d !!!!!!!!!!!!!multi single!!!!!!!!\n", __FUNCTION__, __LINE__);
142 RkAiqAblcV32HandleInt* singleCam_algo_handle =
143 algoHandle<RkAiqAblcV32HandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ABLC);
144 if (singleCam_algo_handle)
145 ret = singleCam_algo_handle->getInfo(pInfo);
146 }
147 }
148 #else
149 return XCAM_RETURN_ERROR_FAILED;
150 #endif
151 } else {
152 RkAiqAblcV32HandleInt* algo_handle =
153 algoHandle<RkAiqAblcV32HandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ABLC);
154 LOGD_ABLC("%s:%d !!!!!!!!!!!!! single!!!!!!!!\n", __FUNCTION__, __LINE__);
155 if (algo_handle) {
156 return algo_handle->getInfo(pInfo);
157 }
158 }
159
160 return XCAM_RETURN_NO_ERROR;
161 }
162 #else
163
164 XCamReturn
165 rk_aiq_user_api2_ablcV32_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_blc_attrib_V32_t *attr)
166 {
167 return XCAM_RETURN_ERROR_UNKNOWN;
168 }
169
170 XCamReturn
171 rk_aiq_user_api2_ablcV32_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_blc_attrib_V32_t *attr)
172 {
173 return XCAM_RETURN_ERROR_UNKNOWN;
174 }
175
176 XCamReturn
177 rk_aiq_user_api2_ablcV32_GetInfo(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_blc_info_v32_t* pInfo)
178 {
179 return XCAM_RETURN_ERROR_UNKNOWN;
180 }
181 #endif
182
183 RKAIQ_END_DECLARE
184