232 lines
15 KiB
C++
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
|