/* * Copyright (c) 2019 Rockchip Corporation * * 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_types_priv.h" #include "shared_item_pool.h" namespace RkCam { typedef struct RKAiqAecExpInfoWrapper_s : public SharedItemData { RKAiqAecExpInfo_t aecExpInfo; RKAiqAecExpInfo_t exp_tbl[MAX_AEC_EFFECT_FNUM + 1]; Sensor_dpcc_res_t SensorDpccInfo; int exp_tbl_size; int algo_id; struct RKAiqAecExpInfoWrapper_s& operator=(const struct RKAiqAecExpInfoWrapper_s& set) { this->aecExpInfo = set.aecExpInfo; this->SensorDpccInfo = set.SensorDpccInfo; this->exp_tbl_size = set.exp_tbl_size; this->algo_id = set.algo_id; memcpy(this->exp_tbl, set.exp_tbl, sizeof(set.exp_tbl)); return *this; } } RKAiqAecExpInfoWrapper_t; typedef struct RKAiqAfInfoWrapper_s : public SharedItemData { struct timeval focusStartTim; struct timeval focusEndTim; struct timeval zoomStartTim; struct timeval zoomEndTim; int64_t sofTime; int32_t focusCode; int32_t zoomCode; } RKAiqAfInfoWrapper_t; typedef struct RkAiqPirisInfoWrapper_s : public SharedItemData { int step; int laststep; bool update; struct timeval StartTim; struct timeval EndTim; } RkAiqPirisInfoWrapper_t; typedef struct RkAiqIrisInfoWrapper_s : public SharedItemData { //TODO Merge //RkAiqIrisType_t IrisType; RkAiqPirisInfoWrapper_t PIris; RkAiqDCIrisParam_t DCIris; uint64_t sofTime; } RkAiqIrisInfoWrapper_t; typedef struct RKAiqCpslInfoWrapper_s : public SharedItemData { 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; } RKAiqCpslInfoWrapper_t; typedef enum RkAiqParamsType_e { RK_AIQ_PARAMS_ALL, RK_AIQ_PARAMS_MEAS, RK_AIQ_PARAMS_OTHER, } RkAiqParamsType_t; typedef enum _cam3aResultType { RESULT_TYPE_INVALID = -1, RESULT_TYPE_EXPOSURE, 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, RESULT_TYPE_MAX_PARAM, } cam3aResultType; static const char* Cam3aResultType2Str[RESULT_TYPE_MAX_PARAM] = { [RESULT_TYPE_EXPOSURE] = "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", }; typedef SharedItemBase cam3aResult; typedef std::list> cam3aResultList; typedef std::map>> cam3aResultMap; typedef RKAiqAecExpInfoWrapper_t rk_aiq_exposure_params_wrapper_t; typedef RKAiqAfInfoWrapper_t rk_aiq_af_info_wrapper_t; typedef RkAiqIrisInfoWrapper_t rk_aiq_iris_params_wrapper_t; typedef SharedItemPool RkAiqExpParamsPool; typedef SharedItemProxy RkAiqExpParamsProxy; typedef SharedItemPool RkAiqIrisParamsPool; typedef SharedItemProxy RkAiqIrisParamsProxy; typedef SharedItemPool RkAiqIspBasePool; typedef SharedItemProxy RkAiqIspBaseProxy; 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; //v21 pools typedef SharedItemPool RkAiqIspAwbParamsPoolV21; typedef SharedItemProxy RkAiqIspAwbParamsProxyV21; typedef SharedItemPool RkAiqIspDrcParamsPoolV21; typedef SharedItemProxy RkAiqIspDrcParamsProxyV21; typedef SharedItemPool RkAiqIspBlcParamsPoolV21; typedef SharedItemProxy RkAiqIspBlcParamsProxyV21; typedef SharedItemPool RkAiqIspGicParamsPoolV21; typedef SharedItemProxy RkAiqIspGicParamsProxyV21; typedef SharedItemPool RkAiqIspDehazeParamsPoolV21; typedef SharedItemProxy RkAiqIspDehazeParamsProxyV21; 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; typedef class rk_aiq_isp_params_full_v20_s : public SharedItemData { public: SmartPtr ae; SmartPtr hist; SmartPtr wb; SmartPtr wb_gain; SmartPtr af; SmartPtr dpcc; SmartPtr merge; SmartPtr tmo; SmartPtr ccm; SmartPtr lsc; SmartPtr blc; SmartPtr rawnr; SmartPtr gic; SmartPtr debayer; SmartPtr ldch; SmartPtr lut3d; SmartPtr dehaze; SmartPtr gamma; SmartPtr degamma; SmartPtr wdr; SmartPtr csm; SmartPtr cgc; SmartPtr conv22; SmartPtr yuvcon; SmartPtr gain; SmartPtr cp; SmartPtr ie; SmartPtr motion; SmartPtr md; SmartPtr tnr; SmartPtr ynr; SmartPtr uvnr; SmartPtr sharpen; SmartPtr edgeflt; SmartPtr fec; SmartPtr orb; void reset() { ae.release(); hist.release(); wb.release(); wb_gain.release(); af.release(); dpcc.release(); merge.release(); tmo.release(); ccm.release(); lsc.release(); blc.release(); rawnr.release(); gic.release(); debayer.release(); ldch.release(); lut3d.release(); dehaze.release(); gamma.release(); degamma.release(); wdr.release(); csm.release(); cgc.release(); conv22.release(); yuvcon.release(); gain.release(); cp.release(); ie.release(); motion.release(); md.release(); tnr.release(); ynr.release(); uvnr.release(); sharpen.release(); edgeflt.release(); fec.release(); orb.release(); }; } rk_aiq_isp_params_full_v20_t; // v21 params struct typedef struct : public SharedItemData { SmartPtr ae; SmartPtr hist; SmartPtr wb; SmartPtr wb_gain; SmartPtr af; SmartPtr dpcc; SmartPtr merge; SmartPtr drc; SmartPtr ccm; SmartPtr lsc; SmartPtr blc; SmartPtr rawnr; SmartPtr gic; SmartPtr debayer; SmartPtr ldch; SmartPtr lut3d; SmartPtr dehaze; SmartPtr gamma; SmartPtr degamma; SmartPtr wdr; SmartPtr csm; SmartPtr cgc; SmartPtr conv22; SmartPtr yuvcon; SmartPtr gain; SmartPtr cp; SmartPtr ie; SmartPtr motion; SmartPtr md; SmartPtr baynr; SmartPtr ba3d; SmartPtr ynr; SmartPtr cnr; SmartPtr sharp; void reset () { ae.release(); hist.release(); wb.release(); wb_gain.release(); af.release(); dpcc.release(); merge.release(); drc.release(); ccm.release(); lsc.release(); blc.release(); rawnr.release(); gic.release(); debayer.release(); ldch.release(); lut3d.release(); dehaze.release(); gamma.release(); degamma.release(); wdr.release(); csm.release(); cgc.release(); conv22.release(); yuvcon.release(); gain.release(); cp.release(); ie.release(); motion.release(); md.release(); baynr.release(); ba3d.release(); ynr.release(); cnr.release(); sharp.release(); } } rk_aiq_isp_params_full_v21_t; typedef SharedItemPool RkAiqIspParamsPoolV20; typedef SharedItemProxy RkAiqIspParamsProxyV20; typedef SharedItemPool RkAiqIspParamsPoolV21; typedef SharedItemProxy RkAiqIspParamsProxyV21; class RkAiqFullParams : public SharedItemData { public: explicit RkAiqFullParams() : 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) , mDrcV21Params(NULL) , mBlcV21Params(NULL) , mGicV21Params(NULL) , mDehazeV21Params(NULL) , mBaynrV21Params(NULL) // , mBa3dParams(NULL) , mYnrV21Params(NULL) , mCnrV21Params(NULL) , mSharpenV21Params(NULL) { }; ~RkAiqFullParams() {}; void reset() { 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(); mDrcV21Params.release(); mBlcV21Params.release(); mGicV21Params.release(); mDehazeV21Params.release(); mBaynrV21Params.release(); // mBa3dParams.release(); mYnrV21Params.release(); mCnrV21Params.release(); mSharpenV21Params.release(); }; 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 mDrcV21Params; SmartPtr mBlcV21Params; SmartPtr mGicV21Params; SmartPtr mDehazeV21Params; SmartPtr mBaynrV21Params; //SmartPtr mBa3dParams; SmartPtr mYnrV21Params; SmartPtr mCnrV21Params; SmartPtr mSharpenV21Params; private: XCAM_DEAD_COPY (RkAiqFullParams); }; typedef SharedItemPool RkAiqFullParamsPool; typedef SharedItemProxy RkAiqFullParamsProxy; }; #endif //RK_AIQ_POOL_H