xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/algos_camgroup/rk_aiq_algo_camgroup_types.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * rk_aiq_algo_camgroup_types.h
3  *
4  *  Copyright (c) 2021 Rockchip Corporation
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 
20 #ifndef _RK_AIQ_ALGO_CAMGROUP_TYPES_H_
21 #define _RK_AIQ_ALGO_CAMGROUP_TYPES_H_
22 
23 
24 #include "rk_aiq_algo_types.h"
25 #include "RkAiqCalibDbV2Helper.h"
26 
27 #define IS_UPDATE_MEM(result_ptr, result_offset) \
28     *((bool*)((char*)(result_ptr) - (result_offset)))
29 
30 typedef struct rk_aiq_singlecam_3a_result_s {
31     uint8_t _camId;
32     uint32_t _frameId;
33     // ae params
34     struct {
35         RKAiqAecExpInfo_t* exp_tbl;
36         int* exp_tbl_size;
37         RKAiqExpI2cParam_t* exp_i2c_params;
38         rk_aiq_ae_meas_params_t* _aeMeasParams;
39         rk_aiq_hist_meas_params_t* _aeHistMeasParams;
40         XCamVideoBuffer* _aecStats;
41         RkAiqAlgoProcResAeShared_t _aeProcRes;
42         XCamVideoBuffer* _aePreRes;
43         RKAiqAecExpInfo_t _effAecExpInfo;
44         bool _bEffAecExpValid;
45     } aec;
46     // awb params
47     struct {
48         union{
49             rk_aiq_wb_gain_t* _awbGainParams;
50             rk_aiq_wb_gain_v32_t* _awbGainV32Params;
51         };
52         union {
53             rk_aiq_awb_stat_cfg_v200_t*  _awbCfg;
54             rk_aiq_awb_stat_cfg_v201_t*  _awbCfgV201;
55             rk_aiq_awb_stat_cfg_v32_t*  _awbCfgV32;
56             rk_aiq_isp_awb_meas_cfg_v3x_t* _awbCfgV3x;
57         };
58         XCamVideoBuffer* _awbStats;
59         XCamVideoBuffer* _awbProcRes;
60     } awb;
61     rk_aiq_lsc_cfg_t* _lscConfig;
62     AdpccProcResult_t* _dpccConfig;
63     struct {
64         union {
65             rk_aiq_ccm_cfg_t*  _ccmCfg;
66             rk_aiq_ccm_cfg_v2_t*  _ccmCfg_v2;
67         };
68     } accm;
69     rk_aiq_lut3d_cfg_t* _lut3dCfg;
70     RkAiqAdehazeProcResult_t* _adehazeConfig;
71     AgammaProcRes_t* _agammaConfig;
72     RkAiqAdrcProcResult_t* _adrcConfig;
73     RkAiqAmergeProcResult_t* _amergeConfig;
74 
75     struct {
76         union {
77             rk_aiq_isp_blc_v21_t * _blcConfig;
78             rk_aiq_isp_blc_v32_t * _blcConfig_v32;
79         };
80     } ablc;
81 
82     struct aynr_procRes_V3_t {
83         RK_YNR_Fix_V3_t*  _stFix;
84         float  _sigma[YNR_V3_ISO_CURVE_POINT_NUM];
85     };
86 
87     struct {
88         union {
89             RK_YNR_Fix_V22_t*  _aynr_procRes_v22;
90             aynr_procRes_V3_t  _aynr_procRes_v3;
91             RK_YNR_Fix_V2_t*  _aynr_procRes_v2;
92         };
93     } aynr;
94 
95     struct {
96         union {
97             float _aynr_sigma_v22[YNR_V22_ISO_CURVE_POINT_NUM];
98             float _aynr_sigma_v3[YNR_V3_ISO_CURVE_POINT_NUM];
99         };
100     } aynr_sigma;
101 
102     struct {
103         union {
104             RK_CNR_Fix_V30_t*  _acnr_procRes_v30;
105             RK_CNR_Fix_V2_t*  _acnr_procRes_v2;
106             RK_CNR_Fix_V1_t*  _acnr_procRes_v1;
107         };
108     } acnr;
109 
110     struct {
111         union {
112             RK_Bayernr_Fix_V2_t*  _abayernr_procRes_v1;
113             RK_Bayer2dnr_Fix_V2_t*  _abayer2dnr_procRes_v2;
114             RK_Bayer2dnr_Fix_V23_t*  _abayer2dnr_procRes_v23;
115         };
116     } abayernr;
117 
118     struct {
119         union {
120             RK_Bayertnr_Fix_V2_t*  _abayertnr_procRes_v2;
121             RK_Bayertnr_Fix_V23_t*  _abayertnr_procRes_v23;
122         };
123     } abayertnr;
124 
125     struct {
126         union {
127             RK_SHARP_Fix_V3_t*  _asharp_procRes_v3;
128             RK_SHARP_Fix_V4_t*  _asharp_procRes_v4;
129             RK_SHARP_Fix_V33_t*  _asharp_procRes_v33;
130         };
131     } asharp;
132 
133     struct {
134         union {
135             RK_GAIN_Fix_V2_t*  _again_procRes_v2;
136         };
137     } again;
138 } rk_aiq_singlecam_3a_result_t;
139 
140 // for create_contex
141 typedef struct _AlgoCtxInstanceCfgCamGroup {
142     AlgoCtxInstanceCfg cfg_com;
143     // single cam calib
144     const CamCalibDbV2Context_t* s_calibv2;
145     CamCalibDbCamgroup_t* pCamgroupCalib;
146     int camIdArray[RK_AIQ_CAM_GROUP_MAX_CAMS];
147     int camIdArrayLen;
148 } AlgoCtxInstanceCfgCamGroup;
149 
150 // camgroup common params
151 typedef struct _RkAiqAlgoComCamGroup {
152     RkAiqAlgoCom com;
153 } RkAiqAlgoComCamGroup;
154 
155 // for prepare params
156 typedef struct _RkAiqAlgoCamGroupPrepare {
157     RkAiqAlgoComCamGroup gcom;
158     struct {
159         float        LinePeriodsPerField;
160         float        PixelClockFreqMHZ;
161         float        PixelPeriodsPerLine;
162         rk_aiq_sensor_nr_switch_t nr_switch;
163     } aec;
164     int camIdArray[RK_AIQ_CAM_GROUP_MAX_CAMS];
165     int camIdArrayLen;
166     // single cam calib
167     const CamCalibDbV2Context_t* s_calibv2;
168     CamCalibDbCamgroup_t* pCamgroupCalib;
169 } RkAiqAlgoCamGroupPrepare;
170 
171 // for processing output params
172 typedef struct _RkAiqAlgoCamGroupProcOut {
173     RkAiqAlgoResCom gcom;
174     rk_aiq_singlecam_3a_result_t** camgroupParmasArray;
175     int arraySize;
176 } RkAiqAlgoCamGroupProcOut;
177 
178 // for processing input params
179 typedef struct _RkAiqAlgoCamGroupProcIn {
180     RkAiqAlgoComCamGroup gcom;
181     rk_aiq_singlecam_3a_result_t** camgroupParmasArray;
182     AblcProc_V32_t stAblcV32_proc_res;
183     int arraySize;
184     bool _gray_mode;
185     int working_mode;
186     bool _is_bw_sensor;
187     size_t _offset_is_update;
188 } RkAiqAlgoCamGroupProcIn;
189 
190 #endif
191