/* * Copyright (c) 2021 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_CALIB_DB_V2_H__ #define ___RK_AIQ_CALIB_DB_V2_H__ #include "RkAiqCalibDbTypesV2.h" #include "RkAiqCalibDbV2Helper.h" #include "j2s.h" #include "xcam_log.h" #include "xcam_mutex.h" #include #include #include #include #include #include #include "rk_aiq_algo_des.h" namespace RkCam { typedef std::shared_ptr> ModuleNameList; typedef std::shared_ptr> AlgoList; class RkAiqCalibDbV2 { public: explicit RkAiqCalibDbV2() = default; ~RkAiqCalibDbV2() = default; public: class TuningCalib { public: CamCalibDbV2Context_t* calib; ModuleNameList ModuleNames; }; public: static CamCalibDbProj_t *createCalibDbProj(const char *jsfile); static CamCalibDbProj_t *json2calibproj(const char *jsfile); static CamCalibDbV2Context_t *json2calib(const char *jsfile); static CamCalibDbV2Context_t *cjson2calib(cJSON *json); static int calib2json(const char *jsfile, CamCalibDbV2Context_t *calib); static cJSON *calib2cjson(const CamCalibDbV2Context_t *calib); static int calibproj2json(const char *jsfile, CamCalibDbProj_t *calibproj); static void releaseCalibDbProj(); static CamCalibDbV2Context_t toDefaultCalibDb(CamCalibDbProj_t *calibproj); static CamCalibDbProj_t *CamCalibDbProjAlloc(); static CamCalibDbV2Context_t *CalibV2Alloc(); static int CamCalibDbProjFree(CamCalibDbProj_t *calibproj); static int CalibV2Free(CamCalibDbV2Context_t *calibv2); static RkAiqAlgoType_t string2algostype(const char* str); static ModuleNameList analyzChange(cJSON* patch); static cJSON* readIQNode(const CamCalibDbV2Context_t *calib, const char* node_path); static char* readIQNodeStr(const CamCalibDbV2Context_t* calib, const char* node_path); static char* readIQNodeStrFromJstr(const CamCalibDbV2Context_t* calib, const char* json_str); static CamCalibDbV2Context_t *applyPatch(const CamCalibDbV2Context_t *calib, cJSON *patch); static CamCalibDbV2Context_t *applyPatch2(const CamCalibDbV2Context_t *calib, cJSON *patch); static CamCalibDbV2Context_t *applyPatch(const CamCalibDbV2Context_t *calib, const char *patch_str); static CamCalibDbV2Context_t * applyPatchFile(const CamCalibDbV2Context_t *calib, const char *patch_file); static CamCalibDbV2Context_t *applyPatch(const char *jsfile, const char *patch_file); static TuningCalib analyzTuningCalib(const CamCalibDbV2Context_t *calib, cJSON* patch); static TuningCalib analyzTuningCalib(const CamCalibDbV2Context_t *calib, const char* patch_str); private: static std::map mCalibDbsMap; static CalibDb_Sensor_ParaV2_t mSensorInfo; static std::mutex calib_mutex; // isp20 static int CamCalibDbFreeSceneCtx(void* ctx); static int CamCalibDbFreeSensorCtx(CalibDb_Sensor_ParaV2_t* sensor); static int CamCalibDbFreeModuleCtx(CalibDb_Module_ParaV2_t* module); static int CamCalibDbFreeAeCtx(CalibDb_Aec_ParaV2_t* ae); static int CamCalibDbFreeAwbV20Ctx(CalibDbV2_Wb_Para_V20_t* awb); static int CamCalibDbFreeGammaCtx(CalibDbV2_gamma_t* gamma); static int CamCalibDbFreeBlcCtx(CalibDbV2_Ablc_t* blc); static int CamCalibDbFreeDegammaCtx(CalibDbV2_Adegmma_t* degamma); static int CamCalibDbFreeGicV20Ctx(CalibDbV2_Gic_V20_t* gic); static int CamCalibDbFreeDehazeV20Ctx(CalibDbV2_dehaze_V20_t* dehaze); static int CamCalibDbFreeDpccCtx(CalibDbV2_Dpcc_t* dpcc); static int CamCalibDbFreeMergeCtx(CalibDbV2_merge_t* merge); static int CamCalibDbFreeTmoCtx(CalibDbV2_tmo_t* tmo); static int CamCalibDbFreeCpslCtx(CalibDbV2_Cpsl_t* cpsl); static int CamCalibDbFreeOrbCtx(CalibDbV2_Orb_t* orb); static int CamCalibDbFreeBayerNrV1Ctx(CalibDbV2_BayerNrV1_t* bayernr_v1); static int CamCalibDbFreeMfnrCtx(CalibDbV2_MFNR_t* mfnr_v1); static int CamCalibDbFreeUvnrCtx(CalibDbV2_UVNR_t* uvnr_v1); static int CamCalibDbFreeYnrV1Ctx(CalibDbV2_YnrV1_t* ynr_v1); static int CamCalibDbFreeSharpV1Ctx(CalibDbV2_SharpV1_t* sharp_v1); static int CamCalibDbFreeEdgefilterCtx(CalibDbV2_Edgefilter_t* edgefilter_v1); static int CamCalibDbFreeDebayerCtx(CalibDbV2_Debayer_t* edgefilter_v1); static int CamCalibDbFreeCprocCtx(CalibDbV2_Cproc_t* cproc); static int CamCalibDbFreeIeCtx(CalibDbV2_IE_t* ie); static int CamCalibDbFreeLscCtx(CalibDbV2_LSC_t* lsc); static int CamCalibDbFreeEisCtx(CalibDbV2_Eis_t* eis); static int CamCalibDbFreeColorAsGreyCtx(CalibDbV2_ColorAsGrey_t* colorAsGrey); static int CamCalibDbFreeLumaDetectCtx(CalibDbV2_LUMA_DETECT_t* lumaDetect); static int CamCalibDbFreeFectCtx(CalibDbV2_FEC_t* fec); static int CamCalibDbFreeLdchCtx(CalibDbV2_LDCH_t* ldch); static int CamCalibDbFreeCcmCtx(CalibDbV2_Ccm_Para_V2_t* ccm); static int CamCalibDbFreeLut3dCtx(CalibDbV2_Lut3D_Para_V2_t* lut3d); static int CamCalibDbFreeAfCtx(CalibDbV2_AF_t* af); static int CamCalibDbFreeThumbnailsCtx(CalibDbV2_Thumbnails_t* thumbnails); //isp21 static int CamCalibDbFreeAwbV21Ctx(CalibDbV2_Wb_Para_V21_t* awb); static int CamCalibDbFreeGicV21Ctx(CalibDbV2_Gic_V21_t* gic); static int CamCalibDbFreeDehazeV21Ctx(CalibDbV2_dehaze_V21_t* dehaze); static int CamCalibDbFreeDrcCtx(CalibDbV2_drc_t* drc); static int CamCalibDbFreeBayerNrV2Ctx(CalibDbV2_BayerNrV2_t* bayernr_v1); static int CamCalibDbFreeCnrCtx(CalibDbV2_CNR_t* cnr); static int CamCalibDbFreeYnrV2Ctx(CalibDbV2_YnrV2_t* ynr_v2); static int CamCalibDbFreeSharpV3Ctx(CalibDbV2_SharpV3_t* sharp_v3); static int CamCalibDbFreeUapiCtx(RkaiqUapi_t* uapi); static int CamCalibDbFreeSysStaticCtx(CalibDb_SysStaticCfg_ParaV2_t* sys_static); }; } // namespace RkCam #endif /*___RK_AIQ_CALIB_DB_V2_H__*/