vdr
1.7.27
|
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