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