/* * Copyright (c) 2014 Amlogic, Inc. All rights reserved. * * This source code is subject to the terms and conditions defined in the * file 'LICENSE' which is part of this source code package. * * Description: header file */ #ifndef CPQDB_H_ #define CPQDB_H_ #include #include #include #include #include "CSqlite.h" #include "PQType.h" #include "PQTableTypeOSD.h" #include "CPQLog.h" #define PQ_DB_CODE_VERSION 20201211 //pq db table name #define PQ_DB_VERSION_TABLE_NAME "PQ_VersionTable" #define PQ_DB_LDIM_TABLE_NAME "LD_HDMI" #define PQ_DB_GENERALPICTUREMODE_TABLE_NAME "GeneralPictureMode5Table" #define PQ_DB_GENERALGAMMA_TABLE_NAME "GeneralGammaTable" #define PQ_DB_LCD_HDRINFO_TABLE_NAME "Panel" #define PQ_DB_HDRTMO_TABLE_NAME "HDR_HDMI_NODE" #define PQ_DB_CABC_TABLE_NAME "CABC_AAD_HDMI" #define PQ_DPSS_DEMOSQUITO_REG_NUM_START 100 #define PQ_DPSS_DEMOSQUITO_REG_NUM_END 143 #define PQ_DPSS_DEBLOCK_REG_NUM_START 200 #define PQ_DPSS_DEBLOCK_REG_NUM_END 210 #define PQ_DPSS_NR_REG_NUM_START 300 #define PQ_DPSS_NR_REG_NUM_END 341 #define PQ_DPSS_SMOOTHPLUS_REG_NUM_START 400 #define PQ_DPSS_SMOOTHPLUS_REG_NUM_END 433 #define PQ_DPSS_DI_REG_NUM_END 514 typedef enum code_db_version_e { PQ_DB_CODE_VERSION_0 = 20191113, PQ_DB_CODE_VERSION_1 = 20201029, //split hdr10/hdr10plus/hlg/dv PQ_DB_CODE_VERSION_2 = 20201211, //add picture mode 5,add general gamma,remove picture mode table from overscan.db to pq.db } code_db_version_t; typedef enum code_db_match_type_e { MATCH_TYPE_MBOX_S5, //s928x MATCH_TYPE_MBOX_T3X, //t968d4 MATCH_TYPE_MBOX_S7D, //s905x5m MATCH_TYPE_MBOX_S6, //s905x5 MATCH_TYPE_MAX, } code_db_match_type_t; typedef enum resolution_height_type_e { SD_HEIGHT_480 = 0, //input SD_HEIGHT_576, //input HD_HEIGHT_720, //input + output FHD_HEIGHT_1080, //input + output UHD_HEIGHT_2160, //input + output UHD_HEIGHT_4320, //input + output RESOLUTION_MAX, } resolution_height_type_t; typedef enum tvout_with_io_table_type_t { TABLE_TYPE_SDR = 0, TABLE_TYPE_HDR, TABLE_TYPE_4K120, TABLE_TYPE_4K120_HDR, TABLE_TYPE_MAX, } tvout_with_io_table_type_t; typedef struct database_attribute_s { std::string ToolVersion; std::string ProjectVersion; std::string GenerateTime; std::string ChipVersion; std::string dbversion; } database_attribute_t; class CPQdb: public CSqlite { public: CPQdb(); ~CPQdb(); int openPqDB(const char *db_path); int reopenDB(const char *db_path); bool PQ_GetDataBaseAttribute(database_attribute_t *DbAttribute); void PQ_GetPqDbMatchType(int chip_type); int PQ_GetBlackExtensionParams(source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetSharpnessFixedParams(int mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetSharpness0FixedParams(int mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetSharpness1FixedParams(int mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_SetSharpnessVariableParams(source_input_param_t source_input_param); int PQ_SetSharpness0VariableParams(source_input_param_t source_input_param); int PQ_SetSharpness1VariableParams(source_input_param_t source_input_param); int LoadVppBasicParam(tvpq_data_type_t data_type, source_input_param_t source_input_param); int PQ_GetCM2Params(vpp_color_management2_t basemode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetXVYCCParams(vpp_xvycc_mode_t xvycc_mode, source_input_param_t source_input_param, am_regs_t *regs, am_regs_t *regs_1); int PQ_GetDIParams(source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetMCDIParams(vpp_mcdi_mode_t mcdi_mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetDeblockParams(vpp_deblock_mode_t mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetNR2Params(vpp_noise_reduction_mode_t nr_mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetSmoothPlusParams(vpp_smooth_plus_mode_t smoothplus_mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetDemoSquitoParams(vpp_demosquito_mode_e dem_mode, source_input_param_t source_input_param, am_regs_t *regs); int getDIRegValuesByValue(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs); int PQ_GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, source_input_param_t source_input_param, tcon_rgb_ogo_t *params); int PQ_SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, source_input_param_t source_input_param, tcon_rgb_ogo_t params); int PQ_GetColorTemperatureData(vpp_color_temperature_mode_t Tempmode, pq_source_input_t src, pq_sig_fmt_t timming, tcon_rgb_ogo_t *params); int PQ_ResetAllColorTemperatureParams(void); int PQ_SetNoLineAllBrightnessParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllBrightnessParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_GetBrightnessParams(source_input_param_t source_input_param, int level, int *params); int PQ_SetBrightnessParams(source_input_param_t source_input_param, int level, int params); int PQ_SetNoLineAllContrastParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllContrastParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_GetContrastParams(source_input_param_t source_input_param, int level, int *params); int PQ_SetContrastParams(source_input_param_t source_input_param, int level, int params); int PQ_SetNoLineAllSaturationParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllSaturationParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_GetSaturationParams(source_input_param_t source_input_param, int level, int *params); int PQ_SetSaturationParams(source_input_param_t source_input_param, int level, int params); int PQ_SetNoLineAllHueParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllHueParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_GetHueParams(source_input_param_t source_input_param, int level, int *params); int PQ_SetHueParams(source_input_param_t source_input_param, int level, int params); int PQ_SetNoLineAllSharpnessParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllSharpnessParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_GetSharpness0Params(source_input_param_t source_input_param, int level, am_regs_t *regs); int PQ_GetSharpness1Params(source_input_param_t source_input_param, int level, am_regs_t *regs); int PQ_SetSharpnessParams(source_input_param_t source_input_param, int level, am_regs_t *regs); int PQ_SetNoLineAllVolumeParams(tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_GetNoLineAllVolumeParams(tv_source_input_t source_input, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); int PQ_ResetAllNoLineParams(void); int PQ_GetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, source_input_param_t source_input_param, int reg_addr); int PQ_SetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, source_input_param_t source_input_param, int reg_addr, int value); int PQ_GetDNLPParams(source_input_param_t source_input_param, Dynamic_contrast_mode_t mode, struct ve_dnlp_curve_param_s *newParams); int PQ_SetDNLPGains(source_input_param_t source_input_param, Dynamic_contrast_mode_t level, int final_gain); int PQ_GetDNLPGains(source_input_param_t source_input_param, Dynamic_contrast_mode_t level); int PQ_GetLocalContrastNodeParams(source_input_param_t source_input_param, local_contrast_mode_t mode, struct ve_lc_curve_parm_s *Params); int PQ_GetLocalContrastRegParams(source_input_param_t source_input_param, local_contrast_mode_t mode, am_regs_t *regs); int PQ_ResetAllOverscanParams(void); int PQ_GetPQModeParams(tv_source_input_t source_input, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); int PQ_SetPQModeParams(tv_source_input_t source_input, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); int PQ_ResetAllPQModeParams(void); int PQ_GetPictureModeParams(pq_source_input_t src, pq_sig_fmt_t timming, vpp_picture_mode_t pq_mode, vpp_pictur_mode_para_t *params); int PQ_GetGammaTableR(int panel_id, source_input_param_t source_input_param, tcon_gamma_table_t *gamma_r); int PQ_GetGammaTableG(int panel_id, source_input_param_t source_input_param, tcon_gamma_table_t *gamma_g); int PQ_GetGammaTableB(int panel_id, source_input_param_t source_input_param, tcon_gamma_table_t *gamma_b); int PQ_GetGammaSpecialTable(vpp_gamma_curve_t gamma_curve, const char *f_name, tcon_gamma_table_t *gamma_r); int PQ_GetGammaWhiteBalanceSpecialTable(vpp_color_temperature_mode_t mode, const char *f_name, tcon_gamma_table_t *gamma_value); int PQ_GetGammaModeSpecialTable(int mode, const char *f_name, gamma_power_table_t *gamma_value); int PQ_GetGammaParams(source_input_param_t source_input_param, vpp_gamma_curve_t gamma_curve, const char *f_name, tcon_gamma_table_t *gamma_value); int PQ_GetPLLParams(source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetCVD2Param(source_input_param_t source_input_param, int reg_addr, int param_type, int reg_mask); int PQ_SetCVD2Param(source_input_param_t source_input_param, int reg_addr, int value, int param_type, int reg_mask); int PQ_GetCVD2Params(source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetLCDHDRInfoParams(source_input_param_t source_input_param, struct lcd_optical_info_s *newParams); int PQ_GetAIParams(source_input_param_t source_input_param, struct aipq_load_s *regs); int PQ_GetNNAiSrParams(aisr_mode_e mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetInLineAiSrParams(aisr_mode_e mode, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetHDRTMOParams(source_input_param_t source_input_param, hdr_tmo_t mode, struct hdr_tmo_sw *newParams); int PQ_GetAADParams(source_input_param_t source_input_param, aad_param_t *newParams); int PQ_GetCABCParams(source_input_param_t source_input_param, cabc_param_t *newParams); int getRegValues(const char *table_name, am_regs_t *regs); int getRegValuesByValue(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs); int getRegValuesByValue_long(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs, am_regs_t *regs_1); bool PQ_GetLDIM_Regs(vpu_ldim_param_s *vpu_ldim_param); int GetFileAttrIntValue(const char *fp, int flag); bool CheckHdrStatus(const char *tableName); bool CheckNewHdrSigFmt(const char *tableName, enum tvin_sig_fmt_e *SigFmtInPut); bool CheckPQModeTableInDb(void); bool CheckIdExistInDb(const char *Id, const char *TableName); int PQ_GetBlackStretchParams(int level, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetWhiteStretchParams(int level, source_input_param_t source_input_param, struct ve_ble_whe_param_s *params); int PQ_GetBlueStretchParams(int level, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetChromaCoringParams(int level, source_input_param_t source_input_param, am_regs_t *regs); int PQ_GetLocalDimmingParams(int level, source_input_param_t source_input_param, aml_ldim_pq_s *newParams); int PQ_GetSharpnessAdvancedParams(source_input_param_t source_input_param, int reg_addr, int isHd); int getSharpnessRegValues(const char *table_name, source_input_param_t source_input_param, am_regs_t *regs, int reg_addr, int isHd); int PQ_SetSharpnessAdvancedParams(source_input_param_t source_input_param, int reg_addr, int value, int isHd); int PQ_GetColorGamutDestParams(int level, PANLE_INFO *Table); int PQ_GetColorGamutMode(int mode, int channel, source_input_param_t source_input_param, struct hdr_gamut_data_s *Table); int PQ_GetDpssDeblockParams(vpp_deblock_mode_t mode, source_input_param_t source_input_param, struct vpq_dblk_param_s *params); int PQ_GetDpssNR2Params(vpp_noise_reduction_mode_t mode, source_input_param_t source_input_param, struct vpq_dnr_param_s *params); int PQ_GetDpssSmoothPlusParams(vpp_smooth_plus_mode_t mode, source_input_param_t source_input_param, struct vpq_dct_param_s *params); int PQ_GetDpssDemoSquitoParams(vpp_demosquito_mode_e mode, source_input_param_t source_input_param, struct vpq_demosquito_param_s *params); int PQ_GetDpssDiParams(source_input_param_t source_input_param, struct vpq_xlr_param_s *params); private: std::string GetTableName(const char *GeneralTableName, source_input_param_t source_input_param); std::string GetPqOsdTableName(const char *GeneralTableName, pq_src_param_t source_input_param); int CalculateLevelParam(tvpq_data_t *pq_data, int nodes, int level); int CalculateLevelRegsParam(tvpq_sharpness_regs_t *pq_regs, am_regs_t *regs, int level, int sharpness_number); int GetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_t source_input, int level, int *params); int GetNonlinearMappingByOSDFac(tvpq_data_type_t data_type, tv_source_input_t source_input, int *params); int SetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int loadSharpnessData(const char *table_name, int sharpness_number); int PQ_GetGammaTable(int panel_id, source_input_param_t source_input_param, const char *f_name, tcon_gamma_table_t *val); int SetNonlinearMappingByName(const char *name, tvpq_data_type_t data_type, tv_source_input_t source_input, int osd0, int osd25, int osd50, int osd75, int osd100); int PQ_SetPQModeParamsByName(const char *name, tv_source_input_t source_input, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); void getSharpnessTableName(source_input_param_t source_input_param, int isHd, char *table_name); tvpq_data_t pq_bri_data[15]; tvpq_data_t pq_con_data[15]; tvpq_data_t pq_sat_data[15]; tvpq_data_t pq_hue_data[15]; tvpq_sharpness_regs_t pq_sharpness0_reg_data[10]; tvpq_sharpness_regs_t pq_sharpness1_reg_data[10]; int bri_nodes; int con_nodes; int hue_nodes; int sat_nodes; int sha0_nodes; int sha1_nodes; public: unsigned int mDbVersion; int Gamma_nodes = 256; bool mHdrStatus = false; code_db_match_type_t mDbMatchType = MATCH_TYPE_MAX; output_type_t mOutPutType = OUTPUT_TYPE_LVDS; colortemperature_type_t mColorTemperatureMode = LVDS_STD; enum hdr_type_e mHdrType = HDRTYPE_SDR; enum tvin_sig_fmt_e mLoadSigFmt = TVIN_SIG_FMT_NULL; }; #endif