xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/common/rk_aiq_pool.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_POOL_H
17 #define RK_AIQ_POOL_H
18 
19 #include <map>
20 
21 #include "rk_aiq_algo_types.h"
22 #include "rk_aiq_types_priv.h"
23 #include "shared_item_pool.h"
24 #include "thumbnails.h"
25 
26 namespace RkCam {
27 
28 typedef struct RKAiqAecExpInfoWrapper_s {
29     rk_aiq_exposure_params_t new_ae_exp;
30     RKAiqExpI2cParam_t exp_i2c_params;
31     AecProcResult_t      ae_proc_res_rk;
32     Sensor_dpcc_res_t SensorDpccInfo;
33     int algo_id;
RKAiqAecExpInfoWrapper_sRKAiqAecExpInfoWrapper_s34     RKAiqAecExpInfoWrapper_s() {
35         exp_i2c_params.bValid = false;
36     };
37 } RKAiqAecExpInfoWrapper_t;
38 
39 typedef struct RKAiqSensorExpInfo_t: public XCam::BufferData {
40     rk_aiq_exposure_params_t aecExpInfo;
41     Sensor_dpcc_res_t SensorDpccInfo;
42     RKAiqExpI2cParam_t* exp_i2c_params;
43 } RKAiqSensorExpInfo_t;
44 
45 typedef rk_aiq_isp_params_t<RKAiqAecExpInfoWrapper_t> rk_aiq_exposure_params_wrapper_t;
46 typedef SharedItemPool<rk_aiq_exposure_params_wrapper_t> RkAiqExpParamsPool;
47 typedef SharedItemProxy<rk_aiq_exposure_params_wrapper_t> RkAiqExpParamsProxy;
48 
49 typedef RKAiqSensorExpInfo_t rk_aiq_sensor_exp_info_t;
50 typedef SharedItemPool<rk_aiq_sensor_exp_info_t> RkAiqSensorExpParamsPool;
51 typedef SharedItemProxy<rk_aiq_sensor_exp_info_t> RkAiqSensorExpParamsProxy;
52 
53 typedef struct RkAiqSofInfoWrapper_s : public XCam::BufferData {
54     uint32_t sequence;
55     SmartPtr<RkAiqSensorExpParamsProxy> preExp;
56     SmartPtr<RkAiqSensorExpParamsProxy> curExp;
57     SmartPtr<RkAiqSensorExpParamsProxy> nxtExp;
58     int64_t sof;
resetRkAiqSofInfoWrapper_s59     void reset() {
60         preExp.release();
61         curExp.release();
62         nxtExp.release();
63     }
64 } RkAiqSofInfoWrapper_t;
65 
66 typedef struct RKAiqAfInfoWrapper_s : public XCam::BufferData {
67     struct timeval focusStartTim;
68     struct timeval focusEndTim;
69     struct timeval zoomStartTim;
70     struct timeval zoomEndTim;
71     int64_t sofTime;
72     int32_t focusCode;
73     int32_t zoomCode;
74     float angleZ;
75     uint32_t lowPassId;
76     int32_t lowPassFv4_4[RKAIQ_RAWAF_SUMDATA_NUM];
77     int32_t lowPassFv8_8[RKAIQ_RAWAF_SUMDATA_NUM];
78     int32_t lowPassHighLht[RKAIQ_RAWAF_SUMDATA_NUM];
79     int32_t lowPassHighLht2[RKAIQ_RAWAF_SUMDATA_NUM];
80     bool zoomCorrection;
81     bool focusCorrection;
82 } RKAiqAfInfoWrapper_t;
83 
84 typedef struct RkAiqPirisInfoWrapper_s {
85     int             step;
86     int             laststep;
87     bool            update;
88     struct timeval  StartTim;
89     struct timeval  EndTim;
90 } RkAiqPirisInfoWrapper_t;
91 
92 typedef struct RkAiqIrisInfoWrapper_s : public XCam::BufferData {
93     //TODO Merge
94     //RkAiqIrisType_t           IrisType;
95     RkAiqPirisInfoWrapper_t   PIris;
96     RkAiqDCIrisParam_t        DCIris;
97     RkAiqHDCIrisParam_t       HDCIris;
98     uint64_t                  sofTime;
99 } RkAiqIrisInfoWrapper_t;
100 
101 typedef struct RKAiqCpslInfoWrapper_s : public XCam::BufferData {
102     rk_aiq_flash_setting_t fl;
103     bool update_fl;
104     rk_aiq_ir_setting_t ir;
105     rk_aiq_flash_setting_t fl_ir;
106     bool update_ir;
107     uint32_t frame_id;
108 } RKAiqCpslInfoWrapper_t;
109 
110 typedef enum _cam3aResultType {
111     RESULT_TYPE_INVALID = -1,
112     RESULT_TYPE_EXPOSURE_PARAM,
113     RESULT_TYPE_AEC_PARAM,
114     RESULT_TYPE_HIST_PARAM,
115     RESULT_TYPE_AWB_PARAM,
116     RESULT_TYPE_AWBGAIN_PARAM,
117     RESULT_TYPE_AF_PARAM,
118     RESULT_TYPE_DPCC_PARAM,
119     RESULT_TYPE_MERGE_PARAM,
120     RESULT_TYPE_TMO_PARAM,
121     RESULT_TYPE_CCM_PARAM,
122     RESULT_TYPE_LSC_PARAM,
123     RESULT_TYPE_BLC_PARAM,
124     RESULT_TYPE_RAWNR_PARAM,
125     RESULT_TYPE_GIC_PARAM,
126     RESULT_TYPE_DEBAYER_PARAM,
127     RESULT_TYPE_LDCH_PARAM,
128     RESULT_TYPE_LUT3D_PARAM = 0x10,
129     RESULT_TYPE_DEHAZE_PARAM,
130     RESULT_TYPE_AGAMMA_PARAM,
131     RESULT_TYPE_ADEGAMMA_PARAM,
132     RESULT_TYPE_WDR_PARAM,
133     RESULT_TYPE_CSM_PARAM,
134     RESULT_TYPE_CGC_PARAM,
135     RESULT_TYPE_CONV422_PARAM,
136     RESULT_TYPE_YUVCONV_PARAM,
137     RESULT_TYPE_GAIN_PARAM,
138     RESULT_TYPE_CP_PARAM,
139     RESULT_TYPE_IE_PARAM,
140     RESULT_TYPE_MOTION_PARAM,
141     RESULT_TYPE_IRIS_PARAM,
142     RESULT_TYPE_CPSL_PARAM,
143     RESULT_TYPE_FLASH_PARAM,
144 
145     RESULT_TYPE_TNR_PARAM = 0x20,
146     RESULT_TYPE_YNR_PARAM,
147     RESULT_TYPE_UVNR_PARAM,
148     RESULT_TYPE_SHARPEN_PARAM,
149     RESULT_TYPE_EDGEFLT_PARAM,
150     RESULT_TYPE_FEC_PARAM,
151     RESULT_TYPE_ORB_PARAM,
152 
153     RESULT_TYPE_FOCUS_PARAM,
154 
155     // isp21 result
156     RESULT_TYPE_DRC_PARAM = 0x28,
157     // isp3x result
158     RESULT_TYPE_CAC_PARAM = 0x29,
159     RESULT_TYPE_AFD_PARAM = 0x2a,
160     RESULT_TYPE_MAX_PARAM,
161 } cam3aResultType;
162 
163 #if defined(__GNUC__) && !defined(__clang__)
164 #pragma GCC diagnostic push
165 #pragma GCC diagnostic ignored "-Wpedantic"
166 #endif
167 static const char* Cam3aResultType2Str[RESULT_TYPE_MAX_PARAM] = {
168     [RESULT_TYPE_EXPOSURE_PARAM]           = "EXPOSURE",
169     [RESULT_TYPE_AEC_PARAM]          = "AEC",
170     [RESULT_TYPE_HIST_PARAM]         = "HIST",
171     [RESULT_TYPE_AWB_PARAM]          = "AWB",
172     [RESULT_TYPE_AWBGAIN_PARAM]      = "AWB_GAIN",
173     [RESULT_TYPE_AF_PARAM]           = "AF",
174     [RESULT_TYPE_DPCC_PARAM]         = "DPCC",
175     [RESULT_TYPE_MERGE_PARAM]        = "MERGE",
176     [RESULT_TYPE_TMO_PARAM]          = "TMO",
177     [RESULT_TYPE_CCM_PARAM]          = "CCM",
178     [RESULT_TYPE_LSC_PARAM]          = "LSC",
179     [RESULT_TYPE_BLC_PARAM]          = "BLC",
180     [RESULT_TYPE_RAWNR_PARAM]        = "RAWNR",
181     [RESULT_TYPE_GIC_PARAM]          = "GIC",
182     [RESULT_TYPE_DEBAYER_PARAM]      = "DEBAYER",
183     [RESULT_TYPE_LDCH_PARAM]         = "LDCH",
184     [RESULT_TYPE_LUT3D_PARAM]        = "LUT3D",
185     [RESULT_TYPE_DEHAZE_PARAM]       = "DEHAZE",
186     [RESULT_TYPE_AGAMMA_PARAM]       = "AGAMMA",
187     [RESULT_TYPE_ADEGAMMA_PARAM]     = "ADEGAMMA",
188     [RESULT_TYPE_WDR_PARAM]          = "WDR",
189     [RESULT_TYPE_CSM_PARAM]          = "CSM",
190     [RESULT_TYPE_CGC_PARAM]          = "CGC",
191     [RESULT_TYPE_CONV422_PARAM]      = "CONV22",
192     [RESULT_TYPE_YUVCONV_PARAM]      = "YUVCONV",
193     [RESULT_TYPE_GAIN_PARAM]         = "GAIN",
194     [RESULT_TYPE_CP_PARAM]           = "CP",
195     [RESULT_TYPE_IE_PARAM]           = "IE",
196     [RESULT_TYPE_MOTION_PARAM]       = "MOTION",
197     [RESULT_TYPE_IRIS_PARAM]         = "IRIS",
198     [RESULT_TYPE_CPSL_PARAM]         = "CPSL",
199     [RESULT_TYPE_FLASH_PARAM]        = "FLASH",
200     [RESULT_TYPE_TNR_PARAM]          = "TNR",
201     [RESULT_TYPE_YNR_PARAM]          = "YNR",
202     [RESULT_TYPE_UVNR_PARAM]         = "UVNR",
203     [RESULT_TYPE_SHARPEN_PARAM]      = "SHARPEN",
204     [RESULT_TYPE_EDGEFLT_PARAM]      = "EDGEFLT",
205     [RESULT_TYPE_FEC_PARAM]          = "FEC",
206     [RESULT_TYPE_ORB_PARAM]          = "ORB",
207     [RESULT_TYPE_FOCUS_PARAM]        = "FOCUS",
208     [RESULT_TYPE_DRC_PARAM]          = "DRC",
209     [RESULT_TYPE_CAC_PARAM]          = "CAC",
210     [RESULT_TYPE_AFD_PARAM]          = "AFD",
211 };
212 #if defined(__GNUC__) && !defined(__clang__)
213 #pragma GCC diagnostic pop
214 #endif
215 
216 typedef SharedItemBase cam3aResult;
217 typedef std::list<SmartPtr< cam3aResult>> cam3aResultList;
218 typedef std::map<int, std::list<SmartPtr<cam3aResult>>> cam3aResultMap;
219 
220 typedef struct RkAiqThumbnailSrcWrapper_s : public XCam::BufferData {
221     SmartPtr<rkaiq_image_source_t> thumbnail;
222 } RkAiqThumbnailSrcWrapper_t;
223 
224 typedef SharedItemPool<RkAiqIspStats> RkAiqIspStatsIntPool;
225 typedef SharedItemProxy<RkAiqIspStats> RkAiqIspStatsIntProxy;
226 
227 typedef SharedItemPool<RkAiqAecStats> RkAiqAecStatsPool;
228 typedef SharedItemProxy<RkAiqAecStats> RkAiqAecStatsProxy;
229 
230 typedef SharedItemPool<RkAiqAwbStats> RkAiqAwbStatsPool;
231 typedef SharedItemProxy<RkAiqAwbStats> RkAiqAwbStatsProxy;
232 
233 typedef SharedItemPool<RkAiqAtmoStats> RkAiqAtmoStatsPool;
234 typedef SharedItemProxy<RkAiqAtmoStats> RkAiqAtmoStatsProxy;
235 
236 typedef SharedItemPool<RkAiqAdehazeStats> RkAiqAdehazeStatsPool;
237 typedef SharedItemProxy<RkAiqAdehazeStats> RkAiqAdehazeStatsProxy;
238 
239 typedef SharedItemPool<RkAiqAfStats> RkAiqAfStatsPool;
240 typedef SharedItemProxy<RkAiqAfStats> RkAiqAfStatsProxy;
241 
242 typedef SharedItemPool<RkAiqPdafStats> RkAiqPdafStatsPool;
243 typedef SharedItemProxy<RkAiqPdafStats> RkAiqPdafStatsProxy;
244 
245 typedef SharedItemPool<RkAiqSofInfoWrapper_t> RkAiqSofInfoWrapperPool;
246 typedef SharedItemProxy<RkAiqSofInfoWrapper_t> RkAiqSofInfoWrapperProxy;
247 
248 typedef SharedItemPool<RkAiqOrbStats> RkAiqOrbStatsPool;
249 typedef SharedItemProxy<RkAiqOrbStats> RkAiqOrbStatsProxy;
250 
251 typedef SharedItemPool<RkAiqThumbnailSrcWrapper_t> RkAiqThumbnailSrcPool;
252 typedef SharedItemProxy<RkAiqThumbnailSrcWrapper_t> RkAiqThumbnailSrcProxy;
253 
254 class RkAiqIspStats : public XCam::BufferData {
255 public:
RkAiqIspStats()256     explicit RkAiqIspStats() {
257         aec_stats_valid      = false;
258         awb_stats_valid      = false;
259         awb_cfg_effect_valid = false;
260         af_stats_valid       = false;
261         frame_id             = -1;
262     };
~RkAiqIspStats()263     virtual ~RkAiqIspStats() {
264         reset();
265     };
reset()266     void reset() {
267         AecStatsProxy.release();
268         AwbStatsProxy.release();
269         AfStatsProxy.release();
270         AtmoStatsProxy.release();
271         AdehazeStatsProxy.release();
272     }
273     SmartPtr<RkAiqAecStatsProxy> AecStatsProxy = nullptr;
274     bool aec_stats_valid;
275     SmartPtr<RkAiqAwbStatsProxy> AwbStatsProxy = nullptr;
276     bool awb_stats_valid;
277     bool awb_cfg_effect_valid;
278     SmartPtr<RkAiqAfStatsProxy> AfStatsProxy = nullptr;
279     bool af_stats_valid;
280     SmartPtr<RkAiqAtmoStatsProxy> AtmoStatsProxy = nullptr;
281     bool atmo_stats_valid;
282     SmartPtr<RkAiqAdehazeStatsProxy> AdehazeStatsProxy = nullptr;
283     bool adehaze_stats_valid;
284     uint32_t frame_id;
285 
286 private:
287     XCAM_DEAD_COPY(RkAiqIspStats);
288 };
289 
290 typedef RKAiqAfInfoWrapper_t rk_aiq_af_info_wrapper_t;
291 typedef RkAiqIrisInfoWrapper_t rk_aiq_iris_params_wrapper_t;
292 
293 typedef SharedItemPool<rk_aiq_iris_params_wrapper_t> RkAiqIrisParamsPool;
294 typedef SharedItemProxy<rk_aiq_iris_params_wrapper_t> RkAiqIrisParamsProxy;
295 
296 typedef SharedItemPool<rk_aiq_af_info_wrapper_t> RkAiqAfInfoPool;
297 typedef SharedItemProxy<rk_aiq_af_info_wrapper_t> RkAiqAfInfoProxy;
298 typedef SharedItemPool<rk_aiq_focus_params_wrapper_t> RkAiqFocusParamsPool;
299 typedef SharedItemProxy<rk_aiq_focus_params_wrapper_t> RkAiqFocusParamsProxy;
300 typedef SharedItemPool<RKAiqCpslInfoWrapper_t> RkAiqCpslParamsPool;
301 typedef SharedItemProxy<RKAiqCpslInfoWrapper_t> RkAiqCpslParamsProxy;
302 
303 typedef SharedItemPool<rk_aiq_isp_aec_params_v20_t>         RkAiqIspAecParamsPool;
304 typedef SharedItemProxy<rk_aiq_isp_aec_params_v20_t>        RkAiqIspAecParamsProxy;
305 typedef SharedItemPool<rk_aiq_isp_hist_params_v20_t>        RkAiqIspHistParamsPool;
306 typedef SharedItemProxy<rk_aiq_isp_hist_params_v20_t>       RkAiqIspHistParamsProxy;
307 typedef SharedItemPool<rk_aiq_isp_awb_params_v20_t>         RkAiqIspAwbParamsPool;
308 typedef SharedItemProxy<rk_aiq_isp_awb_params_v20_t>        RkAiqIspAwbParamsProxy;
309 typedef SharedItemPool<rk_aiq_isp_awb_gain_params_v20_t>    RkAiqIspAwbGainParamsPool;
310 typedef SharedItemProxy<rk_aiq_isp_awb_gain_params_v20_t>   RkAiqIspAwbGainParamsProxy;
311 typedef SharedItemPool<rk_aiq_isp_af_params_v20_t>          RkAiqIspAfParamsPool;
312 typedef SharedItemProxy<rk_aiq_isp_af_params_v20_t>         RkAiqIspAfParamsProxy;
313 typedef SharedItemPool<rk_aiq_isp_dpcc_params_v20_t>        RkAiqIspDpccParamsPool;
314 typedef SharedItemProxy<rk_aiq_isp_dpcc_params_v20_t>       RkAiqIspDpccParamsProxy;
315 typedef SharedItemPool<rk_aiq_isp_merge_params_v20_t>       RkAiqIspMergeParamsPool;
316 typedef SharedItemProxy<rk_aiq_isp_merge_params_v20_t>      RkAiqIspMergeParamsProxy;
317 typedef SharedItemPool<rk_aiq_isp_tmo_params_v20_t>         RkAiqIspTmoParamsPool;
318 typedef SharedItemProxy<rk_aiq_isp_tmo_params_v20_t>        RkAiqIspTmoParamsProxy;
319 typedef SharedItemPool<rk_aiq_isp_ccm_params_v20_t>         RkAiqIspCcmParamsPool;
320 typedef SharedItemProxy<rk_aiq_isp_ccm_params_v20_t>        RkAiqIspCcmParamsProxy;
321 typedef SharedItemPool<rk_aiq_isp_lsc_params_v20_t>         RkAiqIspLscParamsPool;
322 typedef SharedItemProxy<rk_aiq_isp_lsc_params_v20_t>        RkAiqIspLscParamsProxy;
323 typedef SharedItemPool<rk_aiq_isp_blc_params_v20_t>         RkAiqIspBlcParamsPool;
324 typedef SharedItemProxy<rk_aiq_isp_blc_params_v20_t>        RkAiqIspBlcParamsProxy;
325 typedef SharedItemPool<rk_aiq_isp_rawnr_params_v20_t>       RkAiqIspRawnrParamsPool;
326 typedef SharedItemProxy<rk_aiq_isp_rawnr_params_v20_t>      RkAiqIspRawnrParamsProxy;
327 typedef SharedItemPool<rk_aiq_isp_gic_params_v20_t>         RkAiqIspGicParamsPool;
328 typedef SharedItemProxy<rk_aiq_isp_gic_params_v20_t>        RkAiqIspGicParamsProxy;
329 typedef SharedItemPool<rk_aiq_isp_debayer_params_v20_t>     RkAiqIspDebayerParamsPool;
330 typedef SharedItemProxy<rk_aiq_isp_debayer_params_v20_t>    RkAiqIspDebayerParamsProxy;
331 typedef SharedItemPool<rk_aiq_isp_ldch_params_v20_t>        RkAiqIspLdchParamsPool;
332 typedef SharedItemProxy<rk_aiq_isp_ldch_params_v20_t>       RkAiqIspLdchParamsProxy;
333 typedef SharedItemPool<rk_aiq_isp_lut3d_params_v20_t>       RkAiqIspLut3dParamsPool;
334 typedef SharedItemProxy<rk_aiq_isp_lut3d_params_v20_t>      RkAiqIspLut3dParamsProxy;
335 typedef SharedItemPool<rk_aiq_isp_dehaze_params_v20_t>      RkAiqIspDehazeParamsPool;
336 typedef SharedItemProxy<rk_aiq_isp_dehaze_params_v20_t>     RkAiqIspDehazeParamsProxy;
337 typedef SharedItemPool<rk_aiq_isp_agamma_params_v20_t>      RkAiqIspAgammaParamsPool;
338 typedef SharedItemProxy<rk_aiq_isp_agamma_params_v20_t>     RkAiqIspAgammaParamsProxy;
339 typedef SharedItemPool<rk_aiq_isp_adegamma_params_v20_t>    RkAiqIspAdegammaParamsPool;
340 typedef SharedItemProxy<rk_aiq_isp_adegamma_params_v20_t>   RkAiqIspAdegammaParamsProxy;
341 typedef SharedItemPool<rk_aiq_isp_wdr_params_v20_t>         RkAiqIspWdrParamsPool;
342 typedef SharedItemProxy<rk_aiq_isp_wdr_params_v20_t>        RkAiqIspWdrParamsProxy;
343 typedef SharedItemPool<rk_aiq_isp_csm_params_v20_t>         RkAiqIspCsmParamsPool;
344 typedef SharedItemProxy<rk_aiq_isp_csm_params_v20_t>        RkAiqIspCsmParamsProxy;
345 typedef SharedItemPool<rk_aiq_isp_cgc_params_v20_t>         RkAiqIspCgcParamsPool;
346 typedef SharedItemProxy<rk_aiq_isp_cgc_params_v20_t>        RkAiqIspCgcParamsProxy;
347 typedef SharedItemPool<rk_aiq_isp_conv422_params_v20_t>     RkAiqIspConv422ParamsPool;
348 typedef SharedItemProxy<rk_aiq_isp_conv422_params_v20_t>    RkAiqIspConv422ParamsProxy;
349 typedef SharedItemPool<rk_aiq_isp_yuvconv_params_v20_t>     RkAiqIspYuvconvParamsPool;
350 typedef SharedItemProxy<rk_aiq_isp_yuvconv_params_v20_t>    RkAiqIspYuvconvParamsProxy;
351 typedef SharedItemPool<rk_aiq_isp_gain_params_v20_t>        RkAiqIspGainParamsPool;
352 typedef SharedItemProxy<rk_aiq_isp_gain_params_v20_t>       RkAiqIspGainParamsProxy;
353 typedef SharedItemPool<rk_aiq_isp_cp_params_v20_t>          RkAiqIspCpParamsPool;
354 typedef SharedItemProxy<rk_aiq_isp_cp_params_v20_t>         RkAiqIspCpParamsProxy;
355 typedef SharedItemPool<rk_aiq_isp_ie_params_v20_t>          RkAiqIspIeParamsPool;
356 typedef SharedItemProxy<rk_aiq_isp_ie_params_v20_t>         RkAiqIspIeParamsProxy;
357 typedef SharedItemPool<rk_aiq_isp_motion_params_v20_t>      RkAiqIspMotionParamsPool;
358 typedef SharedItemProxy<rk_aiq_isp_motion_params_v20_t>     RkAiqIspMotionParamsProxy;
359 typedef SharedItemPool<rk_aiq_isp_md_params_v20_t>          RkAiqIspMdParamsPool;
360 typedef SharedItemProxy<rk_aiq_isp_md_params_v20_t>         RkAiqIspMdParamsProxy;
361 
362 typedef SharedItemPool<rk_aiq_isp_tnr_params_v20_t>         RkAiqIspTnrParamsPool;
363 typedef SharedItemProxy<rk_aiq_isp_tnr_params_v20_t>        RkAiqIspTnrParamsProxy;
364 typedef SharedItemPool<rk_aiq_isp_ynr_params_v20_t>         RkAiqIspYnrParamsPool;
365 typedef SharedItemProxy<rk_aiq_isp_ynr_params_v20_t>        RkAiqIspYnrParamsProxy;
366 typedef SharedItemPool<rk_aiq_isp_uvnr_params_v20_t>        RkAiqIspUvnrParamsPool;
367 typedef SharedItemProxy<rk_aiq_isp_uvnr_params_v20_t>       RkAiqIspUvnrParamsProxy;
368 typedef SharedItemPool<rk_aiq_isp_sharpen_params_v20_t>     RkAiqIspSharpenParamsPool;
369 typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v20_t>    RkAiqIspSharpenParamsProxy;
370 typedef SharedItemPool<rk_aiq_isp_edgeflt_params_v20_t>     RkAiqIspEdgefltParamsPool;
371 typedef SharedItemProxy<rk_aiq_isp_edgeflt_params_v20_t>    RkAiqIspEdgefltParamsProxy;
372 typedef SharedItemPool<rk_aiq_isp_fec_params_v20_t>         RkAiqIspFecParamsPool;
373 typedef SharedItemProxy<rk_aiq_isp_fec_params_v20_t>        RkAiqIspFecParamsProxy;
374 typedef SharedItemPool<rk_aiq_isp_orb_params_v20_t>         RkAiqIspOrbParamsPool;
375 typedef SharedItemProxy<rk_aiq_isp_orb_params_v20_t>        RkAiqIspOrbParamsProxy;
376 
377 typedef SharedItemPool<rk_aiq_isp_afd_params_t>             RkAiqIspAfdParamsPool;
378 typedef SharedItemProxy<rk_aiq_isp_afd_params_t>            RkAiqIspAfdParamsProxy;
379 
380 //v21 pools
381 typedef SharedItemPool<rk_aiq_isp_awb_params_v21_t>         RkAiqIspAwbParamsPoolV21;
382 typedef SharedItemProxy<rk_aiq_isp_awb_params_v21_t>        RkAiqIspAwbParamsProxyV21;
383 typedef SharedItemPool<rk_aiq_isp_drc_params_v21_t>         RkAiqIspDrcParamsPool;
384 typedef SharedItemProxy<rk_aiq_isp_drc_params_v21_t>        RkAiqIspDrcParamsProxy;
385 typedef SharedItemPool<rk_aiq_isp_blc_params_v21_t>         RkAiqIspBlcParamsPoolV21;
386 typedef SharedItemProxy<rk_aiq_isp_blc_params_v21_t>        RkAiqIspBlcParamsProxyV21;
387 typedef SharedItemPool<rk_aiq_isp_baynr_params_v21_t>       RkAiqIspBaynrParamsPoolV21;
388 typedef SharedItemProxy<rk_aiq_isp_baynr_params_v21_t>      RkAiqIspBaynrParamsProxyV21;
389 typedef SharedItemPool<rk_aiq_isp_bay3d_params_v21_t>       RkAiqIspBa3dParamsPoolV21;
390 typedef SharedItemProxy<rk_aiq_isp_bay3d_params_v21_t>      RkAiqIspBa3dParamsProxyV21;
391 typedef SharedItemPool<rk_aiq_isp_ynr_params_v21_t>         RkAiqIspYnrParamsPoolV21;
392 typedef SharedItemProxy<rk_aiq_isp_ynr_params_v21_t>        RkAiqIspYnrParamsProxyV21;
393 typedef SharedItemPool<rk_aiq_isp_cnr_params_v21_t>         RkAiqIspCnrParamsPoolV21;
394 typedef SharedItemProxy<rk_aiq_isp_cnr_params_v21_t>        RkAiqIspCnrParamsProxyV21;
395 typedef SharedItemPool<rk_aiq_isp_sharpen_params_v21_t>     RkAiqIspSharpenParamsPoolV21;
396 typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v21_t>    RkAiqIspSharpenParamsProxyV21;
397 
398 //v3x pools
399 typedef SharedItemPool<rk_aiq_isp_awb_params_v3x_t>         RkAiqIspAwbParamsPoolV3x;
400 typedef SharedItemProxy<rk_aiq_isp_awb_params_v3x_t>        RkAiqIspAwbParamsProxyV3x;
401 typedef SharedItemPool<rk_aiq_isp_af_params_v3x_t>          RkAiqIspAfParamsPoolV3x;
402 typedef SharedItemProxy<rk_aiq_isp_af_params_v3x_t>         RkAiqIspAfParamsProxyV3x;
403 typedef SharedItemPool<rk_aiq_isp_baynr_params_v3x_t>       RkAiqIspBaynrParamsPoolV3x;
404 typedef SharedItemProxy<rk_aiq_isp_baynr_params_v3x_t>      RkAiqIspBaynrParamsProxyV3x;
405 typedef SharedItemPool<rk_aiq_isp_bay3d_params_v3x_t>       RkAiqIspBa3dParamsPoolV3x;
406 typedef SharedItemProxy<rk_aiq_isp_bay3d_params_v3x_t>      RkAiqIspBa3dParamsProxyV3x;
407 typedef SharedItemPool<rk_aiq_isp_ynr_params_v3x_t>         RkAiqIspYnrParamsPoolV3x;
408 typedef SharedItemProxy<rk_aiq_isp_ynr_params_v3x_t>        RkAiqIspYnrParamsProxyV3x;
409 typedef SharedItemPool<rk_aiq_isp_cnr_params_v3x_t>         RkAiqIspCnrParamsPoolV3x;
410 typedef SharedItemProxy<rk_aiq_isp_cnr_params_v3x_t>        RkAiqIspCnrParamsProxyV3x;
411 typedef SharedItemPool<rk_aiq_isp_sharpen_params_v3x_t>     RkAiqIspSharpenParamsPoolV3x;
412 typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v3x_t>    RkAiqIspSharpenParamsProxyV3x;
413 typedef SharedItemPool<rk_aiq_isp_cac_params_v3x_t>         RkAiqIspCacParamsPoolV3x;
414 typedef SharedItemProxy<rk_aiq_isp_cac_params_v3x_t>        RkAiqIspCacParamsProxyV3x;
415 typedef SharedItemPool<rk_aiq_isp_gain_params_v3x_t>        RkAiqIspGainParamsPoolV3x;
416 typedef SharedItemProxy<rk_aiq_isp_gain_params_v3x_t>       RkAiqIspGainParamsProxyV3x;
417 typedef SharedItemPool<rk_aiq_isp_tnr_params_v3x_t>         RkAiqIspTnrParamsPoolV3x;
418 typedef SharedItemProxy<rk_aiq_isp_tnr_params_v3x_t>        RkAiqIspTnrParamsProxyV3x;
419 
420 //v32 pools
421 typedef SharedItemPool<rk_aiq_isp_blc_params_v32_t>         RkAiqIspBlcParamsPoolV32;
422 typedef SharedItemProxy<rk_aiq_isp_blc_params_v32_t>        RkAiqIspBlcParamsProxyV32;
423 typedef SharedItemPool<rk_aiq_isp_baynr_params_v32_t>       RkAiqIspBaynrParamsPoolV32;
424 typedef SharedItemProxy<rk_aiq_isp_baynr_params_v32_t>      RkAiqIspBaynrParamsProxyV32;
425 typedef SharedItemPool<rk_aiq_isp_cac_params_v32_t>         RkAiqIspCacParamsPoolV32;
426 typedef SharedItemProxy<rk_aiq_isp_cac_params_v32_t>        RkAiqIspCacParamsProxyV32;
427 typedef SharedItemPool<rk_aiq_isp_debayer_params_v32_t>     RkAiqIspDebayerParamsPoolV32;
428 typedef SharedItemProxy<rk_aiq_isp_debayer_params_v32_t>    RkAiqIspDebayerParamsProxyV32;
429 typedef SharedItemPool<rk_aiq_isp_ccm_params_v32_t>         RkAiqIspCcmParamsPoolV32;
430 typedef SharedItemProxy<rk_aiq_isp_ccm_params_v32_t>        RkAiqIspCcmParamsProxyV32;
431 typedef SharedItemPool<rk_aiq_isp_ldch_params_v32_t>        RkAiqIspLdchParamsPoolV32;
432 typedef SharedItemProxy<rk_aiq_isp_ldch_params_v32_t>       RkAiqIspLdchParamsProxyV32;
433 typedef SharedItemPool<rk_aiq_isp_ynr_params_v32_t>         RkAiqIspYnrParamsPoolV32;
434 typedef SharedItemProxy<rk_aiq_isp_ynr_params_v32_t>        RkAiqIspYnrParamsProxyV32;
435 typedef SharedItemPool<rk_aiq_isp_cnr_params_v32_t>         RkAiqIspCnrParamsPoolV32;
436 typedef SharedItemProxy<rk_aiq_isp_cnr_params_v32_t>        RkAiqIspCnrParamsProxyV32;
437 typedef SharedItemPool<rk_aiq_isp_sharp_params_v32_t>       RkAiqIspSharpParamsPoolV32;
438 typedef SharedItemProxy<rk_aiq_isp_sharp_params_v32_t>      RkAiqIspSharpParamsProxyV32;
439 typedef SharedItemPool<rk_aiq_isp_awb_params_v32_t>         RkAiqIspAwbParamsPoolV32;
440 typedef SharedItemProxy<rk_aiq_isp_awb_params_v32_t>        RkAiqIspAwbParamsProxyV32;
441 typedef SharedItemPool<rk_aiq_isp_af_params_v32_t>          RkAiqIspAfParamsPoolV32;
442 typedef SharedItemProxy<rk_aiq_isp_af_params_v32_t>         RkAiqIspAfParamsProxyV32;
443 typedef SharedItemPool<rk_aiq_isp_tnr_params_v32_t>         RkAiqIspTnrParamsPoolV32;
444 typedef SharedItemProxy<rk_aiq_isp_tnr_params_v32_t>        RkAiqIspTnrParamsProxyV32;
445 typedef SharedItemPool<rk_aiq_isp_awb_gain_params_v32_t>    RkAiqIspAwbGainParamsPoolV32;
446 typedef SharedItemProxy<rk_aiq_isp_awb_gain_params_v32_t>   RkAiqIspAwbGainParamsProxyV32;
447 
448 typedef SharedItemPool<rk_aiq_isp_af_params_v32_lite_t>     RkAiqIspAfParamsPoolV32Lite;
449 typedef SharedItemProxy<rk_aiq_isp_af_params_v32_lite_t>    RkAiqIspAfParamsProxyV32Lite;
450 
451 class RkAiqFullParams : public XCam::BufferData {
452 public:
RkAiqFullParams()453     explicit RkAiqFullParams()
454         : mExposureParams(NULL)
455         , mFocusParams(NULL)
456         , mIrisParams(NULL)
457         , mCpslParams(NULL)
458 
459         , mAecParams(NULL)
460         , mHistParams(NULL)
461         , mAwbParams(NULL)
462         , mAwbGainParams(NULL)
463         , mAfParams(NULL)
464         , mDpccParams(NULL)
465         , mMergeParams(NULL)
466         , mTmoParams(NULL)
467         , mCcmParams(NULL)
468         , mLscParams(NULL)
469         , mBlcParams(NULL)
470         , mRawnrParams(NULL)
471         , mGicParams(NULL)
472         , mDebayerParams(NULL)
473         , mLdchParams(NULL)
474         , mLut3dParams(NULL)
475         , mDehazeParams(NULL)
476         , mAgammaParams(NULL)
477         , mWdrParams(NULL)
478         , mCsmParams(NULL)
479         , mCgcParams(NULL)
480         , mConv422Params(NULL)
481         , mYuvconvParams(NULL)
482         , mGainParams(NULL)
483         , mCpParams(NULL)
484         , mIeParams(NULL)
485         , mMotionParams(NULL)
486         , mMdParams(NULL)
487 
488         , mTnrParams(NULL)
489         , mYnrParams(NULL)
490         , mUvnrParams(NULL)
491         , mSharpenParams(NULL)
492         , mEdgefltParams(NULL)
493         , mFecParams(NULL)
494         , mOrbParams(NULL)
495           // TODO: change full params to list
496           // V21 differential modules
497         , mAwbV21Params(NULL)
498         , mDrcParams(NULL)
499         , mBlcV21Params(NULL)
500         , mBaynrV21Params(NULL)
501           // , mBa3dParams(NULL)
502         , mYnrV21Params(NULL)
503         , mCnrV21Params(NULL)
504         , mSharpenV21Params(NULL)
505         , mAwbV3xParams(NULL)
506         , mAfV3xParams(NULL)
507         , mBaynrV3xParams(NULL)
508         , mYnrV3xParams(NULL)
509         , mCnrV3xParams(NULL)
510         , mSharpenV3xParams(NULL)
511         , mCacV3xParams(NULL)
512         , mGainV3xParams(NULL)
513         , mTnrV3xParams(NULL)
514         , mBlcV32Params(NULL)
515         , mBaynrV32Params(NULL)
516         , mCacV32Params(NULL)
517         , mDebayerV32Params(NULL)
518         , mCcmV32Params(NULL)
519         , mLdchV32Params(NULL)
520         , mYnrV32Params(NULL)
521         , mCnrV32Params(NULL)
522         , mSharpV32Params(NULL)
523         , mAwbV32Params(NULL)
524         , mAfV32Params(NULL)
525         , mTnrV32Params(NULL)
526         , mAwbGainV32Params(NULL)
527         , mAfV32LiteParams(NULL)
528         , mAfdParams(NULL) {
529     };
~RkAiqFullParams()530     ~RkAiqFullParams() {
531         reset();
532     };
533 
reset()534     void reset() {
535 #if 0// Do not release to save cpu usage
536         // MUST release, cause some malloc was made in mExposureParams
537         mExposureParams.release();
538         mFocusParams.release();
539         mIrisParams.release();
540         mCpslParams.release();
541 
542         mAecParams.release();
543         mHistParams.release();
544         mAwbParams.release();
545         mAwbGainParams.release();
546         mAfParams.release();
547         mDpccParams.release();
548         mMergeParams.release();
549         mTmoParams.release();
550         mCcmParams.release();
551         mLscParams.release();
552         mBlcParams.release();
553         mRawnrParams.release();
554         mGicParams.release();
555         mDebayerParams.release();
556         mLdchParams.release();
557         mLut3dParams.release();
558         mDehazeParams.release();
559         mAgammaParams.release();
560         mAdegammaParams.release();
561         mWdrParams.release();
562         mCsmParams.release();
563         mCgcParams.release();
564         mConv422Params.release();
565         mYuvconvParams.release();
566         mGainParams.release();
567         mCpParams.release();
568         mIeParams.release();
569         mMotionParams.release();
570         mMdParams.release();
571 
572         mTnrParams.release();
573         mYnrParams.release();
574         mUvnrParams.release();
575         mSharpenParams.release();
576         mEdgefltParams.release();
577         mFecParams.release();
578         mOrbParams.release();
579 
580         // TODO: change full params to list
581         // V21 differential modules
582         mAwbV21Params.release();
583         mDrcParams.release();
584         mBlcV21Params.release();
585         mBaynrV21Params.release();
586         // mBa3dParams.release();
587         mYnrV21Params.release();
588         mCnrV21Params.release();
589         mSharpenV21Params.release();
590 
591         // TODO: change full params to list
592         // V3x differential modules
593         mAwbV3xParams.release();
594         mAfV3xParams.release();
595         mBaynrV3xParams.release();
596         mYnrV3xParams.release();
597         mCnrV3xParams.release();
598         mSharpenV3xParams.release();
599         mCacV3xParams.release();
600         mGainV3xParams.release();
601         mTnrV3xParams.release();
602 
603         // V32 differential modules
604         mBlcV32Params.release();
605         mBaynrV32Params.release();
606         mCacV32Params.release();
607         mDebayerV32Params.release();
608         mCcmV32Params.release();
609         mLdchV32Params.release();
610         mYnrV32Params.release();
611         mCnrV32Params.release();
612         mSharpV32Params.release();
613         mAwbV32Params.release();
614         mAfV32Params.release();
615         mTnrV32Params.release();
616         mAwbGainV32Params.release();
617 
618         // V32 lite differential modules
619         mAfV32LiteParams.release();
620 
621         mAfdParams.release();
622 #endif
623     };
624     uint32_t                                mFrmId;
625     SmartPtr<RkAiqExpParamsProxy>           mExposureParams;
626     SmartPtr<RkAiqFocusParamsProxy>         mFocusParams;
627     SmartPtr<RkAiqIrisParamsProxy>          mIrisParams;
628     SmartPtr<RkAiqCpslParamsProxy>          mCpslParams;
629     SmartPtr<RkAiqIspAecParamsProxy>        mAecParams;
630     SmartPtr<RkAiqIspHistParamsProxy>       mHistParams;
631     SmartPtr<RkAiqIspAwbParamsProxy>        mAwbParams;
632     SmartPtr<RkAiqIspAwbGainParamsProxy>    mAwbGainParams;
633     SmartPtr<RkAiqIspAfParamsProxy>         mAfParams;
634     SmartPtr<RkAiqIspDpccParamsProxy>       mDpccParams;
635     // SmartPtr<RkAiqIspHdrParamsProxy>        mHdrParams;
636     SmartPtr<RkAiqIspMergeParamsProxy>      mMergeParams;
637     SmartPtr<RkAiqIspTmoParamsProxy>        mTmoParams;
638     SmartPtr<RkAiqIspCcmParamsProxy>        mCcmParams;
639     SmartPtr<RkAiqIspLscParamsProxy>        mLscParams;
640     SmartPtr<RkAiqIspBlcParamsProxy>        mBlcParams;
641     SmartPtr<RkAiqIspRawnrParamsProxy>      mRawnrParams;
642     SmartPtr<RkAiqIspGicParamsProxy>        mGicParams;
643     SmartPtr<RkAiqIspDebayerParamsProxy>    mDebayerParams;
644     SmartPtr<RkAiqIspLdchParamsProxy>       mLdchParams;
645     SmartPtr<RkAiqIspLut3dParamsProxy>      mLut3dParams;
646     SmartPtr<RkAiqIspDehazeParamsProxy>     mDehazeParams;
647     SmartPtr<RkAiqIspAgammaParamsProxy>     mAgammaParams;
648     SmartPtr<RkAiqIspAdegammaParamsProxy>   mAdegammaParams;
649     SmartPtr<RkAiqIspWdrParamsProxy>        mWdrParams;
650     SmartPtr<RkAiqIspCsmParamsProxy>        mCsmParams;
651     SmartPtr<RkAiqIspCgcParamsProxy>        mCgcParams;
652     SmartPtr<RkAiqIspConv422ParamsProxy>    mConv422Params;
653     SmartPtr<RkAiqIspYuvconvParamsProxy>    mYuvconvParams;
654     SmartPtr<RkAiqIspGainParamsProxy>       mGainParams;
655     SmartPtr<RkAiqIspCpParamsProxy>         mCpParams;
656     SmartPtr<RkAiqIspIeParamsProxy>         mIeParams;
657     SmartPtr<RkAiqIspMotionParamsProxy>     mMotionParams;
658     SmartPtr<RkAiqIspMdParamsProxy>         mMdParams;
659 
660     SmartPtr<RkAiqIspTnrParamsProxy>        mTnrParams;
661     SmartPtr<RkAiqIspYnrParamsProxy>        mYnrParams;
662     SmartPtr<RkAiqIspUvnrParamsProxy>       mUvnrParams;
663     SmartPtr<RkAiqIspSharpenParamsProxy>    mSharpenParams;
664     SmartPtr<RkAiqIspEdgefltParamsProxy>    mEdgefltParams;
665     SmartPtr<RkAiqIspFecParamsProxy>        mFecParams;
666     SmartPtr<RkAiqIspOrbParamsProxy>        mOrbParams;
667 
668     // TODO: change full params to list
669     // V21 differential modules
670     SmartPtr<RkAiqIspAwbParamsProxyV21>     mAwbV21Params;
671     SmartPtr<RkAiqIspDrcParamsProxy>        mDrcParams;
672     SmartPtr<RkAiqIspBlcParamsProxyV21>     mBlcV21Params;
673     SmartPtr<RkAiqIspBaynrParamsProxyV21>   mBaynrV21Params;
674     //SmartPtr<RkAiqIspBa3dParamsProxyV21>    mBa3dParams;
675     SmartPtr<RkAiqIspYnrParamsProxyV21>     mYnrV21Params;
676     SmartPtr<RkAiqIspCnrParamsProxyV21>     mCnrV21Params;
677     SmartPtr<RkAiqIspSharpenParamsProxyV21> mSharpenV21Params;
678     // V3x differential modules
679     SmartPtr<RkAiqIspAwbParamsProxyV3x>     mAwbV3xParams;
680     SmartPtr<RkAiqIspAfParamsProxyV3x>      mAfV3xParams;
681     SmartPtr<RkAiqIspBaynrParamsProxyV3x>   mBaynrV3xParams;
682     SmartPtr<RkAiqIspYnrParamsProxyV3x>     mYnrV3xParams;
683     SmartPtr<RkAiqIspCnrParamsProxyV3x>     mCnrV3xParams;
684     SmartPtr<RkAiqIspSharpenParamsProxyV3x> mSharpenV3xParams;
685     SmartPtr<RkAiqIspCacParamsProxyV3x>     mCacV3xParams;
686     SmartPtr<RkAiqIspGainParamsProxyV3x>    mGainV3xParams;
687     SmartPtr<RkAiqIspTnrParamsProxyV3x>     mTnrV3xParams;
688 
689     // V32 differential modules
690     SmartPtr<RkAiqIspBlcParamsProxyV32>      mBlcV32Params;
691     SmartPtr<RkAiqIspBaynrParamsProxyV32>    mBaynrV32Params;
692     SmartPtr<RkAiqIspCacParamsProxyV32>      mCacV32Params;
693     SmartPtr<RkAiqIspDebayerParamsProxyV32>  mDebayerV32Params;
694     SmartPtr<RkAiqIspCcmParamsProxyV32>      mCcmV32Params;
695     SmartPtr<RkAiqIspLdchParamsProxyV32>     mLdchV32Params;
696     SmartPtr<RkAiqIspYnrParamsProxyV32>      mYnrV32Params;
697     SmartPtr<RkAiqIspCnrParamsProxyV32>      mCnrV32Params;
698     SmartPtr<RkAiqIspSharpParamsProxyV32>    mSharpV32Params;
699     SmartPtr<RkAiqIspAwbParamsProxyV32>      mAwbV32Params;
700     SmartPtr<RkAiqIspAfParamsProxyV32>       mAfV32Params;
701     SmartPtr<RkAiqIspTnrParamsProxyV32>      mTnrV32Params;
702     SmartPtr<RkAiqIspAwbGainParamsProxyV32>  mAwbGainV32Params;
703 
704     // V32 lite differential modules
705     SmartPtr<RkAiqIspAfParamsProxyV32Lite>   mAfV32LiteParams;
706 
707     SmartPtr<RkAiqIspAfdParamsProxy>         mAfdParams;
708 private:
709     XCAM_DEAD_COPY (RkAiqFullParams);
710 };
711 
712 typedef SharedItemPool<RkAiqFullParams> RkAiqFullParamsPool;
713 typedef SharedItemProxy<RkAiqFullParams> RkAiqFullParamsProxy;
714 
715 template<class T>
716 struct AlgoRstShared: public XCam::VideoBuffer {
717 public:
AlgoRstSharedAlgoRstShared718     AlgoRstShared () : VideoBuffer() { }
719     typedef T value_type;
720     T   result;
mapAlgoRstShared721     virtual uint8_t* map() override {
722         return (uint8_t*)(&result);
723     }
unmapAlgoRstShared724     virtual bool unmap () override { return false; }
get_fdAlgoRstShared725     virtual int get_fd () override { return -1; }
726 };
727 
728 using RkAiqAlgoPreResAeIntShared = AlgoRstShared<RkAiqAlgoPreResAe>;
729 //using RkAiqAlgoProcResAeIntShared = AlgoRstShared<RkAiqAlgoProcResAe>;
730 using RkAiqAlgoProcResAwbIntShared = AlgoRstShared<RkAiqAlgoProcResAwbShared_t>;
731 using RkAiqAlgoProcResAmdIntShared = AlgoRstShared<RkAiqAlgoProcResAmd>;
732 using RkAiqAlgoProcResAblcIntShared = AlgoRstShared<RkAiqAlgoProcResAblc>;
733 using RkAiqAlgoProcResAblcV32IntShared = AlgoRstShared<RkAiqAlgoProcResAblcV32>;
734 using RkAiqAlgoProcResAynrV3IntShared  = AlgoRstShared<RkAiqAlgoProcResAynrV3>;
735 using RkAiqAlgoProcResAynrV22IntShared = AlgoRstShared<RkAiqAlgoProcResAynrV22>;
736 
737 typedef SharedItemPool<AecProcResult_t> RkAiqAeProcResultPool;
738 typedef SharedItemProxy<AecProcResult_t> RkAiqAeProcResultProxy;
739 
740 typedef SharedItemPool<rkisp_effect_params> RkAiqIspEffParamsPool;
741 typedef SharedItemProxy<rkisp_effect_params> RkAiqIspEffParamsProxy;
742 
743 }
744 
745 #endif //RK_AIQ_POOL_H
746