vdr  1.7.27
dvbsdffdevice.h
Go to the documentation of this file.
00001 /*
00002  * dvbsdffdevice.h: The DVB SD Full Featured device interface
00003  *
00004  * See the README file for copyright information and how to reach the author.
00005  *
00006  * $Id: dvbsdffdevice.h 2.13 2011/08/27 11:32:42 kls Exp $
00007  */
00008 
00009 #ifndef __DVBSDFFDEVICE_H
00010 #define __DVBSDFFDEVICE_H
00011 
00012 #include "vdr/dvbdevice.h"
00013 #include "vdr/dvbspu.h"
00014 
00016 
00017 class cDvbSdFfDevice : public cDvbDevice {
00018 private:
00019   int fd_osd, fd_audio, fd_video, fd_stc;
00020   bool outputOnly;
00021 protected:
00022   virtual void MakePrimaryDevice(bool On);
00023 public:
00024   cDvbSdFfDevice(int Adapter, int Frontend, bool OutputOnly);
00025   virtual ~cDvbSdFfDevice();
00026   virtual bool HasDecoder(void) const;
00027   virtual bool AvoidRecording(void) const;
00028 
00029 // SPU facilities
00030 
00031 private:
00032   cDvbSpuDecoder *spuDecoder;
00033 public:
00034   virtual cSpuDecoder *GetSpuDecoder(void);
00035 
00036 // Channel facilities
00037 
00038 public:
00039   virtual bool ProvidesSource(int Source) const;
00040 private:
00041   void TurnOffLiveMode(bool LiveView);
00042 protected:
00043   virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
00044 
00045 // PID handle facilities
00046 
00047 private:
00048   bool SetAudioBypass(bool On);
00049 protected:
00050   virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
00051 
00052 // Image Grab facilities
00053 
00054 private:
00055   static int devVideoOffset;
00056   int devVideoIndex;
00057 public:
00058   virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
00059 
00060 // Video format facilities
00061 
00062 public:
00063   virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
00064   virtual void SetVideoFormat(bool VideoFormat16_9);
00065   virtual eVideoSystem GetVideoSystem(void);
00066   virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
00067   virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
00068 
00069 // Track facilities
00070 
00071 protected:
00072   virtual void SetAudioTrackDevice(eTrackType Type);
00073 
00074 // Audio facilities
00075 
00076 private:
00077   bool digitalAudio;
00078 protected:
00079   virtual int GetAudioChannelDevice(void);
00080   virtual void SetAudioChannelDevice(int AudioChannel);
00081   virtual void SetVolumeDevice(int Volume);
00082   virtual void SetDigitalAudioDevice(bool On);
00083 
00084 // Player facilities
00085 
00086 protected:
00087   ePlayMode playMode;
00088   virtual bool CanReplay(void) const;
00089   virtual bool SetPlayMode(ePlayMode PlayMode);
00090   virtual int PlayVideo(const uchar *Data, int Length);
00091   virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
00092   virtual int PlayTsVideo(const uchar *Data, int Length);
00093   virtual int PlayTsAudio(const uchar *Data, int Length);
00094 public:
00095   virtual int64_t GetSTC(void);
00096   virtual void TrickSpeed(int Speed);
00097   virtual void Clear(void);
00098   virtual void Play(void);
00099   virtual void Freeze(void);
00100   virtual void Mute(void);
00101   virtual void StillPicture(const uchar *Data, int Length);
00102   virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
00103   virtual bool Flush(int TimeoutMs = 0);
00104   };
00105 
00106 class cDvbSdFfDeviceProbe : public cDvbDeviceProbe {
00107 private:
00108   bool outputOnly;
00109 public:
00110   cDvbSdFfDeviceProbe(void);
00111   void SetOutputOnly(bool On) { outputOnly = On; }
00112   virtual bool Probe(int Adapter, int Frontend);
00113   };
00114  
00115 #endif //__DVBSDFFDEVICE_H