summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tv/CTv.h (plain)
blob: 2eefdf72a9c9c92d235ea679011af35f39cd46cf
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 "../tvutils/CMsgQueue.h"
29#include "../tvutils/CSerialCommunication.h"
30#include "../tvutils/serial_operate.h"
31#include "CTvRecord.h"
32#include "CTvSubtitle.h"
33#include "CUpgradeFBC.h"
34#include "CAv.h"
35#include "CTvDmx.h"
36#include "../audio/audio_api.h"
37#include "AutoBackLight.h"
38using namespace android;
39
40static const char *TV_CONFIG_FILE_PATH = "/param/tvconfig.conf";
41static const char *TV_DB_PATH = "/param/dtv.db";
42static const char *TV_CONFIG_FILE_SYSTEM_PATH = "/system/etc/tvconfig.conf";
43static const char *TV_CONFIG_FILE_PARAM_PATH = "/param/tvconfig.conf";
44static const char *TV_CHANNEL_LIST_SYSTEM_PATH = "/system/etc/tv_default.xml";
45static const char *TV_CHANNEL_LIST_PARAM_PATH = "/param/tv_default.xml";
46static const char *TV_SSM_DATA_SYSTEM_PATH = "/system/etc/ssm_data";
47static const char *TV_SSM_DATA_PARAM_PATH = "/param/ssm_data";
48
49#define DEVICE_CLASS_TSYNC_AV_THRESHOLD_MIN "/sys/class/tsync/av_threshold_min"
50#define AV_THRESHOLD_MIN_MS "540000" //6S = 6*90000
51
52#define DEFAULT_COMPENSATION_VALUE 0
53
54
55typedef enum tv_fmt_ratio_e {
56 RATIO_43,
57 RATIO_169,
58 RATIO_MAX,
59} tv_fmt_ratio_t;
60
61typedef enum tv_color_fmt_e {
62 COLOR_RGB444,
63 COLOR_YUV422,
64 COLOR_YUV444,
65 COLOR_MAX,
66} tv_color_fmt_t;
67
68
69
70typedef enum tv_window_mode_e {
71 NORMAL_WONDOW,
72 PREVIEW_WONDOW,
73} tv_window_mode_t;
74
75typedef enum tv_dtv_scan_running_status_e {
76 DTV_SCAN_RUNNING_NORMAL,
77 DTV_SCAN_RUNNING_ANALYZE_CHANNEL,
78} tv_dtv_scan_running_status_t;
79
80typedef struct tv_config_s {
81 unsigned int overscan_3d;
82 unsigned int tv_out_counter;
83 bool kernelpet_disable;
84 unsigned int kernelpet_timeout;
85 bool userpet;
86 unsigned int userpet_timeout;
87 unsigned int userpet_reset;
88 unsigned int dtv_videopath_switch;
89 bool title_shake;
90 bool memory512m;
91} tv_config_t;
92
93typedef enum TvRunStatus_s {
94 TV_INIT_ED = -1,
95 TV_OPEN_ED = 0,
96 TV_START_ED ,
97 TV_RESUME_ED,
98 TV_PAUSE_ED,
99 TV_STOP_ED,
100 TV_CLOSE_ED,
101} TvRunStatus_t;
102
103class CTv : public CTvin::CTvinSigDetect::ISigDetectObserver, public CTvin::CSourceConnectDetect::ISourceConnectObserver, public CTvin::CHDMIRxCEC::IHDMIRxCECObserver, public CUpgradeFBC::IUpgradeFBCObserver, public CSerialCommunication::ISerialCommunicationObserver {
104public:
105 static const int TV_ACTION_NULL = 0x0000;
106 static const int TV_ACTION_STARTING = 0x0001;
107 static const int TV_ACTION_STOPING = 0x0002;
108 static const int TV_ACTION_SCANNING = 0x0004;
109 static const int TV_ACTION_PLAYING = 0x0008;
110 static const int TV_ACTION_RECORDING = 0x0010;
111 static const int TV_ACTION_SOURCE_SWITCHING = 0x0020;
112public:
113 class TvIObserver {
114 public:
115 TvIObserver() {};
116 virtual ~TvIObserver() {};
117 virtual void onTvEvent ( const CTvEv &ev ) = 0;
118 };
119 //main
120 CTv();
121 virtual ~CTv();
122 virtual int OpenTv ( void );
123 virtual int CloseTv ( void );
124 virtual int StartTvLock ();
125 virtual int StopTvLock ( void );
126 virtual TvRunStatus_t GetTvStatus();
127 virtual int ClearAnalogFrontEnd();
128 virtual tv_source_input_t GetLastSourceInput (void);
129 virtual int SetSourceSwitchInput (tv_source_input_t source_input );
130 virtual tv_source_input_t GetCurrentSourceInputLock ( void );
131 virtual tvin_info_t GetCurrentSignalInfo ( void );
132 virtual int SetPreviewWindow ( tvin_window_pos_t pos );
133 virtual int dtvAutoScan();
134 virtual int dtvManualScan (int beginFreq, int endFreq, int modulation = -1);
135 virtual int atvAutoScan(int videoStd, int audioStd, int searchType);
136 virtual int clearAllProgram(int arg0);
137 virtual int clearDbAllProgramInfoTable();
138 virtual void setSourceSwitchAndPlay();
139 virtual int GetDisplayResolutionConfig();
140 virtual int GetDisplayResolutionInfo();
141 virtual int atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, int store_Type = 0, int channel_num = 0 );
142 virtual int stopScanLock();
143 virtual int dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd);
144 virtual void SetRecordFileName ( char *name );
145 virtual void StartToRecord();
146 virtual void StopRecording();
147 virtual void SetRecCurTsOrCurProgram ( int sel );
148 virtual int startCC(int country, int src, int channel, int service);
149 virtual int stopCC();
150 virtual void printDebugInfo();
151 virtual int playProgramLock ( int progId );
152 virtual int playDvbcProgram ( int progId );
153 virtual int playDtmbProgram ( int progId );
154 virtual int playAtvProgram ( int, int, int, int);
155 virtual int stopPlayingLock();
156 virtual int resetFrontEndPara ( frontend_para_set_t feParms );
157 int SetCurProgramAudioVolumeCompensationVal ( int tmpVal );
158 int GetAudioVolumeCompensationVal(int progDbId);
159 //dtv audio track info
160 int getAudioTrackNum ( int progId );
161 int getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang );
162 int switchAudioTrack ( int progId, int idx );
163 int getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace );
164 int ResetAudioDecoderForPCMOutput();
165 int setAudioChannel ( int channelIdx );
166 int getAudioChannel();
167 int setTvObserver (TvIObserver *ob);
168 int getAtscAttenna();
169 long getTvTime()
170 {
171 return mTvTime.getTime();
172 };
173 void getFrontendStatus();
174 int getFrontendSignalStrength();
175 int getFrontendSNR();
176 int getFrontendBER();
177 int getChannelInfoBydbID ( int dbID, channel_info_t &chan_info );
178 int setBlackoutEnable(int enable);
179 int getSaveBlackoutEnable();
180 void startAutoBackLight();
181 void stopAutoBackLight();
182 int getAutoBackLight_on_off();
183 int saveATVProgramID ( int dbID );
184 int getATVProgramID ( void );
185 int saveDTVProgramID ( int dbID );
186 int getDTVProgramID ( void );
187 int getCurPlayProgId();
188 int getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq );
189
190 int Tv_SSMRestoreDefaultSetting();
191
192 //
193 int GetSourceConnectStatus(int source_input);
194 int IsDVISignal();
195 int isVgaFmtInHdmi();
196 //
197 int getHDMIFrameRate ( void );
198 void RefreshAudioMasterVolume ( tv_source_input_t source_input );
199
200 int Tv_Set3DMode ( VIDEO_3D_MODE_T mode );
201 VIDEO_3D_MODE_T Tv_Get3DMode ( void );
202 int Tv_Set3DLRSwith ( int on_off);
203 int Tv_Get3DLRSwith ( void );
204 int Tv_Set3DTo2DMode ( int mode);
205 int Tv_Get3DTo2DMode ( void );
206 int Tv_Set3DDepth ( int value );
207 int GetSave3DDepth ( void );
208 is_3d_type_t Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt );
209 int Tvin_SetPLLValues ();
210 int SetCVD2Values ();
211 unsigned int Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos);
212 int get_hdmi_sampling_rate();
213 //SSM
214 int Tv_SSMFacRestoreDefaultSetting();
215
216 CTvin::CTvinSigDetect mSigDetectThread;
217 CTvin::CSourceConnectDetect mSourceConnectDetectThread;
218 CTvin::CHDMIRxCEC mHDMIRxCEC;
219 CUpgradeFBC *mpUpgradeFBC;
220 CSerialCommunication mSerialA;
221 CSerialCommunication mSerialB;
222 CSerialCommunication mSerialC;
223
224 int SendHDMIRxCECCustomMessage(unsigned char data_buf[]);
225 int SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout);
226 int SendHDMIRxCECBoradcastStandbyMessage();
227 int SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]);
228 int SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]);
229 int SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]);
230
231 int GetHdmiHdcpKeyKsvInfo(int data_buf[]);
232 int StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size);
233 int SetSerialSwitch(int dev_id, int switch_val);
234 int SendSerialData(int dev_id, int data_len, unsigned char data_buf[]);
235 int ChannelExport(const char *destPath);
236 int ChannelImport(const char *srcPath);
237 int Tv_GetProjectInfo(project_info_t *ptrInfo);
238 int Tv_GetPlatformType();
239 int Tv_SetDDDRCMode(tv_source_input_t source_input);
240 int Tv_SetAudioSourceType (tv_source_input_t source_input);
241
242 //PQ
243 int Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save );
244 int Tv_GetBrightness ( tv_source_input_type_t source_type );
245 int Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save );
246 int Tv_GetContrast ( tv_source_input_type_t source_type );
247 int Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save );
248 int Tv_GetSaturation ( tv_source_input_type_t source_type );
249 int Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save );
250 int Tv_GetHue ( tv_source_input_type_t source_type );
251 int Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save );
252 vpp_picture_mode_t Tv_GetPQMode ( tv_source_input_type_t source_type );
253 int Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save );
254 int Tv_GetSharpness ( tv_source_input_type_t source_type );
255 int Tv_SaveSharpness ( int value, tv_source_input_type_t source_type, int is_enable );
256 int Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save );
257 int Tv_GetBacklight ( tv_source_input_type_t source_type );
258 int Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save );
259 vpp_color_temperature_mode_t Tv_GetColorTemperature ( tv_source_input_type_t source_type );
260 int Tv_SaveColorTemp ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type );
261 int Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save );
262 vpp_display_mode_t Tv_GetDisplayMode ( tv_source_input_type_t source_type );
263 int Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type );
264 int Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save );
265 vpp_noise_reduction_mode_t Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type );
266 int Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type );
267 int Tv_SetRGBOGO_PostOffset(int type, int offset);
268 int Tv_SetRGBOGO_Gain(int type, int gain);
269 int Tv_GetRGBOGO_PostOffset ( int type );
270 int Tv_GetRGBOGO_Gain ( int type );
271 //
272 int Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness );
273 int Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode );
274 int Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast );
275 int Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode );
276 int Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation );
277 int Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode );
278 int Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue );
279 int Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode );
280 int Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness );
281 int Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode );
282 int Tv_FactorySetColorTemp_Rgain ( int source_type, int colortemp_mode, int rgain );
283 int Tv_FactorySaveColorTemp_Rgain ( int source_type, int colortemp_mode, int rgain );
284 int Tv_FactoryGetColorTemp_Rgain ( int source_type, int colortemp_mode );
285 int Tv_FactorySetColorTemp_Ggain ( int source_type, int colortemp_mode, int ggain );
286 int Tv_FactorySaveColorTemp_Ggain ( int source_type, int colortemp_mode, int ggain );
287 int Tv_FactoryGetColorTemp_Ggain ( int source_type, int colortemp_mode );
288 int Tv_FactorySetColorTemp_Bgain ( int source_type, int colortemp_mode, int bgain );
289 int Tv_FactorySaveColorTemp_Bgain ( int source_type, int colortemp_mode, int bgain );
290 int Tv_FactoryGetColorTemp_Bgain ( int source_type, int colortemp_mode );
291 int Tv_FactorySetColorTemp_Roffset ( int source_type, int colortemp_mode, int roffset );
292 int Tv_FactorySaveColorTemp_Roffset ( int source_type, int colortemp_mode, int roffset );
293 int Tv_FactoryGetColorTemp_Roffset ( int source_type, int colortemp_mode );
294 int Tv_FactorySetColorTemp_Goffset ( int source_type, int colortemp_mode, int goffset );
295 int Tv_FactorySaveColorTemp_Goffset ( int source_type, int colortemp_mode, int goffset );
296 int Tv_FactoryGetColorTemp_Goffset ( int source_type, int colortemp_mode );
297 int Tv_FactorySetColorTemp_Boffset ( int source_type, int colortemp_mode, int boffset );
298 int Tv_FactorySaveColorTemp_Boffset ( int source_type, int colortemp_mode, int boffset );
299 int Tv_FactoryGetColorTemp_Boffset ( int source_type, int colortemp_mode );
300 int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
301 int Tv_FactorySetTestPattern ( int pattern );
302 int Tv_FactoryGetTestPattern ( void );
303 int Tv_FactoryResetPQMode ( void );
304 int Tv_FactoryResetColorTemp ( void );
305 int Tv_FactorySetParamsDefault ( void );
306 int Tv_FactorySetDDRSSC ( int step );
307 int Tv_FactoryGetDDRSSC ( void );
308 int Tv_FactorySetLVDSSSC ( int step );
309 int Tv_FactoryGetLVDSSSC ( void );
310 int Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params );
311 noline_params_t Tv_FactoryGetNolineParams ( int noline_params_type, int source_type );
312 int Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t );
313 tvin_cutwin_t Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt );
314 //end PQ
315
316 //TV TO FBC
317 int Tv_FactorySet_FBC_Brightness ( int value );
318 int Tv_FactoryGet_FBC_Brightness ( void );
319 int Tv_FactorySet_FBC_Contrast( int value );
320 int Tv_FactoryGet_FBC_Contrast ( void );
321 int Tv_FactorySet_FBC_Saturation( int value );
322 int Tv_FactoryGet_FBC_Saturation ( void );
323 int Tv_FactorySet_FBC_HueColorTint( int value );
324 int Tv_FactoryGet_FBC_HueColorTint ( void );
325 int Tv_FactorySet_FBC_Backlight ( int value );
326 int Tv_FactoryGet_FBC_Backlight ( void );
327 int Tv_FactorySet_FBC_Backlight_N360 ( int value );
328 int Tv_FactoryGet_FBC_Backlight_N360 ( void );
329 int Tv_FactorySet_FBC_ELEC_MODE( int value );
330 int Tv_FactoryGet_FBC_ELEC_MODE( void );
331 int Tv_FactorySet_FBC_Picture_Mode ( int mode );
332 int Tv_FactoryGet_FBC_Picture_Mode ( void );
333 int Tv_FactorySet_FBC_Set_Test_Pattern ( int mode );
334 int Tv_FactoryGet_FBC_Get_Test_Pattern ( void );
335 int Tv_FactorySet_FBC_Gain_Red( int value );
336 int Tv_FactoryGet_FBC_Gain_Red ( void );
337 int Tv_FactorySet_FBC_Gain_Green( int value );
338 int Tv_FactoryGet_FBC_Gain_Green( void );
339 int Tv_FactorySet_FBC_Gain_Blue( int value );
340 int Tv_FactoryGet_FBC_Gain_Blue ( void );
341 int Tv_FactorySet_FBC_Offset_Red( int value );
342 int Tv_FactoryGet_FBC_Offset_Red ( void );
343 int Tv_FactorySet_FBC_Offset_Green( int value );
344 int Tv_FactoryGet_FBC_Offset_Green( void );
345 int Tv_FactorySet_FBC_Offset_Blue( int value );
346 int Tv_FactoryGet_FBC_Offset_Blue ( void );
347 int Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode);
348 int Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode);
349 int Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode);
350 int Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode);
351 int Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode);
352 int Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode);
353 int Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value);
354 int Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value);
355 int Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value);
356 int Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value);
357 int Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value);
358 int Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value);
359 int Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save);
360 int Tv_FactoryGetWhiteBalanceColorTempMode(int source_type );
361 int Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value);
362 int Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value);
363 int Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value);
364 int Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value);
365 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);
366 int Tv_FactoryCloseWhiteBalanceGrayPattern();
367 int Tv_FactoryOpenWhiteBalanceGrayPattern();
368 int Tv_FactorySetWhiteBalanceGrayPattern(int value);
369 int Tv_FactoryGetWhiteBalanceGrayPattern();
370 int Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode);
371 int Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode);
372 int Tv_FactoryWhiteBalanceGetAllParams(int Tempmode, tcon_rgb_ogo_t *params);
373 int Tv_FactorySet_FBC_GrayPattern(int value);
374 int Tv_FactoryOpen_FBC_GrayPattern();
375 int Tv_FactoryClose_FBC_GrayPattern();
376 int Tv_FactorySet_FBC_ColorTemp_Mode( int mode );
377 int Tv_FactoryGet_FBC_ColorTemp_Mode ( void );
378 int Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode );
379 int Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void );
380 int Tv_FactorySet_FBC_WB_Initial( int status );
381 int Tv_FactoryGet_FBC_WB_Initial ( void );
382 int Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params);
383 int Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
384 int Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params );
385 int Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params );
386 int Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item);
387 int Tv_FactorySet_FBC_CM_OnOff( unsigned char status );
388 int Tv_FactoryGet_FBC_CM_OnOff (void);
389 int Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status );
390 int Tv_FactoryGet_FBC_DNLP_OnOff (void);
391 int Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status );
392 int Tv_FactoryGet_FBC_Gamma_OnOff (void);
393 int Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status );
394 int Tv_FactoryGet_FBC_WhiteBalance_OnOff (void);
395 int Tv_FactorySet_FBC_Thermal_State( int value );
396 int Tv_FactorySet_FBC_backlight_onoff(int value);
397 int Tv_FactoryGet_FBC_backlight_onoff ( void );
398 int Tv_FactorySet_FBC_LVDS_SSG_Set( int value );
399 int Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value );
400 int Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void );
401 int Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value );
402 int Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void );
403 int Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value );
404 int Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void );
405 int Tv_FactorySet_FBC_MEMC_Status_N310 ( int value );
406 int Tv_FactoryGet_FBC_MEMC_Status_N310 ( void );
407 //end TV TO FBC
408
409 //audio
410 int SetAudioMuteForSystem(int muteOrUnmute);
411 int GetAudioMuteForSystem();
412 int SetAudioAVOutMute(int muteStatus);
413 int GetAudioAVOutMute();
414 int SetAudioSPDIFMute(int muteStatus);
415 int GetAudioSPDIFMute();
416 int SetAudioMasterVolume(int tmp_vol);
417 int GetAudioMasterVolume();
418 int SaveCurAudioMasterVolume(int tmp_vol);
419 int GetCurAudioMasterVolume();
420 int SetAudioBalance(int tmp_val);
421 int GetAudioBalance();
422 int SaveCurAudioBalance(int tmp_val);
423 int GetCurAudioBalance();
424 int SetAudioSupperBassVolume(int tmp_vol);
425 int GetAudioSupperBassVolume();
426 int SaveCurAudioSupperBassVolume(int tmp_vol);
427 int GetCurAudioSupperBassVolume();
428 int SetAudioSupperBassSwitch(int tmp_val);
429 int GetAudioSupperBassSwitch();
430 int SaveCurAudioSupperBassSwitch(int tmp_val);
431 int GetCurAudioSupperBassSwitch();
432 int SetAudioSRSSurround(int tmp_val);
433 int GetAudioSRSSurround();
434 int SaveCurAudioSrsSurround(int tmp_val);
435 int GetCurAudioSRSSurround();
436 int SetAudioSrsDialogClarity(int tmp_val);
437 int GetAudioSrsDialogClarity();
438 int SaveCurAudioSrsDialogClarity(int tmp_val);
439 int GetCurAudioSrsDialogClarity();
440 int SetAudioSrsTruBass(int tmp_val);
441 int GetAudioSrsTruBass();
442 int SaveCurAudioSrsTruBass(int tmp_val);
443 int GetCurAudioSrsTruBass();
444 int SetAudioBassVolume(int tmp_vol);
445 int GetAudioBassVolume();
446 int SaveCurAudioBassVolume(int tmp_vol);
447 int GetCurAudioBassVolume();
448 int SetAudioTrebleVolume(int tmp_vol);
449 int GetAudioTrebleVolume();
450 int SaveCurAudioTrebleVolume(int tmp_vol);
451 int GetCurAudioTrebleVolume();
452 int SetAudioSoundMode(int tmp_val);
453 int GetAudioSoundMode();
454 int SaveCurAudioSoundMode(int tmp_val);
455 int GetCurAudioSoundMode();
456 int SetAudioWallEffect(int tmp_val);
457 int GetAudioWallEffect();
458 int SaveCurAudioWallEffect(int tmp_val);
459 int GetCurAudioWallEffect();
460 int SetAudioEQMode(int tmp_val);
461 int GetAudioEQMode();
462 int SaveCurAudioEQMode(int tmp_val);
463 int GetCurAudioEQMode();
464 int GetAudioEQRange(int range_buf[]);
465 int SetAudioEQGain(int gain_buf[]);
466 int GetAudioEQGain(int gain_buf[]);
467 int SaveCurAudioEQGain(int gain_buf[]);
468 int GetCurAudioEQGain(int gain_buf[]);
469 int GetAudioEQBandCount();
470 int SetAudioEQSwitch(int switch_val);
471 int SetAudioSPDIFSwitch(int tmp_val);
472 int amAudioSetDoubleOutputSwitch(int en_val);
473 int UsbAudioOuputModuleSwitch(int sw);
474 int GetAmAudioSetDoubleOutputSwitch();
475 int GetCurUsbAudioOuputModuleSwitch();
476 int SaveCurAudioSPDIFSwitch(int tmp_val);
477 int GetCurAudioSPDIFSwitch();
478 int SetAudioSPDIFMode(int tmp_val);
479 int SaveCurAudioSPDIFMode(int tmp_val);
480 int GetCurAudioSPDIFMode();
481 int OpenAmAudio(unsigned int sr, int output_device);
482 int CloseAmAudio(void);
483 int SetAmAudioInputSr(unsigned int sr, int output_device);
484 int SetAmAudioOutputMode(int mode);
485 int SetAmAudioMusicGain(int gain);
486 int SetAmAudioLeftGain(int gain);
487 int SetAmAudioRightGain(int gain);
488 int AudioLineInSelectChannel(int audio_channel);
489 int SetKalaokIO(int level);
490 int AudioSetAudioInSource(int audio_src_in_type);
491 int AudioSetLineInCaptureVolume(int l_vol, int r_vol);
492 int AudioHandleHeadsetPlugIn();
493 int AudioHandleHeadsetPullOut();
494 //end audio
495
496protected:
497 class CTvMsgQueue: public CMsgQueueThread, public CAv::IObserver, public CTvScanner::IObserver , public CTvEpg::IObserver, public CFrontEnd::IObserver {
498 public:
499 static const int TV_MSG_COMMON = 0;
500 static const int TV_MSG_STOP_ANALYZE_TS = 1;
501 static const int TV_MSG_START_ANALYZE_TS = 2;
502 static const int TV_MSG_CHECK_FE_DELAY = 3;
503 static const int TV_MSG_AV_EVENT = 4;
504 static const int TV_MSG_FE_EVENT = 5;
505 static const int TV_MSG_SCAN_EVENT = 6;
506 static const int TV_MSG_EPG_EVENT = 7;
507
508 CTvMsgQueue(CTv *tv);
509 ~CTvMsgQueue();
510 //scan observer
511 void onEvent ( const CTvScanner::ScannerEvent &ev );
512 //epg observer
513 void onEvent ( const CTvEpg::EpgEvent &ev );
514 //FE observer
515 void onEvent ( const CFrontEnd::FEEvent &ev );
516 //AV
517 void onEvent(const CAv::AVEvent &ev);
518 private:
519 virtual void handleMessage ( CMessage &msg );
520 CTv *mpTv;
521 };
522
523
524 int resetDmxAndAvSource();
525 int stopScan();
526 int stopPlaying();
527 void sendTvEvent ( const CTvEv &ev );
528 int startPlayTv ( int source, int vid, int aid, int vfat, int afat );
529 //scan observer
530 void onEvent ( const CTvScanner::ScannerEvent &ev );
531 //epg observer
532 void onEvent ( const CTvEpg::EpgEvent &ev );
533 //FE observer
534 void onEvent ( const CFrontEnd::FEEvent &ev );
535 //AV
536 void onEvent(const CAv::AVEvent &ev);
537 bool Tv_Start_Analyze_Ts ( int channelID );
538 bool Tv_Stop_Analyze_Ts();
539 int Tvin_Stop ( void );
540 int SetBypassModulesFor3D ( VIDEO_3D_MODE_E );
541 int Vpp_SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt );
542 int Tvin_GetTvinConfig();
543 int Tv_init_audio();
544 int Tv_MiscSetBySource ( tv_source_input_t );
545 void print_version_info ( void );
546 int dtvCleanProgramByFreq ( int freq );
547 /*********************** Audio start **********************/
548 int SetAudioMainVolLutBufName();
549 int SetAudioSupperBassVolLutBufName();
550 int SetAudioVolDigitLUTBuf ( tv_source_input_t source_input );
551 int Tv_SetAudioInSource (tv_source_input_t source_input);
552 void Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input);
553 /*********************** Audio end **********************/
554
555 //
556 virtual void onSigToStable();
557 virtual void onSigStableToUnstable();
558 virtual void onSigStableToUnSupport();
559 virtual void onSigStableToNoSig();
560 virtual void onSigUnStableToUnSupport();
561 virtual void onSigUnStableToNoSig();
562 virtual void onSigNullToNoSig();
563 virtual void onSigNoSigToUnstable();
564 virtual void onSigStillStable();
565 virtual void onSigStillUnstable();
566 virtual void onSigStillNosig();
567 virtual void onSigStillNoSupport();
568 virtual void onSigStillNull();
569 virtual void onStableSigFmtChange();
570 virtual void onStableTransFmtChange();
571 virtual void onSigDetectEnter();
572 virtual void onLoop();
573
574 virtual void onSourceConnect(int source_type, int connect_status);
575 virtual void onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]);
576 virtual void onUpgradeStatus(int status, int progress);
577 virtual void onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]);
578 virtual void onThermalDetect(int state);
579
580 CTvEpg mTvEpg;
581 CTvScanner mTvScanner;
582 mutable Mutex mLock;
583 CTvTime mTvTime;
584 CVpp mVpp;
585 CTvin mTvin;
586 CTvRecord mTvRec;
587 CFrontEnd mFrontDev;
588 CTvDimension mTvVchip;
589 CTvSubtitle mTvSub;
590 CTvAudio mTvAudio;
591 CAv mAv;
592 CTvDmx mTvDmx;
593 CTvMsgQueue mTvMsgQueue;
594 AutoBackLight mAutoBackLight;
595 //
596 volatile int mTvAction;
597 volatile TvRunStatus_t mTvStatus;
598 volatile tv_source_input_t m_source_input;
599 volatile tv_source_input_t m_last_source_input;
600 /* for tvin window mode and pos*/
601 tvin_window_pos_t m_win_pos;
602 tv_window_mode_t m_win_mode;
603 int m_blackout_enable;//1 enable 0 disable
604 int m_cur_playing_prog_id;
605 tvin_sig_fmt_t m_cur_set_info_fmt;
606 bool mIsFbc;
607
608
609 bool mlastlockstatus;
610 String8 mlastdm;
611 String8 mlastabbrev;
612 String8 mlastabbtext;
613 pthread_t vchipthread;
614 int mvchip_running;
615 friend class CTvMsgQueue;
616 int mCurAnalyzeTsChannelID;
617 int audio_sr;
618 TvIObserver *mpObserver;
619 tv_dtv_scan_running_status_t mDtvScanRunningStatus;
620 volatile tv_config_t gTvinConfig;
621 int dtv_auto_3d_flag;
622 bool m_autoset_displayfreq;
623 int m_sig_stable_nums;
624 bool m_is_set_hdmi_edid;
625 /** for L/R or B/T 3d mode overscan **/
626 /** for 3D **/
627 VIDEO_3D_MODE_T m_mode_3d;
628 /** for HDMI-in sampling detection. **/
629 volatile bool m_is_hdmi_sr_detect_start;
630 int m_hdmi_sampling_rate;
631};
632
633#endif //_CDTV_H
634