vdr  2.4.1
dvbsdffdevice.h
Go to the documentation of this file.
1 /*
2  * dvbsdffdevice.h: The DVB SD Full Featured device interface
3  *
4  * See the README file for copyright information and how to reach the author.
5  *
6  * $Id: dvbsdffdevice.h 4.0 2014/03/15 12:36:35 kls Exp $
7  */
8 
9 #ifndef __DVBSDFFDEVICE_H
10 #define __DVBSDFFDEVICE_H
11 
12 #include <vdr/dvbdevice.h>
13 #include <vdr/dvbspu.h>
14 
16 
17 class cDvbSdFfDevice : public cDvbDevice {
18 private:
20  bool outputOnly;
21 protected:
22  virtual void MakePrimaryDevice(bool On);
23 public:
24  cDvbSdFfDevice(int Adapter, int Frontend, bool OutputOnly);
25  virtual ~cDvbSdFfDevice();
26  virtual bool HasDecoder(void) const;
27  virtual bool AvoidRecording(void) const;
28 
29 // SPU facilities
30 
31 private:
33 public:
34  virtual cSpuDecoder *GetSpuDecoder(void);
35 
36 // Channel facilities
37 
38 public:
39  virtual bool ProvidesSource(int Source) const;
40  virtual int NumProvidedSystems(void) const;
41 private:
42  void TurnOffLiveMode(bool LiveView);
43 protected:
44  virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
45 
46 // PID handle facilities
47 
48 private:
49  bool SetAudioBypass(bool On);
50 protected:
51  virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
52 
53 // Image Grab facilities
54 
55 private:
56  static int devVideoOffset;
58 public:
59  virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
60 
61 // Video format facilities
62 
63 public:
64  virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
65  virtual void SetVideoFormat(bool VideoFormat16_9);
66  virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
67  virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
68 
69 // Track facilities
70 
71 protected:
72  virtual void SetAudioTrackDevice(eTrackType Type);
73 
74 // Audio facilities
75 
76 private:
78 protected:
79  virtual int GetAudioChannelDevice(void);
80  virtual void SetAudioChannelDevice(int AudioChannel);
81  virtual void SetVolumeDevice(int Volume);
82  virtual void SetDigitalAudioDevice(bool On);
83 
84 // Player facilities
85 
86 protected:
88  virtual bool CanReplay(void) const;
89  virtual bool SetPlayMode(ePlayMode PlayMode);
90  virtual int PlayVideo(const uchar *Data, int Length);
91  virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
92  virtual int PlayTsVideo(const uchar *Data, int Length);
93  virtual int PlayTsAudio(const uchar *Data, int Length);
94 public:
95  virtual int64_t GetSTC(void);
96  virtual void TrickSpeed(int Speed, bool Forward);
97  virtual void Clear(void);
98  virtual void Play(void);
99  virtual void Freeze(void);
100  virtual void Mute(void);
101  virtual void StillPicture(const uchar *Data, int Length);
102  virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
103  virtual bool Flush(int TimeoutMs = 0);
104  };
105 
107 private:
109 public:
110  cDvbSdFfDeviceProbe(void);
111  void SetOutputOnly(bool On) { outputOnly = On; }
112  virtual bool Probe(int Adapter, int Frontend);
113  };
114 
115 #endif //__DVBSDFFDEVICE_H
cDvbSdFfDeviceProbe::cDvbSdFfDeviceProbe
cDvbSdFfDeviceProbe(void)
Definition: dvbsdffdevice.c:754
cPoller
Definition: tools.h:393
cDvbSdFfDevice::PlayTsAudio
virtual int PlayTsAudio(const uchar *Data, int Length)
Plays the given data block as audio.
Definition: dvbsdffdevice.c:747
cDvbSdFfDevice::spuDecoder
cDvbSpuDecoder * spuDecoder
Definition: dvbsdffdevice.h:32
cDvbSdFfDevice::~cDvbSdFfDevice
virtual ~cDvbSdFfDevice()
Definition: dvbsdffdevice.c:71
cDvbSdFfDevice::HasDecoder
virtual bool HasDecoder(void) const
Tells whether this device has an MPEG decoder.
Definition: dvbsdffdevice.c:85
cDvbSdFfDevice::PlayTsVideo
virtual int PlayTsVideo(const uchar *Data, int Length)
Plays the given data block as video.
Definition: dvbsdffdevice.c:742
cDvbSdFfDevice::SetAudioTrackDevice
virtual void SetAudioTrackDevice(eTrackType Type)
Sets the current audio track to the given value.
Definition: dvbsdffdevice.c:469
cDvbSdFfDeviceProbe::SetOutputOnly
void SetOutputOnly(bool On)
Definition: dvbsdffdevice.h:111
cDvbSdFfDevice::Poll
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.
Definition: dvbsdffdevice.c:720
cDvbSdFfDevice::SetVideoFormat
virtual void SetVideoFormat(bool VideoFormat16_9)
Sets the output video format to either 16:9 or 4:3 (only useful if this device has an MPEG decoder).
Definition: dvbsdffdevice.c:238
cDvbSdFfDevice::ProvidesSource
virtual bool ProvidesSource(int Source) const
Returns true if this device can provide the given source.
Definition: dvbsdffdevice.c:342
cDvbSdFfDevice::PlayAudio
virtual int PlayAudio(const uchar *Data, int Length, uchar Id)
Plays the given data block as audio.
Definition: dvbsdffdevice.c:737
cDvbSdFfDevice::Mute
virtual void Mute(void)
Turns off audio while replaying.
Definition: dvbsdffdevice.c:630
cDvbDeviceProbe
Definition: dvbdevice.h:299
cDvbSdFfDevice::StillPicture
virtual void StillPicture(const uchar *Data, int Length)
Displays the given I-frame as a still picture.
Definition: dvbsdffdevice.c:639
cDvbSdFfDevice::Play
virtual void Play(void)
Sets the device into play mode (after a previous trick mode).
Definition: dvbsdffdevice.c:596
cDvbSdFfDevice::devVideoIndex
int devVideoIndex
Definition: dvbsdffdevice.h:57
cDvbSdFfDevice::fd_video
int fd_video
Definition: dvbsdffdevice.h:19
cDvbSdFfDevice::SetChannelDevice
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView)
Sets the device to the given channel (actual physical setup).
Definition: dvbsdffdevice.c:380
cDvbSdFfDevice::SetAudioChannelDevice
virtual void SetAudioChannelDevice(int AudioChannel)
Sets the audio channel to stereo (0), mono left (1) or mono right (2).
Definition: dvbsdffdevice.c:444
cDvbSdFfDevice::GetSpuDecoder
virtual cSpuDecoder * GetSpuDecoder(void)
Returns a pointer to the device's SPU decoder (or NULL, if this device doesn't have an SPU decoder).
Definition: dvbsdffdevice.c:95
cDvbSdFfDevice::SetDigitalAudioDevice
virtual void SetDigitalAudioDevice(bool On)
Tells the output device that the current audio track is Dolby Digital.
Definition: dvbsdffdevice.c:459
cDvbSdFfDevice::GetSTC
virtual int64_t GetSTC(void)
Gets the current System Time Counter, which can be used to synchronize audio, video and subtitles.
Definition: dvbsdffdevice.c:567
cDvbSdFfDevice::SetAudioBypass
bool SetAudioBypass(bool On)
Definition: dvbsdffdevice.c:290
uchar
unsigned char uchar
Definition: tools.h:31
cDvbSdFfDevice::AvoidRecording
virtual bool AvoidRecording(void) const
Returns true if this device should only be used for recording if no other device is available.
Definition: dvbsdffdevice.c:90
cDevice::cPidHandle
Definition: device.h:391
cDvbSdFfDevice::CanReplay
virtual bool CanReplay(void) const
Returns true if this device can currently start a replay session.
Definition: dvbsdffdevice.c:496
cDvbSdFfDevice::MakePrimaryDevice
virtual void MakePrimaryDevice(bool On)
Informs a device that it will be the primary device.
Definition: dvbsdffdevice.c:78
cDvbSdFfDevice::GetOsdSize
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 ...
Definition: dvbsdffdevice.c:265
ePlayMode
ePlayMode
Definition: device.h:39
eTrackType
eTrackType
Definition: device.h:63
cDvbSdFfDeviceProbe::Probe
virtual bool Probe(int Adapter, int Frontend)
Probes for a DVB device at the given Adapter and creates the appropriate object derived from cDvbDevi...
Definition: dvbsdffdevice.c:759
cDvbSdFfDevice::Flush
virtual bool Flush(int TimeoutMs=0)
Returns true if the device's output buffers are empty, i.
Definition: dvbsdffdevice.c:726
cDvbSdFfDevice::cDvbSdFfDevice
cDvbSdFfDevice(int Adapter, int Frontend, bool OutputOnly)
Definition: dvbsdffdevice.c:26
cDvbDevice
The cDvbDevice implements a DVB device which can be accessed through the Linux DVB driver API.
Definition: dvbdevice.h:171
cDvbSpuDecoder
Definition: dvbspu.h:95
cChannel
Definition: channels.h:89
cDvbSdFfDevice::SetPid
virtual bool SetPid(cPidHandle *Handle, int Type, bool On)
Does the actual PID setting on this device.
Definition: dvbsdffdevice.c:300
cSpuDecoder
Definition: spu.h:19
cDvbSdFfDevice::outputOnly
bool outputOnly
Definition: dvbsdffdevice.h:20
cDvbSdFfDevice::TurnOffLiveMode
void TurnOffLiveMode(bool LiveView)
Definition: dvbsdffdevice.c:357
cDvbSdFfDevice::playMode
ePlayMode playMode
Definition: dvbsdffdevice.h:87
cDvbSdFfDevice::fd_osd
int fd_osd
Definition: dvbsdffdevice.h:19
cDvbSdFfDevice::GrabImage
virtual uchar * GrabImage(int &Size, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
Grabs the currently visible screen image.
Definition: dvbsdffdevice.c:102
cDvbSdFfDevice::SetVideoDisplayFormat
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat)
Sets the video display format to the given one (only useful if this device has an MPEG decoder).
Definition: dvbsdffdevice.c:216
cDvbSdFfDevice::PlayVideo
virtual int PlayVideo(const uchar *Data, int Length)
Plays the given data block as video.
Definition: dvbsdffdevice.c:732
cDvbSdFfDevice::devVideoOffset
static int devVideoOffset
Definition: dvbsdffdevice.h:56
cDvbSdFfDeviceProbe
Definition: dvbsdffdevice.h:106
cDvbSdFfDevice::NumProvidedSystems
virtual int NumProvidedSystems(void) const
Returns the number of individual "delivery systems" this device provides.
Definition: dvbsdffdevice.c:350
cDvbSdFfDevice::digitalAudio
bool digitalAudio
Definition: dvbsdffdevice.h:77
eVideoDisplayFormat
eVideoDisplayFormat
Definition: device.h:58
cDvbSdFfDevice::fd_audio
int fd_audio
Definition: dvbsdffdevice.h:19
cDvbSdFfDevice::Clear
virtual void Clear(void)
Clears all video and audio data from the device.
Definition: dvbsdffdevice.c:587
cDvbSdFfDevice::GetVideoSize
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect)
Returns the Width, Height and VideoAspect ratio of the currently displayed video material.
Definition: dvbsdffdevice.c:244
cDvbSdFfDevice::SetVolumeDevice
virtual void SetVolumeDevice(int Volume)
Sets the audio volume on this device (Volume = 0...255).
Definition: dvbsdffdevice.c:449
cDvbDevice::Adapter
int Adapter(void) const
Definition: dvbdevice.h:194
cDvbSdFfDevice
The cDvbSdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
Definition: dvbsdffdevice.h:17
cDvbSdFfDevice::fd_stc
int fd_stc
Definition: dvbsdffdevice.h:19
cDvbDevice::Frontend
int Frontend(void) const
Definition: dvbdevice.c:1877
cDvbSdFfDevice::GetAudioChannelDevice
virtual int GetAudioChannelDevice(void)
Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).
Definition: dvbsdffdevice.c:437
cDvbSdFfDevice::Freeze
virtual void Freeze(void)
Puts the device into "freeze frame" mode.
Definition: dvbsdffdevice.c:613
cDvbSdFfDeviceProbe::outputOnly
bool outputOnly
Definition: dvbsdffdevice.h:108
cDvbSdFfDevice::TrickSpeed
virtual void TrickSpeed(int Speed, bool Forward)
Sets the device into a mode where replay is done slower.
Definition: dvbsdffdevice.c:581
cDvbSdFfDevice::SetPlayMode
virtual bool SetPlayMode(ePlayMode PlayMode)
Sets the device into the given play mode.
Definition: dvbsdffdevice.c:501