SASC
DVBSoftCAM

dvbdevice.h

Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines