xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/uAPI2/rk_aiq_user_api2_sysctl.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *  Copyright (c) 2019 Rockchip Corporation
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  */
17 
18 #include "rk_aiq_user_api2_sysctl.h"
19 #include "rk_aiq_user_api_sysctl.h"
20 #include "rk_aiq_api_private.h"
21 #include "RkAiqManager.h"
22 #include "socket_server.h"
23 #include "RkAiqCalibDbV2.h"
24 #include "scene/scene_manager.h"
25 #include "uAPI/rk_aiq_user_api_sysctl.cpp"
26 
27 XCamReturn
rk_aiq_uapi2_sysctl_preInit(const char * sns_ent_name,rk_aiq_working_mode_t mode,const char * force_iq_file)28 rk_aiq_uapi2_sysctl_preInit(const char* sns_ent_name,
29                            rk_aiq_working_mode_t mode,
30                            const char* force_iq_file)
31 {
32     return rk_aiq_uapi_sysctl_preInit(sns_ent_name, mode, force_iq_file);
33 }
34 
35 XCamReturn
rk_aiq_uapi2_sysctl_regHwEvtCb(const char * sns_ent_name,rk_aiq_hwevt_cb hwevt_cb,void * cb_ctx)36 rk_aiq_uapi2_sysctl_regHwEvtCb(const char* sns_ent_name,
37                                rk_aiq_hwevt_cb hwevt_cb,
38                                void* cb_ctx)
39 {
40     g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].hwevt_cb = hwevt_cb;
41     g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].hwevt_cb_ctx = cb_ctx;
42 
43     return XCAM_RETURN_NO_ERROR;
44 }
45 
46 XCamReturn
rk_aiq_uapi2_sysctl_preInit_scene(const char * sns_ent_name,const char * main_scene,const char * sub_scene)47 rk_aiq_uapi2_sysctl_preInit_scene(const char* sns_ent_name, const char *main_scene,
48                               const char *sub_scene)
49 {
50     return rk_aiq_uapi_sysctl_preInit_scene(sns_ent_name, main_scene, sub_scene);
51 }
52 
53 XCamReturn
rk_aiq_uapi2_sysctl_preInit_tb_info(const char * sns_ent_name,const rk_aiq_tb_info_t * info)54 rk_aiq_uapi2_sysctl_preInit_tb_info(const char* sns_ent_name,
55                            const rk_aiq_tb_info_t* info)
56 {
57     return rk_aiq_uapi_sysctl_preInit_tb_info(sns_ent_name, info);
58 }
59 
60 XCamReturn
rk_aiq_uapi2_sysctl_preInit_iq_addr(const char * sns_ent_name,void * addr,size_t len)61 rk_aiq_uapi2_sysctl_preInit_iq_addr(const char* sns_ent_name, void *addr, size_t len)
62 {
63     g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].iq_buffer.addr = addr;
64     g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].iq_buffer.len = len;
65 
66     return XCAM_RETURN_NO_ERROR;
67 }
68 
69 XCamReturn
rk_aiq_uapi2_sysctl_preInit_calibproj(const char * sns_ent_name,void * addr)70 rk_aiq_uapi2_sysctl_preInit_calibproj(const char* sns_ent_name, void *addr)
71 {
72     g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].calib_proj = addr;
73 
74     return XCAM_RETURN_NO_ERROR;
75 }
76 
rk_aiq_uapi2_sysctl_preInit_devBufCnt(const char * sns_ent_name,const char * dev_ent,int buf_cnt)77 XCamReturn rk_aiq_uapi2_sysctl_preInit_devBufCnt(const char* sns_ent_name, const char* dev_ent,
78                                                  int buf_cnt) {
79 
80     return rk_aiq_uapi_sysctl_preInit_devBufCnt(sns_ent_name, dev_ent, buf_cnt);
81 }
82 
83 rk_aiq_sys_ctx_t*
rk_aiq_uapi2_sysctl_init(const char * sns_ent_name,const char * config_file_dir,rk_aiq_error_cb err_cb,rk_aiq_metas_cb metas_cb)84 rk_aiq_uapi2_sysctl_init(const char* sns_ent_name,
85                         const char* config_file_dir,
86                         rk_aiq_error_cb err_cb,
87                         rk_aiq_metas_cb metas_cb)
88 {
89     return rk_aiq_uapi_sysctl_init(sns_ent_name, config_file_dir, err_cb, metas_cb);
90 }
91 
rk_aiq_uapi2_sysctl_deinit(rk_aiq_sys_ctx_t * ctx)92 void rk_aiq_uapi2_sysctl_deinit(rk_aiq_sys_ctx_t* ctx)
93 {
94     rk_aiq_uapi_sysctl_deinit(ctx);
95 }
96 
97 XCamReturn
rk_aiq_uapi2_sysctl_prepare(const rk_aiq_sys_ctx_t * ctx,uint32_t width,uint32_t height,rk_aiq_working_mode_t mode)98 rk_aiq_uapi2_sysctl_prepare(const rk_aiq_sys_ctx_t* ctx,
99                            uint32_t  width, uint32_t  height,
100                            rk_aiq_working_mode_t mode)
101 {
102     return rk_aiq_uapi_sysctl_prepare(ctx, width, height, mode);
103 }
104 
105 XCamReturn
rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t * ctx)106 rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx)
107 {
108     return rk_aiq_uapi_sysctl_start(ctx);
109 }
110 
111 XCamReturn
rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t * ctx,bool keep_ext_hw_st)112 rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx, bool keep_ext_hw_st)
113 {
114     return rk_aiq_uapi_sysctl_stop(ctx, keep_ext_hw_st);
115 }
116 
rk_aiq_uapi2_get_version_info(rk_aiq_ver_info_t * vers)117 void rk_aiq_uapi2_get_version_info(rk_aiq_ver_info_t* vers)
118 {
119     rk_aiq_uapi_get_version_info(vers);
120 }
121 
122 XCamReturn
rk_aiq_uapi2_sysctl_updateIq(rk_aiq_sys_ctx_t * sys_ctx,char * iqfile)123 rk_aiq_uapi2_sysctl_updateIq(rk_aiq_sys_ctx_t* sys_ctx, char* iqfile)
124 {
125     return rk_aiq_uapi_sysctl_updateIq(sys_ctx, iqfile);
126 }
127 
128 int32_t
rk_aiq_uapi2_sysctl_getModuleCtl(const rk_aiq_sys_ctx_t * ctx,rk_aiq_module_id_t mId,bool * mod_en)129 rk_aiq_uapi2_sysctl_getModuleCtl(const rk_aiq_sys_ctx_t* ctx,
130                                 rk_aiq_module_id_t mId, bool *mod_en)
131 {
132     return rk_aiq_uapi_sysctl_getModuleCtl(ctx, mId, mod_en);
133 }
134 
135 XCamReturn
rk_aiq_uapi2_sysctl_setModuleCtl(const rk_aiq_sys_ctx_t * ctx,rk_aiq_module_id_t mId,bool mod_en)136 rk_aiq_uapi2_sysctl_setModuleCtl(const rk_aiq_sys_ctx_t* ctx, rk_aiq_module_id_t mId, bool mod_en)
137 {
138     return rk_aiq_uapi_sysctl_setModuleCtl(ctx, mId, mod_en);
139 }
140 
141 XCamReturn
rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t * ctx,const int algo_type,const int lib_id,bool enable)142 rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t* ctx,
143                                const int algo_type,
144                                const int lib_id,
145                                bool enable)
146 {
147     return rk_aiq_uapi_sysctl_enableAxlib(ctx, algo_type, lib_id, enable);
148 }
149 
150 bool
rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t * ctx,const int algo_type,const int lib_id)151 rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t* ctx,
152                                   const int algo_type,
153                                   const int lib_id)
154 {
155     return rk_aiq_uapi_sysctl_getAxlibStatus(ctx, algo_type, lib_id);
156 }
157 
158 const RkAiqAlgoContext*
rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t * ctx,const int algo_type)159 rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t* ctx, const int algo_type)
160 {
161     return rk_aiq_uapi_sysctl_getEnabledAxlibCtx(ctx, algo_type);
162 }
163 
164 XCamReturn
rk_aiq_uapi2_sysctl_getStaticMetas(const char * sns_ent_name,rk_aiq_static_info_t * static_info)165 rk_aiq_uapi2_sysctl_getStaticMetas(const char* sns_ent_name, rk_aiq_static_info_t* static_info)
166 {
167     return rk_aiq_uapi_sysctl_getStaticMetas(sns_ent_name, static_info);
168 }
169 
170 
171 XCamReturn
rk_aiq_uapi2_sysctl_enumStaticMetasByPhyId(int index,rk_aiq_static_info_t * static_info)172 rk_aiq_uapi2_sysctl_enumStaticMetasByPhyId(int index, rk_aiq_static_info_t* static_info)
173 {
174     return rk_aiq_uapi_sysctl_enumStaticMetasByPhyId(index, static_info);
175 }
176 
177 XCamReturn
rk_aiq_uapi2_sysctl_enumStaticMetas(int index,rk_aiq_static_info_t * static_info)178 rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t* static_info)
179 {
180     return rk_aiq_uapi_sysctl_enumStaticMetas(index, static_info);
181 }
182 
183 const char*
rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char * vd)184 rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd)
185 {
186     return rk_aiq_uapi_sysctl_getBindedSnsEntNmByVd(vd);
187 }
188 
189 XCamReturn
rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_rect_t * rect)190 rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t *rect)
191 {
192     return rk_aiq_uapi_sysctl_getCrop(sys_ctx, rect);
193 }
194 
195 #if 0
196 XCamReturn
197 rk_aiq_uapi2_sysctl_setCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t rect)
198 {
199     return rk_aiq_uapi_sysctl_setCrop(sys_ctx, rect);
200 }
201 #endif
202 
203 XCamReturn
rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t * ctx,rk_aiq_cpsl_cfg_t * cfg)204 rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_cfg_t* cfg)
205 {
206     return rk_aiq_uapi_sysctl_setCpsLtCfg(ctx, cfg);
207 }
208 
209 XCamReturn
rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t * ctx,rk_aiq_cpsl_info_t * info)210 rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_info_t* info)
211 {
212     return rk_aiq_uapi_sysctl_getCpsLtInfo(ctx, info);
213 }
214 
215 XCamReturn
rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t * ctx,rk_aiq_cpsl_cap_t * cap)216 rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_cap_t* cap)
217 {
218     return rk_aiq_uapi_sysctl_queryCpsLtCap(ctx, cap);
219 }
220 
221 XCamReturn
rk_aiq_uapi2_sysctl_setSharpFbcRotation(const rk_aiq_sys_ctx_t * ctx,rk_aiq_rotation_t rot)222 rk_aiq_uapi2_sysctl_setSharpFbcRotation(const rk_aiq_sys_ctx_t* ctx, rk_aiq_rotation_t rot)
223 {
224     return rk_aiq_uapi_sysctl_setSharpFbcRotation(ctx, rot);
225 }
226 
227 void
rk_aiq_uapi2_sysctl_setMulCamConc(const rk_aiq_sys_ctx_t * ctx,bool cc)228 rk_aiq_uapi2_sysctl_setMulCamConc(const rk_aiq_sys_ctx_t* ctx, bool cc)
229 {
230     rk_aiq_uapi_sysctl_setMulCamConc(ctx, cc);
231 }
232 
233 XCamReturn
rk_aiq_uapi2_sysctl_regMemsSensorIntf(const rk_aiq_sys_ctx_t * sys_ctx,const rk_aiq_mems_sensor_intf_t * intf)234 rk_aiq_uapi2_sysctl_regMemsSensorIntf(const rk_aiq_sys_ctx_t* sys_ctx,
235                                      const rk_aiq_mems_sensor_intf_t* intf)
236 {
237     return rk_aiq_uapi_sysctl_regMemsSensorIntf(sys_ctx, intf);
238 }
239 
240 int
rk_aiq_uapi2_sysctl_switch_scene(const rk_aiq_sys_ctx_t * sys_ctx,const char * main_scene,const char * sub_scene)241 rk_aiq_uapi2_sysctl_switch_scene(const rk_aiq_sys_ctx_t* sys_ctx,
242                                 const char* main_scene, const char* sub_scene)
243 {
244     return rk_aiq_uapi_sysctl_switch_scene(sys_ctx, main_scene, sub_scene);
245 }
246 
247 XCamReturn
rk_aiq_uapi2_sysctl_tuning(const rk_aiq_sys_ctx_t * sys_ctx,char * param)248 rk_aiq_uapi2_sysctl_tuning(const rk_aiq_sys_ctx_t* sys_ctx, char* param)
249 {
250     return rk_aiq_uapi_sysctl_tuning(sys_ctx, param);
251 }
252 
rk_aiq_uapi2_sysctl_readiq(const rk_aiq_sys_ctx_t * sys_ctx,char * param)253 char* rk_aiq_uapi2_sysctl_readiq(const rk_aiq_sys_ctx_t* sys_ctx, char* param)
254 {
255     return rk_aiq_uapi_sysctl_readiq(sys_ctx, param);
256 }
257 
258 XCamReturn
rk_aiq_uapi2_sysctl_prepareRkRaw(const rk_aiq_sys_ctx_t * ctx,rk_aiq_raw_prop_t prop)259 rk_aiq_uapi2_sysctl_prepareRkRaw(const rk_aiq_sys_ctx_t* ctx, rk_aiq_raw_prop_t prop)
260 {
261     return rk_aiq_uapi_sysctl_prepareRkRaw(ctx, prop);
262 }
263 
264 XCamReturn
rk_aiq_uapi2_sysctl_enqueueRkRawBuf(const rk_aiq_sys_ctx_t * ctx,void * rawdata,bool sync)265 rk_aiq_uapi2_sysctl_enqueueRkRawBuf(const rk_aiq_sys_ctx_t* ctx, void *rawdata, bool sync)
266 {
267     return rk_aiq_uapi_sysctl_enqueueRkRawBuf(ctx, rawdata, sync);
268 }
269 
270 XCamReturn
rk_aiq_uapi2_sysctl_enqueueRkRawFile(const rk_aiq_sys_ctx_t * ctx,const char * path)271 rk_aiq_uapi2_sysctl_enqueueRkRawFile(const rk_aiq_sys_ctx_t* ctx, const char *path)
272 {
273     return rk_aiq_uapi_sysctl_enqueueRkRawFile(ctx, path);
274 }
275 
276 XCamReturn
rk_aiq_uapi2_sysctl_registRkRawCb(const rk_aiq_sys_ctx_t * ctx,void (* callback)(void *))277 rk_aiq_uapi2_sysctl_registRkRawCb(const rk_aiq_sys_ctx_t* ctx, void (*callback)(void*))
278 {
279     return rk_aiq_uapi_sysctl_registRkRawCb(ctx, callback);
280 }
281 
282 XCamReturn
rk_aiq_uapi2_sysctl_getCamInfos(const rk_aiq_sys_ctx_t * sys_ctx,rk_aiq_ctx_camInfo_t * camInfo)283 rk_aiq_uapi2_sysctl_getCamInfos(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_ctx_camInfo_t* camInfo)
284 {
285     ENTER_XCORE_FUNCTION();
286     XCAM_ASSERT(sys_ctx != nullptr);
287     RKAIQ_API_SMART_LOCK(sys_ctx);
288 
289     XCamReturn ret = XCAM_RETURN_NO_ERROR;
290 
291     if (!camInfo) {
292         LOGE("null params !");
293         return XCAM_RETURN_ERROR_PARAM;
294     }
295 
296     camInfo->sns_ent_nm = sys_ctx->_sensor_entity_name;
297     camInfo->sns_camPhyId = sys_ctx->_camPhyId;
298 
299     EXIT_XCORE_FUNCTION();
300 
301     return ret;
302 }
303 
304 XCamReturn
rk_aiq_uapi2_sysctl_get3AStats(const rk_aiq_sys_ctx_t * ctx,rk_aiq_isp_stats_t * stats)305 rk_aiq_uapi2_sysctl_get3AStats(const rk_aiq_sys_ctx_t* ctx,
306                               rk_aiq_isp_stats_t *stats)
307 {
308     return rk_aiq_uapi_sysctl_get3AStats(ctx, stats);
309 }
310 
311 XCamReturn
rk_aiq_uapi2_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t * ctx,rk_aiq_isp_stats_t ** stats,int timeout_ms)312 rk_aiq_uapi2_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx,
313                               rk_aiq_isp_stats_t **stats, int timeout_ms)
314 {
315     return rk_aiq_uapi_sysctl_get3AStatsBlk(ctx, stats, timeout_ms);
316 }
317 
318 void
rk_aiq_uapi2_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t * ctx,rk_aiq_isp_stats_t * stats)319 rk_aiq_uapi2_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx,
320                                      rk_aiq_isp_stats_t *stats)
321 {
322     return rk_aiq_uapi_sysctl_release3AStatsRef(ctx, stats);
323 }
324 
325 XCamReturn
rk_aiq_uapi2_sysctl_getWorkingMode(const rk_aiq_sys_ctx_t * ctx,rk_aiq_working_mode_t * mode)326 rk_aiq_uapi2_sysctl_getWorkingMode(const rk_aiq_sys_ctx_t* ctx, rk_aiq_working_mode_t *mode)
327 {
328     ENTER_XCORE_FUNCTION();
329     if (!mode || !ctx)
330         return XCAM_RETURN_ERROR_PARAM;
331 
332     RKAIQ_API_SMART_LOCK(ctx);
333     *mode = ctx->_rkAiqManager->getWorkingMode();
334     if (*mode < 0)
335         return XCAM_RETURN_ERROR_OUTOFRANGE;
336     EXIT_XCORE_FUNCTION();
337 
338     return XCAM_RETURN_NO_ERROR;
339 }
340 
rk_aiq_uapi2_sysctl_tuning_enable(rk_aiq_sys_ctx_t * sys_ctx,bool enable)341 int rk_aiq_uapi2_sysctl_tuning_enable(rk_aiq_sys_ctx_t* sys_ctx, bool enable)
342 {
343     return rk_aiq_uapi_sysctl_tuning_enable(sys_ctx, enable);
344 }
345 
346 XCamReturn
rk_aiq_uapi2_sysctl_resetCam(const rk_aiq_sys_ctx_t * sys_ctx,int camId)347 rk_aiq_uapi2_sysctl_resetCam(const rk_aiq_sys_ctx_t* sys_ctx, int camId)
348 {
349     RKAIQ_API_SMART_LOCK(sys_ctx);
350     XCamReturn ret = XCAM_RETURN_NO_ERROR;
351 
352     if (!sys_ctx) {
353         LOGE("%s: sys_ctx is invalied\n", __func__);
354         return XCAM_RETURN_ERROR_PARAM;
355     }
356 
357     if (sys_ctx->cam_type == RK_AIQ_CAM_TYPE_GROUP) {
358         LOGE("%s: not support for camgroup\n", __func__);
359         return XCAM_RETURN_ERROR_FAILED;
360     }
361 
362     ret = sys_ctx->_camHw->reset_hardware();
363     if (ret) {
364         LOGE("failed to reset hardware\n");
365     }
366 
367     return ret;
368 }
369 
rk_aiq_uapi2_sysctl_rawReproc_genIspParams(rk_aiq_sys_ctx_t * sys_ctx,uint32_t sequence,rk_aiq_frame_info_t * next_frm_info,int mode)370 void rk_aiq_uapi2_sysctl_rawReproc_genIspParams (rk_aiq_sys_ctx_t* sys_ctx,
371                                                  uint32_t sequence,
372                                                  rk_aiq_frame_info_t *next_frm_info,
373                                                  int mode)
374 {
375     sys_ctx->_camHw->rawReproc_genIspParams(sequence, next_frm_info, mode);
376 }
377 
378 const char*
rk_aiq_uapi2_sysctl_rawReproc_preInit(const char * isp_driver,const char * offline_sns_name,rk_aiq_frame_info_t two_frm_exp_info[2])379 rk_aiq_uapi2_sysctl_rawReproc_preInit(const char* isp_driver,
380                                            const char* offline_sns_name,
381                                            rk_aiq_frame_info_t two_frm_exp_info[2])
382 {
383     if (!g_rk_aiq_init_lib) {
384         rk_aiq_init_lib();
385         g_rk_aiq_init_lib = true;
386     }
387     const char* sns_name = NULL;
388     sns_name = CamHwIsp20::rawReproc_preInit(isp_driver, offline_sns_name);
389     if (sns_name) {
390         rk_aiq_frame_info_t exp_finfo = two_frm_exp_info[0];
391         LOGD("exp_finfo %d, %d, %f, %f\n",
392                exp_finfo.normal_gain_reg,
393                exp_finfo.normal_exp_reg,
394                exp_finfo.normal_exp,
395                exp_finfo.normal_gain);
396         std::string sns_ent_name = std::string(sns_name);
397         rk_aiq_sys_preinit_cfg_t cfg;
398         memcpy(cfg.frame_exp_info, two_frm_exp_info, sizeof(cfg.frame_exp_info));
399         g_rk_aiq_offline_raw_exp_map[sns_name] = cfg;
400     }
401 
402     return sns_name;
403 }
404 
rk_aiq_uapi2_sysctl_setIspParamsDelayCnts(const rk_aiq_sys_ctx_t * sys_ctx,int8_t delay_cnts)405 void rk_aiq_uapi2_sysctl_setIspParamsDelayCnts(const rk_aiq_sys_ctx_t* sys_ctx, int8_t delay_cnts) {
406 #ifdef RKAIQ_ENABLE_CAMGROUP
407     // TODO
408 #endif
409     sys_ctx->_analyzer->setDelayCnts(delay_cnts);
410 }
411 
rk_aiq_uapi2_sysctl_setUserSensorFormat(rk_aiq_sys_ctx_t * sys_ctx,uint16_t width,uint16_t height,uint16_t code)412 void rk_aiq_uapi2_sysctl_setUserSensorFormat(rk_aiq_sys_ctx_t* sys_ctx, uint16_t width, uint16_t height,
413                                                  uint16_t code)
414 {
415     sys_ctx->_camHw->setUserSensorFormat(width, height, code);
416 }