Files

232 lines
15 KiB
C++

/*
* 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 <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string>
#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