android13/external/camera_engine_rkaiq/common/rk_aiq_pool.h

749 lines
33 KiB
C++

/*
* Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef RK_AIQ_POOL_H
#define RK_AIQ_POOL_H
#include <map>
#include "rk_aiq_algo_types.h"
#include "rk_aiq_types_priv.h"
#include "shared_item_pool.h"
#include "thumbnails.h"
namespace RkCam {
typedef struct RKAiqAecExpInfoWrapper_s {
rk_aiq_exposure_params_t new_ae_exp;
RKAiqExpI2cParam_t exp_i2c_params;
AecProcResult_t ae_proc_res_rk;
Sensor_dpcc_res_t SensorDpccInfo;
int algo_id;
RKAiqAecExpInfoWrapper_s() {
exp_i2c_params.bValid = false;
};
} RKAiqAecExpInfoWrapper_t;
typedef struct RKAiqSensorExpInfo_t: public XCam::BufferData {
rk_aiq_exposure_params_t aecExpInfo;
Sensor_dpcc_res_t SensorDpccInfo;
RKAiqExpI2cParam_t* exp_i2c_params;
} RKAiqSensorExpInfo_t;
typedef rk_aiq_isp_params_t<RKAiqAecExpInfoWrapper_t> rk_aiq_exposure_params_wrapper_t;
typedef SharedItemPool<rk_aiq_exposure_params_wrapper_t> RkAiqExpParamsPool;
typedef SharedItemProxy<rk_aiq_exposure_params_wrapper_t> RkAiqExpParamsProxy;
typedef RKAiqSensorExpInfo_t rk_aiq_sensor_exp_info_t;
typedef SharedItemPool<rk_aiq_sensor_exp_info_t> RkAiqSensorExpParamsPool;
typedef SharedItemProxy<rk_aiq_sensor_exp_info_t> RkAiqSensorExpParamsProxy;
typedef struct RkAiqSofInfoWrapper_s : public XCam::BufferData {
uint32_t sequence;
SmartPtr<RkAiqSensorExpParamsProxy> preExp;
SmartPtr<RkAiqSensorExpParamsProxy> curExp;
SmartPtr<RkAiqSensorExpParamsProxy> nxtExp;
int64_t sof;
void reset() {
preExp.release();
curExp.release();
nxtExp.release();
}
} RkAiqSofInfoWrapper_t;
typedef struct RKAiqAfInfoWrapper_s : public XCam::BufferData {
struct timeval focusStartTim;
struct timeval focusEndTim;
struct timeval zoomStartTim;
struct timeval zoomEndTim;
int64_t sofTime;
int32_t focusCode;
int32_t zoomCode;
float angleZ;
uint32_t lowPassId;
int32_t lowPassFv4_4[RKAIQ_RAWAF_SUMDATA_NUM];
int32_t lowPassFv8_8[RKAIQ_RAWAF_SUMDATA_NUM];
int32_t lowPassHighLht[RKAIQ_RAWAF_SUMDATA_NUM];
int32_t lowPassHighLht2[RKAIQ_RAWAF_SUMDATA_NUM];
bool zoomCorrection;
bool focusCorrection;
} RKAiqAfInfoWrapper_t;
typedef struct RkAiqPirisInfoWrapper_s {
int step;
int laststep;
bool update;
struct timeval StartTim;
struct timeval EndTim;
} RkAiqPirisInfoWrapper_t;
typedef struct RkAiqIrisInfoWrapper_s : public XCam::BufferData {
//TODO Merge
//RkAiqIrisType_t IrisType;
RkAiqPirisInfoWrapper_t PIris;
RkAiqDCIrisParam_t DCIris;
RkAiqHDCIrisParam_t HDCIris;
uint64_t sofTime;
} RkAiqIrisInfoWrapper_t;
typedef struct RKAiqCpslInfoWrapper_s : public XCam::BufferData {
rk_aiq_flash_setting_t fl;
bool update_fl;
rk_aiq_ir_setting_t ir;
rk_aiq_flash_setting_t fl_ir;
bool update_ir;
uint32_t frame_id;
} RKAiqCpslInfoWrapper_t;
typedef enum _cam3aResultType {
RESULT_TYPE_INVALID = -1,
RESULT_TYPE_EXPOSURE_PARAM,
RESULT_TYPE_AEC_PARAM,
RESULT_TYPE_HIST_PARAM,
RESULT_TYPE_AWB_PARAM,
RESULT_TYPE_AWBGAIN_PARAM,
RESULT_TYPE_AF_PARAM,
RESULT_TYPE_DPCC_PARAM,
RESULT_TYPE_MERGE_PARAM,
RESULT_TYPE_TMO_PARAM,
RESULT_TYPE_CCM_PARAM,
RESULT_TYPE_LSC_PARAM,
RESULT_TYPE_BLC_PARAM,
RESULT_TYPE_RAWNR_PARAM,
RESULT_TYPE_GIC_PARAM,
RESULT_TYPE_DEBAYER_PARAM,
RESULT_TYPE_LDCH_PARAM,
RESULT_TYPE_LUT3D_PARAM = 0x10,
RESULT_TYPE_DEHAZE_PARAM,
RESULT_TYPE_AGAMMA_PARAM,
RESULT_TYPE_ADEGAMMA_PARAM,
RESULT_TYPE_WDR_PARAM,
RESULT_TYPE_CSM_PARAM,
RESULT_TYPE_CGC_PARAM,
RESULT_TYPE_CONV422_PARAM,
RESULT_TYPE_YUVCONV_PARAM,
RESULT_TYPE_GAIN_PARAM,
RESULT_TYPE_CP_PARAM,
RESULT_TYPE_IE_PARAM,
RESULT_TYPE_MOTION_PARAM,
RESULT_TYPE_IRIS_PARAM,
RESULT_TYPE_CPSL_PARAM,
RESULT_TYPE_FLASH_PARAM,
RESULT_TYPE_TNR_PARAM = 0x20,
RESULT_TYPE_YNR_PARAM,
RESULT_TYPE_UVNR_PARAM,
RESULT_TYPE_SHARPEN_PARAM,
RESULT_TYPE_EDGEFLT_PARAM,
RESULT_TYPE_FEC_PARAM,
RESULT_TYPE_ORB_PARAM,
RESULT_TYPE_FOCUS_PARAM,
// isp21 result
RESULT_TYPE_DRC_PARAM = 0x28,
// isp3x result
RESULT_TYPE_CAC_PARAM = 0x29,
RESULT_TYPE_AFD_PARAM = 0x2a,
RESULT_TYPE_MAX_PARAM,
} cam3aResultType;
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif
static const char* Cam3aResultType2Str[RESULT_TYPE_MAX_PARAM] = {
[RESULT_TYPE_EXPOSURE_PARAM] = "EXPOSURE",
[RESULT_TYPE_AEC_PARAM] = "AEC",
[RESULT_TYPE_HIST_PARAM] = "HIST",
[RESULT_TYPE_AWB_PARAM] = "AWB",
[RESULT_TYPE_AWBGAIN_PARAM] = "AWB_GAIN",
[RESULT_TYPE_AF_PARAM] = "AF",
[RESULT_TYPE_DPCC_PARAM] = "DPCC",
[RESULT_TYPE_MERGE_PARAM] = "MERGE",
[RESULT_TYPE_TMO_PARAM] = "TMO",
[RESULT_TYPE_CCM_PARAM] = "CCM",
[RESULT_TYPE_LSC_PARAM] = "LSC",
[RESULT_TYPE_BLC_PARAM] = "BLC",
[RESULT_TYPE_RAWNR_PARAM] = "RAWNR",
[RESULT_TYPE_GIC_PARAM] = "GIC",
[RESULT_TYPE_DEBAYER_PARAM] = "DEBAYER",
[RESULT_TYPE_LDCH_PARAM] = "LDCH",
[RESULT_TYPE_LUT3D_PARAM] = "LUT3D",
[RESULT_TYPE_DEHAZE_PARAM] = "DEHAZE",
[RESULT_TYPE_AGAMMA_PARAM] = "AGAMMA",
[RESULT_TYPE_ADEGAMMA_PARAM] = "ADEGAMMA",
[RESULT_TYPE_WDR_PARAM] = "WDR",
[RESULT_TYPE_CSM_PARAM] = "CSM",
[RESULT_TYPE_CGC_PARAM] = "CGC",
[RESULT_TYPE_CONV422_PARAM] = "CONV22",
[RESULT_TYPE_YUVCONV_PARAM] = "YUVCONV",
[RESULT_TYPE_GAIN_PARAM] = "GAIN",
[RESULT_TYPE_CP_PARAM] = "CP",
[RESULT_TYPE_IE_PARAM] = "IE",
[RESULT_TYPE_MOTION_PARAM] = "MOTION",
[RESULT_TYPE_IRIS_PARAM] = "IRIS",
[RESULT_TYPE_CPSL_PARAM] = "CPSL",
[RESULT_TYPE_FLASH_PARAM] = "FLASH",
[RESULT_TYPE_TNR_PARAM] = "TNR",
[RESULT_TYPE_YNR_PARAM] = "YNR",
[RESULT_TYPE_UVNR_PARAM] = "UVNR",
[RESULT_TYPE_SHARPEN_PARAM] = "SHARPEN",
[RESULT_TYPE_EDGEFLT_PARAM] = "EDGEFLT",
[RESULT_TYPE_FEC_PARAM] = "FEC",
[RESULT_TYPE_ORB_PARAM] = "ORB",
[RESULT_TYPE_FOCUS_PARAM] = "FOCUS",
[RESULT_TYPE_DRC_PARAM] = "DRC",
[RESULT_TYPE_CAC_PARAM] = "CAC",
[RESULT_TYPE_AFD_PARAM] = "AFD",
};
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic pop
#endif
typedef SharedItemBase cam3aResult;
typedef std::list<SmartPtr< cam3aResult>> cam3aResultList;
typedef std::map<int, std::list<SmartPtr<cam3aResult>>> cam3aResultMap;
typedef struct RkAiqThumbnailSrcWrapper_s : public XCam::BufferData {
SmartPtr<rkaiq_image_source_t> thumbnail;
} RkAiqThumbnailSrcWrapper_t;
typedef SharedItemPool<RkAiqIspStats> RkAiqIspStatsIntPool;
typedef SharedItemProxy<RkAiqIspStats> RkAiqIspStatsIntProxy;
typedef SharedItemPool<RkAiqAecStats> RkAiqAecStatsPool;
typedef SharedItemProxy<RkAiqAecStats> RkAiqAecStatsProxy;
typedef SharedItemPool<RkAiqAwbStats> RkAiqAwbStatsPool;
typedef SharedItemProxy<RkAiqAwbStats> RkAiqAwbStatsProxy;
typedef SharedItemPool<RkAiqAtmoStats> RkAiqAtmoStatsPool;
typedef SharedItemProxy<RkAiqAtmoStats> RkAiqAtmoStatsProxy;
typedef SharedItemPool<RkAiqAdehazeStats> RkAiqAdehazeStatsPool;
typedef SharedItemProxy<RkAiqAdehazeStats> RkAiqAdehazeStatsProxy;
typedef SharedItemPool<RkAiqAfStats> RkAiqAfStatsPool;
typedef SharedItemProxy<RkAiqAfStats> RkAiqAfStatsProxy;
typedef SharedItemPool<RkAiqPdafStats> RkAiqPdafStatsPool;
typedef SharedItemProxy<RkAiqPdafStats> RkAiqPdafStatsProxy;
typedef SharedItemPool<RkAiqSofInfoWrapper_t> RkAiqSofInfoWrapperPool;
typedef SharedItemProxy<RkAiqSofInfoWrapper_t> RkAiqSofInfoWrapperProxy;
typedef SharedItemPool<RkAiqOrbStats> RkAiqOrbStatsPool;
typedef SharedItemProxy<RkAiqOrbStats> RkAiqOrbStatsProxy;
typedef SharedItemPool<RkAiqThumbnailSrcWrapper_t> RkAiqThumbnailSrcPool;
typedef SharedItemProxy<RkAiqThumbnailSrcWrapper_t> RkAiqThumbnailSrcProxy;
class RkAiqIspStats : public XCam::BufferData {
public:
explicit RkAiqIspStats() {
aec_stats_valid = false;
awb_stats_valid = false;
awb_cfg_effect_valid = false;
af_stats_valid = false;
atmo_stats_valid = false;
adehaze_stats_valid = false;
frame_id = -1;
};
virtual ~RkAiqIspStats() {
reset();
};
void reset() {
AecStatsProxy.release();
AwbStatsProxy.release();
AfStatsProxy.release();
AtmoStatsProxy.release();
AdehazeStatsProxy.release();
}
SmartPtr<RkAiqAecStatsProxy> AecStatsProxy = nullptr;
bool aec_stats_valid;
SmartPtr<RkAiqAwbStatsProxy> AwbStatsProxy = nullptr;
bool awb_stats_valid;
bool awb_cfg_effect_valid;
SmartPtr<RkAiqAfStatsProxy> AfStatsProxy = nullptr;
bool af_stats_valid;
SmartPtr<RkAiqAtmoStatsProxy> AtmoStatsProxy = nullptr;
bool atmo_stats_valid;
SmartPtr<RkAiqAdehazeStatsProxy> AdehazeStatsProxy = nullptr;
bool adehaze_stats_valid;
uint32_t frame_id;
private:
XCAM_DEAD_COPY(RkAiqIspStats);
};
typedef RKAiqAfInfoWrapper_t rk_aiq_af_info_wrapper_t;
typedef RkAiqIrisInfoWrapper_t rk_aiq_iris_params_wrapper_t;
typedef SharedItemPool<rk_aiq_iris_params_wrapper_t> RkAiqIrisParamsPool;
typedef SharedItemProxy<rk_aiq_iris_params_wrapper_t> RkAiqIrisParamsProxy;
typedef SharedItemPool<rk_aiq_af_info_wrapper_t> RkAiqAfInfoPool;
typedef SharedItemProxy<rk_aiq_af_info_wrapper_t> RkAiqAfInfoProxy;
typedef SharedItemPool<rk_aiq_focus_params_wrapper_t> RkAiqFocusParamsPool;
typedef SharedItemProxy<rk_aiq_focus_params_wrapper_t> RkAiqFocusParamsProxy;
typedef SharedItemPool<RKAiqCpslInfoWrapper_t> RkAiqCpslParamsPool;
typedef SharedItemProxy<RKAiqCpslInfoWrapper_t> RkAiqCpslParamsProxy;
typedef SharedItemPool<rk_aiq_isp_aec_params_v20_t> RkAiqIspAecParamsPool;
typedef SharedItemProxy<rk_aiq_isp_aec_params_v20_t> RkAiqIspAecParamsProxy;
typedef SharedItemPool<rk_aiq_isp_hist_params_v20_t> RkAiqIspHistParamsPool;
typedef SharedItemProxy<rk_aiq_isp_hist_params_v20_t> RkAiqIspHistParamsProxy;
typedef SharedItemPool<rk_aiq_isp_awb_params_v20_t> RkAiqIspAwbParamsPool;
typedef SharedItemProxy<rk_aiq_isp_awb_params_v20_t> RkAiqIspAwbParamsProxy;
typedef SharedItemPool<rk_aiq_isp_awb_gain_params_v20_t> RkAiqIspAwbGainParamsPool;
typedef SharedItemProxy<rk_aiq_isp_awb_gain_params_v20_t> RkAiqIspAwbGainParamsProxy;
typedef SharedItemPool<rk_aiq_isp_af_params_v20_t> RkAiqIspAfParamsPool;
typedef SharedItemProxy<rk_aiq_isp_af_params_v20_t> RkAiqIspAfParamsProxy;
typedef SharedItemPool<rk_aiq_isp_dpcc_params_v20_t> RkAiqIspDpccParamsPool;
typedef SharedItemProxy<rk_aiq_isp_dpcc_params_v20_t> RkAiqIspDpccParamsProxy;
typedef SharedItemPool<rk_aiq_isp_merge_params_v20_t> RkAiqIspMergeParamsPool;
typedef SharedItemProxy<rk_aiq_isp_merge_params_v20_t> RkAiqIspMergeParamsProxy;
typedef SharedItemPool<rk_aiq_isp_tmo_params_v20_t> RkAiqIspTmoParamsPool;
typedef SharedItemProxy<rk_aiq_isp_tmo_params_v20_t> RkAiqIspTmoParamsProxy;
typedef SharedItemPool<rk_aiq_isp_ccm_params_v20_t> RkAiqIspCcmParamsPool;
typedef SharedItemProxy<rk_aiq_isp_ccm_params_v20_t> RkAiqIspCcmParamsProxy;
typedef SharedItemPool<rk_aiq_isp_lsc_params_v20_t> RkAiqIspLscParamsPool;
typedef SharedItemProxy<rk_aiq_isp_lsc_params_v20_t> RkAiqIspLscParamsProxy;
typedef SharedItemPool<rk_aiq_isp_blc_params_v20_t> RkAiqIspBlcParamsPool;
typedef SharedItemProxy<rk_aiq_isp_blc_params_v20_t> RkAiqIspBlcParamsProxy;
typedef SharedItemPool<rk_aiq_isp_rawnr_params_v20_t> RkAiqIspRawnrParamsPool;
typedef SharedItemProxy<rk_aiq_isp_rawnr_params_v20_t> RkAiqIspRawnrParamsProxy;
typedef SharedItemPool<rk_aiq_isp_gic_params_v20_t> RkAiqIspGicParamsPool;
typedef SharedItemProxy<rk_aiq_isp_gic_params_v20_t> RkAiqIspGicParamsProxy;
typedef SharedItemPool<rk_aiq_isp_debayer_params_v20_t> RkAiqIspDebayerParamsPool;
typedef SharedItemProxy<rk_aiq_isp_debayer_params_v20_t> RkAiqIspDebayerParamsProxy;
typedef SharedItemPool<rk_aiq_isp_ldch_params_v20_t> RkAiqIspLdchParamsPool;
typedef SharedItemProxy<rk_aiq_isp_ldch_params_v20_t> RkAiqIspLdchParamsProxy;
typedef SharedItemPool<rk_aiq_isp_lut3d_params_v20_t> RkAiqIspLut3dParamsPool;
typedef SharedItemProxy<rk_aiq_isp_lut3d_params_v20_t> RkAiqIspLut3dParamsProxy;
typedef SharedItemPool<rk_aiq_isp_dehaze_params_v20_t> RkAiqIspDehazeParamsPool;
typedef SharedItemProxy<rk_aiq_isp_dehaze_params_v20_t> RkAiqIspDehazeParamsProxy;
typedef SharedItemPool<rk_aiq_isp_agamma_params_v20_t> RkAiqIspAgammaParamsPool;
typedef SharedItemProxy<rk_aiq_isp_agamma_params_v20_t> RkAiqIspAgammaParamsProxy;
typedef SharedItemPool<rk_aiq_isp_adegamma_params_v20_t> RkAiqIspAdegammaParamsPool;
typedef SharedItemProxy<rk_aiq_isp_adegamma_params_v20_t> RkAiqIspAdegammaParamsProxy;
typedef SharedItemPool<rk_aiq_isp_wdr_params_v20_t> RkAiqIspWdrParamsPool;
typedef SharedItemProxy<rk_aiq_isp_wdr_params_v20_t> RkAiqIspWdrParamsProxy;
typedef SharedItemPool<rk_aiq_isp_csm_params_v20_t> RkAiqIspCsmParamsPool;
typedef SharedItemProxy<rk_aiq_isp_csm_params_v20_t> RkAiqIspCsmParamsProxy;
typedef SharedItemPool<rk_aiq_isp_cgc_params_v20_t> RkAiqIspCgcParamsPool;
typedef SharedItemProxy<rk_aiq_isp_cgc_params_v20_t> RkAiqIspCgcParamsProxy;
typedef SharedItemPool<rk_aiq_isp_conv422_params_v20_t> RkAiqIspConv422ParamsPool;
typedef SharedItemProxy<rk_aiq_isp_conv422_params_v20_t> RkAiqIspConv422ParamsProxy;
typedef SharedItemPool<rk_aiq_isp_yuvconv_params_v20_t> RkAiqIspYuvconvParamsPool;
typedef SharedItemProxy<rk_aiq_isp_yuvconv_params_v20_t> RkAiqIspYuvconvParamsProxy;
typedef SharedItemPool<rk_aiq_isp_gain_params_v20_t> RkAiqIspGainParamsPool;
typedef SharedItemProxy<rk_aiq_isp_gain_params_v20_t> RkAiqIspGainParamsProxy;
typedef SharedItemPool<rk_aiq_isp_cp_params_v20_t> RkAiqIspCpParamsPool;
typedef SharedItemProxy<rk_aiq_isp_cp_params_v20_t> RkAiqIspCpParamsProxy;
typedef SharedItemPool<rk_aiq_isp_ie_params_v20_t> RkAiqIspIeParamsPool;
typedef SharedItemProxy<rk_aiq_isp_ie_params_v20_t> RkAiqIspIeParamsProxy;
typedef SharedItemPool<rk_aiq_isp_motion_params_v20_t> RkAiqIspMotionParamsPool;
typedef SharedItemProxy<rk_aiq_isp_motion_params_v20_t> RkAiqIspMotionParamsProxy;
typedef SharedItemPool<rk_aiq_isp_md_params_v20_t> RkAiqIspMdParamsPool;
typedef SharedItemProxy<rk_aiq_isp_md_params_v20_t> RkAiqIspMdParamsProxy;
typedef SharedItemPool<rk_aiq_isp_tnr_params_v20_t> RkAiqIspTnrParamsPool;
typedef SharedItemProxy<rk_aiq_isp_tnr_params_v20_t> RkAiqIspTnrParamsProxy;
typedef SharedItemPool<rk_aiq_isp_ynr_params_v20_t> RkAiqIspYnrParamsPool;
typedef SharedItemProxy<rk_aiq_isp_ynr_params_v20_t> RkAiqIspYnrParamsProxy;
typedef SharedItemPool<rk_aiq_isp_uvnr_params_v20_t> RkAiqIspUvnrParamsPool;
typedef SharedItemProxy<rk_aiq_isp_uvnr_params_v20_t> RkAiqIspUvnrParamsProxy;
typedef SharedItemPool<rk_aiq_isp_sharpen_params_v20_t> RkAiqIspSharpenParamsPool;
typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v20_t> RkAiqIspSharpenParamsProxy;
typedef SharedItemPool<rk_aiq_isp_edgeflt_params_v20_t> RkAiqIspEdgefltParamsPool;
typedef SharedItemProxy<rk_aiq_isp_edgeflt_params_v20_t> RkAiqIspEdgefltParamsProxy;
typedef SharedItemPool<rk_aiq_isp_fec_params_v20_t> RkAiqIspFecParamsPool;
typedef SharedItemProxy<rk_aiq_isp_fec_params_v20_t> RkAiqIspFecParamsProxy;
typedef SharedItemPool<rk_aiq_isp_orb_params_v20_t> RkAiqIspOrbParamsPool;
typedef SharedItemProxy<rk_aiq_isp_orb_params_v20_t> RkAiqIspOrbParamsProxy;
typedef SharedItemPool<rk_aiq_isp_afd_params_t> RkAiqIspAfdParamsPool;
typedef SharedItemProxy<rk_aiq_isp_afd_params_t> RkAiqIspAfdParamsProxy;
//v21 pools
typedef SharedItemPool<rk_aiq_isp_awb_params_v21_t> RkAiqIspAwbParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_awb_params_v21_t> RkAiqIspAwbParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_drc_params_v21_t> RkAiqIspDrcParamsPool;
typedef SharedItemProxy<rk_aiq_isp_drc_params_v21_t> RkAiqIspDrcParamsProxy;
typedef SharedItemPool<rk_aiq_isp_blc_params_v21_t> RkAiqIspBlcParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_blc_params_v21_t> RkAiqIspBlcParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_baynr_params_v21_t> RkAiqIspBaynrParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_baynr_params_v21_t> RkAiqIspBaynrParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_bay3d_params_v21_t> RkAiqIspBa3dParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_bay3d_params_v21_t> RkAiqIspBa3dParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_ynr_params_v21_t> RkAiqIspYnrParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_ynr_params_v21_t> RkAiqIspYnrParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_cnr_params_v21_t> RkAiqIspCnrParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_cnr_params_v21_t> RkAiqIspCnrParamsProxyV21;
typedef SharedItemPool<rk_aiq_isp_sharpen_params_v21_t> RkAiqIspSharpenParamsPoolV21;
typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v21_t> RkAiqIspSharpenParamsProxyV21;
//v3x pools
typedef SharedItemPool<rk_aiq_isp_awb_params_v3x_t> RkAiqIspAwbParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_awb_params_v3x_t> RkAiqIspAwbParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_af_params_v3x_t> RkAiqIspAfParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_af_params_v3x_t> RkAiqIspAfParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_baynr_params_v3x_t> RkAiqIspBaynrParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_baynr_params_v3x_t> RkAiqIspBaynrParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_bay3d_params_v3x_t> RkAiqIspBa3dParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_bay3d_params_v3x_t> RkAiqIspBa3dParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_ynr_params_v3x_t> RkAiqIspYnrParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_ynr_params_v3x_t> RkAiqIspYnrParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_cnr_params_v3x_t> RkAiqIspCnrParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_cnr_params_v3x_t> RkAiqIspCnrParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_sharpen_params_v3x_t> RkAiqIspSharpenParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_sharpen_params_v3x_t> RkAiqIspSharpenParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_cac_params_v3x_t> RkAiqIspCacParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_cac_params_v3x_t> RkAiqIspCacParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_gain_params_v3x_t> RkAiqIspGainParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_gain_params_v3x_t> RkAiqIspGainParamsProxyV3x;
typedef SharedItemPool<rk_aiq_isp_tnr_params_v3x_t> RkAiqIspTnrParamsPoolV3x;
typedef SharedItemProxy<rk_aiq_isp_tnr_params_v3x_t> RkAiqIspTnrParamsProxyV3x;
//v32 pools
typedef SharedItemPool<rk_aiq_isp_blc_params_v32_t> RkAiqIspBlcParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_blc_params_v32_t> RkAiqIspBlcParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_baynr_params_v32_t> RkAiqIspBaynrParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_baynr_params_v32_t> RkAiqIspBaynrParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_cac_params_v32_t> RkAiqIspCacParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_cac_params_v32_t> RkAiqIspCacParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_debayer_params_v32_t> RkAiqIspDebayerParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_debayer_params_v32_t> RkAiqIspDebayerParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_ccm_params_v32_t> RkAiqIspCcmParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_ccm_params_v32_t> RkAiqIspCcmParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_ldch_params_v32_t> RkAiqIspLdchParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_ldch_params_v32_t> RkAiqIspLdchParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_ynr_params_v32_t> RkAiqIspYnrParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_ynr_params_v32_t> RkAiqIspYnrParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_cnr_params_v32_t> RkAiqIspCnrParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_cnr_params_v32_t> RkAiqIspCnrParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_sharp_params_v32_t> RkAiqIspSharpParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_sharp_params_v32_t> RkAiqIspSharpParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_awb_params_v32_t> RkAiqIspAwbParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_awb_params_v32_t> RkAiqIspAwbParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_af_params_v32_t> RkAiqIspAfParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_af_params_v32_t> RkAiqIspAfParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_tnr_params_v32_t> RkAiqIspTnrParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_tnr_params_v32_t> RkAiqIspTnrParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_awb_gain_params_v32_t> RkAiqIspAwbGainParamsPoolV32;
typedef SharedItemProxy<rk_aiq_isp_awb_gain_params_v32_t> RkAiqIspAwbGainParamsProxyV32;
typedef SharedItemPool<rk_aiq_isp_af_params_v32_lite_t> RkAiqIspAfParamsPoolV32Lite;
typedef SharedItemProxy<rk_aiq_isp_af_params_v32_lite_t> RkAiqIspAfParamsProxyV32Lite;
class RkAiqFullParams : public XCam::BufferData {
public:
explicit RkAiqFullParams()
: mFrmId(0)
, mExposureParams(NULL)
, mFocusParams(NULL)
, mIrisParams(NULL)
, mCpslParams(NULL)
, mAecParams(NULL)
, mHistParams(NULL)
, mAwbParams(NULL)
, mAwbGainParams(NULL)
, mAfParams(NULL)
, mDpccParams(NULL)
, mMergeParams(NULL)
, mTmoParams(NULL)
, mCcmParams(NULL)
, mLscParams(NULL)
, mBlcParams(NULL)
, mRawnrParams(NULL)
, mGicParams(NULL)
, mDebayerParams(NULL)
, mLdchParams(NULL)
, mLut3dParams(NULL)
, mDehazeParams(NULL)
, mAgammaParams(NULL)
, mWdrParams(NULL)
, mCsmParams(NULL)
, mCgcParams(NULL)
, mConv422Params(NULL)
, mYuvconvParams(NULL)
, mGainParams(NULL)
, mCpParams(NULL)
, mIeParams(NULL)
, mMotionParams(NULL)
, mMdParams(NULL)
, mTnrParams(NULL)
, mYnrParams(NULL)
, mUvnrParams(NULL)
, mSharpenParams(NULL)
, mEdgefltParams(NULL)
, mFecParams(NULL)
, mOrbParams(NULL)
// TODO: change full params to list
// V21 differential modules
, mAwbV21Params(NULL)
, mDrcParams(NULL)
, mBlcV21Params(NULL)
, mBaynrV21Params(NULL)
// , mBa3dParams(NULL)
, mYnrV21Params(NULL)
, mCnrV21Params(NULL)
, mSharpenV21Params(NULL)
, mAwbV3xParams(NULL)
, mAfV3xParams(NULL)
, mBaynrV3xParams(NULL)
, mYnrV3xParams(NULL)
, mCnrV3xParams(NULL)
, mSharpenV3xParams(NULL)
, mCacV3xParams(NULL)
, mGainV3xParams(NULL)
, mTnrV3xParams(NULL)
, mBlcV32Params(NULL)
, mBaynrV32Params(NULL)
, mCacV32Params(NULL)
, mDebayerV32Params(NULL)
, mCcmV32Params(NULL)
, mLdchV32Params(NULL)
, mYnrV32Params(NULL)
, mCnrV32Params(NULL)
, mSharpV32Params(NULL)
, mAwbV32Params(NULL)
, mAfV32Params(NULL)
, mTnrV32Params(NULL)
, mAwbGainV32Params(NULL)
, mAfV32LiteParams(NULL)
, mAfdParams(NULL) {
};
~RkAiqFullParams() {
reset();
};
void reset() {
#if 0// Do not release to save cpu usage
// MUST release, cause some malloc was made in mExposureParams
mExposureParams.release();
mFocusParams.release();
mIrisParams.release();
mCpslParams.release();
mAecParams.release();
mHistParams.release();
mAwbParams.release();
mAwbGainParams.release();
mAfParams.release();
mDpccParams.release();
mMergeParams.release();
mTmoParams.release();
mCcmParams.release();
mLscParams.release();
mBlcParams.release();
mRawnrParams.release();
mGicParams.release();
mDebayerParams.release();
mLdchParams.release();
mLut3dParams.release();
mDehazeParams.release();
mAgammaParams.release();
mAdegammaParams.release();
mWdrParams.release();
mCsmParams.release();
mCgcParams.release();
mConv422Params.release();
mYuvconvParams.release();
mGainParams.release();
mCpParams.release();
mIeParams.release();
mMotionParams.release();
mMdParams.release();
mTnrParams.release();
mYnrParams.release();
mUvnrParams.release();
mSharpenParams.release();
mEdgefltParams.release();
mFecParams.release();
mOrbParams.release();
// TODO: change full params to list
// V21 differential modules
mAwbV21Params.release();
mDrcParams.release();
mBlcV21Params.release();
mBaynrV21Params.release();
// mBa3dParams.release();
mYnrV21Params.release();
mCnrV21Params.release();
mSharpenV21Params.release();
// TODO: change full params to list
// V3x differential modules
mAwbV3xParams.release();
mAfV3xParams.release();
mBaynrV3xParams.release();
mYnrV3xParams.release();
mCnrV3xParams.release();
mSharpenV3xParams.release();
mCacV3xParams.release();
mGainV3xParams.release();
mTnrV3xParams.release();
// V32 differential modules
mBlcV32Params.release();
mBaynrV32Params.release();
mCacV32Params.release();
mDebayerV32Params.release();
mCcmV32Params.release();
mLdchV32Params.release();
mYnrV32Params.release();
mCnrV32Params.release();
mSharpV32Params.release();
mAwbV32Params.release();
mAfV32Params.release();
mTnrV32Params.release();
mAwbGainV32Params.release();
// V32 lite differential modules
mAfV32LiteParams.release();
mAfdParams.release();
#endif
};
uint32_t mFrmId;
SmartPtr<RkAiqExpParamsProxy> mExposureParams;
SmartPtr<RkAiqFocusParamsProxy> mFocusParams;
SmartPtr<RkAiqIrisParamsProxy> mIrisParams;
SmartPtr<RkAiqCpslParamsProxy> mCpslParams;
SmartPtr<RkAiqIspAecParamsProxy> mAecParams;
SmartPtr<RkAiqIspHistParamsProxy> mHistParams;
SmartPtr<RkAiqIspAwbParamsProxy> mAwbParams;
SmartPtr<RkAiqIspAwbGainParamsProxy> mAwbGainParams;
SmartPtr<RkAiqIspAfParamsProxy> mAfParams;
SmartPtr<RkAiqIspDpccParamsProxy> mDpccParams;
// SmartPtr<RkAiqIspHdrParamsProxy> mHdrParams;
SmartPtr<RkAiqIspMergeParamsProxy> mMergeParams;
SmartPtr<RkAiqIspTmoParamsProxy> mTmoParams;
SmartPtr<RkAiqIspCcmParamsProxy> mCcmParams;
SmartPtr<RkAiqIspLscParamsProxy> mLscParams;
SmartPtr<RkAiqIspBlcParamsProxy> mBlcParams;
SmartPtr<RkAiqIspRawnrParamsProxy> mRawnrParams;
SmartPtr<RkAiqIspGicParamsProxy> mGicParams;
SmartPtr<RkAiqIspDebayerParamsProxy> mDebayerParams;
SmartPtr<RkAiqIspLdchParamsProxy> mLdchParams;
SmartPtr<RkAiqIspLut3dParamsProxy> mLut3dParams;
SmartPtr<RkAiqIspDehazeParamsProxy> mDehazeParams;
SmartPtr<RkAiqIspAgammaParamsProxy> mAgammaParams;
SmartPtr<RkAiqIspAdegammaParamsProxy> mAdegammaParams;
SmartPtr<RkAiqIspWdrParamsProxy> mWdrParams;
SmartPtr<RkAiqIspCsmParamsProxy> mCsmParams;
SmartPtr<RkAiqIspCgcParamsProxy> mCgcParams;
SmartPtr<RkAiqIspConv422ParamsProxy> mConv422Params;
SmartPtr<RkAiqIspYuvconvParamsProxy> mYuvconvParams;
SmartPtr<RkAiqIspGainParamsProxy> mGainParams;
SmartPtr<RkAiqIspCpParamsProxy> mCpParams;
SmartPtr<RkAiqIspIeParamsProxy> mIeParams;
SmartPtr<RkAiqIspMotionParamsProxy> mMotionParams;
SmartPtr<RkAiqIspMdParamsProxy> mMdParams;
SmartPtr<RkAiqIspTnrParamsProxy> mTnrParams;
SmartPtr<RkAiqIspYnrParamsProxy> mYnrParams;
SmartPtr<RkAiqIspUvnrParamsProxy> mUvnrParams;
SmartPtr<RkAiqIspSharpenParamsProxy> mSharpenParams;
SmartPtr<RkAiqIspEdgefltParamsProxy> mEdgefltParams;
SmartPtr<RkAiqIspFecParamsProxy> mFecParams;
SmartPtr<RkAiqIspOrbParamsProxy> mOrbParams;
// TODO: change full params to list
// V21 differential modules
SmartPtr<RkAiqIspAwbParamsProxyV21> mAwbV21Params;
SmartPtr<RkAiqIspDrcParamsProxy> mDrcParams;
SmartPtr<RkAiqIspBlcParamsProxyV21> mBlcV21Params;
SmartPtr<RkAiqIspBaynrParamsProxyV21> mBaynrV21Params;
//SmartPtr<RkAiqIspBa3dParamsProxyV21> mBa3dParams;
SmartPtr<RkAiqIspYnrParamsProxyV21> mYnrV21Params;
SmartPtr<RkAiqIspCnrParamsProxyV21> mCnrV21Params;
SmartPtr<RkAiqIspSharpenParamsProxyV21> mSharpenV21Params;
// V3x differential modules
SmartPtr<RkAiqIspAwbParamsProxyV3x> mAwbV3xParams;
SmartPtr<RkAiqIspAfParamsProxyV3x> mAfV3xParams;
SmartPtr<RkAiqIspBaynrParamsProxyV3x> mBaynrV3xParams;
SmartPtr<RkAiqIspYnrParamsProxyV3x> mYnrV3xParams;
SmartPtr<RkAiqIspCnrParamsProxyV3x> mCnrV3xParams;
SmartPtr<RkAiqIspSharpenParamsProxyV3x> mSharpenV3xParams;
SmartPtr<RkAiqIspCacParamsProxyV3x> mCacV3xParams;
SmartPtr<RkAiqIspGainParamsProxyV3x> mGainV3xParams;
SmartPtr<RkAiqIspTnrParamsProxyV3x> mTnrV3xParams;
// V32 differential modules
SmartPtr<RkAiqIspBlcParamsProxyV32> mBlcV32Params;
SmartPtr<RkAiqIspBaynrParamsProxyV32> mBaynrV32Params;
SmartPtr<RkAiqIspCacParamsProxyV32> mCacV32Params;
SmartPtr<RkAiqIspDebayerParamsProxyV32> mDebayerV32Params;
SmartPtr<RkAiqIspCcmParamsProxyV32> mCcmV32Params;
SmartPtr<RkAiqIspLdchParamsProxyV32> mLdchV32Params;
SmartPtr<RkAiqIspYnrParamsProxyV32> mYnrV32Params;
SmartPtr<RkAiqIspCnrParamsProxyV32> mCnrV32Params;
SmartPtr<RkAiqIspSharpParamsProxyV32> mSharpV32Params;
SmartPtr<RkAiqIspAwbParamsProxyV32> mAwbV32Params;
SmartPtr<RkAiqIspAfParamsProxyV32> mAfV32Params;
SmartPtr<RkAiqIspTnrParamsProxyV32> mTnrV32Params;
SmartPtr<RkAiqIspAwbGainParamsProxyV32> mAwbGainV32Params;
// V32 lite differential modules
SmartPtr<RkAiqIspAfParamsProxyV32Lite> mAfV32LiteParams;
SmartPtr<RkAiqIspAfdParamsProxy> mAfdParams;
private:
XCAM_DEAD_COPY (RkAiqFullParams);
};
typedef SharedItemPool<RkAiqFullParams> RkAiqFullParamsPool;
typedef SharedItemProxy<RkAiqFullParams> RkAiqFullParamsProxy;
template<class T>
struct AlgoRstShared: public XCam::VideoBuffer {
public:
AlgoRstShared () : VideoBuffer() { }
typedef T value_type;
T result;
virtual uint8_t* map() override {
return (uint8_t*)(&result);
}
virtual bool unmap () override { return false; }
virtual int get_fd () override { return -1; }
};
using RkAiqAlgoPreResAeIntShared = AlgoRstShared<RkAiqAlgoPreResAe>;
//using RkAiqAlgoProcResAeIntShared = AlgoRstShared<RkAiqAlgoProcResAe>;
using RkAiqAlgoProcResAwbIntShared = AlgoRstShared<RkAiqAlgoProcResAwbShared_t>;
using RkAiqAlgoProcResAmdIntShared = AlgoRstShared<RkAiqAlgoProcResAmd>;
using RkAiqAlgoProcResAblcIntShared = AlgoRstShared<RkAiqAlgoProcResAblc>;
using RkAiqAlgoProcResAblcV32IntShared = AlgoRstShared<RkAiqAlgoProcResAblcV32>;
using RkAiqAlgoProcResAynrV3IntShared = AlgoRstShared<RkAiqAlgoProcResAynrV3>;
using RkAiqAlgoProcResAynrV22IntShared = AlgoRstShared<RkAiqAlgoProcResAynrV22>;
typedef SharedItemPool<AecProcResult_t> RkAiqAeProcResultPool;
typedef SharedItemProxy<AecProcResult_t> RkAiqAeProcResultProxy;
typedef SharedItemPool<rkisp_effect_params> RkAiqIspEffParamsPool;
typedef SharedItemProxy<rkisp_effect_params> RkAiqIspEffParamsProxy;
}
#endif //RK_AIQ_POOL_H