vdr  2.4.1
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 
7 #ifndef AUDIO_GET_PTS
8 #define AUDIO_GET_PTS _IOR('o', 19, __u64)
9 #endif
10 #ifndef __DVBHDFFDEVICE_H
11 #define __DVBHDFFDEVICE_H
12 
13 #include "hdffcmd.h"
14 #include <vdr/dvbdevice.h>
15 #include <vdr/dvbspu.h>
16 
18 
19 class cDvbHdFfDevice : public cDvbDevice {
20 private:
22  bool outputOnly;
23 protected:
24  virtual void MakePrimaryDevice(bool On);
25 public:
26  static bool Probe(int Adapter, int Frontend);
27  cDvbHdFfDevice(int Adapter, int Frontend, bool OutputOnly);
28  virtual ~cDvbHdFfDevice();
29  virtual bool HasDecoder(void) const;
30 
31 // SPU facilities
32 
33 private:
35 public:
36  virtual cSpuDecoder *GetSpuDecoder(void);
37 
38 // Channel facilities
39 
40 public:
41  virtual bool ProvidesSource(int Source) const;
42  virtual int NumProvidedSystems(void) const;
43 private:
44  void TurnOffLiveMode(bool LiveView);
45 protected:
46  virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
47 
48 // PID handle facilities
49 
50 protected:
51  virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
52 
53 // Image Grab facilities
54 
55 public:
56  virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
57 
58 // Video format facilities
59 
60 public:
61  virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
62  virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
63  virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
64 
65 // Track facilities
66 
67 protected:
68  virtual void SetAudioTrackDevice(eTrackType Type);
69 
70 // Audio facilities
71 
72 private:
74 protected:
75  virtual int GetAudioChannelDevice(void);
76  virtual void SetAudioChannelDevice(int AudioChannel);
77  virtual void SetVolumeDevice(int Volume);
78 
79 // Player facilities
80 
81 private:
85  bool freezed;
86  bool trickMode;
90 
91  // Pes2Ts conversion stuff
92  uint8_t videoCounter;
93  uint8_t audioCounter;
94  void BuildTsPacket(uint8_t * TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t * Data, uint32_t Length);
95  uint32_t PesToTs(uint8_t * TsBuffer, uint16_t Pid, uint8_t & Counter, const uint8_t * Data, uint32_t Length);
96 
97 protected:
99  virtual bool CanReplay(void) const;
100  virtual bool SetPlayMode(ePlayMode PlayMode);
101  virtual int PlayVideo(const uchar *Data, int Length);
102  virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
103  virtual int PlayTsVideo(const uchar *Data, int Length);
104  virtual int PlayTsAudio(const uchar *Data, int Length);
105 public:
106  virtual int64_t GetSTC(void);
107  virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter);
108  virtual void ScaleVideo(const cRect &Rect = cRect::Null);
109 #if (APIVERSNUM >= 20103)
110  virtual void TrickSpeed(int Speed, bool Forward);
111 #else
112  virtual void TrickSpeed(int Speed);
113 #endif
114  virtual void Clear(void);
115  virtual void Play(void);
116  virtual void Freeze(void);
117  virtual void Mute(void);
118  virtual void StillPicture(const uchar *Data, int Length);
119  virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
120  virtual bool Flush(int TimeoutMs = 0);
121 
122 // HDFF specific things
123 
124 public:
125  static HDFF::cHdffCmdIf *GetHdffCmdHandler(void);
126 private:
127  static int devHdffOffset;//TODO
128  bool isHdffPrimary;//TODO implicit!
130 };
131 
133 private:
135 public:
136  cDvbHdFfDeviceProbe(void);
137  virtual bool Probe(int Adapter, int Frontend);
138  void SetOutputOnly(bool On) { outputOnly = On; }
139  };
140 
141 #endif //__DVBHDFFDEVICE_H
virtual void MakePrimaryDevice(bool On)
Informs a device that it will be the primary device.
unsigned char uchar
Definition: tools.h:31
virtual int PlayTsVideo(const uchar *Data, int Length)
Plays the given data block as video.
virtual cRect CanScaleVideo(const cRect &Rect, int Alignment=taCenter)
Asks the output device whether it can scale the currently shown video in such a way that it fits into...
uint8_t videoCounter
Definition: dvbhdffdevice.h:92
virtual int64_t GetSTC(void)
Gets the current System Time Counter, which can be used to synchronize audio, video and subtitles...
virtual void StillPicture(const uchar *Data, int Length)
Displays the given I-frame as a still picture.
virtual int NumProvidedSystems(void) const
Returns the number of individual "delivery systems" this device provides.
virtual void TrickSpeed(int Speed)
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect)
Returns the Width, Height and PixelAspect ratio the OSD should use to best fit the resolution of the ...
virtual void Freeze(void)
Puts the device into "freeze frame" mode.
virtual int GetAudioChannelDevice(void)
Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).
ePlayMode playMode
Definition: dvbhdffdevice.h:98
virtual void Clear(void)
Clears all video and audio data from the device.
virtual void ScaleVideo(const cRect &Rect=cRect::Null)
Scales the currently shown video in such a way that it fits into the given Rect.
virtual int PlayVideo(const uchar *Data, int Length)
Plays the given data block as video.
eTrackType
Definition: device.h:63
int Adapter(void) const
Definition: dvbdevice.h:194
virtual bool HasDecoder(void) const
Tells whether this device has an MPEG decoder.
virtual void Play(void)
Sets the device into play mode (after a previous trick mode).
cDvbHdFfDevice(int Adapter, int Frontend, bool OutputOnly)
Definition: dvbhdffdevice.c:32
Definition: osd.h:158
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat)
Sets the video display format to the given one (only useful if this device has an MPEG decoder)...
uint32_t PesToTs(uint8_t *TsBuffer, uint16_t Pid, uint8_t &Counter, const uint8_t *Data, uint32_t Length)
HDFF::cHdffCmdIf * mHdffCmdIf
Definition: osd.h:352
void SetOutputOnly(bool On)
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView)
Sets the device to the given channel (actual physical setup).
void BuildTsPacket(uint8_t *TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t *Data, uint32_t Length)
virtual ~cDvbHdFfDevice()
virtual bool SetPlayMode(ePlayMode PlayMode)
Sets the device into the given play mode.
eVideoDisplayFormat
Definition: device.h:58
virtual int PlayTsAudio(const uchar *Data, int Length)
Plays the given data block as audio.
virtual int PlayAudio(const uchar *Data, int Length, uchar Id)
Plays the given data block as audio.
ePlayMode
Definition: device.h:39
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect)
Returns the Width, Height and VideoAspect ratio of the currently displayed video material.
static const cRect Null
Definition: osd.h:357
virtual bool Flush(int TimeoutMs=0)
Returns true if the device&#39;s output buffers are empty, i.
bool supportsPcrInTransferMode
Definition: dvbhdffdevice.h:89
cDvbSpuDecoder * spuDecoder
Definition: dvbhdffdevice.h:34
virtual void SetAudioChannelDevice(int AudioChannel)
Sets the audio channel to stereo (0), mono left (1) or mono right (2).
The cDvbHdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API...
Definition: dvbhdffdevice.h:19
int Frontend(void) const
Definition: dvbdevice.c:1877
virtual bool ProvidesSource(int Source) const
Returns true if this device can provide the given source.
virtual bool CanReplay(void) const
Returns true if this device can currently start a replay session.
virtual uchar * GrabImage(int &Size, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
Grabs the currently visible screen image.
The cDvbDevice implements a DVB device which can be accessed through the Linux DVB driver API...
Definition: dvbdevice.h:171
void TurnOffLiveMode(bool LiveView)
virtual void SetAudioTrackDevice(eTrackType Type)
Sets the current audio track to the given value.
virtual bool Probe(int Adapter, int Frontend)
Probes for a DVB device at the given Adapter and creates the appropriate object derived from cDvbDevi...
static HDFF::cHdffCmdIf * GetHdffCmdHandler(void)
static bool Probe(int Adapter, int Frontend)
virtual void SetVolumeDevice(int Volume)
Sets the audio volume on this device (Volume = 0...255).
static int devHdffOffset
virtual cSpuDecoder * GetSpuDecoder(void)
Returns a pointer to the device&#39;s SPU decoder (or NULL, if this device doesn&#39;t have an SPU decoder)...
Definition: tools.h:393
virtual bool SetPid(cPidHandle *Handle, int Type, bool On)
Does the actual PID setting on this device.
uint8_t audioCounter
Definition: dvbhdffdevice.h:93
virtual bool Poll(cPoller &Poller, int TimeoutMs=0)
Returns true if the device itself or any of the file handles in Poller is ready for further action...
virtual void Mute(void)
Turns off audio while replaying.