xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/include/algos/rk_aiq_algo_types.h (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 #ifndef _RK_AIQ_ALGO_TYPES_H_
17 #define _RK_AIQ_ALGO_TYPES_H_
18 
19 #include "a3dlut/rk_aiq_types_a3dlut_algo_int.h"
20 #include "abayer2dnr2/rk_aiq_types_abayer2dnr_algo_int_v2.h"
21 #include "abayer2dnrV23/rk_aiq_types_abayer2dnr_algo_int_v23.h"
22 #include "abayertnr2/rk_aiq_types_abayertnr_algo_int_v2.h"
23 #include "abayertnrV23/rk_aiq_types_abayertnr_algo_int_v23.h"
24 #include "ablc/rk_aiq_types_ablc_algo_int.h"
25 #include "ablcV32/rk_aiq_types_ablc_algo_int_v32.h"
26 #include "accm/rk_aiq_types_accm_algo_int.h"
27 #include "acnr/rk_aiq_types_acnr_algo_int_v1.h"
28 #include "acnr2/rk_aiq_types_acnr_algo_int_v2.h"
29 #include "acnrV30/rk_aiq_types_acnr_algo_int_v30.h"
30 #include "acp/rk_aiq_types_acp_algo_int.h"
31 #include "adebayer/rk_aiq_types_adebayer_algo_int.h"
32 #include "adegamma/rk_aiq_types_adegamma_algo_int.h"
33 #include "adehaze/rk_aiq_types_adehaze_algo_int.h"
34 #include "adpcc/rk_aiq_types_adpcc_algo_int.h"
35 #include "adrc/rk_aiq_types_adrc_algo_int.h"
36 #include "ae/rk_aiq_types_ae_algo_int.h"
37 #include "af/rk_aiq_types_af_algo_int.h"
38 #include "afec/rk_aiq_types_afec_algo_int.h"
39 #include "again/rk_aiq_types_again_algo_int.h"
40 #include "again2/rk_aiq_types_again_algo_int_v2.h"
41 #include "agamma/rk_aiq_types_agamma_algo_int.h"
42 #include "aie/rk_aiq_types_aie_algo_int.h"
43 #include "aldch/rk_aiq_types_aldch_algo_int.h"
44 #include "alsc/rk_aiq_types_alsc_algo_int.h"
45 #include "amd/rk_aiq_types_algo_amd_int.h"
46 #include "amerge/rk_aiq_types_amerge_algo_int.h"
47 #include "amfnr/rk_aiq_types_amfnr_algo_int_v1.h"
48 #include "anr/rk_aiq_types_anr_algo_int.h"
49 #include "aorb/rk_aiq_types_orb_algo.h"
50 #include "arawnr/rk_aiq_types_abayernr_algo_int_v1.h"
51 #include "arawnr2/rk_aiq_types_abayernr_algo_int_v2.h"
52 #include "asharp/rk_aiq_types_asharp_algo_int.h"
53 #include "asharp3/rk_aiq_types_asharp_algo_int_v3.h"
54 #include "asharp4/rk_aiq_types_asharp_algo_int_v4.h"
55 #include "asharpV33/rk_aiq_types_asharp_algo_int_v33.h"
56 #include "atmo/rk_aiq_types_atmo_algo_int.h"
57 #include "auvnr/rk_aiq_types_auvnr_algo_int_v1.h"
58 #include "awb/rk_aiq_types_awb_algo_int.h"
59 #include "aynr/rk_aiq_types_aynr_algo_int_v1.h"
60 #include "aynr2/rk_aiq_types_aynr_algo_int_v2.h"
61 #include "aynr3/rk_aiq_types_aynr_algo_int_v3.h"
62 #include "aynrV22/rk_aiq_types_aynr_algo_int_v22.h"
63 #include "afd/rk_aiq_types_afd_algo_int.h"
64 #include "eis_head.h"
65 #include "orb_head.h"
66 #include "rk_aiq_algo_des.h"
67 #include "rk_aiq_types.h"
68 
69 // forward declare
70 typedef struct isp_drv_share_mem_ops_s isp_drv_share_mem_ops_t;
71 
72 typedef struct _RkAiqResComb {
73     XCamVideoBuffer* ae_pre_res;
74     XCamVideoBuffer* ae_proc_res;
75     XCamVideoBuffer* awb_proc_res;
76     AblcProc_t*       ablc_proc_res;
77     AblcProc_V32_t*   ablcV32_proc_res;
78     bool             bayernr3d_en;
79     Aynr_ProcResult_V3_t* aynrV3_proc_res;
80     Aynr_ProcResult_V22_t* aynrV22_proc_res;
81 } RkAiqResComb;
82 
83 // Ae
84 typedef struct _RkAiqAlgoConfigAe {
85     RkAiqAlgoCom com;
86     /*params related to Hardware setting*/
87     RkAiqAecHwConfig_t HwCtrl;
88     /*params related to driver setting*/
89     int                      RawWidth;
90     int                      RawHeight;
91     rk_aiq_sensor_nr_switch_t nr_switch;
92     float        LinePeriodsPerField;
93     float        PixelClockFreqMHZ;
94     float        PixelPeriodsPerLine;
95 } RkAiqAlgoConfigAe;
96 
97 typedef struct _RkAiqAlgoPreAe {
98     RkAiqAlgoCom com;
99     RKAiqAecStats_t* aecStatsBuf;
100     bool af_prior;
101 } RkAiqAlgoPreAe;
102 
103 typedef struct _RkAiqAlgoPreResAe {
104     RkAiqAlgoResCom res_com;
105     AecPreResult_t  ae_pre_res_rk;
106 } RkAiqAlgoPreResAe;
107 
108 typedef struct _RkAiqAlgoProcAe {
109     RkAiqAlgoCom com;
110     RKAiqAecStats_t* aecStatsBuf;
111 } RkAiqAlgoProcAe;
112 
113 typedef struct _RkAiqAlgoProcResAe {
114     RkAiqAlgoResCom res_com;
115     rk_aiq_exposure_params_t* new_ae_exp;
116     rk_aiq_isp_aec_meas_t* ae_meas;
117     rk_aiq_isp_hist_meas_t* hist_meas;
118     RKAiqExpI2cParam_t* exp_i2c_params;
119     AecProcResult_t*   ae_proc_res_rk;
120 } RkAiqAlgoProcResAe;
121 
122 typedef struct _RkAiqAlgoPostAe {
123     RkAiqAlgoCom com;
124 } RkAiqAlgoPostAe;
125 
126 typedef struct _RkAiqAlgoPostResAe {
127     RkAiqAlgoResCom res_com;
128     AecPostResult_t ae_post_res_rk;
129 } RkAiqAlgoPostResAe;
130 
131 typedef struct RkAiqAlgoProcResAeShared_s {
132     bool IsConverged;
133     bool IsEnvChanged;
134     bool IsAutoAfd;
135     bool LongFrmMode;
136 } RkAiqAlgoProcResAeShared_t;
137 
138 // afd
139 typedef struct _RkAiqAlgoConfigAfd {
140     RkAiqAlgoCom com;
141     int          RawWidth;
142     int          RawHeight;
143     /*params related to driver setting*/
144     float        LinePeriodsPerField;
145     float        PixelClockFreqMHZ;
146     float        PixelPeriodsPerLine;
147 } RkAiqAlgoConfigAfd;
148 
149 typedef struct _RkAiqAlgoPreAfd {
150     RkAiqAlgoCom com;
151     int          thumbW;
152     int          thumbH;
153     XCamVideoBuffer* thumbStatsS;
154     XCamVideoBuffer* thumbStatsL;
155     RkAiqAlgoProcResAeShared_t* aeProcRes;
156 } RkAiqAlgoPreAfd;
157 
158 typedef struct _RkAiqAlgoPreResAfd {
159     RkAiqAlgoResCom res_com;
160 } RkAiqAlgoPreResAfd;
161 
162 typedef struct _RkAiqAlgoProcAfd {
163     RkAiqAlgoCom com;
164     int hdr_mode;
165 } RkAiqAlgoProcAfd;
166 
167 typedef struct _RkAiqAlgoProcResAfd {
168     RkAiqAlgoResCom res_com;
169     AfdProcResult_t afdRes;
170 } RkAiqAlgoProcResAfd;
171 
172 //Awb
173 typedef struct _RkAiqAlgoConfigAwb {
174     RkAiqAlgoCom com;
175     int rawBit;
176     isp_drv_share_mem_ops_t *mem_ops_ptr;
177 } RkAiqAlgoConfigAwb;
178 
179 typedef struct _RkAiqAlgoProcAwb {
180     RkAiqAlgoCom com;
181     union {
182         rk_aiq_awb_stat_res_v200_t* awb_statsBuf;
183         rk_aiq_awb_stat_res_v201_t* awb_statsBuf_v201;
184         rk_aiq_isp_awb_stats_v3x_t* awb_statsBuf_v3x;
185         rk_aiq_isp_awb_stats_v32_t* awb_statsBuf_v32;
186     };
187     rk_aiq_isp_blc_t* blc_cfg_effect;
188     AblcProc_t* ablcProcRes;
189     AblcProc_V32_t* ablcProcResV32;
190     bool ablcProcResVaid;
191     struct rkmodule_awb_inf *awb_otp;
192     RKAiqAecStats_t* aecStatsBuf;
193 } RkAiqAlgoProcAwb;
194 
195 typedef struct RkAiqAlgoProcResAwbShared_s {
196     rk_aiq_wb_gain_t awb_gain_algo;
197     float awb_smooth_factor;
198     float varianceLuma;
199     bool awbConverged;
200 } RkAiqAlgoProcResAwbShared_t;
201 
202 typedef struct _RkAiqAlgoProcResAwb {
203     RkAiqAlgoResCom res_com;
204     bool awb_cfg_update;
205     union {
206         rk_aiq_awb_stat_cfg_v200_t* awb_hw0_para;
207         rk_aiq_awb_stat_cfg_v201_t* awb_hw1_para;
208         rk_aiq_awb_stat_cfg_v32_t* awb_hw32_para;
209     };
210     bool awb_gain_update;
211 #if RKAIQ_HAVE_AWB_V32
212     rk_aiq_wb_gain_v32_t* awb_gain_algo;
213 #else
214     rk_aiq_wb_gain_t* awb_gain_algo;
215 #endif
216     color_tempture_info_t cctGloabl;
217     color_tempture_info_t cctFirst[4];
218     float awb_smooth_factor;
219     float varianceLuma;
220     bool awbConverged;
221 
222     uint32_t id;
223 } RkAiqAlgoProcResAwb;
224 
225 // af
226 typedef struct _RkAiqAlgoConfigAf {
227     RkAiqAlgoCom com;
228     unsigned char af_mode;
229     unsigned short win_h_offs;
230     unsigned short win_v_offs;
231     unsigned short win_h_size;
232     unsigned short win_v_size;
233     rk_aiq_lens_descriptor lens_des;
234     struct rkmodule_af_inf *otp_af;
235     struct rkmodule_pdaf_inf *otp_pdaf;
236 } RkAiqAlgoConfigAf;
237 
238 typedef struct _RkAiqAlgoPreAf {
239     RkAiqAlgoCom com;
240     XCamVideoBuffer* xcam_af_stats;
241     RKAiqAecStats_t* xcam_aec_stats;
242 } RkAiqAlgoPreAf;
243 
244 typedef struct _RkAiqAlgoPreResAf {
245     RkAiqAlgoResCom res_com;
246     af_preprocess_result_t af_pre_result;
247 } RkAiqAlgoPreResAf;
248 
249 typedef struct _RkAiqAlgoProcAf {
250     RkAiqAlgoCom com;
251     union {
252         rk_aiq_isp_af_stats_t* xcam_af_stats;
253         rk_aiq_isp_af_stats_v3x_t* xcam_af_stats_v3x;
254     };
255     RKAiqAecExpInfo_t* aecExpInfo;
256     RKAiqAecStats_t* xcam_aec_stats;
257     rk_aiq_isp_pdaf_stats_t* xcam_pdaf_stats;
258     bool ae_stable;
259 } RkAiqAlgoProcAf;
260 
261 typedef struct _RkAiqAlgoProcResAf {
262     RkAiqAlgoResCom res_com;
263     bool af_cfg_update;
264     bool af_focus_update;
265     bool lockae;
266     bool lockae_en;
267     union {
268         rk_aiq_isp_af_meas_t* af_isp_param;
269         rk_aiq_isp_af_meas_v3x_t* af_isp_param_v3x;
270         rk_aiq_isp_af_v31_t* af_isp_param_v31;
271         rk_aiq_isp_af_v32_t* af_isp_param_v32;
272     };
273     rk_aiq_af_focus_pos_meas_t* af_focus_param;
274     uint32_t id;
275 } RkAiqAlgoProcResAf;
276 
277 // anr
278 typedef struct _RkAiqAlgoConfigAnr {
279     RkAiqAlgoCom com;
280     ANRConfig_t stANRConfig;
281 } RkAiqAlgoConfigAnr ;
282 
283 typedef struct _RkAiqAlgoPreAnr {
284     RkAiqAlgoCom com;
285     ANRConfig_t stANRConfig;
286 } RkAiqAlgoPreAnr;
287 
288 typedef struct _RkAiqAlgoPreResAnr {
289     RkAiqAlgoResCom res_com;
290 } RkAiqAlgoPreResAnr;
291 
292 typedef struct _RkAiqAlgoProcAnr {
293     RkAiqAlgoCom com;
294     int iso;
295     int hdr_mode;
296 } RkAiqAlgoProcAnr;
297 
298 typedef struct _RkAiqAlgoProcResAnr {
299     RkAiqAlgoResCom res_com;
300     ANRProcResult_t stAnrProcResult;
301 } RkAiqAlgoProcResAnr;
302 
303 typedef struct _RkAiqAlgoPostAnr {
304     RkAiqAlgoCom com;
305 } RkAiqAlgoPostAnr;
306 
307 typedef struct _RkAiqAlgoPostResAnr {
308     RkAiqAlgoResCom res_com;
309 } RkAiqAlgoPostResAnr;
310 
311 // asharp
312 typedef struct _RkAiqAlgoConfigAsharp {
313     RkAiqAlgoCom com;
314     AsharpConfig_t stAsharpConfig;
315 } RkAiqAlgoConfigAsharp ;
316 
317 typedef struct _RkAiqAlgoPreAsharp {
318     RkAiqAlgoCom com;
319 } RkAiqAlgoPreAsharp;
320 
321 typedef struct _RkAiqAlgoPreResAsharp {
322     RkAiqAlgoResCom res_com;
323 } RkAiqAlgoPreResAsharp;
324 
325 typedef struct _RkAiqAlgoProcAsharp {
326     RkAiqAlgoCom com;
327     int iso;
328     int hdr_mode;
329 } RkAiqAlgoProcAsharp;
330 
331 typedef struct _RkAiqAlgoProcResAsharp {
332     RkAiqAlgoResCom res_com;
333     AsharpProcResult_t stAsharpProcResult;
334 } RkAiqAlgoProcResAsharp;
335 
336 typedef struct _RkAiqAlgoPostAsharp {
337     RkAiqAlgoCom com;
338 } RkAiqAlgoPostAsharp;
339 
340 typedef struct _RkAiqAlgoPostResAsharp {
341     RkAiqAlgoResCom res_com;
342 } RkAiqAlgoPostResAsharp;
343 
344 //sharp v3
345 typedef struct _RkAiqAlgoConfigAsharpV3 {
346     RkAiqAlgoCom com;
347     Asharp_Config_V3_t stAsharpConfig;
348 } RkAiqAlgoConfigAsharpV3;
349 
350 typedef struct _RkAiqAlgoPreAsharpV3 {
351     RkAiqAlgoCom com;
352     Asharp_Config_V3_t stAsharpConfig;
353 } RkAiqAlgoPreAsharpV3;
354 
355 typedef struct _RkAiqAlgoPreResAsharpV3 {
356     RkAiqAlgoResCom res_com;
357 } RkAiqAlgoPreResAsharpV3;
358 
359 typedef struct _RkAiqAlgoProcAsharpV3 {
360     RkAiqAlgoCom com;
361     int iso;
362     int hdr_mode;
363 } RkAiqAlgoProcAsharpV3;
364 
365 typedef struct _RkAiqAlgoProcResAsharpV3 {
366     RkAiqAlgoResCom res_com;
367     Asharp_ProcResult_V3_t stAsharpProcResult;
368 } RkAiqAlgoProcResAsharpV3;
369 
370 typedef struct _RkAiqAlgoPostAsharpV3 {
371     RkAiqAlgoCom com;
372 } RkAiqAlgoPostAsharpV3;
373 
374 typedef struct _RkAiqAlgoPostResAsharpV3 {
375     RkAiqAlgoResCom res_com;
376 } RkAiqAlgoPostResAsharpV3;
377 
378 //sharp v4
379 typedef struct _RkAiqAlgoConfigAsharpV4 {
380     RkAiqAlgoCom com;
381     Asharp_Config_V4_t stAsharpConfig;
382 } RkAiqAlgoConfigAsharpV4;
383 
384 typedef struct _RkAiqAlgoPreAsharpV4 {
385     RkAiqAlgoCom com;
386     Asharp_Config_V4_t stAsharpConfig;
387 } RkAiqAlgoPreAsharpV4;
388 
389 typedef struct _RkAiqAlgoPreResAsharpV4 {
390     RkAiqAlgoResCom res_com;
391 } RkAiqAlgoPreResAsharpV4;
392 
393 typedef struct _RkAiqAlgoProcAsharpV4 {
394     RkAiqAlgoCom com;
395     int iso;
396     int hdr_mode;
397 } RkAiqAlgoProcAsharpV4;
398 
399 typedef struct _RkAiqAlgoProcResAsharpV4 {
400     RkAiqAlgoResCom res_com;
401     Asharp_ProcResult_V4_t stAsharpProcResult;
402 } RkAiqAlgoProcResAsharpV4;
403 
404 typedef struct _RkAiqAlgoPostAsharpV4 {
405     RkAiqAlgoCom com;
406 } RkAiqAlgoPostAsharpV4;
407 
408 typedef struct _RkAiqAlgoPostResAsharpV4 {
409     RkAiqAlgoResCom res_com;
410 } RkAiqAlgoPostResAsharpV4;
411 
412 // sharp V33
413 typedef struct _RkAiqAlgoConfigAsharpV33 {
414     RkAiqAlgoCom com;
415     Asharp_Config_V33_t stAsharpConfig;
416 } RkAiqAlgoConfigAsharpV33;
417 
418 typedef struct _RkAiqAlgoProcAsharpV33 {
419     RkAiqAlgoCom com;
420     int iso;
421     int hdr_mode;
422     AblcProc_V32_t* stAblcV32_proc_res;
423 } RkAiqAlgoProcAsharpV33;
424 
425 typedef struct _RkAiqAlgoProcResAsharpV33 {
426     RkAiqAlgoResCom res_com;
427     Asharp_ProcResult_V33_t stAsharpProcResult;
428 } RkAiqAlgoProcResAsharpV33;
429 
430 // asd
431 typedef struct _RkAiqAlgoConfigAsd {
432     RkAiqAlgoCom com;
433 } RkAiqAlgoConfigAsd ;
434 
435 typedef struct _RkAiqAlgoPreAsd {
436     RkAiqAlgoCom com;
437     asd_preprocess_in_t pre_params;
438 } RkAiqAlgoPreAsd;
439 
440 typedef struct _RkAiqAlgoPreResAsd {
441     RkAiqAlgoResCom res_com;
442     asd_preprocess_result_t asd_result;
443 } RkAiqAlgoPreResAsd;
444 
445 typedef struct _RkAiqAlgoProcAsd {
446     RkAiqAlgoCom com;
447 } RkAiqAlgoProcAsd;
448 
449 typedef struct _RkAiqAlgoProcResAsd {
450     RkAiqAlgoResCom res_com;
451 } RkAiqAlgoProcResAsd;
452 
453 // amerge
454 typedef struct _RkAiqAlgoConfigAmerge {
455     RkAiqAlgoCom com;
456     int working_mode;
457     unsigned short  rawWidth;               // raw图宽
458     unsigned short  rawHeight;
459 } RkAiqAlgoConfigAmerge;
460 
461 typedef struct _RkAiqAlgoProcAmerge {
462     RkAiqAlgoCom com;
463     bool LongFrmMode;
464 } RkAiqAlgoProcAmerge;
465 
466 typedef struct _RkAiqAlgoProcResAmerge {
467     RkAiqAlgoResCom res_com;
468     RkAiqAmergeProcResult_t* AmergeProcRes;
469 } RkAiqAlgoProcResAmerge;
470 
471 // atmo
472 typedef struct _RkAiqAlgoConfigAtmo {
473     RkAiqAlgoCom com;
474     AtmoConfig_t* atmoCfg;
475     int working_mode;
476     unsigned short  rawWidth;               // raw图宽
477     unsigned short  rawHeight;
478 } RkAiqAlgoConfigAtmo;
479 
480 typedef struct _RkAiqAlgoPreAtmo {
481     RkAiqAlgoCom com;
482 } RkAiqAlgoPreAtmo;
483 
484 typedef struct _RkAiqAlgoPreResAtmo {
485     RkAiqAlgoResCom res_com;
486 } RkAiqAlgoPreResAtmo;
487 
488 typedef struct _RkAiqAlgoProcAtmo {
489     RkAiqAlgoCom com;
490     rkisp_atmo_stats_t ispAtmoStats;
491     uint32_t width;
492     uint32_t height;
493 } RkAiqAlgoProcAtmo;
494 
495 typedef struct _RkAiqAlgoProcResAtmo {
496     RkAiqAlgoResCom res_com;
497     RkAiqAtmoProcResult_t AtmoProcRes;
498 } RkAiqAlgoProcResAtmo;
499 
500 typedef struct _RkAiqAlgoPostAtmo {
501     RkAiqAlgoCom com;
502 } RkAiqAlgoPostAtmo;
503 
504 typedef struct _RkAiqAlgoPostResAtmo {
505     RkAiqAlgoResCom res_com;
506 } RkAiqAlgoPostResAtmo;
507 
508 // acp
509 typedef struct _RkAiqAlgoConfigAcp {
510     RkAiqAlgoCom com;
511 } RkAiqAlgoConfigAcp;
512 
513 typedef struct _RkAiqAlgoProcAcp {
514     RkAiqAlgoCom com;
515 } RkAiqAlgoProcAcp;
516 
517 typedef struct _RkAiqAlgoProcResAcp {
518     RkAiqAlgoResCom res_com;
519     rk_aiq_acp_params_t* acp_res;
520 } RkAiqAlgoProcResAcp;
521 
522 //adehaze
523 typedef struct _RkAiqAlgoConfigAdhaz {
524     RkAiqAlgoCom com;
525 #ifdef RKAIQ_ENABLE_PARSER_V1
526     const CamCalibDbContext_t *calib;
527 #endif
528     int working_mode;
529     bool is_multi_isp_mode;
530 } RkAiqAlgoConfigAdhaz;
531 
532 typedef struct _RkAiqAlgoProcAdhaz {
533     RkAiqAlgoCom com;
534     union {
535         dehaze_stats_v10_t* dehaze_stats_v10;
536         dehaze_stats_v11_t* dehaze_stats_v11;
537         dehaze_stats_v11_duo_t* dehaze_stats_v11_duo;
538         dehaze_stats_v12_t* dehaze_stats_v12;
539     };
540     bool stats_true;
541 #ifdef RKAIQ_ENABLE_PARSER_V1
542     const CamCalibDbContext_t *pCalibDehaze;
543 #endif
544 #if RKAIQ_HAVE_DEHAZE_V11_DUO
545     float sigma_v3[YNR_V3_ISO_CURVE_POINT_NUM];
546 #endif
547 #if RKAIQ_HAVE_DEHAZE_V12
548     AdehazeOBResV12_t OBResV12;
549     float sigma_v22[YNR_V22_ISO_CURVE_POINT_NUM];
550 #endif
551 } RkAiqAlgoProcAdhaz;
552 
553 typedef struct _RkAiqAlgoProcResAdhaz {
554     RkAiqAlgoResCom res_com;
555     RkAiqAdehazeProcResult_t* AdehzeProcRes;
556 } RkAiqAlgoProcResAdhaz;
557 
558 // a3dlut
559 typedef struct _RkAiqAlgoConfigA3dlut {
560     RkAiqAlgoCom com;
561 } RkAiqAlgoConfigA3dlut;
562 
563 typedef struct _RkAiqAlgoProcA3dlut {
564     RkAiqAlgoCom com;
565     float sensorGain;
566     float awbGain[2];
567     float awbIIRDampCoef;
568     bool awbConverged;
569 } RkAiqAlgoProcA3dlut;
570 
571 typedef struct _RkAiqAlgoProcResA3dlut {
572     RkAiqAlgoResCom res_com;
573     rk_aiq_lut3d_cfg_t* lut3d_hw_conf;
574 } RkAiqAlgoProcResA3dlut;
575 
576 // ablc
577 typedef struct _RkAiqAlgoConfigAblc {
578     RkAiqAlgoCom com;
579 } RkAiqAlgoConfigAblc;
580 
581 typedef struct _RkAiqAlgoPreAblc {
582     RkAiqAlgoCom com;
583 } RkAiqAlgoPreAblc;
584 
585 typedef struct _RkAiqAlgoPreResAblc {
586     RkAiqAlgoResCom res_com;
587 } RkAiqAlgoPreResAblc;
588 
589 typedef struct _RkAiqAlgoProcAblc {
590     RkAiqAlgoCom com;
591     int iso;
592     int hdr_mode;
593 } RkAiqAlgoProcAblc;
594 
595 typedef struct _RkAiqAlgoProcResAblc {
596     RkAiqAlgoResCom res_com;
597     AblcProc_t* ablc_proc_res;
598 } RkAiqAlgoProcResAblc;
599 
600 typedef struct _RkAiqAlgoPostAblc {
601     RkAiqAlgoCom com;
602 } RkAiqAlgoPostAblc;
603 
604 typedef struct _RkAiqAlgoPostResAblc {
605     RkAiqAlgoResCom res_com;
606 } RkAiqAlgoPostResAblc;
607 
608 // ablcV32
609 typedef struct _RkAiqAlgoConfigAblcV32 {
610     RkAiqAlgoCom com;
611 } RkAiqAlgoConfigAblcV32;
612 
613 typedef struct _RkAiqAlgoProcAblcV32 {
614     RkAiqAlgoCom com;
615     int iso;
616     int hdr_mode;
617 } RkAiqAlgoProcAblcV32;
618 
619 typedef struct _RkAiqAlgoProcResAblcV32 {
620     RkAiqAlgoResCom res_com;
621     AblcProc_V32_t* ablcV32_proc_res;
622 } RkAiqAlgoProcResAblcV32;
623 
624 // accm
625 typedef struct _RkAiqAlgoConfigAccm {
626     RkAiqAlgoCom com;
627 } RkAiqAlgoConfigAccm;
628 
629 typedef struct _RkAiqAlgoProcAccm {
630     RkAiqAlgoCom com;
631     accm_sw_info_t   accm_sw_info;
632 } RkAiqAlgoProcAccm;
633 
634 typedef struct _RkAiqAlgoProcResAccm {
635     RkAiqAlgoResCom res_com;
636     union {
637         rk_aiq_ccm_cfg_t* accm_hw_conf;
638         rk_aiq_ccm_cfg_v2_t* accm_hw_conf_v2;
639     };
640 } RkAiqAlgoProcResAccm;
641 
642 // cgc
643 typedef struct _RkAiqAlgoConfigAcgc {
644     RkAiqAlgoCom com;
645 } RkAiqAlgoConfigAcgc;
646 
647 typedef struct _RkAiqAlgoProcAcgc {
648     RkAiqAlgoCom com;
649 } RkAiqAlgoProcAcgc;
650 
651 typedef struct _RkAiqAlgoProcResAcgc {
652     RkAiqAlgoResCom res_com;
653     rk_aiq_acgc_params_t* acgc_res;
654 } RkAiqAlgoProcResAcgc;
655 
656 // adebayer
657 typedef struct _RkAiqAlgoConfigAdebayer {
658     RkAiqAlgoCom com;
659 } RkAiqAlgoConfigAdebayer;
660 
661 typedef struct _RkAiqAlgoProcAdebayer {
662     RkAiqAlgoCom com;
663     int hdr_mode;
664 } RkAiqAlgoProcAdebayer;
665 
666 typedef struct _RkAiqAlgoProcResAdebayer {
667     RkAiqAlgoResCom res_com;
668     union {
669         AdebayerProcResultV1_t debayerResV1;
670         AdebayerProcResultV2_t debayerResV2;
671     };
672 } RkAiqAlgoProcResAdebayer;
673 
674 // adpcc
675 typedef struct _RkAiqAlgoConfigAdpcc {
676     RkAiqAlgoCom com;
677     AdpccConfig_t stAdpccConfig;
678 } RkAiqAlgoConfigAdpcc;
679 
680 typedef struct _RkAiqAlgoProcAdpcc {
681     RkAiqAlgoCom com;
682     int iso;
683     int hdr_mode;
684 } RkAiqAlgoProcAdpcc;
685 
686 typedef struct _RkAiqAlgoProcResAdpcc {
687     RkAiqAlgoResCom res_com;
688     //Sensor_dpcc_res_t SenDpccRes;
689     AdpccProcResult_t* stAdpccProcResult;
690 } RkAiqAlgoProcResAdpcc;
691 
692 // afec
693 typedef struct _RkAiqAlgoConfigAfec {
694     RkAiqAlgoCom com;
695     CalibDb_FEC_t afec_calib_cfg;
696     const char* resource_path;
697     isp_drv_share_mem_ops_t *mem_ops_ptr;
698 } RkAiqAlgoConfigAfec;
699 
700 typedef struct _RkAiqAlgoProcAfec {
701     RkAiqAlgoCom com;
702 } RkAiqAlgoProcAfec;
703 
704 typedef struct _RkAiqAlgoProcResAfec {
705     RkAiqAlgoResCom res_com;
706     fec_preprocess_result_t* afec_result;
707 } RkAiqAlgoProcResAfec;
708 
709 // agamma
710 typedef struct _RkAiqAlgoConfigAgamma {
711     RkAiqAlgoCom com;
712 #ifdef RKAIQ_ENABLE_PARSER_V1
713     const CamCalibDbContext_t *calib;
714 #endif
715 } RkAiqAlgoConfigAgamma;
716 
717 typedef struct _RkAiqAlgoProcAgamma {
718     RkAiqAlgoCom com;
719 #ifdef RKAIQ_ENABLE_PARSER_V1
720     const CamCalibDbContext_t *calib;
721 #endif
722 } RkAiqAlgoProcAgamma;
723 
724 typedef struct _RkAiqAlgoProcResAgamma {
725     RkAiqAlgoResCom res_com;
726     AgammaProcRes_t* GammaProcRes;
727 } RkAiqAlgoProcResAgamma;
728 
729 // adegamma
730 typedef struct _RkAiqAlgoConfigAdegamma {
731     RkAiqAlgoCom com;
732 #ifdef RKAIQ_ENABLE_PARSER_V1
733     const CamCalibDbContext_t *calib;
734 #endif
735 } RkAiqAlgoConfigAdegamma;
736 
737 typedef struct _RkAiqAlgoProcAdegamma {
738     RkAiqAlgoCom com;
739 #ifdef RKAIQ_ENABLE_PARSER_V1
740     const CamCalibDbContext_t *calib;
741 #endif
742 } RkAiqAlgoProcAdegamma;
743 
744 typedef struct _RkAiqAlgoProcResAdegamma {
745     RkAiqAlgoResCom res_com;
746     AdegammaProcRes_t* adegamma_proc_res;
747 } RkAiqAlgoProcResAdegamma;
748 
749 // agic
750 typedef struct _RkAiqAlgoConfigAgic {
751     RkAiqAlgoCom com;
752 } RkAiqAlgoConfigAgic;
753 
754 typedef struct _RkAiqAlgoProcAgic {
755     RkAiqAlgoCom com;
756     int hdr_mode;
757     uint8_t raw_bits;
758     uint32_t iso;
759 } RkAiqAlgoProcAgic;
760 
761 typedef struct _RkAiqAlgoProcResAgic {
762     RkAiqAlgoResCom res_com;
763     AgicProcResult_t* gicRes;
764 } RkAiqAlgoProcResAgic;
765 
766 // aie
767 typedef struct _RkAiqAlgoConfigAie {
768     RkAiqAlgoCom com;
769 } RkAiqAlgoConfigAie;
770 
771 typedef struct _RkAiqAlgoProcAie {
772     RkAiqAlgoCom com;
773 } RkAiqAlgoProcAie;
774 
775 typedef struct _RkAiqAlgoProcResAie {
776     RkAiqAlgoResCom res_com;
777     rk_aiq_isp_ie_t* ieRes;
778 } RkAiqAlgoProcResAie;
779 
780 // aldch
781 typedef struct _RkAiqAlgoConfigAldch {
782     RkAiqAlgoCom com;
783     CalibDb_LDCH_t aldch_calib_cfg;
784     const char* resource_path;
785     isp_drv_share_mem_ops_t *mem_ops_ptr;
786 } RkAiqAlgoConfigAldch;
787 
788 typedef struct _RkAiqAlgoProcAldch {
789     RkAiqAlgoCom com;
790 } RkAiqAlgoProcAldch;
791 
792 typedef struct _RkAiqAlgoProcResAldch {
793     RkAiqAlgoResCom res_com;
794     ldch_process_result_t* ldch_result;
795 } RkAiqAlgoProcResAldch;
796 
797 typedef struct _RkAiqAlgoProcResAldchV21 {
798     RkAiqAlgoResCom res_com;
799     ldch_v21_process_result_t* ldch_result;
800 } RkAiqAlgoProcResAldchV21;
801 
802 // alsc
803 typedef struct _RkAiqAlgoConfigAlsc {
804     RkAiqAlgoCom com;
805     alsc_sw_info_t alsc_sw_info;
806 } RkAiqAlgoConfigAlsc;
807 
808 typedef struct _RkAiqAlgoProcAlsc {
809     RkAiqAlgoCom com;
810     alsc_sw_info_t   alsc_sw_info;
811     XCamVideoBuffer* tx;
812 } RkAiqAlgoProcAlsc;
813 
814 typedef struct _RkAiqAlgoProcResAlsc {
815     RkAiqAlgoResCom res_com;
816     rk_aiq_lsc_cfg_t* alsc_hw_conf;
817 } RkAiqAlgoProcResAlsc;
818 
819 // aorb
820 typedef struct _RkAiqAlgoConfigAorb {
821     RkAiqAlgoCom com;
822     CalibDbV2_Orb_t orb_calib_cfg;
823 } RkAiqAlgoConfigAorb;
824 
825 typedef struct _RkAiqAlgoPreAorb {
826     RkAiqAlgoCom com;
827 } RkAiqAlgoPreAorb;
828 
829 typedef struct _RkAiqAlgoPreResAorb {
830     RkAiqAlgoResCom res_com;
831 } RkAiqAlgoPreResAorb;
832 
833 typedef struct _RkAiqAlgoProcAorb {
834     RkAiqAlgoCom com;
835     XCamVideoBuffer* orb_stats_buf;
836 } RkAiqAlgoProcAorb;
837 
838 typedef struct _RkAiqAlgoProcResAorb {
839     RkAiqAlgoResCom res_com;
840     rk_aiq_orb_algo_meas_t aorb_meas;
841     rk_aiq_isp_orb_meas_t aorb_isp_meas;
842     orb_preprocess_result_t orb_pre_result;
843 } RkAiqAlgoProcResAorb;
844 
845 typedef struct _RkAiqAlgoPostAorb {
846     RkAiqAlgoCom com;
847 } RkAiqAlgoPostAorb;
848 
849 typedef struct _RkAiqAlgoPostResAorb {
850     RkAiqAlgoResCom res_com;
851 } RkAiqAlgoPostResAorb;
852 
853 // acsm
854 typedef struct _RkAiqAlgoConfigAcsm {
855     RkAiqAlgoCom com;
856 } RkAiqAlgoConfigAcsm;
857 
858 typedef struct _RkAiqAlgoProcAcsm {
859     RkAiqAlgoCom com;
860 } RkAiqAlgoProcAcsm;
861 
862 typedef struct _RkAiqAlgoProcResAcsm {
863     RkAiqAlgoResCom res_com;
864     rk_aiq_acsm_params_t* acsm_res;
865 } RkAiqAlgoProcResAcsm;
866 
867 // awdr
868 typedef struct _RkAiqAlgoConfigAwdr {
869     RkAiqAlgoCom com;
870 } RkAiqAlgoConfigAwdr;
871 
872 typedef struct _RkAiqAlgoProcAwdr {
873     RkAiqAlgoCom com;
874 } RkAiqAlgoProcAwdr;
875 
876 typedef struct _RkAiqAlgoProcResAwdr {
877     RkAiqAlgoResCom res_com;
878 } RkAiqAlgoProcResAwdr;
879 
880 // rawnr v1
881 typedef struct _RkAiqAlgoConfigArawnr {
882     RkAiqAlgoCom com;
883     Abayernr_Config_V1_t stArawnrConfig;
884 } RkAiqAlgoConfigArawnr;
885 
886 typedef struct _RkAiqAlgoPreArawnr {
887     RkAiqAlgoCom com;
888     Abayernr_Config_V1_t stArawnrConfig;
889 } RkAiqAlgoPreArawnr;
890 
891 typedef struct _RkAiqAlgoPreResArawnr {
892     RkAiqAlgoResCom res_com;
893 } RkAiqAlgoPreResArawnr;
894 
895 typedef struct _RkAiqAlgoProcArawnr {
896     RkAiqAlgoCom com;
897     int iso;
898     int hdr_mode;
899 } RkAiqAlgoProcArawnr;
900 
901 typedef struct _RkAiqAlgoProcResArawnr {
902     RkAiqAlgoResCom res_com;
903     Abayernr_ProcResult_V1_t stArawnrProcResult;
904 } RkAiqAlgoProcResArawnr;
905 
906 typedef struct _RkAiqAlgoPostArawnr {
907     RkAiqAlgoCom com;
908 } RkAiqAlgoPostArawnr;
909 
910 typedef struct _RkAiqAlgoPostResArawnr {
911     RkAiqAlgoResCom res_com;
912 } RkAiqAlgoPostResArawnr;
913 
914 // arawnr v2
915 typedef struct _RkAiqAlgoConfigArawnrV2 {
916     RkAiqAlgoCom com;
917     Abayernr_Config_V2_t stArawnrConfig;
918 } RkAiqAlgoConfigArawnrV2;
919 
920 typedef struct _RkAiqAlgoPreArawnrV2 {
921     RkAiqAlgoCom com;
922     Abayernr_Config_V2_t stArawnrConfig;
923 } RkAiqAlgoPreArawnrV2;
924 
925 typedef struct _RkAiqAlgoPreResArawnrV2 {
926     RkAiqAlgoResCom res_com;
927 } RkAiqAlgoPreResArawnrV2;
928 
929 typedef struct _RkAiqAlgoProcArawnrV2 {
930     RkAiqAlgoCom com;
931     int iso;
932     int hdr_mode;
933 } RkAiqAlgoProcArawnrV2;
934 
935 typedef struct _RkAiqAlgoProcResArawnrV2 {
936     RkAiqAlgoResCom res_com;
937     Abayernr_ProcResult_V2_t stArawnrProcResult;
938 } RkAiqAlgoProcResArawnrV2;
939 
940 typedef struct _RkAiqAlgoPostArawnrV2 {
941     RkAiqAlgoCom com;
942 } RkAiqAlgoPostArawnrV2;
943 
944 typedef struct _RkAiqAlgoPostResArawnrV2 {
945     RkAiqAlgoResCom res_com;
946 } RkAiqAlgoPostResArawnrV2;
947 
948 // amfnr
949 typedef struct _RkAiqAlgoConfigAmfnr {
950     RkAiqAlgoCom com;
951     Amfnr_Config_V1_t stAmfnrConfig;
952 } RkAiqAlgoConfigAmfnr;
953 
954 typedef struct _RkAiqAlgoPreAmfnr {
955     RkAiqAlgoCom com;
956     Amfnr_Config_V1_t stAmfnrConfig;
957 } RkAiqAlgoPreAmfnr;
958 
959 typedef struct _RkAiqAlgoPreResAmfnr {
960     RkAiqAlgoResCom res_com;
961 } RkAiqAlgoPreResAmfnr;
962 
963 typedef struct _RkAiqAlgoProcAmfnr {
964     RkAiqAlgoCom com;
965     int iso;
966     int hdr_mode;
967 } RkAiqAlgoProcAmfnr;
968 
969 typedef struct _RkAiqAlgoProcResAmfnr {
970     RkAiqAlgoResCom res_com;
971     Amfnr_ProcResult_V1_t stAmfnrProcResult;
972 } RkAiqAlgoProcResAmfnr;
973 
974 typedef struct _RkAiqAlgoPostAmfnr {
975     RkAiqAlgoCom com;
976 } RkAiqAlgoPostAmfnr;
977 
978 typedef struct _RkAiqAlgoPostResAmfnr {
979     RkAiqAlgoResCom res_com;
980 } RkAiqAlgoPostResAmfnr;
981 
982 //abayernr v2
983 typedef struct _RkAiqAlgoConfigAbayer2dnrV2 {
984     RkAiqAlgoCom com;
985     Abayer2dnr_Config_V2_t stArawnrConfig;
986 } RkAiqAlgoConfigAbayer2dnrV2;
987 
988 typedef struct _RkAiqAlgoPreAbayer2dnrV2 {
989     RkAiqAlgoCom com;
990     Abayer2dnr_Config_V2_t stArawnrConfig;
991 } RkAiqAlgoPreAbayer2dnrV2;
992 
993 typedef struct _RkAiqAlgoPreResAbayer2dnrV2 {
994     RkAiqAlgoResCom res_com;
995 } RkAiqAlgoPreResAbayer2dnrV2;
996 
997 typedef struct _RkAiqAlgoProcAbayer2dnrV2 {
998     RkAiqAlgoCom com;
999     int iso;
1000     int hdr_mode;
1001 } RkAiqAlgoProcAbayer2dnrV2;
1002 
1003 typedef struct _RkAiqAlgoProcResAbayer2dnrV2 {
1004     RkAiqAlgoResCom res_com;
1005     Abayer2dnr_ProcResult_V2_t stArawnrProcResult;
1006 } RkAiqAlgoProcResAbayer2dnrV2;
1007 
1008 typedef struct _RkAiqAlgoPostAbayer2dnrV2 {
1009     RkAiqAlgoCom com;
1010 } RkAiqAlgoPostAbayer2dnrV2;
1011 
1012 typedef struct _RkAiqAlgoPostResAbayer2dnrV2 {
1013     RkAiqAlgoResCom res_com;
1014 } RkAiqAlgoPostResAbayer2dnrV2;
1015 
1016 //bayertnr v2
1017 typedef struct _RkAiqAlgoConfigAbayertnrV2 {
1018     RkAiqAlgoCom com;
1019     Abayertnr_Config_V2_t stAbayertnrConfig;
1020 } RkAiqAlgoConfigAbayertnrV2;
1021 
1022 typedef struct _RkAiqAlgoPreAbayertnrV2 {
1023     RkAiqAlgoCom com;
1024     Abayertnr_Config_V2_t stAbayertnrConfig;
1025 } RkAiqAlgoPreAbayertnrV2;
1026 
1027 typedef struct _RkAiqAlgoPreResAbayertnrV2 {
1028     RkAiqAlgoResCom res_com;
1029 } RkAiqAlgoPreResAbayertnrV2;
1030 
1031 typedef struct _RkAiqAlgoProcAbayertnrV2 {
1032     RkAiqAlgoCom com;
1033     int iso;
1034     int hdr_mode;
1035 } RkAiqAlgoProcAbayertnrV2;
1036 
1037 typedef struct _RkAiqAlgoProcResAbayertnrV2 {
1038     RkAiqAlgoResCom res_com;
1039     Abayertnr_ProcResult_V2_t stAbayertnrProcResult;
1040 } RkAiqAlgoProcResAbayertnrV2;
1041 
1042 typedef struct _RkAiqAlgoPostAbayertnrV2 {
1043     RkAiqAlgoCom com;
1044 } RkAiqAlgoPostAbayertnrV2;
1045 
1046 typedef struct _RkAiqAlgoPostResAbayertnrV2 {
1047     RkAiqAlgoResCom res_com;
1048 } RkAiqAlgoPostResAbayertnrV2;
1049 
1050 //ynr v1
1051 typedef struct _RkAiqAlgoConfigAynr {
1052     RkAiqAlgoCom com;
1053     Aynr_Config_V1_t stAynrConfig;
1054 } RkAiqAlgoConfigAynr;
1055 
1056 typedef struct _RkAiqAlgoPreAynr {
1057     RkAiqAlgoCom com;
1058     Aynr_Config_V1_t stAynrConfig;
1059 } RkAiqAlgoPreAynr;
1060 
1061 typedef struct _RkAiqAlgoPreResAynr {
1062     RkAiqAlgoResCom res_com;
1063 } RkAiqAlgoPreResAynr;
1064 
1065 typedef struct _RkAiqAlgoProcAynr {
1066     RkAiqAlgoCom com;
1067     int iso;
1068     int hdr_mode;
1069 } RkAiqAlgoProcAynr;
1070 
1071 typedef struct _RkAiqAlgoProcResAynr {
1072     RkAiqAlgoResCom res_com;
1073     Aynr_ProcResult_V1_t stAynrProcResult;
1074 } RkAiqAlgoProcResAynr;
1075 
1076 typedef struct _RkAiqAlgoPostAynr {
1077     RkAiqAlgoCom com;
1078 } RkAiqAlgoPostAynr;
1079 
1080 typedef struct _RkAiqAlgoPostResAynr {
1081     RkAiqAlgoResCom res_com;
1082 } RkAiqAlgoPostResAynr;
1083 
1084 //ynr v2
1085 typedef struct _RkAiqAlgoConfigAynrV2 {
1086     RkAiqAlgoCom com;
1087     Aynr_Config_V2_t stAynrConfig;
1088 } RkAiqAlgoConfigAynrV2;
1089 
1090 typedef struct _RkAiqAlgoPreAynrV2 {
1091     RkAiqAlgoCom com;
1092     Aynr_Config_V2_t stAynrConfig;
1093 } RkAiqAlgoPreAynrV2;
1094 
1095 typedef struct _RkAiqAlgoPreResAynrV2 {
1096     RkAiqAlgoResCom res_com;
1097 } RkAiqAlgoPreResAynrV2;
1098 
1099 typedef struct _RkAiqAlgoProcAynrV2 {
1100     RkAiqAlgoCom com;
1101     int iso;
1102     int hdr_mode;
1103 } RkAiqAlgoProcAynrV2;
1104 
1105 typedef struct _RkAiqAlgoProcResAynrV2 {
1106     RkAiqAlgoResCom res_com;
1107     Aynr_ProcResult_V2_t stAynrProcResult;
1108 } RkAiqAlgoProcResAynrV2;
1109 
1110 typedef struct _RkAiqAlgoPostAynrV2 {
1111     RkAiqAlgoCom com;
1112 } RkAiqAlgoPostAynrV2;
1113 
1114 typedef struct _RkAiqAlgoPostResAynrV2 {
1115     RkAiqAlgoResCom res_com;
1116 } RkAiqAlgoPostResAynrV2;
1117 
1118 //ynr v3
1119 typedef struct _RkAiqAlgoConfigAynrV3 {
1120     RkAiqAlgoCom com;
1121     Aynr_Config_V3_t stAynrConfig;
1122 } RkAiqAlgoConfigAynrV3;
1123 
1124 typedef struct _RkAiqAlgoPreAynrV3 {
1125     RkAiqAlgoCom com;
1126     Aynr_Config_V2_t stAynrConfig;
1127 } RkAiqAlgoPreAynrV3;
1128 
1129 typedef struct _RkAiqAlgoPreResAynrV3 {
1130     RkAiqAlgoResCom res_com;
1131 } RkAiqAlgoPreResAynrV3;
1132 
1133 typedef struct _RkAiqAlgoProcAynrV3 {
1134     RkAiqAlgoCom com;
1135     int iso;
1136     int hdr_mode;
1137 } RkAiqAlgoProcAynrV3;
1138 
1139 typedef struct _RkAiqAlgoProcResAynrV3 {
1140     RkAiqAlgoResCom res_com;
1141     Aynr_ProcResult_V3_t stAynrProcResult;
1142 } RkAiqAlgoProcResAynrV3;
1143 
1144 typedef struct _RkAiqAlgoPostAynrV3 {
1145     RkAiqAlgoCom com;
1146 } RkAiqAlgoPostAynrV3;
1147 
1148 typedef struct _RkAiqAlgoPostResAynrV3 {
1149     RkAiqAlgoResCom res_com;
1150 } RkAiqAlgoPostResAynrV3;
1151 
1152 // acnr
1153 typedef struct _RkAiqAlgoConfigAcnr {
1154     RkAiqAlgoCom com;
1155     Auvnr_Config_V1_t stAuvnrConfig;
1156 } RkAiqAlgoConfigAcnr;
1157 
1158 typedef struct _RkAiqAlgoPreAcnr {
1159     RkAiqAlgoCom com;
1160     Auvnr_Config_V1_t stAuvnrConfig;
1161 } RkAiqAlgoPreAcnr;
1162 
1163 typedef struct _RkAiqAlgoPreResAcnr {
1164     RkAiqAlgoResCom res_com;
1165 } RkAiqAlgoPreResAcnr;
1166 
1167 typedef struct _RkAiqAlgoProcAcnr {
1168     RkAiqAlgoCom com;
1169     int iso;
1170     int hdr_mode;
1171 } RkAiqAlgoProcAcnr;
1172 
1173 typedef struct _RkAiqAlgoProcResAcnr {
1174     RkAiqAlgoResCom res_com;
1175     Auvnr_ProcResult_V1_t stAuvnrProcResult;
1176 } RkAiqAlgoProcResAcnr;
1177 
1178 typedef struct _RkAiqAlgoPostAcnr {
1179     RkAiqAlgoCom com;
1180 } RkAiqAlgoPostAcnr;
1181 
1182 typedef struct _RkAiqAlgoPostResAcnr {
1183     RkAiqAlgoResCom res_com;
1184 } RkAiqAlgoPostResAcnr;
1185 
1186 //cnr v1
1187 typedef struct _RkAiqAlgoConfigAcnrV1 {
1188     RkAiqAlgoCom com;
1189     Acnr_Config_V1_t stAcnrConfig;
1190 } RkAiqAlgoConfigAcnrV1;
1191 
1192 typedef struct _RkAiqAlgoPreAcnrV1 {
1193     RkAiqAlgoCom com;
1194     Acnr_Config_V1_t stAcnrConfig;
1195 } RkAiqAlgoPreAcnrV1;
1196 
1197 typedef struct _RkAiqAlgoPreResAcnrV1 {
1198     RkAiqAlgoResCom res_com;
1199 } RkAiqAlgoPreResAcnrV1;
1200 
1201 typedef struct _RkAiqAlgoProcAcnrV1 {
1202     RkAiqAlgoCom com;
1203     int iso;
1204     int hdr_mode;
1205 } RkAiqAlgoProcAcnrV1;
1206 
1207 typedef struct _RkAiqAlgoProcResAcnrV1 {
1208     RkAiqAlgoResCom res_com;
1209     Acnr_ProcResult_V1_t stAcnrProcResult;
1210 } RkAiqAlgoProcResAcnrV1;
1211 
1212 typedef struct _RkAiqAlgoPostAcnrV1 {
1213     RkAiqAlgoCom com;
1214 } RkAiqAlgoPostAcnrV1;
1215 
1216 typedef struct _RkAiqAlgoPostResAcnrV1 {
1217     RkAiqAlgoResCom res_com;
1218 } RkAiqAlgoPostResAcnrV1;
1219 
1220 // acnrV2
1221 typedef struct _RkAiqAlgoConfigAcnrV2 {
1222     RkAiqAlgoCom com;
1223     Acnr_Config_V2_t stAcnrConfig;
1224 } RkAiqAlgoConfigAcnrV2;
1225 
1226 typedef struct _RkAiqAlgoPreAcnrV2 {
1227     RkAiqAlgoCom com;
1228     Acnr_Config_V2_t stAcnrConfig;
1229 } RkAiqAlgoPreAcnrV2;
1230 
1231 typedef struct _RkAiqAlgoPreResAcnrV2 {
1232     RkAiqAlgoResCom res_com;
1233 } RkAiqAlgoPreResAcnrV2;
1234 
1235 typedef struct _RkAiqAlgoProcAcnrV2 {
1236     RkAiqAlgoCom com;
1237     int iso;
1238     int hdr_mode;
1239 } RkAiqAlgoProcAcnrV2;
1240 
1241 typedef struct _RkAiqAlgoProcResAcnrV2 {
1242     RkAiqAlgoResCom res_com;
1243     Acnr_ProcResult_V2_t stAcnrProcResult;
1244 } RkAiqAlgoProcResAcnrV2;
1245 
1246 typedef struct _RkAiqAlgoPostAcnrV2 {
1247     RkAiqAlgoCom com;
1248 } RkAiqAlgoPostAcnrV2;
1249 
1250 typedef struct _RkAiqAlgoPostResAcnrV2 {
1251     RkAiqAlgoResCom res_com;
1252 } RkAiqAlgoPostResAcnrV2;
1253 
1254 // adrc
1255 typedef struct _RkAiqAlgoConfigAdrc {
1256     RkAiqAlgoCom com;
1257     int working_mode;
1258     unsigned short  rawWidth;               // raw图宽
1259     unsigned short  rawHeight;
1260 } RkAiqAlgoConfigAdrc;
1261 
1262 typedef struct _RkAiqAlgoProcAdrc {
1263     RkAiqAlgoCom com;
1264 #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE
1265     adrc_blcRes_V32_t ablcV32_proc_res;
1266 #endif
1267     bool LongFrmMode;
1268 } RkAiqAlgoProcAdrc;
1269 
1270 typedef struct _RkAiqAlgoProcResAdrc {
1271     RkAiqAlgoResCom res_com;
1272     RkAiqAdrcProcResult_t* AdrcProcRes;
1273 } RkAiqAlgoProcResAdrc;
1274 
1275 // aeis
1276 typedef struct _RkAiqAlgoConfigAeis {
1277     RkAiqAlgoCom com;
1278     const rk_aiq_mems_sensor_intf_t *mems_sensor_intf;
1279     CalibDbV2_Eis_t calib;
1280     isp_drv_share_mem_ops_t *mem_ops;
1281 } RkAiqAlgoConfigAeis;
1282 
1283 typedef struct _RkAiqAlgoProcAeis {
1284     RkAiqAlgoCom com;
1285     int64_t sof;
1286     double rolling_shutter_skew;
1287     float integration_time;
1288     int analog_gain;
1289     uint32_t frame_width;
1290     uint32_t frame_height;
1291     XCamVideoBuffer* orb_stats_buf;
1292     XCamVideoBuffer* nr_img_buf;
1293 } RkAiqAlgoProcAeis;
1294 
1295 typedef struct _RkAiqAlgoProcResAeis {
1296     RkAiqAlgoResCom res_com;
1297     bool fec_en;
1298     uint32_t frame_id;
1299     int fd;
1300     int mesh_size;
1301     int mesh_density;
1302     int img_buf_index;
1303     unsigned int img_size;
1304 } RkAiqAlgoProcResAeis;
1305 
1306 // amd
1307 typedef struct _RkAiqAlgoConfigAmd {
1308     RkAiqAlgoCom com;
1309     int spWidth;
1310     int spHeight;
1311     int spAlignedW;
1312     int spAlignedH;
1313 } RkAiqAlgoConfigAmd;
1314 
1315 typedef struct _RkAiqAlgoProcAmd {
1316     RkAiqAlgoCom com;
1317     int iso;
1318     int hdr_mode;
1319     rk_aiq_amd_algo_stat_t stats;
1320 } RkAiqAlgoProcAmd;
1321 
1322 typedef struct _RkAiqAlgoProcResAmd {
1323     RkAiqAlgoResCom res_com;
1324     rk_aiq_amd_params_t amd_proc_res;
1325 } RkAiqAlgoProcResAmd;
1326 
1327 // again
1328 typedef struct _RkAiqAlgoConfigAgain {
1329     RkAiqAlgoCom com;
1330     Again_Config_V1_t stAgainConfig;
1331 } RkAiqAlgoConfigAgain;
1332 
1333 typedef struct _RkAiqAlgoPreAgain {
1334     RkAiqAlgoCom com;
1335     Again_Config_V1_t stAgainConfig;
1336 } RkAiqAlgoPreAgain;
1337 
1338 typedef struct _RkAiqAlgoPreResAgain {
1339     RkAiqAlgoResCom res_com;
1340 } RkAiqAlgoPreResAgain;
1341 
1342 typedef struct _RkAiqAlgoProcAgain {
1343     RkAiqAlgoCom com;
1344     int iso;
1345     int hdr_mode;
1346 } RkAiqAlgoProcAgain;
1347 
1348 typedef struct _RkAiqAlgoProcResAgain {
1349     RkAiqAlgoResCom res_com;
1350     Again_ProcResult_V1_t stAgainProcResult;
1351 } RkAiqAlgoProcResAgain;
1352 
1353 typedef struct _RkAiqAlgoPostAgain {
1354     RkAiqAlgoCom com;
1355 } RkAiqAlgoPostAgain;
1356 
1357 typedef struct _RkAiqAlgoPostResAgain {
1358     RkAiqAlgoResCom res_com;
1359 } RkAiqAlgoPostResAgain;
1360 
1361 //again v2
1362 typedef struct _RkAiqAlgoConfigAgainV2 {
1363     RkAiqAlgoCom com;
1364     Again_Config_V2_t stAgainConfig;
1365 } RkAiqAlgoConfigAgainV2;
1366 
1367 typedef struct _RkAiqAlgoProcAgainV2 {
1368     RkAiqAlgoCom com;
1369     int iso;
1370     int hdr_mode;
1371 } RkAiqAlgoProcAgainV2;
1372 
1373 typedef struct _RkAiqAlgoProcResAgainV2 {
1374     RkAiqAlgoResCom res_com;
1375     Again_ProcResult_V2_t stAgainProcResult;
1376 } RkAiqAlgoProcResAgainV2;
1377 
1378 // acac
1379 typedef struct _RkAiqAlgoConfigAcac {
1380     RkAiqAlgoCom com;
1381     isp_drv_share_mem_ops_t* mem_ops;
1382     uint32_t width;
1383     uint32_t height;
1384     bool is_multi_sensor;
1385     bool is_multi_isp;
1386     uint8_t multi_isp_extended_pixel;
1387     char iqpath[255];
1388 } RkAiqAlgoConfigAcac;
1389 
1390 typedef struct _RkAiqAlgoProcAcac {
1391     RkAiqAlgoCom com;
1392     int iso;
1393     int hdr_mode;
1394     float hdr_ratio;
1395     uint8_t raw_bits;
1396 } RkAiqAlgoProcAcac;
1397 
1398 typedef struct _RkAiqAlgoProcResAcac {
1399     RkAiqAlgoResCom res_com;
1400     bool enable;
1401 #if (RKAIQ_HAVE_CAC_V03 || RKAIQ_HAVE_CAC_V10) && defined(ISP_HW_V30)
1402     rkaiq_cac_v10_hw_param_t* config;
1403 #elif RKAIQ_HAVE_CAC_V11
1404     rkaiq_cac_v11_hw_param_t* config;
1405 #endif
1406 } RkAiqAlgoProcResAcac;
1407 
1408 //bayer2dnrv23
1409 typedef struct _RkAiqAlgoConfigAbayer2dnrV23 {
1410     RkAiqAlgoCom com;
1411     Abayer2dnr_Config_V23_t stArawnrConfig;
1412 } RkAiqAlgoConfigAbayer2dnrV23;
1413 
1414 typedef struct _RkAiqAlgoProcAbayer2dnrV23 {
1415     RkAiqAlgoCom com;
1416     int iso;
1417     int hdr_mode;
1418     AblcProc_V32_t* stAblcV32_proc_res;
1419     int bayertnr_en;
1420 } RkAiqAlgoProcAbayer2dnrV23;
1421 
1422 typedef struct _RkAiqAlgoProcResAbayer2dnrV23 {
1423     RkAiqAlgoResCom res_com;
1424     Abayer2dnr_ProcResult_V23_t stArawnrProcResult;
1425 } RkAiqAlgoProcResAbayer2dnrV23;
1426 
1427 //bayertnr v23
1428 typedef struct _RkAiqAlgoConfigAbayertnrV23 {
1429     RkAiqAlgoCom com;
1430     Abayertnr_Config_V23_t stAbayertnrConfig;
1431 } RkAiqAlgoConfigAbayertnrV23;
1432 
1433 typedef struct _RkAiqAlgoProcAbayertnrV23 {
1434     RkAiqAlgoCom com;
1435     int iso;
1436     int hdr_mode;
1437     AblcProc_V32_t* stAblcV32_proc_res;
1438 } RkAiqAlgoProcAbayertnrV23;
1439 
1440 typedef struct _RkAiqAlgoProcResAbayertnrV23 {
1441     RkAiqAlgoResCom res_com;
1442     Abayertnr_ProcResult_V23_t stAbayertnrProcResult;
1443 } RkAiqAlgoProcResAbayertnrV23;
1444 
1445 //ynr v22
1446 typedef struct _RkAiqAlgoConfigAynrV22 {
1447     RkAiqAlgoCom com;
1448     Aynr_Config_V22_t stAynrConfig;
1449 } RkAiqAlgoConfigAynrV22;
1450 
1451 typedef struct _RkAiqAlgoProcAynrV22 {
1452     RkAiqAlgoCom com;
1453     int iso;
1454     int hdr_mode;
1455     AblcProc_V32_t* stAblcV32_proc_res;
1456 } RkAiqAlgoProcAynrV22;
1457 
1458 typedef struct _RkAiqAlgoProcResAynrV22 {
1459     RkAiqAlgoResCom res_com;
1460     Aynr_ProcResult_V22_t stAynrProcResult;
1461 } RkAiqAlgoProcResAynrV22;
1462 
1463 //cnr v30
1464 typedef struct _RkAiqAlgoConfigAcnrV30 {
1465     RkAiqAlgoCom com;
1466     Acnr_Config_V30_t stAcnrConfig;
1467 } RkAiqAlgoConfigAcnrV30;
1468 
1469 typedef struct _RkAiqAlgoProcAcnrV30 {
1470     RkAiqAlgoCom com;
1471     int iso;
1472     int hdr_mode;
1473     AblcProc_V32_t* stAblcV32_proc_res;
1474 } RkAiqAlgoProcAcnrV30;
1475 
1476 typedef struct _RkAiqAlgoProcResAcnrV30 {
1477     RkAiqAlgoResCom res_com;
1478     Acnr_ProcResult_V30_t stAcnrProcResult;
1479 } RkAiqAlgoProcResAcnrV30;
1480 
1481 #endif
1482