vdr  1.7.31
dvbhdffdevice.h
Go to the documentation of this file.
1 /*
2  * dvbhdffdevice.h: The DVB HD Full Featured device interface
3  *
4  * See the README file for copyright information and how to reach the author.
5  *
6  * $Id: dvbhdffdevice.h 1.7 2011/09/10 10:17:32 kls Exp $
7  */
8 
9 #ifndef __DVBHDFFDEVICE_H
10 #define __DVBHDFFDEVICE_H
11 
12 #include "hdffcmd.h"
13 #include "vdr/dvbdevice.h"
14 #include "vdr/dvbspu.h"
15 
17 
18 class cDvbHdFfDevice : public cDvbDevice {
19 private:
21 protected:
22  virtual void MakePrimaryDevice(bool On);
23 public:
24  static bool Probe(int Adapter, int Frontend);
26  virtual ~cDvbHdFfDevice();
27  virtual bool HasDecoder(void) const;
28 
29 // SPU facilities
30 
31 private:
33 public:
34  virtual cSpuDecoder *GetSpuDecoder(void);
35 
36 // Channel facilities
37 
38 private:
39  void TurnOffLiveMode(bool LiveView);
40 protected:
41  virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
42 
43 // PID handle facilities
44 
45 protected:
46  virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
47 
48 // Image Grab facilities
49 
50 public:
51  virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
52 
53 // Video format facilities
54 
55 public:
56  virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
57  virtual void SetVideoFormat(bool VideoFormat16_9);
58  virtual eVideoSystem GetVideoSystem(void);
59  virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
60  virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
61 
62 // Track facilities
63 
64 protected:
65  virtual void SetAudioTrackDevice(eTrackType Type);
66 
67 // Audio facilities
68 
69 private:
71 protected:
72  virtual int GetAudioChannelDevice(void);
73  virtual void SetAudioChannelDevice(int AudioChannel);
74  virtual void SetVolumeDevice(int Volume);
75  virtual void SetDigitalAudioDevice(bool On);
76 
77 // Player facilities
78 
79 private:
82  bool freezed;
83  bool trickMode;
84 
85  // Pes2Ts conversion stuff
86  uint8_t videoCounter;
87  uint8_t audioCounter;
88  void BuildTsPacket(uint8_t * TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t * Data, uint32_t Length);
89  uint32_t PesToTs(uint8_t * TsBuffer, uint16_t Pid, uint8_t & Counter, const uint8_t * Data, uint32_t Length);
90 
91 protected:
93  virtual bool CanReplay(void) const;
94  virtual bool SetPlayMode(ePlayMode PlayMode);
95  virtual int PlayVideo(const uchar *Data, int Length);
96  virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
97  virtual int PlayTsVideo(const uchar *Data, int Length);
98  virtual int PlayTsAudio(const uchar *Data, int Length);
99 public:
100  virtual int64_t GetSTC(void);
101  virtual void TrickSpeed(int Speed);
102  virtual void Clear(void);
103  virtual void Play(void);
104  virtual void Freeze(void);
105  virtual void Mute(void);
106  virtual void StillPicture(const uchar *Data, int Length);
107  virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
108  virtual bool Flush(int TimeoutMs = 0);
109 
110 // HDFF specific things
111 
112 public:
113  static HDFF::cHdffCmdIf *GetHdffCmdHandler(void);
114 private:
115  static int devHdffOffset;//TODO
116  bool isHdffPrimary;//TODO implicit!
118 };
119 
121 public:
122  virtual bool Probe(int Adapter, int Frontend);
123  };
124 
125 #endif //__DVBHDFFDEVICE_H