/* * 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 #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 rk_aiq_exposure_params_wrapper_t; typedef SharedItemPool RkAiqExpParamsPool; typedef SharedItemProxy RkAiqExpParamsProxy; typedef RKAiqSensorExpInfo_t rk_aiq_sensor_exp_info_t; typedef SharedItemPool RkAiqSensorExpParamsPool; typedef SharedItemProxy RkAiqSensorExpParamsProxy; typedef struct RkAiqSofInfoWrapper_s : public XCam::BufferData { uint32_t sequence; SmartPtr preExp; SmartPtr curExp; SmartPtr 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> cam3aResultList; typedef std::map>> cam3aResultMap; typedef struct RkAiqThumbnailSrcWrapper_s : public XCam::BufferData { SmartPtr thumbnail; } RkAiqThumbnailSrcWrapper_t; typedef SharedItemPool RkAiqIspStatsIntPool; typedef SharedItemProxy RkAiqIspStatsIntProxy; typedef SharedItemPool RkAiqAecStatsPool; typedef SharedItemProxy RkAiqAecStatsProxy; typedef SharedItemPool RkAiqAwbStatsPool; typedef SharedItemProxy RkAiqAwbStatsProxy; typedef SharedItemPool RkAiqAtmoStatsPool; typedef SharedItemProxy RkAiqAtmoStatsProxy; typedef SharedItemPool RkAiqAdehazeStatsPool; typedef SharedItemProxy RkAiqAdehazeStatsProxy; typedef SharedItemPool RkAiqAfStatsPool; typedef SharedItemProxy RkAiqAfStatsProxy; typedef SharedItemPool RkAiqPdafStatsPool; typedef SharedItemProxy RkAiqPdafStatsProxy; typedef SharedItemPool RkAiqSofInfoWrapperPool; typedef SharedItemProxy RkAiqSofInfoWrapperProxy; typedef SharedItemPool RkAiqOrbStatsPool; typedef SharedItemProxy RkAiqOrbStatsProxy; typedef SharedItemPool RkAiqThumbnailSrcPool; typedef SharedItemProxy 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 AecStatsProxy = nullptr; bool aec_stats_valid; SmartPtr AwbStatsProxy = nullptr; bool awb_stats_valid; bool awb_cfg_effect_valid; SmartPtr AfStatsProxy = nullptr; bool af_stats_valid; SmartPtr AtmoStatsProxy = nullptr; bool atmo_stats_valid; SmartPtr 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 RkAiqIrisParamsPool; typedef SharedItemProxy RkAiqIrisParamsProxy; typedef SharedItemPool RkAiqAfInfoPool; typedef SharedItemProxy RkAiqAfInfoProxy; typedef SharedItemPool RkAiqFocusParamsPool; typedef SharedItemProxy RkAiqFocusParamsProxy; typedef SharedItemPool RkAiqCpslParamsPool; typedef SharedItemProxy RkAiqCpslParamsProxy; typedef SharedItemPool RkAiqIspAecParamsPool; typedef SharedItemProxy RkAiqIspAecParamsProxy; typedef SharedItemPool RkAiqIspHistParamsPool; typedef SharedItemProxy RkAiqIspHistParamsProxy; typedef SharedItemPool RkAiqIspAwbParamsPool; typedef SharedItemProxy RkAiqIspAwbParamsProxy; typedef SharedItemPool RkAiqIspAwbGainParamsPool; typedef SharedItemProxy RkAiqIspAwbGainParamsProxy; typedef SharedItemPool RkAiqIspAfParamsPool; typedef SharedItemProxy RkAiqIspAfParamsProxy; typedef SharedItemPool RkAiqIspDpccParamsPool; typedef SharedItemProxy RkAiqIspDpccParamsProxy; typedef SharedItemPool RkAiqIspMergeParamsPool; typedef SharedItemProxy RkAiqIspMergeParamsProxy; typedef SharedItemPool RkAiqIspTmoParamsPool; typedef SharedItemProxy RkAiqIspTmoParamsProxy; typedef SharedItemPool RkAiqIspCcmParamsPool; typedef SharedItemProxy RkAiqIspCcmParamsProxy; typedef SharedItemPool RkAiqIspLscParamsPool; typedef SharedItemProxy RkAiqIspLscParamsProxy; typedef SharedItemPool RkAiqIspBlcParamsPool; typedef SharedItemProxy RkAiqIspBlcParamsProxy; typedef SharedItemPool RkAiqIspRawnrParamsPool; typedef SharedItemProxy RkAiqIspRawnrParamsProxy; typedef SharedItemPool RkAiqIspGicParamsPool; typedef SharedItemProxy RkAiqIspGicParamsProxy; typedef SharedItemPool RkAiqIspDebayerParamsPool; typedef SharedItemProxy RkAiqIspDebayerParamsProxy; typedef SharedItemPool RkAiqIspLdchParamsPool; typedef SharedItemProxy RkAiqIspLdchParamsProxy; typedef SharedItemPool RkAiqIspLut3dParamsPool; typedef SharedItemProxy RkAiqIspLut3dParamsProxy; typedef SharedItemPool RkAiqIspDehazeParamsPool; typedef SharedItemProxy RkAiqIspDehazeParamsProxy; typedef SharedItemPool RkAiqIspAgammaParamsPool; typedef SharedItemProxy RkAiqIspAgammaParamsProxy; typedef SharedItemPool RkAiqIspAdegammaParamsPool; typedef SharedItemProxy RkAiqIspAdegammaParamsProxy; typedef SharedItemPool RkAiqIspWdrParamsPool; typedef SharedItemProxy RkAiqIspWdrParamsProxy; typedef SharedItemPool RkAiqIspCsmParamsPool; typedef SharedItemProxy RkAiqIspCsmParamsProxy; typedef SharedItemPool RkAiqIspCgcParamsPool; typedef SharedItemProxy RkAiqIspCgcParamsProxy; typedef SharedItemPool RkAiqIspConv422ParamsPool; typedef SharedItemProxy RkAiqIspConv422ParamsProxy; typedef SharedItemPool RkAiqIspYuvconvParamsPool; typedef SharedItemProxy RkAiqIspYuvconvParamsProxy; typedef SharedItemPool RkAiqIspGainParamsPool; typedef SharedItemProxy RkAiqIspGainParamsProxy; typedef SharedItemPool RkAiqIspCpParamsPool; typedef SharedItemProxy RkAiqIspCpParamsProxy; typedef SharedItemPool RkAiqIspIeParamsPool; typedef SharedItemProxy RkAiqIspIeParamsProxy; typedef SharedItemPool RkAiqIspMotionParamsPool; typedef SharedItemProxy RkAiqIspMotionParamsProxy; typedef SharedItemPool RkAiqIspMdParamsPool; typedef SharedItemProxy RkAiqIspMdParamsProxy; typedef SharedItemPool RkAiqIspTnrParamsPool; typedef SharedItemProxy RkAiqIspTnrParamsProxy; typedef SharedItemPool RkAiqIspYnrParamsPool; typedef SharedItemProxy RkAiqIspYnrParamsProxy; typedef SharedItemPool RkAiqIspUvnrParamsPool; typedef SharedItemProxy RkAiqIspUvnrParamsProxy; typedef SharedItemPool RkAiqIspSharpenParamsPool; typedef SharedItemProxy RkAiqIspSharpenParamsProxy; typedef SharedItemPool RkAiqIspEdgefltParamsPool; typedef SharedItemProxy RkAiqIspEdgefltParamsProxy; typedef SharedItemPool RkAiqIspFecParamsPool; typedef SharedItemProxy RkAiqIspFecParamsProxy; typedef SharedItemPool RkAiqIspOrbParamsPool; typedef SharedItemProxy RkAiqIspOrbParamsProxy; typedef SharedItemPool RkAiqIspAfdParamsPool; typedef SharedItemProxy RkAiqIspAfdParamsProxy; //v21 pools typedef SharedItemPool RkAiqIspAwbParamsPoolV21; typedef SharedItemProxy RkAiqIspAwbParamsProxyV21; typedef SharedItemPool RkAiqIspDrcParamsPool; typedef SharedItemProxy RkAiqIspDrcParamsProxy; typedef SharedItemPool RkAiqIspBlcParamsPoolV21; typedef SharedItemProxy RkAiqIspBlcParamsProxyV21; typedef SharedItemPool RkAiqIspBaynrParamsPoolV21; typedef SharedItemProxy RkAiqIspBaynrParamsProxyV21; typedef SharedItemPool RkAiqIspBa3dParamsPoolV21; typedef SharedItemProxy RkAiqIspBa3dParamsProxyV21; typedef SharedItemPool RkAiqIspYnrParamsPoolV21; typedef SharedItemProxy RkAiqIspYnrParamsProxyV21; typedef SharedItemPool RkAiqIspCnrParamsPoolV21; typedef SharedItemProxy RkAiqIspCnrParamsProxyV21; typedef SharedItemPool RkAiqIspSharpenParamsPoolV21; typedef SharedItemProxy RkAiqIspSharpenParamsProxyV21; //v3x pools typedef SharedItemPool RkAiqIspAwbParamsPoolV3x; typedef SharedItemProxy RkAiqIspAwbParamsProxyV3x; typedef SharedItemPool RkAiqIspAfParamsPoolV3x; typedef SharedItemProxy RkAiqIspAfParamsProxyV3x; typedef SharedItemPool RkAiqIspBaynrParamsPoolV3x; typedef SharedItemProxy RkAiqIspBaynrParamsProxyV3x; typedef SharedItemPool RkAiqIspBa3dParamsPoolV3x; typedef SharedItemProxy RkAiqIspBa3dParamsProxyV3x; typedef SharedItemPool RkAiqIspYnrParamsPoolV3x; typedef SharedItemProxy RkAiqIspYnrParamsProxyV3x; typedef SharedItemPool RkAiqIspCnrParamsPoolV3x; typedef SharedItemProxy RkAiqIspCnrParamsProxyV3x; typedef SharedItemPool RkAiqIspSharpenParamsPoolV3x; typedef SharedItemProxy RkAiqIspSharpenParamsProxyV3x; typedef SharedItemPool RkAiqIspCacParamsPoolV3x; typedef SharedItemProxy RkAiqIspCacParamsProxyV3x; typedef SharedItemPool RkAiqIspGainParamsPoolV3x; typedef SharedItemProxy RkAiqIspGainParamsProxyV3x; typedef SharedItemPool RkAiqIspTnrParamsPoolV3x; typedef SharedItemProxy RkAiqIspTnrParamsProxyV3x; //v32 pools typedef SharedItemPool RkAiqIspBlcParamsPoolV32; typedef SharedItemProxy RkAiqIspBlcParamsProxyV32; typedef SharedItemPool RkAiqIspBaynrParamsPoolV32; typedef SharedItemProxy RkAiqIspBaynrParamsProxyV32; typedef SharedItemPool RkAiqIspCacParamsPoolV32; typedef SharedItemProxy RkAiqIspCacParamsProxyV32; typedef SharedItemPool RkAiqIspDebayerParamsPoolV32; typedef SharedItemProxy RkAiqIspDebayerParamsProxyV32; typedef SharedItemPool RkAiqIspCcmParamsPoolV32; typedef SharedItemProxy RkAiqIspCcmParamsProxyV32; typedef SharedItemPool RkAiqIspLdchParamsPoolV32; typedef SharedItemProxy RkAiqIspLdchParamsProxyV32; typedef SharedItemPool RkAiqIspYnrParamsPoolV32; typedef SharedItemProxy RkAiqIspYnrParamsProxyV32; typedef SharedItemPool RkAiqIspCnrParamsPoolV32; typedef SharedItemProxy RkAiqIspCnrParamsProxyV32; typedef SharedItemPool RkAiqIspSharpParamsPoolV32; typedef SharedItemProxy RkAiqIspSharpParamsProxyV32; typedef SharedItemPool RkAiqIspAwbParamsPoolV32; typedef SharedItemProxy RkAiqIspAwbParamsProxyV32; typedef SharedItemPool RkAiqIspAfParamsPoolV32; typedef SharedItemProxy RkAiqIspAfParamsProxyV32; typedef SharedItemPool RkAiqIspTnrParamsPoolV32; typedef SharedItemProxy RkAiqIspTnrParamsProxyV32; typedef SharedItemPool RkAiqIspAwbGainParamsPoolV32; typedef SharedItemProxy RkAiqIspAwbGainParamsProxyV32; typedef SharedItemPool RkAiqIspAfParamsPoolV32Lite; typedef SharedItemProxy 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 mExposureParams; SmartPtr mFocusParams; SmartPtr mIrisParams; SmartPtr mCpslParams; SmartPtr mAecParams; SmartPtr mHistParams; SmartPtr mAwbParams; SmartPtr mAwbGainParams; SmartPtr mAfParams; SmartPtr mDpccParams; // SmartPtr mHdrParams; SmartPtr mMergeParams; SmartPtr mTmoParams; SmartPtr mCcmParams; SmartPtr mLscParams; SmartPtr mBlcParams; SmartPtr mRawnrParams; SmartPtr mGicParams; SmartPtr mDebayerParams; SmartPtr mLdchParams; SmartPtr mLut3dParams; SmartPtr mDehazeParams; SmartPtr mAgammaParams; SmartPtr mAdegammaParams; SmartPtr mWdrParams; SmartPtr mCsmParams; SmartPtr mCgcParams; SmartPtr mConv422Params; SmartPtr mYuvconvParams; SmartPtr mGainParams; SmartPtr mCpParams; SmartPtr mIeParams; SmartPtr mMotionParams; SmartPtr mMdParams; SmartPtr mTnrParams; SmartPtr mYnrParams; SmartPtr mUvnrParams; SmartPtr mSharpenParams; SmartPtr mEdgefltParams; SmartPtr mFecParams; SmartPtr mOrbParams; // TODO: change full params to list // V21 differential modules SmartPtr mAwbV21Params; SmartPtr mDrcParams; SmartPtr mBlcV21Params; SmartPtr mBaynrV21Params; //SmartPtr mBa3dParams; SmartPtr mYnrV21Params; SmartPtr mCnrV21Params; SmartPtr mSharpenV21Params; // V3x differential modules SmartPtr mAwbV3xParams; SmartPtr mAfV3xParams; SmartPtr mBaynrV3xParams; SmartPtr mYnrV3xParams; SmartPtr mCnrV3xParams; SmartPtr mSharpenV3xParams; SmartPtr mCacV3xParams; SmartPtr mGainV3xParams; SmartPtr mTnrV3xParams; // V32 differential modules SmartPtr mBlcV32Params; SmartPtr mBaynrV32Params; SmartPtr mCacV32Params; SmartPtr mDebayerV32Params; SmartPtr mCcmV32Params; SmartPtr mLdchV32Params; SmartPtr mYnrV32Params; SmartPtr mCnrV32Params; SmartPtr mSharpV32Params; SmartPtr mAwbV32Params; SmartPtr mAfV32Params; SmartPtr mTnrV32Params; SmartPtr mAwbGainV32Params; // V32 lite differential modules SmartPtr mAfV32LiteParams; SmartPtr mAfdParams; private: XCAM_DEAD_COPY (RkAiqFullParams); }; typedef SharedItemPool RkAiqFullParamsPool; typedef SharedItemProxy RkAiqFullParamsProxy; template 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; //using RkAiqAlgoProcResAeIntShared = AlgoRstShared; using RkAiqAlgoProcResAwbIntShared = AlgoRstShared; using RkAiqAlgoProcResAmdIntShared = AlgoRstShared; using RkAiqAlgoProcResAblcIntShared = AlgoRstShared; using RkAiqAlgoProcResAblcV32IntShared = AlgoRstShared; using RkAiqAlgoProcResAynrV3IntShared = AlgoRstShared; using RkAiqAlgoProcResAynrV22IntShared = AlgoRstShared; typedef SharedItemPool RkAiqAeProcResultPool; typedef SharedItemProxy RkAiqAeProcResultProxy; typedef SharedItemPool RkAiqIspEffParamsPool; typedef SharedItemProxy RkAiqIspEffParamsProxy; } #endif //RK_AIQ_POOL_H