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_adehaze.h"
17
18 #include "algo_handlers/RkAiqAdehazeHandle.h"
19
20 RKAIQ_BEGIN_DECLARE
21
22 #ifdef RK_SIMULATOR_HW
23 #define CHECK_USER_API_ENABLE
24 #endif
25
rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_V2_t attr)26 XCamReturn rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
27 adehaze_sw_V2_t attr) {
28 XCamReturn ret = XCAM_RETURN_NO_ERROR;
29 #if RKAIQ_HAVE_DEHAZE_V11 || RKAIQ_HAVE_DEHAZE_V11_DUO
30
31 adehaze_sw_v11_t attr_v11;
32 memset(&attr_v11, 0x0, sizeof(adehaze_sw_v11_t));
33
34 // set sync
35 attr_v11.sync.sync_mode = attr.sync.sync_mode;
36 attr_v11.sync.done = attr.sync.done;
37 // set mode
38 attr_v11.mode = attr.mode;
39 // set stAuto
40 attr_v11.stAuto.DehazeTuningPara.Enable = attr.stAuto.DehazeTuningPara.Enable;
41 attr_v11.stAuto.DehazeTuningPara.cfg_alpha = attr.stAuto.DehazeTuningPara.cfg_alpha;
42 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.en =
43 attr.stAuto.DehazeTuningPara.dehaze_setting.en;
44 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.air_lc_en =
45 attr.stAuto.DehazeTuningPara.dehaze_setting.air_lc_en;
46 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.stab_fnum =
47 attr.stAuto.DehazeTuningPara.dehaze_setting.stab_fnum;
48 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.sigma =
49 attr.stAuto.DehazeTuningPara.dehaze_setting.sigma;
50 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.wt_sigma =
51 attr.stAuto.DehazeTuningPara.dehaze_setting.wt_sigma;
52 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.air_sigma =
53 attr.stAuto.DehazeTuningPara.dehaze_setting.air_sigma;
54 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.tmax_sigma =
55 attr.stAuto.DehazeTuningPara.dehaze_setting.tmax_sigma;
56 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.pre_wet =
57 attr.stAuto.DehazeTuningPara.dehaze_setting.pre_wet;
58 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.DehazeData =
59 attr.stAuto.DehazeTuningPara.dehaze_setting.DehazeData;
60 attr_v11.stAuto.DehazeTuningPara.enhance_setting.en =
61 attr.stAuto.DehazeTuningPara.enhance_setting.en;
62 attr_v11.stAuto.DehazeTuningPara.enhance_setting.EnhanceData =
63 attr.stAuto.DehazeTuningPara.enhance_setting.EnhanceData;
64 for (int i = 0; i < DHAZ_ENHANCE_CURVE_KNOTS_NUM; i++)
65 attr_v11.stAuto.DehazeTuningPara.enhance_setting.enhance_curve[i] =
66 attr.stAuto.DehazeTuningPara.enhance_setting.enhance_curve[i];
67 attr_v11.stAuto.DehazeTuningPara.hist_setting.en = attr.stAuto.DehazeTuningPara.hist_setting.en;
68 attr_v11.stAuto.DehazeTuningPara.hist_setting.hist_para_en =
69 attr.stAuto.DehazeTuningPara.hist_setting.hist_para_en;
70 attr_v11.stAuto.DehazeTuningPara.hist_setting.HistData =
71 attr.stAuto.DehazeTuningPara.hist_setting.HistData;
72 // set stManual
73 attr_v11.stManual.Enable = attr.stManual.Enable;
74 attr_v11.stManual.cfg_alpha = attr.stManual.cfg_alpha;
75 attr_v11.stManual.dehaze_setting.en = attr.stManual.dehaze_setting.en;
76 attr_v11.stManual.dehaze_setting.air_lc_en = attr.stManual.dehaze_setting.air_lc_en;
77 attr_v11.stManual.dehaze_setting.stab_fnum = attr.stManual.dehaze_setting.stab_fnum;
78 attr_v11.stManual.dehaze_setting.sigma = attr.stManual.dehaze_setting.sigma;
79 attr_v11.stManual.dehaze_setting.wt_sigma = attr.stManual.dehaze_setting.wt_sigma;
80 attr_v11.stManual.dehaze_setting.air_sigma = attr.stManual.dehaze_setting.air_sigma;
81 attr_v11.stManual.dehaze_setting.tmax_sigma = attr.stManual.dehaze_setting.tmax_sigma;
82 attr_v11.stManual.dehaze_setting.pre_wet = attr.stManual.dehaze_setting.pre_wet;
83 attr_v11.stManual.dehaze_setting.DehazeData = attr.stManual.dehaze_setting.DehazeData;
84 attr_v11.stManual.enhance_setting.en = attr.stManual.enhance_setting.en;
85 attr_v11.stManual.enhance_setting.EnhanceData.enhance_value =
86 attr.stManual.enhance_setting.EnhanceData.enhance_value;
87 attr_v11.stManual.enhance_setting.EnhanceData.enhance_chroma =
88 attr.stManual.enhance_setting.EnhanceData.enhance_chroma;
89 for (int i = 0; i < DHAZ_ENHANCE_CURVE_KNOTS_NUM; i++)
90 attr_v11.stManual.enhance_setting.enhance_curve[i] =
91 attr.stManual.enhance_setting.enhance_curve[i];
92 attr_v11.stManual.hist_setting.en = attr.stManual.hist_setting.en;
93 attr_v11.stManual.hist_setting.hist_para_en = attr.stManual.hist_setting.hist_para_en;
94 attr_v11.stManual.hist_setting.HistData = attr.stManual.hist_setting.HistData;
95 // set info
96 attr_v11.Info.updateMDehazeStrth = attr.stDehazeManu.update;
97 attr_v11.Info.MDehazeStrth = attr.stDehazeManu.level;
98 attr_v11.Info.updateMEnhanceStrth = attr.stEnhanceManu.update;
99 attr_v11.Info.MEnhanceStrth = attr.stEnhanceManu.level;
100
101 ret = rk_aiq_user_api2_adehaze_v11_setSwAttrib(sys_ctx, &attr_v11);
102 #endif
103 return ret;
104 }
rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_V2_t * attr)105 XCamReturn rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
106 adehaze_sw_V2_t* attr) {
107 XCamReturn ret = XCAM_RETURN_NO_ERROR;
108 #if RKAIQ_HAVE_DEHAZE_V11 || RKAIQ_HAVE_DEHAZE_V11_DUO
109
110 adehaze_sw_v11_t attr_v11;
111 memset(&attr_v11, 0x0, sizeof(adehaze_sw_v11_t));
112 ret = rk_aiq_user_api2_adehaze_v11_getSwAttrib(sys_ctx, &attr_v11);
113
114 // set sync
115 attr->sync.sync_mode = attr_v11.sync.sync_mode;
116 attr->sync.done = attr_v11.sync.done;
117 // set mode
118 attr->mode = attr_v11.mode;
119 // set stAuto
120 attr->stAuto.DehazeTuningPara.Enable = attr_v11.stAuto.DehazeTuningPara.Enable;
121 attr->stAuto.DehazeTuningPara.cfg_alpha = attr_v11.stAuto.DehazeTuningPara.cfg_alpha;
122 attr->stAuto.DehazeTuningPara.dehaze_setting.en =
123 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.en;
124 attr->stAuto.DehazeTuningPara.dehaze_setting.air_lc_en =
125 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.air_lc_en;
126 attr->stAuto.DehazeTuningPara.dehaze_setting.stab_fnum =
127 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.stab_fnum;
128 attr->stAuto.DehazeTuningPara.dehaze_setting.sigma =
129 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.sigma;
130 attr->stAuto.DehazeTuningPara.dehaze_setting.wt_sigma =
131 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.wt_sigma;
132 attr->stAuto.DehazeTuningPara.dehaze_setting.air_sigma =
133 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.air_sigma;
134 attr->stAuto.DehazeTuningPara.dehaze_setting.tmax_sigma =
135 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.tmax_sigma;
136 attr->stAuto.DehazeTuningPara.dehaze_setting.pre_wet =
137 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.pre_wet;
138 attr->stAuto.DehazeTuningPara.dehaze_setting.DehazeData =
139 attr_v11.stAuto.DehazeTuningPara.dehaze_setting.DehazeData;
140 attr->stAuto.DehazeTuningPara.enhance_setting.en =
141 attr_v11.stAuto.DehazeTuningPara.enhance_setting.en;
142 attr->stAuto.DehazeTuningPara.enhance_setting.EnhanceData =
143 attr_v11.stAuto.DehazeTuningPara.enhance_setting.EnhanceData;
144 for (int i = 0; i < DHAZ_ENHANCE_CURVE_KNOTS_NUM; i++)
145 attr->stAuto.DehazeTuningPara.enhance_setting.enhance_curve[i] =
146 attr_v11.stAuto.DehazeTuningPara.enhance_setting.enhance_curve[i];
147 attr->stAuto.DehazeTuningPara.hist_setting.en =
148 attr_v11.stAuto.DehazeTuningPara.hist_setting.en;
149 attr->stAuto.DehazeTuningPara.hist_setting.hist_para_en =
150 attr_v11.stAuto.DehazeTuningPara.hist_setting.hist_para_en;
151 attr->stAuto.DehazeTuningPara.hist_setting.HistData =
152 attr_v11.stAuto.DehazeTuningPara.hist_setting.HistData;
153 // set stManual
154 attr->stManual.Enable = attr_v11.stManual.Enable;
155 attr->stManual.cfg_alpha = attr_v11.stManual.cfg_alpha;
156 attr->stManual.dehaze_setting.en = attr_v11.stManual.dehaze_setting.en;
157 attr->stManual.dehaze_setting.air_lc_en = attr_v11.stManual.dehaze_setting.air_lc_en;
158 attr->stManual.dehaze_setting.stab_fnum = attr_v11.stManual.dehaze_setting.stab_fnum;
159 attr->stManual.dehaze_setting.sigma = attr_v11.stManual.dehaze_setting.sigma;
160 attr->stManual.dehaze_setting.wt_sigma = attr_v11.stManual.dehaze_setting.wt_sigma;
161 attr->stManual.dehaze_setting.air_sigma = attr_v11.stManual.dehaze_setting.air_sigma;
162 attr->stManual.dehaze_setting.tmax_sigma = attr_v11.stManual.dehaze_setting.tmax_sigma;
163 attr->stManual.dehaze_setting.pre_wet = attr_v11.stManual.dehaze_setting.pre_wet;
164 attr->stManual.dehaze_setting.DehazeData = attr_v11.stManual.dehaze_setting.DehazeData;
165 attr->stManual.enhance_setting.en = attr_v11.stManual.enhance_setting.en;
166 attr->stManual.enhance_setting.EnhanceData.enhance_value =
167 attr_v11.stManual.enhance_setting.EnhanceData.enhance_value;
168 attr->stManual.enhance_setting.EnhanceData.enhance_chroma =
169 attr_v11.stManual.enhance_setting.EnhanceData.enhance_chroma;
170 for (int i = 0; i < DHAZ_ENHANCE_CURVE_KNOTS_NUM; i++)
171 attr->stManual.enhance_setting.enhance_curve[i] =
172 attr_v11.stManual.enhance_setting.enhance_curve[i];
173 attr->stManual.hist_setting.en = attr_v11.stManual.hist_setting.en;
174 attr->stManual.hist_setting.hist_para_en = attr_v11.stManual.hist_setting.hist_para_en;
175 attr->stManual.hist_setting.HistData = attr_v11.stManual.hist_setting.HistData;
176 // set info
177 attr->stDehazeManu.update = attr_v11.Info.updateMDehazeStrth;
178 attr->stDehazeManu.level = attr_v11.Info.MDehazeStrth;
179 attr->stEnhanceManu.update = attr_v11.Info.updateMEnhanceStrth;
180 attr->stEnhanceManu.level = attr_v11.Info.MEnhanceStrth;
181 #endif
182 return ret;
183 }
184
185 #if RKAIQ_HAVE_DEHAZE_V10
rk_aiq_user_api2_adehaze_v10_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v10_t * attr)186 XCamReturn rk_aiq_user_api2_adehaze_v10_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
187 adehaze_sw_v10_t* attr) {
188 CHECK_USER_API_ENABLE2(sys_ctx);
189 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ADHAZ);
190
191 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
192 #ifdef RKAIQ_ENABLE_CAMGROUP
193 RkAiqCamGroupAdehazeHandleInt* algo_handle =
194 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
195
196 if (algo_handle) {
197 return algo_handle->setAttribV10(attr);
198 } else {
199 XCamReturn ret = XCAM_RETURN_NO_ERROR;
200 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
201 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
202 if (!camCtx)
203 continue;
204
205 RkAiqAdhazHandleInt* singleCam_algo_handle =
206 algoHandle<RkAiqAdhazHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
207 if (singleCam_algo_handle) {
208 ret = singleCam_algo_handle->setSwAttribV10(attr);
209 if (ret != XCAM_RETURN_NO_ERROR) LOGE("%s returned: %d", __FUNCTION__, ret);
210 }
211 }
212 return ret;
213 }
214 #else
215 return XCAM_RETURN_ERROR_FAILED;
216 #endif
217 } else {
218 RkAiqAdehazeHandleInt* algo_handle =
219 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
220
221 if (algo_handle) {
222 return algo_handle->setSwAttribV10(attr);
223 }
224 }
225
226 return XCAM_RETURN_NO_ERROR;
227 }
228
rk_aiq_user_api2_adehaze_v10_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v10_t * attr)229 XCamReturn rk_aiq_user_api2_adehaze_v10_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
230 const adehaze_sw_v10_t* attr) {
231 RKAIQ_API_SMART_LOCK(sys_ctx);
232
233 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
234 #ifdef RKAIQ_ENABLE_CAMGROUP
235 RkAiqCamGroupAdehazeHandleInt* algo_handle =
236 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
237
238 if (algo_handle) {
239 return algo_handle->getAttribV10(attr);
240 } else {
241 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t *)sys_ctx;
242 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
243 if (!camCtx)
244 continue;
245
246 RkAiqAdehazeHandleInt* singleCam_algo_handle =
247 algoHandle<RkAiqAdehazeHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
248 if (singleCam_algo_handle) return singleCam_algo_handle->getSwAttribV10(attr);
249 }
250 }
251 #else
252 return XCAM_RETURN_ERROR_FAILED;
253 #endif
254 } else {
255 RkAiqAdehazeHandleInt* algo_handle =
256 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
257
258 if (algo_handle) {
259 return algo_handle->getSwAttribV10(attr);
260 }
261 }
262
263 return XCAM_RETURN_NO_ERROR;
264 }
265 #else
rk_aiq_user_api2_adehaze_v10_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v10_t * attr)266 XCamReturn rk_aiq_user_api2_adehaze_v10_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
267 const adehaze_sw_v10_t* attr) {
268 return XCAM_RETURN_ERROR_UNKNOWN;
269 }
270
rk_aiq_user_api2_adehaze_v10_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v10_t * attr)271 XCamReturn rk_aiq_user_api2_adehaze_v10_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
272 adehaze_sw_v10_t* attr) {
273 return XCAM_RETURN_ERROR_UNKNOWN;
274 }
275 #endif
276 #if RKAIQ_HAVE_DEHAZE_V11 || RKAIQ_HAVE_DEHAZE_V11_DUO
rk_aiq_user_api2_adehaze_v11_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v11_t * attr)277 XCamReturn rk_aiq_user_api2_adehaze_v11_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
278 const adehaze_sw_v11_t* attr) {
279 CHECK_USER_API_ENABLE2(sys_ctx);
280 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ADHAZ);
281 XCamReturn ret = XCAM_RETURN_NO_ERROR;
282
283 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
284 #ifdef RKAIQ_ENABLE_CAMGROUP
285 RkAiqCamGroupAdehazeHandleInt* algo_handle =
286 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
287
288 if (algo_handle) {
289 return algo_handle->setAttribV11(attr);
290 } else {
291 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t*)sys_ctx;
292 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
293 if (!camCtx) continue;
294
295 RkAiqAdehazeHandleInt* singleCam_algo_handle =
296 algoHandle<RkAiqAdehazeHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
297 if (singleCam_algo_handle) ret = singleCam_algo_handle->setSwAttribV11(attr);
298 }
299 }
300 #else
301 return XCAM_RETURN_ERROR_FAILED;
302 #endif
303 } else {
304 RkAiqAdehazeHandleInt* algo_handle =
305 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
306
307 if (algo_handle) {
308 return algo_handle->setSwAttribV11(attr);
309 }
310 }
311
312 return ret;
313 }
314
rk_aiq_user_api2_adehaze_v11_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v11_t * attr)315 XCamReturn rk_aiq_user_api2_adehaze_v11_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
316 adehaze_sw_v11_t* attr) {
317 RKAIQ_API_SMART_LOCK(sys_ctx);
318
319 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
320 #ifdef RKAIQ_ENABLE_CAMGROUP
321 RkAiqCamGroupAdehazeHandleInt* algo_handle =
322 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
323
324 if (algo_handle) {
325 return algo_handle->getAttribV11(attr);
326 } else {
327 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t*)sys_ctx;
328 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
329 if (!camCtx) continue;
330
331 RkAiqAdehazeHandleInt* singleCam_algo_handle =
332 algoHandle<RkAiqAdehazeHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
333 if (singleCam_algo_handle) return singleCam_algo_handle->getSwAttribV11(attr);
334 }
335 }
336 #else
337 return XCAM_RETURN_ERROR_FAILED;
338 #endif
339 } else {
340 RkAiqAdehazeHandleInt* algo_handle =
341 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
342
343 if (algo_handle) {
344 return algo_handle->getSwAttribV11(attr);
345 }
346 }
347
348 return XCAM_RETURN_NO_ERROR;
349 }
350 #else
rk_aiq_user_api2_adehaze_v11_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v11_t * attr)351 XCamReturn rk_aiq_user_api2_adehaze_v11_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
352 const adehaze_sw_v11_t* attr) {
353 return XCAM_RETURN_ERROR_UNKNOWN;
354 }
355
rk_aiq_user_api2_adehaze_v11_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v11_t * attr)356 XCamReturn rk_aiq_user_api2_adehaze_v11_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
357 adehaze_sw_v11_t* attr) {
358 return XCAM_RETURN_ERROR_UNKNOWN;
359 }
360 #endif
361 #if RKAIQ_HAVE_DEHAZE_V12
rk_aiq_user_api2_adehaze_v12_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v12_t * attr)362 XCamReturn rk_aiq_user_api2_adehaze_v12_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
363 const adehaze_sw_v12_t* attr) {
364 CHECK_USER_API_ENABLE2(sys_ctx);
365 CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_ADHAZ);
366 XCamReturn ret = XCAM_RETURN_NO_ERROR;
367
368 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
369 #ifdef RKAIQ_ENABLE_CAMGROUP
370 RkAiqCamGroupAdehazeHandleInt* algo_handle =
371 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
372
373 if (algo_handle) {
374 return algo_handle->setAttribV12(attr);
375 } else {
376 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t*)sys_ctx;
377 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
378 if (!camCtx) continue;
379
380 RkAiqAdehazeHandleInt* singleCam_algo_handle =
381 algoHandle<RkAiqAdehazeHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
382 if (singleCam_algo_handle) ret = singleCam_algo_handle->setSwAttribV12(attr);
383 }
384 }
385 #else
386 return XCAM_RETURN_ERROR_FAILED;
387 #endif
388 } else {
389 RkAiqAdehazeHandleInt* algo_handle =
390 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
391
392 if (algo_handle) {
393 return algo_handle->setSwAttribV12(attr);
394 }
395 }
396
397 return ret;
398 }
399
rk_aiq_user_api2_adehaze_v12_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v12_t * attr)400 XCamReturn rk_aiq_user_api2_adehaze_v12_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
401 adehaze_sw_v12_t* attr) {
402 RKAIQ_API_SMART_LOCK(sys_ctx);
403
404 if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
405 #ifdef RKAIQ_ENABLE_CAMGROUP
406 RkAiqCamGroupAdehazeHandleInt* algo_handle =
407 camgroupAlgoHandle<RkAiqCamGroupAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
408
409 if (algo_handle) {
410 return algo_handle->getAttribV12(attr);
411 } else {
412 const rk_aiq_camgroup_ctx_t* camgroup_ctx = (rk_aiq_camgroup_ctx_t*)sys_ctx;
413 for (auto camCtx : camgroup_ctx->cam_ctxs_array) {
414 if (!camCtx) continue;
415
416 RkAiqAdehazeHandleInt* singleCam_algo_handle =
417 algoHandle<RkAiqAdehazeHandleInt>(camCtx, RK_AIQ_ALGO_TYPE_ADHAZ);
418 if (singleCam_algo_handle) return singleCam_algo_handle->getSwAttribV12(attr);
419 }
420 }
421 #else
422 return XCAM_RETURN_ERROR_FAILED;
423 #endif
424 } else {
425 RkAiqAdehazeHandleInt* algo_handle =
426 algoHandle<RkAiqAdehazeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_ADHAZ);
427
428 if (algo_handle) {
429 return algo_handle->getSwAttribV12(attr);
430 }
431 }
432
433 return XCAM_RETURN_NO_ERROR;
434 }
435 #else
rk_aiq_user_api2_adehaze_v12_setSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,const adehaze_sw_v12_t * attr)436 XCamReturn rk_aiq_user_api2_adehaze_v12_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
437 const adehaze_sw_v12_t* attr) {
438 return XCAM_RETURN_ERROR_UNKNOWN;
439 }
440
rk_aiq_user_api2_adehaze_v12_getSwAttrib(const rk_aiq_sys_ctx_t * sys_ctx,adehaze_sw_v12_t * attr)441 XCamReturn rk_aiq_user_api2_adehaze_v12_getSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
442 adehaze_sw_v12_t* attr) {
443 return XCAM_RETURN_ERROR_UNKNOWN;
444 }
445 #endif
446
447 RKAIQ_END_DECLARE
448