summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tv/CTv.h (plain)
blob: 7d75e0c095ab17b276625c85a6bd684cbcc2a476
1
2// amlogic 2013
3//
4// @ Project : tv
5// @ File Name : CDtv.h
6// @ Date : 2013-11
7// @ Author :
8
9#if !defined(_CDTV_H)
10#define _CDTV_H
11#include <stdint.h>
12#include <sys/time.h>
13#include <am_epg.h>
14#include <am_mem.h>
15#include <utils/threads.h>
16#include "CTvProgram.h"
17#include "CTvEpg.h"
18#include "CTvScanner.h"
19#include "CTvLog.h"
20#include "CTvTime.h"
21#include "CTvEvent.h"
22#include "CTvEv.h"
23#include "CTvBooking.h"
24#include "CFrontEnd.h"
25#include "../vpp/CVpp.h"
26#include "../vpp/CPQdb.h"
27#include "../tvin/CTvin.h"
28#include "../tvin/CHDMIRxCEC.h"
29#include "../tvutils/CMsgQueue.h"
30#include "../tvutils/CSerialCommunication.h"
31#include "../tvutils/serial_operate.h"
32#include "CTvRecord.h"
33#include "CTvSubtitle.h"
34#include "CUpgradeFBC.h"
35#include "CAv.h"
36#include "CTvDmx.h"
37#include "../audio/CTvAudio.h"
38#include "AutoBackLight.h"
39#include "CAutoPQparam.h"
40#include "tvin/CSourceConnectDetect.h"
41using namespace android;
42
43static const char *TV_CONFIG_FILE_PATH = "/param/tvconfig.conf";
44static const char *TV_DB_PATH = "/param/dtv.db";
45static const char *TV_CONFIG_FILE_SYSTEM_PATH = "/system/etc/tvconfig.conf";
46static const char *TV_CONFIG_FILE_PARAM_PATH = "/param/tvconfig.conf";
47static const char *TV_CHANNEL_LIST_SYSTEM_PATH = "/system/etc/tv_default.xml";
48static const char *TV_CHANNEL_LIST_PARAM_PATH = "/param/tv_default.xml";
49static const char *TV_SSM_DATA_SYSTEM_PATH = "/system/etc/ssm_data";
50static const char *TV_SSM_DATA_PARAM_PATH = "/param/ssm_data";
51
52#define DEVICE_CLASS_TSYNC_AV_THRESHOLD_MIN "/sys/class/tsync/av_threshold_min"
53#define AV_THRESHOLD_MIN_MS "540000" //6S = 6*90000
54
55
56
57
58typedef enum tv_fmt_ratio_e {
59 RATIO_43,
60 RATIO_169,
61 RATIO_MAX,
62} tv_fmt_ratio_t;
63
64typedef enum tv_color_fmt_e {
65 COLOR_RGB444,
66 COLOR_YUV422,
67 COLOR_YUV444,
68 COLOR_MAX,
69} tv_color_fmt_t;
70
71
72
73typedef enum tv_window_mode_e {
74 NORMAL_WONDOW,
75 PREVIEW_WONDOW,
76} tv_window_mode_t;
77
78typedef enum tv_dtv_scan_running_status_e {
79 DTV_SCAN_RUNNING_NORMAL,
80 DTV_SCAN_RUNNING_ANALYZE_CHANNEL,
81} tv_dtv_scan_running_status_t;
82
83typedef struct tv_config_s {
84 bool kernelpet_disable;
85 unsigned int kernelpet_timeout;
86 bool userpet;
87 unsigned int userpet_timeout;
88 unsigned int userpet_reset;
89 bool memory512m;
90} tv_config_t;
91
92typedef enum TvRunStatus_s {
93 TV_INIT_ED = -1,
94 TV_OPEN_ED = 0,
95 TV_START_ED ,
96 TV_RESUME_ED,
97 TV_PAUSE_ED,
98 TV_STOP_ED,
99 TV_CLOSE_ED,
100} TvRunStatus_t;
101
102class CTv : public CTvin::CTvinSigDetect::ISigDetectObserver, public CSourceConnectDetect::ISourceConnectObserver, public CHDMIRxCEC::IHDMIRxCECObserver, public CUpgradeFBC::IUpgradeFBCObserver, public CSerialCommunication::ISerialCommunicationObserver, public CTvSubtitle::IObserver, public CTv2d4GHeadSetDetect::IHeadSetObserver {
103public:
104 static const int TV_ACTION_NULL = 0x0000;
105 static const int TV_ACTION_STARTING = 0x0001;
106 static const int TV_ACTION_STOPING = 0x0002;
107 static const int TV_ACTION_SCANNING = 0x0004;
108 static const int TV_ACTION_PLAYING = 0x0008;
109 static const int TV_ACTION_RECORDING = 0x0010;
110 static const int TV_ACTION_SOURCE_SWITCHING = 0x0020;
111public:
112 class TvIObserver {
113 public:
114 TvIObserver() {};
115 virtual ~TvIObserver() {};
116 virtual void onTvEvent ( const CTvEv &ev ) = 0;
117 };
118 //main
119 CTv();
120 virtual ~CTv();
121 virtual int OpenTv ( void );
122 virtual int CloseTv ( void );
123 virtual int StartTvLock ();
124 virtual int StopTvLock ( void );
125 virtual int DoSuspend(int type);
126 virtual int DoResume(int type);
127 virtual int DoInstabootSuspend();
128 virtual int DoInstabootResume();
129 virtual TvRunStatus_t GetTvStatus();
130 virtual int ClearAnalogFrontEnd();
131 virtual tv_source_input_t GetLastSourceInput (void);
132 virtual int SetSourceSwitchInput (tv_source_input_t source_input );
133 virtual tv_source_input_t GetCurrentSourceInputLock ( void );
134 virtual tvin_info_t GetCurrentSignalInfo ( void );
135 virtual int SetPreviewWindow ( tvin_window_pos_t pos );
136 virtual int dtvAutoScan();
137 virtual int dtvManualScan (int beginFreq, int endFreq, int modulation = -1);
138 virtual int atvAutoScan(int videoStd, int audioStd, int searchType);
139 virtual int clearAllProgram(int arg0);
140 virtual int clearDbAllProgramInfoTable();
141 virtual void setSourceSwitchAndPlay();
142 virtual int GetDisplayResolutionConfig();
143 virtual int GetDisplayResolutionInfo();
144 virtual int atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, int store_Type = 0, int channel_num = 0 );
145 virtual int stopScanLock();
146 virtual int dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd);
147 virtual void SetRecordFileName ( char *name );
148 virtual void StartToRecord();
149 virtual void StopRecording();
150 virtual void SetRecCurTsOrCurProgram ( int sel );
151 virtual int startCC(int country, int src, int channel, int service);
152 virtual int stopCC();
153 virtual void printDebugInfo();
154 virtual int playProgramLock ( int progId );
155 virtual int playDvbcProgram ( int progId );
156 virtual int playDtmbProgram ( int progId );
157 virtual int playAtvProgram ( int, int, int, int, int);
158 virtual int playDtvProgram ( int, int, int, int, int, int, int, int, int, int);
159 virtual int stopPlayingLock();
160 virtual int resetFrontEndPara ( frontend_para_set_t feParms );
161 virtual int SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt );
162 virtual void startAutoBackLight();
163 virtual void stopAutoBackLight();
164 virtual const char *getPqDbPath();
165 virtual void onHdmiSrChanged(int sr, bool bInit);
166 virtual void onHMDIAudioStatusChanged(int status);
167 virtual int GetATVAFCType();
168 virtual int GetATVSourceTimerSwitch();
169 int SetCurProgramAudioVolumeCompensationVal ( int tmpVal );
170 int GetAudioVolumeCompensationVal(int progDbId);
171 //dtv audio track info
172 int getAudioTrackNum ( int progId );
173 int getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang );
174 int switchAudioTrack ( int progId, int idx );
175 int switchAudioTrack ( int aPid, int aFmt, int aParam );
176 int getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace );
177 int ResetAudioDecoderForPCMOutput();
178 int setAudioChannel ( int channelIdx );
179 int getAudioChannel();
180 int setTvObserver (TvIObserver *ob);
181 int getAtscAttenna();
182 long getTvTime()
183 {
184 return mTvTime.getTime();
185 };
186 void getFrontendStatus();
187 int getFrontendSignalStrength();
188 int getFrontendSNR();
189 int getFrontendBER();
190 int getChannelInfoBydbID ( int dbID, channel_info_t &chan_info );
191 int setBlackoutEnable(int enable);
192 int getSaveBlackoutEnable();
193 int getAutoBackLight_on_off();
194 int saveATVProgramID ( int dbID );
195 int getATVProgramID ( void );
196 int saveDTVProgramID ( int dbID );
197 int getDTVProgramID ( void );
198 int getCurPlayProgId();
199 int getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq );
200 int getAverageLuma();
201 int setAutobacklightData(const char *value);
202 int getAutoBacklightData(int *data);
203
204 virtual int Tv_SSMRestoreDefaultSetting();
205
206 //
207 int GetSourceConnectStatus(tv_source_input_t source_input);
208 int IsDVISignal();
209 int isVgaFmtInHdmi();
210 int isSDFmtInHdmi ( void );
211 //
212 int getHDMIFrameRate ( void );
213 void RefreshAudioMasterVolume ( tv_source_input_t source_input );
214
215 int Tv_Set3DMode ( VIDEO_3D_MODE_T mode );
216 VIDEO_3D_MODE_T Tv_Get3DMode ( void );
217 int Tv_Set3DLRSwith ( int on_off);
218 int Tv_Get3DLRSwith ( void );
219 int Tv_Set3DTo2DMode ( int mode);
220 int Tv_Get3DTo2DMode ( void );
221 int Tv_Set3DDepth ( int value );
222 int GetSave3DDepth ( void );
223 is_3d_type_t Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt );
224 int Tvin_SetPLLValues ();
225 int SetCVD2Values ();
226 unsigned int Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos);
227 int get_hdmi_sampling_rate();
228 //SSM
229 virtual int Tv_SSMFacRestoreDefaultSetting();
230 int Tv_GetHistgram(int *histgram_buf);
231 int StartHeadSetDetect();
232 virtual void onHeadSetDetect(int state, int para);
233
234 CTvin::CTvinSigDetect mSigDetectThread;
235 CSourceConnectDetect mSourceConnectDetectThread;
236 CHDMIRxCEC mHDMIRxCEC;
237 CUpgradeFBC *mpUpgradeFBC;
238 CSerialCommunication mSerialA;
239 CSerialCommunication mSerialB;
240 CSerialCommunication mSerialC;
241 CTvSubtitle mSubtitle;
242 CTv2d4GHeadSetDetect mHeadSet;
243
244 int SendHDMIRxCECCustomMessage(unsigned char data_buf[]);
245 int SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout);
246 int SendHDMIRxCECBoradcastStandbyMessage();
247 int SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]);
248 int SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]);
249 int SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]);
250
251 int GetHdmiHdcpKeyKsvInfo(int data_buf[]);
252 virtual bool hdmiOutWithFbc();
253 int StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size);
254 int SetSerialSwitch(int dev_id, int switch_val);
255 int SendSerialData(int dev_id, int data_len, unsigned char data_buf[]);
256 int SetDebugSerialOnOff(int on_off);
257 int GetDebugSerialOnOff();
258 int ChannelExport(const char *destPath);
259 int ChannelImport(const char *srcPath);
260 int Tv_GetProjectInfo(project_info_t *ptrInfo);
261 int Tv_GetPlatformType();
262 int Tv_HandeHDMIEDIDFilePathConfig();
263 int Tv_SetDDDRCMode(tv_source_input_t source_input);
264 int Tv_SetAudioSourceType (tv_source_input_t source_input);
265
266 //PQ
267 virtual int Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save );
268 virtual int Tv_GetBrightness ( tv_source_input_type_t source_type );
269 virtual int Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type );
270 virtual int Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save );
271 virtual int Tv_GetContrast ( tv_source_input_type_t source_type );
272 virtual int Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type );
273 virtual int Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save );
274 virtual int Tv_GetSaturation ( tv_source_input_type_t source_type );
275 virtual int Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type );
276 virtual int Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save );
277 virtual int Tv_GetHue ( tv_source_input_type_t source_type );
278 virtual int Tv_SaveHue ( int hue, tv_source_input_type_t source_type );
279 virtual int Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save );
280 virtual vpp_picture_mode_t Tv_GetPQMode ( tv_source_input_type_t source_type );
281 virtual int Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type );
282 virtual int Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save );
283 virtual int Tv_GetSharpness ( tv_source_input_type_t source_type );
284 virtual int Tv_SaveSharpness ( int value, tv_source_input_type_t source_type );
285 virtual int Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save );
286 virtual int Tv_GetBacklight ( tv_source_input_type_t source_type );
287 virtual int Tv_SaveBacklight ( int value, tv_source_input_type_t source_type );
288 int Tv_SetBacklight_Switch ( int value );
289 int Tv_GetBacklight_Switch ( void );
290 int Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save );
291 vpp_color_temperature_mode_t Tv_GetColorTemperature ( tv_source_input_type_t source_type );
292 virtual int Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save );
293 virtual int Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type );
294 virtual int Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type );
295 virtual vpp_display_mode_t Tv_GetDisplayMode ( tv_source_input_type_t source_type );
296 virtual int Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save );
297 virtual vpp_noise_reduction_mode_t Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type );
298 virtual int Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type );
299 int Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status);
300 int Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type);
301 int Tv_SplitScreenEffect(int mode, int width, int reverse = 0);
302 //
303 int Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness );
304 int Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode );
305 int Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast );
306 int Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode );
307 int Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation );
308 int Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode );
309 int Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue );
310 int Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode );
311 int Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness );
312 int Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode );
313
314 int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
315 int Tv_FactorySetTestPattern ( int pattern );
316 int Tv_FactoryGetTestPattern ( void );
317 int Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v );
318 int Tv_FactoryResetPQMode ( void );
319 int Tv_FactoryResetColorTemp ( void );
320 int Tv_FactorySetParamsDefault ( void );
321 int Tv_FactorySetDDRSSC ( int step );
322 int Tv_FactoryGetDDRSSC ( void );
323 int Tv_FactorySetLVDSSSC ( int step );
324 int Tv_FactoryGetLVDSSSC ( void );
325 void Tv_Spread_Spectrum(void);
326 int Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params );
327 noline_params_t Tv_FactoryGetNolineParams ( int noline_params_type, int source_type );
328 int Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t );
329 tvin_cutwin_t Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt );
330 int Tv_ReplacePqDb(const char *newFilePath = NULL);
331 //end PQ
332
333 //TV TO FBC
334 int Tv_FactorySet_FBC_Brightness ( int value );
335 int Tv_FactoryGet_FBC_Brightness ( void );
336 int Tv_FactorySet_FBC_Contrast( int value );
337 int Tv_FactoryGet_FBC_Contrast ( void );
338 int Tv_FactorySet_FBC_Saturation( int value );
339 int Tv_FactoryGet_FBC_Saturation ( void );
340 int Tv_FactorySet_FBC_HueColorTint( int value );
341 int Tv_FactoryGet_FBC_HueColorTint ( void );
342 virtual int Tv_FactorySet_FBC_Backlight ( int value );
343 virtual int Tv_FactoryGet_FBC_Backlight ( void );
344 int Tv_FactorySet_FBC_Backlight_N360 ( int value );
345 int Tv_FactoryGet_FBC_Backlight_N360 ( void );
346 int Tv_FactorySet_FBC_ELEC_MODE( int value );
347 int Tv_FactoryGet_FBC_ELEC_MODE( void );
348 int Tv_FactorySet_FBC_BACKLIGHT_N360( int value );
349 int Tv_FactoryGet_FBC_BACKLIGHT_N360( void );
350 int Tv_FactorySet_FBC_Picture_Mode ( int mode );
351 int Tv_FactoryGet_FBC_Picture_Mode ( void );
352 int Tv_FactorySet_FBC_Set_Test_Pattern ( int mode );
353 int Tv_FactoryGet_FBC_Get_Test_Pattern ( void );
354 int Tv_FactorySet_FBC_Gain_Red( int value );
355 int Tv_FactoryGet_FBC_Gain_Red ( void );
356 int Tv_FactorySet_FBC_Gain_Green( int value );
357 int Tv_FactoryGet_FBC_Gain_Green( void );
358 int Tv_FactorySet_FBC_Gain_Blue( int value );
359 int Tv_FactoryGet_FBC_Gain_Blue ( void );
360 int Tv_FactorySet_FBC_Offset_Red( int value );
361 int Tv_FactoryGet_FBC_Offset_Red ( void );
362 int Tv_FactorySet_FBC_Offset_Green( int value );
363 int Tv_FactoryGet_FBC_Offset_Green( void );
364 int Tv_FactorySet_FBC_Offset_Blue( int value );
365 int Tv_FactoryGet_FBC_Offset_Blue ( void );
366 int Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode);
367 int Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode);
368 int Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode);
369 int Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode);
370 int Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode);
371 int Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode);
372 int Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value);
373 int Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value);
374 int Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value);
375 int Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value);
376 int Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value);
377 int Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value);
378 int Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save);
379 int Tv_FactoryGetWhiteBalanceColorTempMode(int source_type );
380 int Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value);
381 int Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value);
382 int Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value);
383 int Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value);
384 int Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset);
385 int Tv_FactoryCloseWhiteBalanceGrayPattern();
386 int Tv_FactoryOpenWhiteBalanceGrayPattern();
387 int Tv_FactorySetWhiteBalanceGrayPattern(int value);
388 int Tv_FactoryGetWhiteBalanceGrayPattern();
389 int Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode);
390 int Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode);
391 int Tv_FactorySet_FBC_GrayPattern(int value);
392 int Tv_FactoryOpen_FBC_GrayPattern();
393 int Tv_FactoryClose_FBC_GrayPattern();
394 int Tv_FactorySet_FBC_ColorTemp_Mode( int mode );
395 int Tv_FactoryGet_FBC_ColorTemp_Mode ( void );
396 int Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode );
397 int Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void );
398 int Tv_FactorySet_FBC_LockN_state(int value);
399 int Tv_FactorySet_FBC_WB_Initial( int status );
400 int Tv_FactoryGet_FBC_WB_Initial ( void );
401 virtual int Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params);
402 virtual int Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
403 int Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params );
404 int Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
405 int Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item);
406 int Tv_FactorySet_FBC_CM_OnOff( unsigned char status );
407 int Tv_FactoryGet_FBC_CM_OnOff (void);
408 int Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status );
409 int Tv_FactoryGet_FBC_DNLP_OnOff (void);
410 int Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status );
411 int Tv_FactoryGet_FBC_Gamma_OnOff (void);
412 int Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status );
413 int Tv_FactoryGet_FBC_WhiteBalance_OnOff (void);
414 int Tv_FactorySet_FBC_Thermal_State( int value );
415 int Tv_FactorySet_FBC_backlight_onoff(int value);
416 int Tv_FactoryGet_FBC_backlight_onoff ( void );
417 int Tv_FactorySet_FBC_Auto_Backlight_OnOff(unsigned char status);
418 int Tv_FactoryGet_FBC_Auto_Backlight_OnOff ( void );
419 int Tv_FactoryGet_FBC_VIDEO_MUTE ( void );
420 int Tv_FactorySet_FBC_LVDS_SSG_Set( int value );
421 int Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value );
422 int Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void );
423 int Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value );
424 int Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void );
425 int Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value );
426 int Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void );
427 int Tv_FactorySet_FBC_MEMC_Status_N310 ( int value );
428 int Tv_FactoryGet_FBC_MEMC_Status_N310 ( void );
429 int Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode );
430 int Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void );
431 virtual int Tv_FactorySet_FBC_Backlight_N310 ( int value );
432 virtual int Tv_FactoryGet_FBC_Backlight_N310 ( void );
433 int Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value );
434 int Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void );
435 int Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 );
436 int Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value );
437 int Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void );
438 int Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value );
439 int Tv_FactoryGet_FBC_AP_STANDBY_N310( void );
440 int Tv_FactorySet_Uboot_Stage(int value);
441 //end TV TO FBC
442
443 int Tv_SetTestPattern(int value);
444 int Tv_Set2k4k_ScalerUp_Mode ( int value );
445 int Tv_Get2k4k_ScalerUp_Mode ( void );
446 //audio
447 virtual int Tv_SetDRC_OnOff(int on_off);
448 virtual int Tv_GetDRC_OnOff(void);
449 virtual void updateSubtitle(int, int);
450 int setSubtitleBuffer(char *);
451 int initSubtitle(int, int) ;
452 int lockSubtitle();
453 int unlockSubtitle();
454 int getSubSwitchStatus();
455 int startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) ;
456 int stopSubtitle() ;
457
458 //audio
459 virtual void TvAudioOpen();
460 virtual void AudioCtlUninit();
461 virtual int SetAudioMuteForSystem(int muteOrUnmute);
462 virtual int GetAudioMuteForSystem();
463 virtual int SetAudioMuteForTv(int muteOrUnmute);
464 virtual int GetAudioMuteForTv();
465 virtual char *GetMainVolLutTableExtraName();
466 virtual int SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value);
467 virtual int GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value);
468 int AudioHandleHeadsetPlugIn();
469 int AudioHandleHeadsetPullOut();
470 int SetAudioAVOutMute(int muteStatus);
471 int GetAudioAVOutMute();
472 int SetAudioSPDIFMute(int muteStatus);
473 int GetAudioSPDIFMute();
474 int SetDacMute(int muteStatus, int mute_type);
475 int SetAudioI2sMute(int);
476 int SetAudioMasterVolume(int tmp_vol);
477 int GetAudioMasterVolume();
478 int SaveCurAudioMasterVolume(int tmp_vol);
479 int GetCurAudioMasterVolume();
480 int SetAudioBalance(int tmp_val);
481 int GetAudioBalance();
482 int SaveCurAudioBalance(int tmp_val);
483 int GetCurAudioBalance();
484 int SetAudioSupperBassVolume(int tmp_vol);
485 int GetAudioSupperBassVolume();
486 int SaveCurAudioSupperBassVolume(int tmp_vol);
487 int GetCurAudioSupperBassVolume();
488 int SetAudioSupperBassSwitch(int tmp_val);
489 int GetAudioSupperBassSwitch();
490 int SaveCurAudioSupperBassSwitch(int tmp_val);
491 int GetCurAudioSupperBassSwitch();
492 int SetAudioSRSSurround(int tmp_val);
493 int GetAudioSRSSurround();
494 int SaveCurAudioSrsSurround(int tmp_val);
495 int GetCurAudioSRSSurround();
496 int SetAudioSrsDialogClarity(int tmp_val);
497 int GetAudioSrsDialogClarity();
498 int SaveCurAudioSrsDialogClarity(int tmp_val);
499 int GetCurAudioSrsDialogClarity();
500 int SetAudioSrsTruBass(int tmp_val);
501 int GetAudioSrsTruBass();
502 int SaveCurAudioSrsTruBass(int tmp_val);
503 int GetCurAudioSrsTruBass();
504 int SetAudioSPDIFSwitch(int tmp_val);
505 int GetCurAudioSPDIFSwitch();
506 int SaveCurAudioSPDIFSwitch(int tmp_val);
507
508 //Audio SPDIF Mode
509 int SetAudioSPDIFMode(int tmp_val);
510 int GetCurAudioSPDIFMode();
511 int SaveCurAudioSPDIFMode(int tmp_val);
512 int SetAudioBassVolume(int tmp_vol);
513 int GetAudioBassVolume();
514 int SaveCurAudioBassVolume(int tmp_vol);
515 int GetCurAudioBassVolume();
516 int SetAudioTrebleVolume(int tmp_vol);
517 int GetAudioTrebleVolume();
518 int SaveCurAudioTrebleVolume(int tmp_vol);
519 int GetCurAudioTrebleVolume();
520 int SetAudioSoundMode(int tmp_val);
521 int GetAudioSoundMode();
522 int SaveCurAudioSoundMode(int tmp_val);
523 int GetCurAudioSoundMode();
524 int SetAudioWallEffect(int tmp_val);
525 int GetAudioWallEffect();
526 int SaveCurAudioWallEffect(int tmp_val);
527 int GetCurAudioWallEffect();
528 int SetAudioEQMode(int tmp_val);
529 int GetAudioEQMode();
530 int SaveCurAudioEQMode(int tmp_val);
531 int GetCurAudioEQMode();
532 int GetAudioEQRange(int range_buf[]);
533 int GetAudioEQBandCount();
534 int SetAudioEQGain(int gain_buf[]);
535 int GetAudioEQGain(int gain_buf[]);
536 int GetCurAudioEQGain(int gain_buf[]);
537 int SaveCurAudioEQGain(int gain_buf[]);
538 int SetAudioEQSwitch(int switch_val);
539 int OpenAmAudio(unsigned int sr, int input_device, int output_device);
540 int CloseAmAudio(void);
541 int SetAmAudioInputSr(unsigned int sr, int output_device);
542 int SetAmAudioOutputMode(int mode);
543 int SetAmAudioMusicGain(int gain);
544 int SetAmAudioLeftGain(int gain);
545 int SetAmAudioRightGain(int gain);
546 int SetAudioVolumeCompensationVal(int tmp_vol_comp_val);
547 int AudioLineInSelectChannel(int audio_channel);
548 int AudioSetLineInCaptureVolume(int l_vol, int r_vol);
549 int SetKalaokIO(int level);
550 int setAudioPcmPlaybackVolume(int val);
551
552 int openTvAudio();
553 int closeTvAudio();
554
555 int InitTvAudio(int sr, int input_device);
556 int UnInitTvAudio();
557 int AudioChangeSampleRate(int sr);
558 int AudioSetAudioInSource(int audio_src_in_type);
559 int AudioSetAudioSourceType(int source_type);
560 int AudioSSMRestoreDefaultSetting();
561 int SetAudioDumpDataFlag(int tmp_flag);
562 int GetAudioDumpDataFlag();
563 int SetAudioLeftRightMode(unsigned int mode);
564 unsigned int GetAudioLeftRightMode();
565 int SwitchAVOutBypass (int);
566 int SetAudioSwitchIO(int value);
567 int SetOutput_Swap(int value);
568 int HanldeAudioInputSr(unsigned int);
569 void AudioSetVolumeDigitLUTBuf(int lut_sel_flag, int *MainVolLutBuf);
570 int SetADC_Digital_Capture_Volume(int value);
571 int SetPGA_IN_Value(int value);
572 int SetDAC_Digital_PlayBack_Volume(int value);
573 int InitSetTvAudioCard();
574 int UnInitSetTvAudioCard();
575 void RefreshSrsEffectAndDacGain();
576 int SetCustomEQGain();
577 int SetAtvInGain(int gain_val);
578 int GetHdmiAvHotplugDetectOnoff();
579private:
580 int SendCmdToOffBoardFBCExternalDac(int, int);
581 int LoadCurAudioSPDIFMode();
582 int LoadCurAudioMasterVolume();
583 int LoadCurAudioBalance();
584 int LoadCurAudioSupperBassVolume();
585 int LoadCurAudioSupperBassSwitch();
586 int LoadCurAudioSrsSurround();
587 int LoadCurAudioSrsDialogClarity();
588 int LoadCurAudioSPDIFSwitch();
589 void SetSupperBassSRSSpeakerSize();
590 int LoadCurAudioSoundMode();
591 int LoadCurAudioEQMode();
592 int LoadCurAudioSrsTruBass();
593 int RealSaveCurAudioBassVolume(int, int);
594 int LoadCurAudioBassVolume();
595 int RealSaveCurAudioTrebleVolume(int, int);
596 int LoadCurAudioTrebleVolume();
597 int HandleTrebleBassVolume();
598 int LoadCurAudioWallEffect();
599 int RealReadCurAudioEQGain(int *);
600 int RealSaveCurAudioEQGain(int *, int);
601 int LoadCurAudioEQGain();
602 int MappingEQGain(int *, int *, int);
603 int RestoreToAudioDefEQGain(int *);
604 int GetCustomEQGain(int *);
605 int AudioSetEQGain(int *);
606 int handleEQGainBeforeSet(int *, int *);
607 int RealSetEQGain(int *);
608 int SetSpecialModeEQGain(int);
609 int SetSpecialIndexEQGain(int, int);
610 int SaveSpecialIndexEQGain(int, int);
611 void LoadAudioCtl();
612 void InitSetAudioCtl();
613 int GetBassUIMinGainVal();
614 int GetBassUIMaxGainVal();
615 int GetTrebleUIMinGainVal();
616 int GetTrebleUIMaxGainVal();
617 int MappingLine(int, int, int, int, int);
618 int MappingTrebleBassAndEqualizer(int, int, int, int);
619 int SetSPDIFMode(int mode_val);
620
621 CAudioAlsa mAudioAlsa;
622 CAudioEffect mAudioEffect;
623
624 CAudioCustomerCtrl mCustomerCtrl;
625 int mCurAudioMasterVolume;
626 int mCurAudioBalance;
627 int mCurAudioSupperBassVolume;
628 int mCurAudioSupperBassSwitch;
629 int mCurAudioSRSSurround;
630 int mCurAudioSrsDialogClarity;
631 int mCurAudioSrsTruBass;
632 int mCurAudioSPDIFSwitch;
633 int mCurAudioSPDIFMode;
634 int mCurAudioBassVolume;
635 int mCurAudioTrebleVolume;
636 int mCurAudioSoundMode;
637 int mCurAudioWallEffect;
638 int mCurAudioEQMode;
639 int mCustomAudioMasterVolume;
640 int mCustomAudioBalance;
641 int mCustomAudioSupperBassVolume;
642 int mCustomAudioSupperBassSwitch;
643 int mCustomAudioSRSSurround;
644 int mCustomAudioSrsDialogClarity;
645 int mCustomAudioSrsTruBass;
646 int mCustomAudioBassVolume;
647 int mCustomAudioTrebleVolume;
648 int mCustomAudioSoundMode;
649 int mCustomAudioWallEffect;
650 int mCustomAudioEQMode;
651 int mCustomAudioSoundEnhancementSwitch;
652 int mCustomEQGainBuf[CC_BAND_ITEM_CNT];
653 int mCurEQGainBuf[CC_BAND_ITEM_CNT] ;
654 int8_t mCurEQGainChBuf[CC_BAND_ITEM_CNT];
655 int mWallEffectValueBuf[CC_BAND_ITEM_CNT];
656 int mVolumeCompensationVal;
657 int mMainVolumeBalanceVal;
658 //end audio
659
660protected:
661 class CTvMsgQueue: public CMsgQueueThread, public CAv::IObserver, public CTvScanner::IObserver , public CTvEpg::IObserver, public CFrontEnd::IObserver {
662 public:
663 static const int TV_MSG_COMMON = 0;
664 static const int TV_MSG_STOP_ANALYZE_TS = 1;
665 static const int TV_MSG_START_ANALYZE_TS = 2;
666 static const int TV_MSG_CHECK_FE_DELAY = 3;
667 static const int TV_MSG_AV_EVENT = 4;
668 static const int TV_MSG_FE_EVENT = 5;
669 static const int TV_MSG_SCAN_EVENT = 6;
670 static const int TV_MSG_EPG_EVENT = 7;
671 static const int TV_MSG_HDMI_SR_CHANGED = 8;
672 static const int TV_MSG_ENABLE_VIDEO_LATER = 9;
673 CTvMsgQueue(CTv *tv);
674 ~CTvMsgQueue();
675 //scan observer
676 void onEvent ( const CTvScanner::ScannerEvent &ev );
677 //epg observer
678 void onEvent ( const CTvEpg::EpgEvent &ev );
679 //FE observer
680 void onEvent ( const CFrontEnd::FEEvent &ev );
681 //AV
682 void onEvent(const CAv::AVEvent &ev);
683 private:
684 virtual void handleMessage ( CMessage &msg );
685 CTv *mpTv;
686 };
687
688 class CTvDetectObserverForScanner: public CTvin::CTvinSigDetect::ISigDetectObserver {
689 public:
690 CTvDetectObserverForScanner(CTv *);
691 ~CTvDetectObserverForScanner() {};
692 virtual void onSigToStable();
693 virtual void onSigStableToUnstable();
694 virtual void onSigStableToNoSig();
695 virtual void onSigUnStableToNoSig();
696 virtual void onSigStillStable();
697 private:
698 CTv *mpTv;
699 int m_sig_stable_nums;
700 };
701 void onEnableVideoLater(int framecount);
702 int resetDmxAndAvSource();
703 int stopScan();
704 int stopPlaying();
705 void sendTvEvent ( const CTvEv &ev );
706 int startPlayTv ( int source, int vid, int aid, int vfat, int afat );
707 //scan observer
708 void onEvent ( const CTvScanner::ScannerEvent &ev );
709 //epg observer
710 void onEvent ( const CTvEpg::EpgEvent &ev );
711 //FE observer
712 void onEvent ( const CFrontEnd::FEEvent &ev );
713 //AV
714 void onEvent(const CAv::AVEvent &ev);
715 bool Tv_Start_Analyze_Ts ( int channelID );
716 bool Tv_Stop_Analyze_Ts();
717 int Tvin_Stop ( void );
718 int Tvin_GetTvinConfig();
719 int Tv_init_audio();
720 int Tv_MiscSetBySource ( tv_source_input_t );
721 void print_version_info ( void );
722 int dtvCleanProgramByFreq ( int freq );
723 /*********************** Audio start **********************/
724 int SetAudioVolDigitLUTTable ( tv_source_input_t source_input );
725 virtual int Tv_SetAudioInSource (tv_source_input_t source_input);
726 void Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input);
727 void Tv_ADCDigitalCapture_Volume (void);
728 void Tv_SetPGAIn_Gain (void);
729 void Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type);
730 void Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input);
731 /*********************** Audio end **********************/
732
733 //
734 virtual void onSigToStable();
735 virtual void onSigStableToUnstable();
736 virtual void onSigStableToUnSupport();
737 virtual void onSigStableToNoSig();
738 virtual void onSigUnStableToUnSupport();
739 virtual void onSigUnStableToNoSig();
740 virtual void onSigNullToNoSig();
741 virtual void onSigNoSigToUnstable();
742 virtual void onSigStillStable();
743 virtual void onSigStillUnstable();
744 virtual void onSigStillNosig();
745 virtual void onSigStillNoSupport();
746 virtual void onSigStillNull();
747 virtual void onStableSigFmtChange();
748 virtual void onStableTransFmtChange();
749 virtual void onSigDetectEnter();
750 virtual void onSigDetectLoop();
751
752 virtual void onSourceConnect(int source_type, int connect_status);
753 virtual void onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]);
754 virtual void onUpgradeStatus(int status, int progress);
755 virtual void onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]);
756 virtual void onThermalDetect(int state);
757 virtual void onVframeSizeChange();
758
759 CTvEpg mTvEpg;
760 CTvScanner mTvScanner;
761 mutable Mutex mLock;
762 CTvTime mTvTime;
763 CTvRecord mTvRec;
764 CFrontEnd mFrontDev;
765 CTvDimension mTvVchip;
766 CTvSubtitle mTvSub;
767 CAv mAv;
768 CTvDmx mTvDmx;
769 CTvMsgQueue mTvMsgQueue;
770 AutoBackLight mAutoBackLight;
771 CAutoPQparam mAutoPQparam;
772 CTvDetectObserverForScanner mTvScannerDetectObserver;
773 //
774 volatile int mTvAction;
775 volatile TvRunStatus_t mTvStatus;
776 volatile tv_source_input_t m_source_input;
777 volatile tv_source_input_t m_last_source_input;
778 /* for tvin window mode and pos*/
779 tvin_window_pos_t m_win_pos;
780 tv_window_mode_t m_win_mode;
781 int m_blackout_enable;//1 enable 0 disable
782 int m_cur_playing_prog_id;
783 bool mHdmiOutFbc;
784 CFbcCommunication *fbcIns;
785
786
787 bool mlastlockstatus;
788 String8 mlastdm;
789 String8 mlastabbrev;
790 String8 mlastabbtext;
791 pthread_t vchipthread;
792 int mvchip_running;
793 friend class CTvMsgQueue;
794 int mCurAnalyzeTsChannelID;
795 TvIObserver *mpObserver;
796 tv_dtv_scan_running_status_t mDtvScanRunningStatus;
797 volatile tv_config_t gTvinConfig;
798 int dtv_auto_3d_flag;
799 bool mAutoSetDisplayFreq;
800 int m_sig_stable_nums;
801 bool mSetHdmiEdid;
802 /** for L/R or B/T 3d mode overscan **/
803 /** for 3D **/
804 VIDEO_3D_MODE_T m_mode_3d;
805 /** for HDMI-in sampling detection. **/
806 int m_hdmi_sampling_rate;
807 int m_hdmi_audio_data;
808 /** for display mode to bottom **/
809 int screen_mode;
810
811 //audio mute
812 int mAudioMuteStatusForTv;
813 int mAudioMuteStatusForSystem;
814 char mMainVolLutTableExtraName[16];
815};
816
817#endif //_CDTV_H
818