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