Files
2026-08-24 10:03:24 +08:00

265 lines
12 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 __SSM_ACTION_H__
#define __SSM_ACTION_H__
#include "PQType.h"
#include "PQTableTypeOSD.h"
#include "SSMHandler.h"
#include "PQSettingCfg.h"
#define CRI_DATE_RGBOGO_OFFSET (0)
#define CRI_DATE_RGBOGO_LEN (sizeof(tcon_rgb_ogo_t) + sizeof(int))
#define CRI_DATE_RGBOGO_INDEX_MAX (8)
#define CRI_DATA_WB_GAMMA_OFFSET (CRI_DATE_RGBOGO_OFFSET + (CRI_DATE_RGBOGO_LEN * CRI_DATE_RGBOGO_INDEX_MAX))
#define CRI_DATE_WB_GAMMA_LEN (sizeof(WB_GAMMA_TABLE_DATA) + sizeof(int))
#define CRI_DATE_WB_GAMMA_INDEX_MAX (8)
#define CRI_DATA_GAMMA_OFFSET (CRI_DATA_WB_GAMMA_OFFSET + (CRI_DATE_WB_GAMMA_LEN * CRI_DATE_WB_GAMMA_INDEX_MAX * WB_GAMMA_MODE_MAX))
#define CRI_DATE_GAMMA_LEN (sizeof(tcon_gamma_table_s) + sizeof(int))
#define CRI_DATE_GAMMA_INDEX_MAX (8)
#define SSM_RGBOGO_FILE_OFFSET (0)
#define SSM_CR_RGBOGO_LEN (256)
#define SSM_CR_RGBOGO_CHKSUM_LEN (2)
#define DEFAULT_BACKLIGHT_BRIGHTNESS (10)
//#define CRI_DATE_GAMMA_OFFSET (512)
//#define CRI_DATE_GAMMA_RGB_SIZE (257)
#define CRI_DATE_GAMMA_R_index (1)
#define CRI_DATE_GAMMA_G_index (2)
#define CRI_DATE_GAMMA_B_index (3)
#define CRI_DATE_GAMMA_COOL (1)
#define CRI_DATE_GAMMA_STANDARD (2)
#define CRI_DATE_GAMMA_WARM (3)
class SSMAction {
public:
SSMAction();
~SSMAction();
void init(const char *settingDataPath, const char *whiteBalanceDataPath);
bool Check(const char *settingDataPath, const char *whiteBalanceDataPath);
int SaveBurnWriteCharaterChar(int rw_val);
int ReadBurnWriteCharaterChar();
int DeviceMarkCheck();
int RestoreDeviceMarkValues();
static SSMAction *getInstance();
bool isFileExist(const char *file_name);
int WriteBytes(int offset, int size, int *buf);
int ReadBytes(int offset, int size, int *buf);
int EraseAllData(void);
int GetSSMActualAddr(int id);
int GetSSMActualSize(int id);
int GetSSMStatus(void);
int SSMReadNTypes(int id, int data_len, int *data_buf, int offset = 0);
int SSMWriteNTypes(int id, int data_len, int *data_buf, int offset = 0);
bool SSMRecovery();
int SSMRestoreDefault(int id, bool resetAll = true);
//PQ mode
int SSMSavePictureMode(int offset, int rw_val);
int SSMReadPictureMode(int offset, int *rw_val);
int SSMSaveLastPictureMode(int offset, int rw_val);
int SSMReadLastPictureMode(int offset, int *rw_val);
//Color Temperature
int SSMSaveColorTemperature(int offset, int rw_val);
int SSMReadColorTemperature(int offset, int *rw_val);
int SSMSaveRGBGainRStart(int offset, unsigned int rw_val);
int SSMReadRGBGainRStart(int offset, unsigned int *rw_val);
int SSMSaveRGBGainGStart(int offset, unsigned int rw_val);
int SSMReadRGBGainGStart(int offset, unsigned int *rw_val);
int SSMSaveRGBGainBStart(int offset, unsigned int rw_val);
int SSMReadRGBGainBStart(int offset, unsigned int *rw_val);
int SSMSaveRGBPostOffsetRStart(int offset, int rw_val);
int SSMReadRGBPostOffsetRStart(int offset, int *rw_val);
int SSMSaveRGBPostOffsetGStart(int offset, int rw_val);
int SSMReadRGBPostOffsetGStart(int offset, int *rw_val);
int SSMSaveRGBPostOffsetBStart(int offset, int rw_val);
int SSMReadRGBPostOffsetBStart(int offset, int *rw_val);
int SSMReadRGBOGOValue(int offset, int size, unsigned char data_buf[]);
int SSMSaveRGBOGOValue(int offset, int size, unsigned char data_buf[]);
int SSMSaveRGBValueStart(int offset, int8_t rw_val);
int SSMReadRGBValueStart(int offset, int8_t *rw_val);
int SSMSaveColorSpaceStart(unsigned char rw_val);
int SSMReadColorSpaceStart(unsigned char *rw_val);
int ReadDataFromFile(const char *file_name, int offset, int nsize, unsigned char data_buf[]);
int SaveDataToFile(const char *file_name, int offset, int nsize, unsigned char data_buf[]);
//Brightness
int SSMSaveBrightness(int offset, int rw_val);
int SSMReadBrightness(int offset, int *rw_val);
//constract
int SSMSaveContrast(int offset, int rw_val);
int SSMReadContrast(int offset, int *rw_val);
//saturation
int SSMSaveSaturation(int offset, int rw_val);
int SSMReadSaturation(int offset, int *rw_val);
//hue
int SSMSaveHue(int offset, int rw_val);
int SSMReadHue(int offset, int *rw_val);
//Sharpness
int SSMSaveSharpness(int offset, int rw_val);
int SSMReadSharpness(int offset, int *rw_val);
//NoiseReduction
int SSMSaveNoiseReduction(int offset, int rw_val);
int SSMReadNoiseReduction(int offset, int *rw_val);
//SmoothPlus
int SSMSaveSmoothPlus(int offset, int rw_val);
int SSMReadSmoothPlus(int offset, int *rw_val);
//HDR TMO
int SSMSaveHdrTmoVal(int offset, int rw_val);
int SSMReadHdrTmoVal(int offset, int *rw_val);
//Gamma
int SSMSaveGammaValue(int offset, int rw_val);
int SSMReadGammaValue(int offset, int *rw_val);
//Memc
int SSMSaveMemcMode(int offset, int rw_val);
int SSMReadMemcMode(int offset, int *rw_val);
int SSMSaveMemcDeblurLevel(int offset, int rw_val);
int SSMReadMemcDeblurLevel(int offset, int *rw_val);
int SSMSaveMemcDeJudderLevel(int offset, int rw_val);
int SSMReadMemcDeJudderLevel(int offset, int *rw_val);
//Edge enhance
int SSMSaveEdgeEnhanceStatus(int offset, int rw_val);
int SSMReadEdgeEnhanceStatus(int offset, int *rw_val);
//mpeg NR
int SSMSaveMpegNoiseReduction(int offset, int rw_val);
int SSMReadMpegNoiseReduction(int offset, int *rw_val);
//Dynamic contrast
int SSMSaveDynamicContrast(int offset, int rw_val);
int SSMReadDynamicContrast(int offset, int *rw_val);
//Dynamic Backlight
int SSMSaveDynamicBacklightMode(int rw_val);
int SSMReadDynamicBacklightMode(int *rw_val);
//backlight
int SSMReadBackLightVal(int *rw_val);
int SSMSaveBackLightVal(int rw_val);
//dynamic contrast
int SSMSaveDnlpMode(int offset, int rw_val);
int SSMReadDnlpMode(int offset, int *rw_val);
//
int SSMSaveColorDemoMode(unsigned char rw_val);
int SSMReadColorDemoMode(unsigned char *rw_val);
//cm
int SSMSaveColorBaseMode(unsigned char rw_val);
int SSMReadColorBaseMode(unsigned char *rw_val);
//color gamut
int SSMSaveColorGamutMode(int offset, int rw_val);
int SSMReadColorGamutMode(int offset, int *rw_val);
int SSMSaveDnlpGainValue(int offset, int rw_val);
int SSMReadDnlpGainValue(int offset, int *rw_val);
int SSMSaveEyeProtectionMode(int rw_val);
int SSMReadEyeProtectionMode(int *rw_val);
int SSMSaveDDRSSC(unsigned char rw_val);
int SSMReadDDRSSC(unsigned char *rw_val);
int SSMSaveLVDSSSC(int offset, int size, int *rw_val);
int SSMReadLVDSSSC(int offset, int size, int *rw_val);
int SSMSaveDisplayMode(int offset, int rw_val);
int SSMReadDisplayMode(int offset, int *rw_val);
int SSMSaveAutoAspect(int offset, int rw_val);
int SSMReadAutoAspect(int offset, int *rw_val);
int SSMSave43Stretch(int offset, int rw_val);
int SSMRead43Stretch(int offset, int *rw_val);
int SSMEdidRestoreDefault(int rw_val);
int SSMHdcpSwitcherRestoreDefault(int rw_val);
int SSMSColorRangeModeRestoreDefault(int rw_val);
int SSMSaveLocalContrastMode(int offset, int rw_val);
int SSMReadLocalContrastMode(int offset, int *rw_val);
int SSMSaveDeblockMode(int offset, int rw_val);
int SSMReadDeblockMode(int offset, int *rw_val);
int SSMSaveDemoSquitoMode(int offset, int rw_val);
int SSMReadDemoSquitoMode(int offset, int *rw_val);
int SSMSaveMcDiMode(int offset, int rw_val);
int SSMReadMcDiMode(int offset, int *rw_val);
int SSMReadAipqEnableVal(int *rw_val);
int SSMSaveAipqEnableVal(int rw_val);
int SSMReadAiSrMode(int *rw_val);
int SSMSaveAiSrMode(int rw_val);
int SSMSaveBlackStretch(int offset, int rw_val);
int SSMReadBlackStretch(int offset, int *rw_val);
int SSMSaveWhiteStretch(int offset, int rw_val);
int SSMReadWhiteStretch(int offset, int *rw_val);
int SSMSaveBlueStretch(int offset, int rw_val);
int SSMReadBlueStretch(int offset, int *rw_val);
int SSMSaveChromaCoring(int offset, int rw_val);
int SSMReadChromaCoring(int offset, int *rw_val);
int SSMSaveLocalDimming(int offset, int rw_val);
int SSMReadLocalDimming(int offset, int *rw_val);
int SSMSaveWhitebalanceGammaMode(int offset, int rw_val);
int SSMReadWhitebalanceGammaMode(int offset, int *rw_val);
//FilmMaker Mode UI status
int SSMSaveFilmMakerMode(int rw_val);
int SSMReadFilmMakerMode(int *rw_val);
bool SetPictureMode(int PictureMode, int src, int timming);
bool GetPictureMode(int *PictureMode, int src, int timming);
bool SetLastPictureMode(int PictureMode, int src, int timming);
bool GetLastPictureMode(int *PictureMode, int src, int timming);
bool SetPictureModeData(vpp_pictur_mode_para_t *pData, int src, int timming, int pqmode);
bool GetPictureModeData(vpp_pictur_mode_para_t *pData, int src, int timming, int pqmode);
bool SetColorTemperatureData(tcon_rgb_ogo_t *pData, int src, int timming, int level);
bool GetColorTemperatureData(tcon_rgb_ogo_t *pData, int src, int timming, int level);
bool SetWhitebalanceGammaData(WB_GAMMA_TABLE *pData, int src, int timming, int level, int mode);
bool GetWhitebalanceGammaData(WB_GAMMA_TABLE *pData, int src, int timming, int level, int mode);
bool SetColorCustomizeData(TABLE_CMS *pData, int mode, int src, int timming);
bool GetColorCustomizeData(TABLE_CMS *pData, int mode, int src, int timming);
bool SetColorCustomizeDataBy3DLut(TABLE_CMS_3DLUT *pData, int mode, int src, int timming);
bool GetColorCustomizeDataBy3DLut(TABLE_CMS_3DLUT *pData, int mode, int src, int timming);
// CRI DATA
bool CriDataSetWhitebalanceRGBGainOffsetData(tcon_rgb_ogo_t *pData, int level);
bool CriDataGetWhitebalanceRGBGainOffsetData(tcon_rgb_ogo_t *pData, int level);
bool CriDataGetWhitebalanceGammaData(WB_GAMMA_TABLE_DATA *pData, int level, int mode);
bool CriDataSetWhitebalanceGammaData(WB_GAMMA_TABLE_DATA *pData, int level, int mode);
bool SetGammaDataTable(tcon_gamma_table_t *pData, int level, int channel);
bool GetGammaDataTable(tcon_gamma_table_t *pData, int level, int channel);
bool ClearGammaDataTable(int level, int channel);
bool CheckTable(void);
bool GetSsmDataParam(void *pData, int id, int iSize, int offset, bool FlagCheck = true);
bool GetCriDataParam(void *pData, int iSize, int offset, bool FlagCheck = false, int Flagoffset = 0, int FlagSize = 0);
int m_dev_fd;
static SSMAction *mInstance;
static SSMHandler *mSSMHandler;
class ISSMActionObserver {
public:
ISSMActionObserver() {};
virtual ~ISSMActionObserver() {};
virtual void resetAllUserSettingParam() {};
};
void setObserver (ISSMActionObserver *pOb)
{
mpObserver = pOb;
};
private:
ISSMActionObserver *mpObserver;
std::string mSSMDataFilePath;
std::string mSSMHandlerFilePath;
std::string mWhiteBalanceFilePath;
};
#endif