vdr 2.6.1
device.h
Go to the documentation of this file.
1/*
2 * device.h: The basic device interface
3 *
4 * See the main source file 'vdr.c' for copyright information and
5 * how to reach the author.
6 *
7 * $Id: device.h 5.2 2022/01/24 16:53:45 kls Exp $
8 */
9
10#ifndef __DEVICE_H
11#define __DEVICE_H
12
13#include "channels.h"
14#include "ci.h"
15#include "dvbsubtitle.h"
16#include "eit.h"
17#include "filter.h"
18#include "nit.h"
19#include "pat.h"
20#include "positioner.h"
21#include "remux.h"
22#include "ringbuffer.h"
23#include "sdt.h"
24#include "sections.h"
25#include "spu.h"
26#include "thread.h"
27#include "tools.h"
28
29#define MAXDEVICES 16 // the maximum number of devices in the system
30#define MAXPIDHANDLES 64 // the maximum number of different PIDs per device
31#define MAXRECEIVERS 16 // the maximum number of receivers per device
32#define MAXVOLUME 255
33#define VOLUMEDELTA (MAXVOLUME / Setup.VolumeSteps) // used to increase/decrease the volume
34#define MAXOCCUPIEDTIMEOUT 99 // max. time (in seconds) a device may be occupied
35
37
38// Note that VDR itself always uses pmAudioVideo when replaying a recording!
39enum ePlayMode { pmNone, // audio/video from decoder
40 pmAudioVideo, // audio/video from player
41 pmAudioOnly, // audio only from player, video from decoder
42 pmAudioOnlyBlack, // audio only from player, no video (black screen)
43 pmVideoOnly, // video only from player, audio from decoder
45 // external player (e.g. MPlayer), release the device
46 // WARNING: USE THIS MODE ONLY AS A LAST RESORT, IF YOU
47 // ABSOLUTELY, POSITIVELY CAN'T IMPLEMENT YOUR PLAYER
48 // THE WAY IT IS SUPPOSED TO WORK. FORCING THE DEVICE
49 // TO RELEASE ITS FILES HANDLES (OR WHATEVER RESOURCES
50 // IT MAY USE) TO ALLOW AN EXTERNAL PLAYER TO ACCESS
51 // THEM MEANS THAT SUCH A PLAYER WILL NEED TO HAVE
52 // DETAILED KNOWLEDGE ABOUT THE INTERNALS OF THE DEVICE
53 // IN USE. AS A CONSEQUENCE, YOUR PLAYER MAY NOT WORK
54 // IF A PARTICULAR VDR INSTALLATION USES A DEVICE NOT
55 // KNOWN TO YOUR PLAYER.
56 };
57
61 };
62
66 ttAudioLast = ttAudioFirst + 31, // MAXAPIDS - 1
69 ttDolbyLast = ttDolbyFirst + 15, // MAXDPIDS - 1
72 ttSubtitleLast = ttSubtitleFirst + 31, // MAXSPIDS - 1
74 };
75
76#define IS_AUDIO_TRACK(t) (ttAudioFirst <= (t) && (t) <= ttAudioLast)
77#define IS_DOLBY_TRACK(t) (ttDolbyFirst <= (t) && (t) <= ttDolbyLast)
78#define IS_SUBTITLE_TRACK(t) (ttSubtitleFirst <= (t) && (t) <= ttSubtitleLast)
79
80struct tTrackId {
81 uint16_t id; // The PES packet id or the PID.
82 char language[MAXLANGCODE2]; // something like either "eng" or "deu+eng"
83 char description[32]; // something like "Dolby Digital 5.1"
84 };
85
86class cPlayer;
87class cReceiver;
88class cLiveSubtitle;
89
90class cDeviceHook : public cListObject {
91public:
92 cDeviceHook(void);
96 virtual bool DeviceProvidesTransponder(const cDevice *Device, const cChannel *Channel) const;
98 virtual bool DeviceProvidesEIT(const cDevice *Device) const;
100 };
101
103
104#define DTV_STAT_VALID_NONE 0x0000
105#define DTV_STAT_VALID_STRENGTH 0x0001
106#define DTV_STAT_VALID_CNR 0x0002
107#define DTV_STAT_VALID_BERPRE 0x0004
108#define DTV_STAT_VALID_BERPOST 0x0008
109#define DTV_STAT_VALID_PER 0x0010
110#define DTV_STAT_VALID_STATUS 0x0020
111
112#define DTV_STAT_HAS_NONE 0x0000
113#define DTV_STAT_HAS_SIGNAL 0x0001
114#define DTV_STAT_HAS_CARRIER 0x0002
115#define DTV_STAT_HAS_VITERBI 0x0004
116#define DTV_STAT_HAS_SYNC 0x0008
117#define DTV_STAT_HAS_LOCK 0x0010
118
119class cDevice : public cThread {
120 friend class cLiveSubtitle;
121 friend class cDeviceHook;
122 friend class cReceiver;
123private:
124 static int numDevices;
125 static int useDevice;
128public:
129 static int NumDevices(void) { return numDevices; }
131 static bool WaitForAllDevicesReady(int Timeout = 0);
137 static void SetUseDevice(int n);
141 static bool UseDevice(int n) { return useDevice == 0 || (useDevice & (1 << n)) != 0; }
144 static bool SetPrimaryDevice(int n);
148 static cDevice *PrimaryDevice(void) { return primaryDevice; }
150 static cDevice *ActualDevice(void);
153 static cDevice *GetDevice(int Index);
157 static cDevice *GetDevice(const cChannel *Channel, int Priority, bool LiveView, bool Query = false);
176 static cDevice *GetDeviceForTransponder(const cChannel *Channel, int Priority);
181 static void Shutdown(void);
184private:
185 static int nextCardIndex;
187protected:
188 cDevice(void);
189 virtual ~cDevice();
190 virtual bool Ready(void);
195 static int NextCardIndex(int n = 0);
207 virtual void MakePrimaryDevice(bool On);
214 virtual bool IsBonded(void) const { return false; }
219public:
220 bool IsPrimaryDevice(void) const { return this == primaryDevice && HasDecoder(); }
221 int CardIndex(void) const { return cardIndex; }
223 int DeviceNumber(void) const;
225 virtual cString DeviceType(void) const;
231 virtual cString DeviceName(void) const;
234 virtual bool HasDecoder(void) const;
236 virtual bool AvoidRecording(void) const { return false; }
239
240// Device hooks
241
242private:
244protected:
245 bool DeviceHooksProvidesTransponder(const cChannel *Channel) const;
246 bool DeviceHooksProvidesEIT(void) const;
247
248// SPU facilities
249
250private:
253public:
254 virtual cSpuDecoder *GetSpuDecoder(void);
257
258// Channel facilities
259
260private:
263protected:
264 static int currentChannel;
265public:
266 virtual bool ProvidesSource(int Source) const;
268 virtual bool ProvidesTransponder(const cChannel *Channel) const;
272 virtual bool ProvidesTransponderExclusively(const cChannel *Channel) const;
275 virtual bool ProvidesChannel(const cChannel *Channel, int Priority = IDLEPRIORITY, bool *NeedsDetachReceivers = NULL) const;
289 virtual bool ProvidesEIT(void) const;
293 virtual int NumProvidedSystems(void) const;
299 virtual const cPositioner *Positioner(void) const;
304 virtual bool SignalStats(int &Valid, double *Strength = NULL, double *Cnr = NULL, double *BerPre = NULL, double *BerPost = NULL, double *Per = NULL, int *Status = NULL) const;
321 virtual int SignalStrength(void) const;
326 virtual int SignalQuality(void) const;
331 virtual const cChannel *GetCurrentlyTunedTransponder(void) const;
336 virtual bool IsTunedToTransponder(const cChannel *Channel) const;
339 virtual bool MaySwitchTransponder(const cChannel *Channel) const;
344 bool SwitchChannel(const cChannel *Channel, bool LiveView);
347 static bool SwitchChannel(int Direction);
351private:
352 eSetChannelResult SetChannel(const cChannel *Channel, bool LiveView);
354protected:
355 virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
357public:
358 static int CurrentChannel(void) { return primaryDevice ? currentChannel : 0; }
360#ifndef DEPRECATED_SETCURRENTCHANNEL
361#define DEPRECATED_SETCURRENTCHANNEL 0
362#endif
363#if DEPRECATED_SETCURRENTCHANNEL
364 static void SetCurrentChannel(const cChannel *Channel) { currentChannel = Channel ? Channel->Number() : 0; }
365#endif
366 static void SetCurrentChannel(int ChannelNumber) { currentChannel = ChannelNumber; }
370 void ForceTransferMode(void);
372 int Occupied(void) const;
374 void SetOccupied(int Seconds);
382 virtual bool HasLock(int TimeoutMs = 0) const;
388 virtual bool HasProgramme(void) const;
391
392// PID handle facilities
393
394private:
396 virtual void Action(void);
397protected:
400 public:
401 int pid;
404 int used;
405 cPidHandle(void) { pid = streamType = used = 0; handle = -1; }
406 };
408 bool HasPid(int Pid) const;
410 bool AddPid(int Pid, ePidType PidType = ptOther, int StreamType = 0);
412 void DelPid(int Pid, ePidType PidType = ptOther);
414 virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
422public:
423 void DelLivePids(void);
425
426// Section filter facilities
427
428private:
434protected:
435 void StartSectionHandler(void);
439 void StopSectionHandler(void);
443public:
444 virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
448 virtual int ReadFilter(int Handle, void *Buffer, size_t Length);
452 virtual void CloseFilter(int Handle);
457 void AttachFilter(cFilter *Filter);
459 void Detach(cFilter *Filter);
461 const cSdtFilter *SdtFilter(void) const { return sdtFilter; }
463
464// Common Interface facilities:
465
466private:
468 void ReleaseCamSlot(void);
470public:
471 virtual bool HasCi(void);
473 virtual bool HasInternalCam(void) { return false; }
481 cCamSlot *CamSlot(void) const { return camSlot; }
484
485// Image Grab facilities
486
487public:
488 virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
500 bool GrabImageFile(const char *FileName, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
505
506// Video format facilities
507
508public:
509 virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
515 virtual void SetVideoFormat(bool VideoFormat16_9);
520 virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
527 virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
538
539// Track facilities
540
541private:
551protected:
552 virtual void SetAudioTrackDevice(eTrackType Type);
554 virtual void SetSubtitleTrackDevice(eTrackType Type);
556public:
557 void ClrAvailableTracks(bool DescriptionsOnly = false, bool IdsOnly = false);
562 bool SetAvailableTrack(eTrackType Type, int Index, uint16_t Id, const char *Language = NULL, const char *Description = NULL);
569 const tTrackId *GetTrack(eTrackType Type);
572 int NumTracks(eTrackType FirstTrack, eTrackType LastTrack) const;
575 int NumAudioTracks(void) const;
579 int NumSubtitleTracks(void) const;
586 bool SetCurrentSubtitleTrack(eTrackType Type, bool Manual = false);
592 void EnsureAudioTrack(bool Force = false);
596 void EnsureSubtitleTrack(void);
599 void SetKeepTracks(bool KeepTracks) { keepTracks = KeepTracks; }
603
604// Audio facilities
605
606private:
607 bool mute;
609protected:
610 virtual int GetAudioChannelDevice(void);
613 virtual void SetAudioChannelDevice(int AudioChannel);
615 virtual void SetVolumeDevice(int Volume);
617 virtual void SetDigitalAudioDevice(bool On);
621public:
622 bool IsMute(void) const { return mute; }
623 bool ToggleMute(void);
625 int GetAudioChannel(void);
628 void SetAudioChannel(int AudioChannel);
631 void SetVolume(int Volume, bool Absolute = false);
634 static int CurrentVolume(void) { return primaryDevice ? primaryDevice->volume : 0; }//XXX???
635
636// Player facilities
637
638private:
645protected:
646 const cPatPmtParser *PatPmtParser(void) const { return &patPmtParser; }
649 virtual bool CanReplay(void) const;
651 virtual bool SetPlayMode(ePlayMode PlayMode);
654 virtual int PlayVideo(const uchar *Data, int Length);
661 virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
669 virtual int PlaySubtitle(const uchar *Data, int Length);
676 virtual int PlayPesPacket(const uchar *Data, int Length, bool VideoOnly = false);
681 virtual int PlayTsVideo(const uchar *Data, int Length);
689 virtual int PlayTsAudio(const uchar *Data, int Length);
697 virtual int PlayTsSubtitle(const uchar *Data, int Length);
705public:
706 virtual int64_t GetSTC(void);
717 virtual bool IsPlayingVideo(void) const { return isPlayingVideo; }
720 virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter) { return cRect::Null; }
741 virtual void ScaleVideo(const cRect &Rect = cRect::Null) {}
749 virtual bool HasIBPTrickSpeed(void) { return false; }
752 virtual void TrickSpeed(int Speed, bool Forward);
763 virtual void Clear(void);
767 virtual void Play(void);
770 virtual void Freeze(void);
772 virtual void Mute(void);
776 virtual void StillPicture(const uchar *Data, int Length);
782 virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
787 virtual bool Flush(int TimeoutMs = 0);
793 virtual int PlayPes(const uchar *Data, int Length, bool VideoOnly = false);
803 virtual int PlayTs(const uchar *Data, int Length, bool VideoOnly = false);
819 bool Replaying(void) const;
821 bool Transferring(void) const;
823 void StopReplay(void);
825 bool AttachPlayer(cPlayer *Player);
827 void Detach(cPlayer *Player);
829
830// Receiver facilities
831
832private:
835public:
836 int Priority(void) const;
839protected:
840 virtual bool OpenDvr(void);
843 virtual void CloseDvr(void);
845 virtual bool GetTSPacket(uchar *&Data);
852public:
853 bool Receiving(bool Dummy = false) const;
855 bool AttachReceiver(cReceiver *Receiver);
857 void Detach(cReceiver *Receiver, bool ReleaseCam = true);
862 void DetachAll(int Pid);
864 virtual void DetachAllReceivers(void);
866 };
867
875
876class cTSBuffer : public cThread {
877private:
878 int f;
882 virtual void Action(void);
883public:
884 cTSBuffer(int File, int Size, int DeviceNumber);
885 virtual ~cTSBuffer();
886 uchar *Get(int *Available = NULL, bool CheckAvailable = false);
897 void Skip(int Count);
904 };
905
906#endif //__DEVICE_H
#define MAXLANGCODE2
Definition: channels.h:37
Definition: ci.h:232
int Number(void) const
Definition: channels.h:178
virtual bool DeviceProvidesEIT(const cDevice *Device) const
Returns true if the given Device can provide EIT data.
Definition: device.c:61
cDeviceHook(void)
Creates a new device hook object.
Definition: device.c:51
virtual bool DeviceProvidesTransponder(const cDevice *Device, const cChannel *Channel) const
Returns true if the given Device can provide the given Channel's transponder.
Definition: device.c:56
static int NextCardIndex(int n=0)
Calculates the next card index.
Definition: device.c:153
virtual cString DeviceName(void) const
Returns a string identifying the name of this device.
Definition: device.c:179
bool Replaying(void) const
Returns true if we are currently replaying.
Definition: device.c:1338
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: device.c:1395
void SetKeepTracks(bool KeepTracks)
Controls whether the current audio and subtitle track settings shall be kept as they currently are,...
Definition: device.h:599
int currentAudioTrackMissingCount
Definition: device.h:547
void StopSectionHandler(void)
A device that has called StartSectionHandler() must call this function (typically in its destructor) ...
Definition: device.c:673
virtual bool SignalStats(int &Valid, double *Strength=NULL, double *Cnr=NULL, double *BerPre=NULL, double *BerPost=NULL, double *Per=NULL, int *Status=NULL) const
Returns statistics about the currently received signal (if available).
Definition: device.c:777
virtual void SetSubtitleTrackDevice(eTrackType Type)
Sets the current subtitle track to the given value.
Definition: device.c:1008
virtual int GetAudioChannelDevice(void)
Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).
Definition: device.c:987
static cDevice * device[MAXDEVICES]
Definition: device.h:126
virtual int PlayVideo(const uchar *Data, int Length)
Plays the given data block as video.
Definition: device.c:1405
static bool UseDevice(int n)
Tells whether the device with the given card index shall be used in this instance of VDR.
Definition: device.h:141
bool SetCurrentSubtitleTrack(eTrackType Type, bool Manual=false)
Sets the current subtitle track to the given Type.
Definition: device.c:1151
bool IsPrimaryDevice(void) const
Definition: device.h:220
virtual bool HasInternalCam(void)
Returns true if this device handles encrypted channels itself without VDR assistance.
Definition: device.h:473
virtual uchar * GrabImage(int &Size, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
Grabs the currently visible screen image.
Definition: device.c:466
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect)
Returns the Width, Height and VideoAspect ratio of the currently displayed video material.
Definition: device.c:525
bool GrabImageFile(const char *FileName, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
Calls GrabImage() and stores the resulting image in a file with the given name.
Definition: device.c:471
eSetChannelResult SetChannel(const cChannel *Channel, bool LiveView)
Sets the device to the given channel (general setup).
Definition: device.c:861
bool mute
Definition: device.h:607
virtual bool HasLock(int TimeoutMs=0) const
Returns true if the device has a lock on the requested transponder.
Definition: device.c:976
void StartSectionHandler(void)
A derived device that provides section data must call this function (typically in its constructor) to...
Definition: device.c:662
virtual bool IsPlayingVideo(void) const
Returns true if the currently attached player has delivered any video packets.
Definition: device.h:717
static cList< cDeviceHook > deviceHooks
Definition: device.h:243
ePidType
Definition: device.h:398
@ ptVideo
Definition: device.h:398
@ ptAudio
Definition: device.h:398
@ ptPcr
Definition: device.h:398
@ ptDolby
Definition: device.h:398
@ ptTeletext
Definition: device.h:398
@ ptOther
Definition: device.h:398
cPlayer * player
Definition: device.h:639
cMutex mutexCurrentAudioTrack
Definition: device.h:545
virtual const cPositioner * Positioner(void) const
Returns a pointer to the positioner (if any) this device has used to move the satellite dish to the r...
Definition: device.c:772
virtual int NumProvidedSystems(void) const
Returns the number of individual "delivery systems" this device provides.
Definition: device.c:767
int NumSubtitleTracks(void) const
Returns the number of subtitle tracks that are currently available.
Definition: device.c:1128
bool keepTracks
Definition: device.h:549
virtual ~cDevice()
Definition: device.c:120
virtual int PlayPes(const uchar *Data, int Length, bool VideoOnly=false)
Plays all valid PES packets in Data with the given Length.
Definition: device.c:1520
cMutex mutexReceiver
Definition: device.h:833
virtual bool ProvidesSource(int Source) const
Returns true if this device can provide the given source.
Definition: device.c:716
void ReleaseCamSlot(void)
Releases the CAM slot if it is currently not used.
Definition: device.c:440
bool HasPid(int Pid) const
Returns true if this device is currently receiving the given PID.
Definition: device.c:542
virtual void SetAudioTrackDevice(eTrackType Type)
Sets the current audio track to the given value.
Definition: device.c:1004
virtual bool SetPid(cPidHandle *Handle, int Type, bool On)
Does the actual PID setting on this device.
Definition: device.c:648
cTsToPes tsToPesAudio
Definition: device.h:642
bool autoSelectPreferredSubtitleLanguage
Definition: device.h:548
static bool WaitForAllDevicesReady(int Timeout=0)
Waits until all devices have become ready, or the given Timeout (seconds) has expired.
Definition: device.c:131
void SetCamSlot(cCamSlot *CamSlot)
Sets the given CamSlot to be used with this device.
Definition: device.c:451
static cDevice * ActualDevice(void)
Returns the actual receiving device in case of Transfer Mode, or the primary device otherwise.
Definition: device.c:220
cSdtFilter * sdtFilter
Definition: device.h:432
static cDevice * PrimaryDevice(void)
Returns the primary device.
Definition: device.h:148
static void SetUseDevice(int n)
Sets the 'useDevice' flag of the given device.
Definition: device.c:147
virtual bool MaySwitchTransponder(const cChannel *Channel) const
Returns true if it is ok to switch to the Channel's transponder on this device, without disturbing an...
Definition: device.c:802
eTrackType currentSubtitleTrack
Definition: device.h:544
eTrackType GetCurrentSubtitleTrack(void) const
Definition: device.h:585
static cDevice * GetDevice(int Index)
Gets the device with the given Index.
Definition: device.c:228
static void Shutdown(void)
Closes down all devices.
Definition: device.c:457
eTrackType GetCurrentAudioTrack(void) const
Definition: device.h:581
void SetOccupied(int Seconds)
Sets the occupied timeout for this device to the given number of Seconds, This can be used to tune a ...
Definition: device.c:965
cDevice(void)
Definition: device.c:79
bool DeviceHooksProvidesEIT(void) const
Definition: device.c:732
bool SwitchChannel(const cChannel *Channel, bool LiveView)
Switches the device to the given Channel, initiating transfer mode if necessary.
Definition: device.c:807
virtual int PlayTsVideo(const uchar *Data, int Length)
Plays the given data block as video.
Definition: device.c:1549
int DeviceNumber(void) const
Returns the number of this device (0 ... numDevices - 1).
Definition: device.c:165
virtual bool ProvidesEIT(void) const
Returns true if this device provides EIT data and thus wants to be tuned to the channels it can recei...
Definition: device.c:762
virtual void SetAudioChannelDevice(int AudioChannel)
Sets the audio channel to stereo (0), mono left (1) or mono right (2).
Definition: device.c:992
cPatFilter * patFilter
Definition: device.h:431
void DelPid(int Pid, ePidType PidType=ptOther)
Deletes a PID from the set of PIDs this device shall receive.
Definition: device.c:617
bool AttachReceiver(cReceiver *Receiver)
Attaches the given receiver to this device.
Definition: device.c:1778
cCamSlot * camSlot
Definition: device.h:467
static int CurrentChannel(void)
Returns the number of the current channel on the primary device.
Definition: device.h:358
virtual bool AvoidRecording(void) const
Returns true if this device should only be used for recording if no other device is available.
Definition: device.h:236
static bool SetPrimaryDevice(int n)
Sets the primary device to 'n'.
Definition: device.c:192
bool Receiving(bool Dummy=false) const
Returns true if we are currently receiving. The parameter has no meaning (for backwards compatibility...
Definition: device.c:1678
bool Transferring(void) const
Returns true if we are currently in Transfer Mode.
Definition: device.c:1343
virtual int PlayTsAudio(const uchar *Data, int Length)
Plays the given data block as audio.
Definition: device.c:1568
time_t occupiedTimeout
Definition: device.h:262
void StopReplay(void)
Stops the current replay session (if any).
Definition: device.c:1386
virtual void MakePrimaryDevice(bool On)
Informs a device that it will be the primary device.
Definition: device.c:184
virtual bool ProvidesTransponderExclusively(const cChannel *Channel) const
Returns true if this is the only device that is able to provide the given channel's transponder.
Definition: device.c:748
void DetachAll(int Pid)
Detaches all receivers from this device for this pid.
Definition: device.c:1862
virtual bool ProvidesChannel(const cChannel *Channel, int Priority=IDLEPRIORITY, bool *NeedsDetachReceivers=NULL) const
Returns true if this device can provide the given channel.
Definition: device.c:757
bool IsMute(void) const
Definition: device.h:622
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...
Definition: device.h:720
int cardIndex
Definition: device.h:186
virtual int SignalQuality(void) const
Returns the "quality" of the currently received signal.
Definition: device.c:787
virtual int SignalStrength(void) const
Returns the "strength" of the currently received signal.
Definition: device.c:782
virtual void Play(void)
Sets the device into play mode (after a previous trick mode).
Definition: device.c:1260
const cPatPmtParser * PatPmtParser(void) const
Returns a pointer to the patPmtParser, so that a derived device can use the stream information from i...
Definition: device.h:646
int GetAudioChannel(void)
Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).
Definition: device.c:1029
int Occupied(void) const
Returns the number of seconds this device is still occupied for.
Definition: device.c:959
const cSdtFilter * SdtFilter(void) const
Definition: device.h:461
void EnsureAudioTrack(bool Force=false)
Makes sure an audio track is selected that is actually available.
Definition: device.c:1179
void Detach(cFilter *Filter)
Detaches the given filter from this device.
Definition: device.c:710
cTsToPes tsToPesVideo
Definition: device.h:641
cSectionHandler * SectionHandler(void) const
Definition: device.h:462
eTrackType currentAudioTrack
Definition: device.h:543
cSectionHandler * sectionHandler
Definition: device.h:429
virtual bool SetPlayMode(ePlayMode PlayMode)
Sets the device into the given play mode.
Definition: device.c:1239
virtual bool OpenDvr(void)
Opens the DVR of this device and prepares it to deliver a Transport Stream for use in a cReceiver.
Definition: device.c:1764
const tTrackId * GetTrack(eTrackType Type)
Returns a pointer to the given track id, or NULL if Type is not less than ttMaxTrackTypes.
Definition: device.c:1108
static void SetCurrentChannel(int ChannelNumber)
Sets the number of the current channel on the primary device, without actually switching to it.
Definition: device.h:366
void SetVolume(int Volume, bool Absolute=false)
Sets the volume to the given value, either absolutely or relative to the current volume.
Definition: device.c:1041
virtual void TrickSpeed(int Speed, bool Forward)
Sets the device into a mode where replay is done slower.
Definition: device.c:1249
virtual void Mute(void)
Turns off audio while replaying.
Definition: device.c:1274
virtual bool HasCi(void)
Returns true if this device has a Common Interface.
Definition: device.c:446
virtual cString DeviceType(void) const
Returns a string identifying the type of this device (like "DVB-S").
Definition: device.c:174
virtual const cChannel * GetCurrentlyTunedTransponder(void) const
Returns a pointer to the currently tuned transponder.
Definition: device.c:792
cDvbSubtitleConverter * dvbSubtitleConverter
Definition: device.h:252
virtual void Freeze(void)
Puts the device into "freeze frame" mode.
Definition: device.c:1267
void SetAudioChannel(int AudioChannel)
Sets the audio channel to stereo (0), mono left (1) or mono right (2).
Definition: device.c:1035
static int NumDevices(void)
Returns the total number of devices.
Definition: device.h:129
virtual int64_t GetSTC(void)
Gets the current System Time Counter, which can be used to synchronize audio, video and subtitles.
Definition: device.c:1244
static int nextCardIndex
Definition: device.h:185
virtual bool IsBonded(void) const
Returns true if this device is bonded to an other device.
Definition: device.h:214
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat)
Sets the video display format to the given one (only useful if this device has an MPEG decoder).
Definition: device.c:498
bool isPlayingVideo
Definition: device.h:644
virtual bool Flush(int TimeoutMs=0)
Returns true if the device's output buffers are empty, i.
Definition: device.c:1400
virtual bool HasDecoder(void) const
Tells whether this device has an MPEG decoder.
Definition: device.c:210
virtual int PlayTsSubtitle(const uchar *Data, int Length)
Plays the given data block as a subtitle.
Definition: device.c:1584
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: device.c:521
virtual void CloseDvr(void)
Shuts down the DVR.
Definition: device.c:1769
virtual void CloseFilter(int Handle)
Closes a file handle that has previously been opened by OpenFilter().
Definition: device.c:699
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView)
Sets the device to the given channel (actual physical setup).
Definition: device.c:971
bool AttachPlayer(cPlayer *Player)
Attaches the given player to this device.
Definition: device.c:1348
void ClrAvailableTracks(bool DescriptionsOnly=false, bool IdsOnly=false)
Clears the list of currently available tracks.
Definition: device.c:1056
int Priority(void) const
Returns the priority of the current receiving session (-MAXPRIORITY..MAXPRIORITY),...
Definition: device.c:1660
cEitFilter * eitFilter
Definition: device.h:430
virtual bool HasProgramme(void) const
Returns true if the device is currently showing any programme to the user, either through replaying o...
Definition: device.c:981
virtual void ScaleVideo(const cRect &Rect=cRect::Null)
Scales the currently shown video in such a way that it fits into the given Rect.
Definition: device.h:741
int volume
Definition: device.h:608
static int numDevices
Definition: device.h:124
void EnsureSubtitleTrack(void)
Makes sure one of the preferred language subtitle tracks is selected.
Definition: device.c:1212
static int CurrentVolume(void)
Definition: device.h:634
virtual void DetachAllReceivers(void)
Detaches all receivers from this device.
Definition: device.c:1875
virtual bool IsTunedToTransponder(const cChannel *Channel) const
Returns true if this device is currently tuned to the given Channel's transponder.
Definition: device.c:797
virtual bool CanReplay(void) const
Returns true if this device can currently start a replay session.
Definition: device.c:1234
int NumTracks(eTrackType FirstTrack, eTrackType LastTrack) const
Returns the number of tracks in the given range that are currently available.
Definition: device.c:1113
void AttachFilter(cFilter *Filter)
Attaches the given filter to this device.
Definition: device.c:704
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: device.c:215
virtual bool HasIBPTrickSpeed(void)
Returns true if this device can handle all frames in 'fast forward' trick speeds.
Definition: device.h:749
virtual bool Ready(void)
Returns true if this device is ready.
Definition: device.c:1673
cMutex mutexChannel
Definition: device.h:261
static cDevice * GetDeviceForTransponder(const cChannel *Channel, int Priority)
Returns a device that is not currently "occupied" and can be tuned to the transponder of the given Ch...
Definition: device.c:420
cReceiver * receiver[MAXRECEIVERS]
Definition: device.h:834
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: device.c:532
virtual bool GetTSPacket(uchar *&Data)
Gets exactly one TS packet from the DVR of this device and returns a pointer to it in Data.
Definition: device.c:1773
tTrackId availableTracks[ttMaxTrackTypes]
Definition: device.h:542
virtual void Clear(void)
Clears all video and audio data from the device.
Definition: device.c:1253
cTsToPes tsToPesSubtitle
Definition: device.h:643
int CardIndex(void) const
Returns the card index of this device (0 ... MAXDEVICES - 1).
Definition: device.h:221
cCamSlot * CamSlot(void) const
Returns the CAM slot that is currently used with this device, or NULL if no CAM slot is in use.
Definition: device.h:481
bool SetAvailableTrack(eTrackType Type, int Index, uint16_t Id, const char *Language=NULL, const char *Description=NULL)
Sets the track of the given Type and Index to the given values.
Definition: device.c:1079
static int useDevice
Definition: device.h:125
int NumAudioTracks(void) const
Returns the number of audio tracks that are currently available.
Definition: device.c:1123
virtual int PlayPesPacket(const uchar *Data, int Length, bool VideoOnly=false)
Plays the single PES packet in Data with the given Length.
Definition: device.c:1422
bool ToggleMute(void)
Turns the volume off or on and returns the new mute state.
Definition: device.c:1012
void DelLivePids(void)
Deletes the live viewing PIDs.
Definition: device.c:653
static int currentChannel
Definition: device.h:264
virtual int PlayTs(const uchar *Data, int Length, bool VideoOnly=false)
Plays the given TS packet.
Definition: device.c:1597
cPatPmtParser patPmtParser
Definition: device.h:640
bool AddPid(int Pid, ePidType PidType=ptOther, int StreamType=0)
Adds a PID to the set of PIDs this device shall receive.
Definition: device.c:552
cMutex mutexCurrentSubtitleTrack
Definition: device.h:546
int pre_1_3_19_PrivateStream
Definition: device.h:550
static cDevice * primaryDevice
Definition: device.h:127
bool DeviceHooksProvidesTransponder(const cChannel *Channel) const
Definition: device.c:721
virtual int ReadFilter(int Handle, void *Buffer, size_t Length)
Reads data from a handle for the given filter.
Definition: device.c:694
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask)
Opens a file handle for the given filter data.
Definition: device.c:689
cPidHandle pidHandles[MAXPIDHANDLES]
Definition: device.h:407
void ForceTransferMode(void)
Forces the device into transfermode for the current channel.
Definition: device.c:950
virtual int PlayAudio(const uchar *Data, int Length, uchar Id)
Plays the given data block as audio.
Definition: device.c:1410
cMutex mutexPids
Definition: device.h:395
cLiveSubtitle * liveSubtitle
Definition: device.h:251
bool SetCurrentAudioTrack(eTrackType Type)
Sets the current audio track to the given Type.
Definition: device.c:1133
virtual void Action(void)
A derived cThread class must implement the code it wants to execute as a separate thread in this func...
Definition: device.c:1692
virtual bool ProvidesTransponder(const cChannel *Channel) const
Returns true if this device can provide the transponder of the given Channel (which implies that it c...
Definition: device.c:743
virtual void SetDigitalAudioDevice(bool On)
Tells the output device that the current audio track is Dolby Digital.
Definition: device.c:1000
virtual void StillPicture(const uchar *Data, int Length)
Displays the given I-frame as a still picture.
Definition: device.c:1279
virtual int PlaySubtitle(const uchar *Data, int Length)
Plays the given data block as a subtitle.
Definition: device.c:1415
virtual void SetVolumeDevice(int Volume)
Sets the audio volume on this device (Volume = 0...255).
Definition: device.c:996
cNitFilter * nitFilter
Definition: device.h:433
Definition: eit.h:48
Definition: filter.h:80
A steerable satellite dish generally points to the south on the northern hemisphere,...
static const cRect Null
Derived cDevice classes that can receive channels will have to provide Transport Stream (TS) packets ...
Definition: device.h:876
cRingBufferLinear * ringBuffer
Definition: device.h:881
cTSBuffer(int File, int Size, int DeviceNumber)
Definition: device.c:1885
int delivered
Definition: device.h:880
virtual void Action(void)
A derived cThread class must implement the code it wants to execute as a separate thread in this func...
Definition: device.c:1903
uchar * Get(int *Available=NULL, bool CheckAvailable=false)
Returns a pointer to the first TS packet in the buffer.
Definition: device.c:1926
void Skip(int Count)
If after a call to Get() more or less than TS_SIZE of the available data has been processed,...
Definition: device.c:1956
int deviceNumber
Definition: device.h:879
virtual ~cTSBuffer()
Definition: device.c:1897
int f
Definition: device.h:878
#define IDLEPRIORITY
Definition: config.h:47
#define MAXPIDHANDLES
Definition: device.h:30
eVideoDisplayFormat
Definition: device.h:58
@ vdfLetterBox
Definition: device.h:59
@ vdfCenterCutOut
Definition: device.h:60
@ vdfPanAndScan
Definition: device.h:58
ePlayMode
Definition: device.h:39
@ pmAudioOnlyBlack
Definition: device.h:42
@ pmNone
Definition: device.h:39
@ pmVideoOnly
Definition: device.h:43
@ pmAudioOnly
Definition: device.h:41
@ pmAudioVideo
Definition: device.h:40
@ pmExtern_THIS_SHOULD_BE_AVOIDED
Definition: device.h:44
#define MAXDEVICES
Definition: device.h:29
eTrackType
Definition: device.h:63
@ ttSubtitle
Definition: device.h:70
@ ttMaxTrackTypes
Definition: device.h:73
@ ttDolbyLast
Definition: device.h:69
@ ttAudioLast
Definition: device.h:66
@ ttDolby
Definition: device.h:67
@ ttAudioFirst
Definition: device.h:65
@ ttSubtitleLast
Definition: device.h:72
@ ttDolbyFirst
Definition: device.h:68
@ ttSubtitleFirst
Definition: device.h:71
@ ttAudio
Definition: device.h:64
@ ttNone
Definition: device.h:63
#define MAXRECEIVERS
Definition: device.h:31
eSetChannelResult
Definition: device.h:36
@ scrOk
Definition: device.h:36
@ scrNotAvailable
Definition: device.h:36
@ scrFailed
Definition: device.h:36
@ scrNoTransfer
Definition: device.h:36
@ taCenter
unsigned char uchar
unsigned char u_char
char description[32]
Definition: device.h:83
char language[MAXLANGCODE2]
Definition: device.h:82
uint16_t id
Definition: device.h:81