|
SASC
DVBSoftCAM
|
00001 /* 00002 * dvbdevice.h: The DVB device interface 00003 * 00004 * See the main source file 'vdr.c' for copyright information and 00005 * how to reach the author. 00006 * 00007 * $Id: dvbdevice.h 1.44 2007/02/25 12:23:57 kls Exp $ 00008 */ 00009 00010 #ifndef __DVBDEVICE_H 00011 #define __DVBDEVICE_H 00012 00013 #include <linux/dvb/frontend.h> 00014 #include <linux/dvb/version.h> 00015 #include "device.h" 00016 #include "dvbspu.h" 00017 00018 #if DVB_API_VERSION < 3 00019 #error VDR requires Linux DVB driver API version 3 or higher! 00020 #endif 00021 00022 #define MAXDVBDEVICES 8 00023 00024 class cDvbTuner; 00025 00027 00028 class cDvbDevice : public cDevice { 00029 private: 00030 static bool Probe(const char *FileName); 00032 public: 00033 static bool Initialize(void); 00037 private: 00038 fe_type_t frontendType; 00039 int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca; 00040 protected: 00041 virtual void MakePrimaryDevice(bool On); 00042 public: 00043 cDvbDevice(int n); 00044 virtual ~cDvbDevice(); 00045 virtual bool Ready(void); 00046 virtual bool HasDecoder(void) const; 00047 00048 // Common Interface facilities: 00049 00050 private: 00051 cCiAdapter *ciAdapter; 00052 00053 // SPU facilities 00054 00055 private: 00056 cDvbSpuDecoder *spuDecoder; 00057 public: 00058 virtual cSpuDecoder *GetSpuDecoder(void); 00059 00060 // Channel facilities 00061 00062 private: 00063 cDvbTuner *dvbTuner; 00064 void TurnOffLiveMode(bool LiveView); 00065 public: 00066 virtual bool ProvidesSource(int Source) const; 00067 virtual bool ProvidesTransponder(const cChannel *Channel) const; 00068 virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const; 00069 virtual bool IsTunedToTransponder(const cChannel *Channel); 00070 public: 00071 virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); 00072 public: 00073 virtual bool HasLock(int TimeoutMs = 0); 00074 00075 // PID handle facilities 00076 00077 private: 00078 bool SetAudioBypass(bool On); 00079 protected: 00080 virtual bool SetPid(cPidHandle *Handle, int Type, bool On); 00081 00082 // Section filter facilities 00083 00084 protected: 00085 virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask); 00086 virtual void CloseFilter(int Handle); 00087 00088 // Common Interface facilities: 00089 00090 public: 00091 virtual bool HasCi(void); 00092 00093 // Image Grab facilities 00094 00095 private: 00096 static int devVideoOffset; 00097 int devVideoIndex; 00098 public: 00099 virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1); 00100 00101 // Video format facilities 00102 00103 public: 00104 virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat); 00105 virtual void SetVideoFormat(bool VideoFormat16_9); 00106 virtual eVideoSystem GetVideoSystem(void); 00107 00108 // Track facilities 00109 00110 protected: 00111 virtual void SetAudioTrackDevice(eTrackType Type); 00112 00113 // Audio facilities 00114 00115 private: 00116 bool digitalAudio; 00117 static int setTransferModeForDolbyDigital; 00118 protected: 00119 virtual int GetAudioChannelDevice(void); 00120 virtual void SetAudioChannelDevice(int AudioChannel); 00121 virtual void SetVolumeDevice(int Volume); 00122 virtual void SetDigitalAudioDevice(bool On); 00123 public: 00124 static void SetTransferModeForDolbyDigital(int Mode); 00130 00131 // Player facilities 00132 00133 protected: 00134 ePlayMode playMode; 00135 virtual bool CanReplay(void) const; 00136 virtual bool SetPlayMode(ePlayMode PlayMode); 00137 virtual int PlayVideo(const uchar *Data, int Length); 00138 virtual int PlayAudio(const uchar *Data, int Length, uchar Id); 00139 public: 00140 virtual int64_t GetSTC(void); 00141 virtual void TrickSpeed(int Speed); 00142 virtual void Clear(void); 00143 virtual void Play(void); 00144 virtual void Freeze(void); 00145 virtual void Mute(void); 00146 virtual void StillPicture(const uchar *Data, int Length); 00147 virtual bool Poll(cPoller &Poller, int TimeoutMs = 0); 00148 virtual bool Flush(int TimeoutMs = 0); 00149 00150 // Receiver facilities 00151 00152 private: 00153 cTSBuffer *tsBuffer; 00154 protected: 00155 virtual bool OpenDvr(void); 00156 virtual void CloseDvr(void); 00157 virtual bool GetTSPacket(uchar *&Data); 00158 }; 00159 00160 #endif //__DVBDEVICE_H