vdr  1.7.27
dvbhdffdevice.h
Go to the documentation of this file.
00001 /*
00002  * dvbhdffdevice.h: The DVB HD Full Featured device interface
00003  *
00004  * See the README file for copyright information and how to reach the author.
00005  *
00006  * $Id: dvbhdffdevice.h 1.7 2011/09/10 10:17:32 kls Exp $
00007  */
00008 
00009 #ifndef __DVBHDFFDEVICE_H
00010 #define __DVBHDFFDEVICE_H
00011 
00012 #include "hdffcmd.h"
00013 #include "vdr/dvbdevice.h"
00014 #include "vdr/dvbspu.h"
00015 
00017 
00018 class cDvbHdFfDevice : public cDvbDevice {
00019 private:
00020   int fd_osd, fd_audio, fd_video;
00021 protected:
00022   virtual void MakePrimaryDevice(bool On);
00023 public:
00024   static bool Probe(int Adapter, int Frontend);
00025   cDvbHdFfDevice(int Adapter, int Frontend);
00026   virtual ~cDvbHdFfDevice();
00027   virtual bool HasDecoder(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 private:
00039   void TurnOffLiveMode(bool LiveView);
00040 protected:
00041   virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
00042 
00043 // PID handle facilities
00044 
00045 protected:
00046   virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
00047 
00048 // Image Grab facilities
00049 
00050 public:
00051   virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
00052 
00053 // Video format facilities
00054 
00055 public:
00056   virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
00057   virtual void SetVideoFormat(bool VideoFormat16_9);
00058   virtual eVideoSystem GetVideoSystem(void);
00059   virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
00060   virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
00061 
00062 // Track facilities
00063 
00064 protected:
00065   virtual void SetAudioTrackDevice(eTrackType Type);
00066 
00067 // Audio facilities
00068 
00069 private:
00070   int audioChannel;
00071 protected:
00072   virtual int GetAudioChannelDevice(void);
00073   virtual void SetAudioChannelDevice(int AudioChannel);
00074   virtual void SetVolumeDevice(int Volume);
00075   virtual void SetDigitalAudioDevice(bool On);
00076 
00077 // Player facilities
00078 
00079 private:
00080   int playVideoPid;
00081   int playAudioPid;
00082   bool freezed;
00083   bool trickMode;
00084 
00085   // Pes2Ts conversion stuff
00086   uint8_t videoCounter;
00087   uint8_t audioCounter;
00088   void BuildTsPacket(uint8_t * TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t * Data, uint32_t Length);
00089   uint32_t PesToTs(uint8_t * TsBuffer, uint16_t Pid, uint8_t & Counter, const uint8_t * Data, uint32_t Length);
00090 
00091 protected:
00092   ePlayMode playMode;
00093   virtual bool CanReplay(void) const;
00094   virtual bool SetPlayMode(ePlayMode PlayMode);
00095   virtual int PlayVideo(const uchar *Data, int Length);
00096   virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
00097   virtual int PlayTsVideo(const uchar *Data, int Length);
00098   virtual int PlayTsAudio(const uchar *Data, int Length);
00099 public:
00100   virtual int64_t GetSTC(void);
00101   virtual void TrickSpeed(int Speed);
00102   virtual void Clear(void);
00103   virtual void Play(void);
00104   virtual void Freeze(void);
00105   virtual void Mute(void);
00106   virtual void StillPicture(const uchar *Data, int Length);
00107   virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
00108   virtual bool Flush(int TimeoutMs = 0);
00109 
00110 // HDFF specific things
00111 
00112 public:
00113   static HDFF::cHdffCmdIf *GetHdffCmdHandler(void);
00114 private:
00115   static int devHdffOffset;//TODO
00116   bool isHdffPrimary;//TODO implicit!
00117   HDFF::cHdffCmdIf *mHdffCmdIf;
00118 };
00119 
00120 class cDvbHdFfDeviceProbe : public cDvbDeviceProbe {
00121 public:
00122   virtual bool Probe(int Adapter, int Frontend);
00123   };
00124 
00125 #endif //__DVBHDFFDEVICE_H