vdr  2.4.1
Classes | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
cDevice Class Reference

#include <device.h>

Classes

class  cPidHandle
 

Public Member Functions

bool IsPrimaryDevice (void) const
 
int DeviceNumber (void) const
 
virtual cString DeviceType (void) const
 
virtual cString DeviceName (void) const
 
virtual bool HasDecoder (void) const
 
virtual cSpuDecoderGetSpuDecoder (void)
 
virtual bool ProvidesSource (int Source) const
 
virtual bool ProvidesTransponder (const cChannel *Channel) const
 
virtual bool ProvidesTransponderExclusively (const cChannel *Channel) const
 
virtual bool ProvidesChannel (const cChannel *Channel, int Priority=IDLEPRIORITY, bool *NeedsDetachReceivers=NULL) const
 
virtual bool ProvidesEIT (void) const
 
virtual int NumProvidedSystems (void) const
 
virtual const cPositionerPositioner (void) const
 
virtual bool SignalStats (int &Valid, double *Strength=NULL, double *Cnr=NULL, double *BerPre=NULL, double *BerPost=NULL, double *Per=NULL, int *Status=NULL) const
 
virtual int SignalStrength (void) const
 
virtual int SignalQuality (void) const
 
virtual const cChannelGetCurrentlyTunedTransponder (void) const
 
virtual bool IsTunedToTransponder (const cChannel *Channel) const
 
virtual bool MaySwitchTransponder (const cChannel *Channel) const
 
bool SwitchChannel (const cChannel *Channel, bool LiveView)
 
void ForceTransferMode (void)
 
int Occupied (void) const
 
void SetOccupied (int Seconds)
 
virtual bool HasLock (int TimeoutMs=0) const
 
virtual bool HasProgramme (void) const
 
void DelLivePids (void)
 
virtual int OpenFilter (u_short Pid, u_char Tid, u_char Mask)
 
virtual int ReadFilter (int Handle, void *Buffer, size_t Length)
 
virtual void CloseFilter (int Handle)
 
void AttachFilter (cFilter *Filter)
 
void Detach (cFilter *Filter)
 
virtual bool HasCi (void)
 
void SetCamSlot (cCamSlot *CamSlot)
 
virtual ucharGrabImage (int &Size, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
 
bool GrabImageFile (const char *FileName, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
 
virtual void SetVideoDisplayFormat (eVideoDisplayFormat VideoDisplayFormat)
 
virtual void SetVideoFormat (bool VideoFormat16_9)
 
virtual void GetVideoSize (int &Width, int &Height, double &VideoAspect)
 
virtual void GetOsdSize (int &Width, int &Height, double &PixelAspect)
 
void ClrAvailableTracks (bool DescriptionsOnly=false, bool IdsOnly=false)
 
bool SetAvailableTrack (eTrackType Type, int Index, uint16_t Id, const char *Language=NULL, const char *Description=NULL)
 
const tTrackIdGetTrack (eTrackType Type)
 
int NumTracks (eTrackType FirstTrack, eTrackType LastTrack) const
 
int NumAudioTracks (void) const
 
int NumSubtitleTracks (void) const
 
eTrackType GetCurrentAudioTrack (void) const
 
bool SetCurrentAudioTrack (eTrackType Type)
 
eTrackType GetCurrentSubtitleTrack (void) const
 
bool SetCurrentSubtitleTrack (eTrackType Type, bool Manual=false)
 
void EnsureAudioTrack (bool Force=false)
 
void EnsureSubtitleTrack (void)
 
bool IsMute (void) const
 
bool ToggleMute (void)
 
int GetAudioChannel (void)
 
void SetAudioChannel (int AudioChannel)
 
void SetVolume (int Volume, bool Absolute=false)
 
virtual int64_t GetSTC (void)
 
virtual void TrickSpeed (int Speed, bool Forward)
 
virtual void Clear (void)
 
virtual void Play (void)
 
virtual void Freeze (void)
 
virtual void Mute (void)
 
virtual void StillPicture (const uchar *Data, int Length)
 
virtual bool Poll (cPoller &Poller, int TimeoutMs=0)
 
virtual bool Flush (int TimeoutMs=0)
 
virtual int PlayPes (const uchar *Data, int Length, bool VideoOnly=false)
 
virtual int PlayTs (const uchar *Data, int Length, bool VideoOnly=false)
 
bool Replaying (void) const
 
bool Transferring (void) const
 
void StopReplay (void)
 
bool AttachPlayer (cPlayer *Player)
 
void Detach (cPlayer *Player)
 
int Priority (void) const
 
bool Receiving (bool Dummy=false) const
 
bool AttachReceiver (cReceiver *Receiver)
 
void Detach (cReceiver *Receiver)
 
void DetachAll (int Pid)
 
virtual void DetachAllReceivers (void)
 
- Public Member Functions inherited from cThread
 cThread (const char *Description=NULL, bool LowPriority=false)
 
virtual ~cThread ()
 
void SetDescription (const char *Description,...) __attribute__((format(printf
 
void bool Start (void)
 
bool Active (void)
 

Static Public Member Functions

static bool WaitForAllDevicesReady (int Timeout=0)
 
static void SetUseDevice (int n)
 
static bool SetPrimaryDevice (int n)
 
static cDeviceActualDevice (void)
 
static cDeviceGetDevice (int Index)
 
static cDeviceGetDevice (const cChannel *Channel, int Priority, bool LiveView, bool Query=false)
 
static cDeviceGetDeviceForTransponder (const cChannel *Channel, int Priority)
 
static void Shutdown (void)
 
static bool SwitchChannel (int Direction)
 
static void SetCurrentChannel (const cChannel *Channel)
 
static int CurrentVolume (void)
 
- Static Public Member Functions inherited from cThread
static tThreadId ThreadId (void)
 
static tThreadId IsMainThread (void)
 
static void SetMainThreadId (void)
 

Protected Types

enum  ePidType {
  ptAudio, ptVideo, ptPcr, ptTeletext,
  ptDolby, ptOther
}
 

Protected Member Functions

 cDevice (void)
 
virtual ~cDevice ()
 
virtual bool Ready (void)
 
virtual void MakePrimaryDevice (bool On)
 
bool DeviceHooksProvidesTransponder (const cChannel *Channel) const
 
virtual bool SetChannelDevice (const cChannel *Channel, bool LiveView)
 
bool HasPid (int Pid) const
 
bool AddPid (int Pid, ePidType PidType=ptOther, int StreamType=0)
 
void DelPid (int Pid, ePidType PidType=ptOther)
 
virtual bool SetPid (cPidHandle *Handle, int Type, bool On)
 
void StartSectionHandler (void)
 
void StopSectionHandler (void)
 
virtual void SetAudioTrackDevice (eTrackType Type)
 
virtual void SetSubtitleTrackDevice (eTrackType Type)
 
virtual int GetAudioChannelDevice (void)
 
virtual void SetAudioChannelDevice (int AudioChannel)
 
virtual void SetVolumeDevice (int Volume)
 
virtual void SetDigitalAudioDevice (bool On)
 
virtual bool CanReplay (void) const
 
virtual bool SetPlayMode (ePlayMode PlayMode)
 
virtual int PlayVideo (const uchar *Data, int Length)
 
virtual int PlayAudio (const uchar *Data, int Length, uchar Id)
 
virtual int PlaySubtitle (const uchar *Data, int Length)
 
virtual int PlayPesPacket (const uchar *Data, int Length, bool VideoOnly=false)
 
virtual int PlayTsVideo (const uchar *Data, int Length)
 
virtual int PlayTsAudio (const uchar *Data, int Length)
 
virtual int PlayTsSubtitle (const uchar *Data, int Length)
 
virtual bool OpenDvr (void)
 
virtual void CloseDvr (void)
 
virtual bool GetTSPacket (uchar *&Data)
 
- Protected Member Functions inherited from cThread
void SetPriority (int Priority)
 
void SetIOPriority (int Priority)
 
void Lock (void)
 
void Unlock (void)
 
void Cancel (int WaitSeconds=0)
 

Static Protected Member Functions

static int NextCardIndex (int n=0)
 

Protected Attributes

cPidHandle pidHandles [MAXPIDHANDLES]
 

Static Protected Attributes

static int currentChannel = 1
 

Private Member Functions

eSetChannelResult SetChannel (const cChannel *Channel, bool LiveView)
 
virtual void Action (void)
 

Private Attributes

int cardIndex
 
cLiveSubtitleliveSubtitle
 
cDvbSubtitleConverterdvbSubtitleConverter
 
cMutex mutexChannel
 
time_t occupiedTimeout
 
cMutex mutexPids
 
cSectionHandlersectionHandler
 
cEitFiltereitFilter
 
cPatFilterpatFilter
 
cSdtFiltersdtFilter
 
cNitFilternitFilter
 
cCamSlotcamSlot
 
tTrackId availableTracks [ttMaxTrackTypes]
 
eTrackType currentAudioTrack
 
eTrackType currentSubtitleTrack
 
cMutex mutexCurrentAudioTrack
 
cMutex mutexCurrentSubtitleTrack
 
int currentAudioTrackMissingCount
 
bool autoSelectPreferredSubtitleLanguage
 
bool keepTracks
 
int pre_1_3_19_PrivateStream
 
bool mute
 
int volume
 
cPlayerplayer
 
cPatPmtParser patPmtParser
 
cTsToPes tsToPesVideo
 
cTsToPes tsToPesAudio
 
cTsToPes tsToPesSubtitle
 
bool isPlayingVideo
 
cMutex mutexReceiver
 
cReceiverreceiver [MAXRECEIVERS]
 

Static Private Attributes

static int numDevices = 0
 
static int useDevice = 0
 
static cDevicedevice [MAXDEVICES] = { NULL }
 
static cDeviceprimaryDevice = NULL
 
static int nextCardIndex = 0
 
static cList< cDeviceHookdeviceHooks
 

Friends

class cLiveSubtitle
 
class cDeviceHook
 
class cReceiver
 

Detailed Description

Definition at line 117 of file device.h.

Member Enumeration Documentation

◆ ePidType

enum cDevice::ePidType
protected
Enumerator
ptAudio 
ptVideo 
ptPcr 
ptTeletext 
ptDolby 
ptOther 

Definition at line 390 of file device.h.

Constructor & Destructor Documentation

◆ cDevice()

cDevice::cDevice ( void  )
protected

◆ ~cDevice()

cDevice::~cDevice ( )
protectedvirtual

Member Function Documentation

◆ Action()

void cDevice::Action ( void  )
privatevirtual

◆ ActualDevice()

cDevice * cDevice::ActualDevice ( void  )
static

Returns the actual receiving device in case of Transfer Mode, or the primary device otherwise.

Definition at line 215 of file device.c.

References cTransferControl::ReceiverDevice().

Referenced by cSkinLCARSDisplayChannel::DrawDevice(), cSkinLCARSDisplayMenu::DrawLiveIndicator(), cSkinLCARSDisplayChannel::DrawSignal(), cSkinSTTNGDisplayChannel::Flush(), main(), cEITScanner::Process(), and cDisplayChannel::ProcessKey().

◆ AddPid()

bool cDevice::AddPid ( int  Pid,
ePidType  PidType = ptOther,
int  StreamType = 0 
)
protected

◆ AttachFilter()

void cDevice::AttachFilter ( cFilter Filter)

Attaches the given filter to this device.

Definition at line 693 of file device.c.

References cSectionHandler::Attach(), and sectionHandler.

Referenced by StartSectionHandler().

◆ AttachPlayer()

bool cDevice::AttachPlayer ( cPlayer Player)

◆ AttachReceiver()

bool cDevice::AttachReceiver ( cReceiver Receiver)

◆ CanReplay()

bool cDevice::CanReplay ( void  ) const
protectedvirtual

Returns true if this device can currently start a replay session.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1205 of file device.c.

References HasDecoder().

Referenced by AttachPlayer(), cDvbSdFfDevice::CanReplay(), cDvbHdFfDevice::CanReplay(), and SetChannel().

◆ Clear()

void cDevice::Clear ( void  )
virtual

Clears all video and audio data from the device.

A derived class must call the base class function to make sure all registered cAudio objects are notified.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1224 of file device.c.

References Audios, cAudios::ClearAudio(), dvbSubtitleConverter, and cDvbSubtitleConverter::Reset().

Referenced by cDvbSdFfDevice::Clear(), cDvbHdFfDevice::Clear(), and cPlayer::DeviceClear().

◆ CloseDvr()

void cDevice::CloseDvr ( void  )
protectedvirtual

Shuts down the DVR.

Reimplemented in cDvbDevice.

Definition at line 1741 of file device.c.

Referenced by Action().

◆ CloseFilter()

void cDevice::CloseFilter ( int  Handle)
virtual

Closes a file handle that has previously been opened by OpenFilter().

If this is as simple as calling close(Handle), a derived class need not implement this function, because this is done by the default implementation.

Reimplemented in cDvbDevice.

Definition at line 688 of file device.c.

Referenced by cSectionHandler::Del().

◆ ClrAvailableTracks()

void cDevice::ClrAvailableTracks ( bool  DescriptionsOnly = false,
bool  IdsOnly = false 
)

Clears the list of currently available tracks.

If DescriptionsOnly is true, only the track descriptions will be cleared. With IdsOnly set to true only the ids will be cleared. IdsOnly is only taken into account if DescriptionsOnly is false.

Definition at line 1027 of file device.c.

References availableTracks, currentAudioTrack, currentAudioTrackMissingCount, currentSubtitleTrack, cThread::description, keepTracks, pre_1_3_19_PrivateStream, SetAudioChannel(), ttMaxTrackTypes, and ttNone.

Referenced by AttachPlayer(), cDevice(), cPlayer::DeviceClrAvailableTracks(), PlayPesPacket(), and SetChannel().

◆ CurrentVolume()

static int cDevice::CurrentVolume ( void  )
inlinestatic

◆ DelLivePids()

void cDevice::DelLivePids ( void  )

Deletes the live viewing PIDs.

Definition at line 642 of file device.c.

References DelPid(), mutexPids, pidHandles, ptAudio, and ptOther.

◆ DelPid()

void cDevice::DelPid ( int  Pid,
ePidType  PidType = ptOther 
)
protected

◆ Detach() [1/3]

void cDevice::Detach ( cFilter Filter)

Detaches the given filter from this device.

Definition at line 699 of file device.c.

References cSectionHandler::Detach(), and sectionHandler.

Referenced by Action(), cCamSlot::Assign(), AttachPlayer(), cReceiver::Detach(), cPlayer::Detach(), DetachAll(), DetachAllReceivers(), StopReplay(), and ~cDevice().

◆ Detach() [2/3]

void cDevice::Detach ( cPlayer Player)

◆ Detach() [3/3]

void cDevice::Detach ( cReceiver Receiver)

◆ DetachAll()

void cDevice::DetachAll ( int  Pid)

◆ DetachAllReceivers()

void cDevice::DetachAllReceivers ( void  )
virtual

Detaches all receivers from this device.

Reimplemented in cDvbDevice.

Definition at line 1843 of file device.c.

References Detach(), MAXRECEIVERS, mutexReceiver, and receiver.

Referenced by GetDevice(), and ~cDevice().

◆ DeviceHooksProvidesTransponder()

bool cDevice::DeviceHooksProvidesTransponder ( const cChannel Channel) const
protected

◆ DeviceName()

cString cDevice::DeviceName ( void  ) const
virtual

Returns a string identifying the name of this device.

The default implementation returns an empty string.

Reimplemented in cDvbDevice.

Definition at line 174 of file device.c.

◆ DeviceNumber()

int cDevice::DeviceNumber ( void  ) const

◆ DeviceType()

cString cDevice::DeviceType ( void  ) const
virtual

Returns a string identifying the type of this device (like "DVB-S").

If this device can receive different delivery systems, the returned string shall be that of the currently used system. The length of the returned string should not exceed 6 characters. The default implementation returns an empty string.

Reimplemented in cDvbDevice.

Definition at line 169 of file device.c.

Referenced by DrawDeviceData().

◆ EnsureAudioTrack()

void cDevice::EnsureAudioTrack ( bool  Force = false)

Makes sure an audio track is selected that is actually available.

If Force is true, the language and Dolby Digital settings will be verified even if the current audio track is available.

Definition at line 1150 of file device.c.

References cSetup::AudioLanguages, availableTracks, currentAudioTrack, cSetup::CurrentDolby, dsyslog, GetCurrentAudioTrack(), GetTrack(), I18nIsPreferredLanguage(), tTrackId::id, keepTracks, tTrackId::language, SetAudioChannel(), SetCurrentAudioTrack(), Setup, ttAudioFirst, ttAudioLast, ttDolbyFirst, and ttDolbyLast.

Referenced by SetAvailableTrack(), and SetChannel().

◆ EnsureSubtitleTrack()

void cDevice::EnsureSubtitleTrack ( void  )

Makes sure one of the preferred language subtitle tracks is selected.

Only has an effect if Setup.DisplaySubtitles is on.

Definition at line 1183 of file device.c.

References cSetup::DisplaySubtitles, GetCurrentSubtitleTrack(), GetTrack(), I18nIsPreferredLanguage(), tTrackId::id, keepTracks, tTrackId::language, SetCurrentSubtitleTrack(), Setup, cSetup::SubtitleLanguages, ttNone, ttSubtitleFirst, and ttSubtitleLast.

Referenced by SetAvailableTrack(), and SetChannel().

◆ Flush()

bool cDevice::Flush ( int  TimeoutMs = 0)
virtual

Returns true if the device's output buffers are empty, i.

e. any data which was buffered so far has been processed. If TimeoutMs is not zero, the device will wait up to the given number of milliseconds before returning in case there is still data in the buffers.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1371 of file device.c.

Referenced by cPlayer::DeviceFlush().

◆ ForceTransferMode()

void cDevice::ForceTransferMode ( void  )

Forces the device into transfermode for the current channel.

Definition at line 921 of file device.c.

References LOCK_CHANNELS_READ, cTransferControl::ReceiverDevice(), and SetChannelDevice().

Referenced by cDvbSdFfDevice::SetAudioTrackDevice().

◆ Freeze()

void cDevice::Freeze ( void  )
virtual

Puts the device into "freeze frame" mode.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1238 of file device.c.

References Audios, dvbSubtitleConverter, cDvbSubtitleConverter::Freeze(), and cAudios::MuteAudio().

Referenced by cPlayer::DeviceFreeze(), cDvbSdFfDevice::Freeze(), and cDvbHdFfDevice::Freeze().

◆ GetAudioChannel()

int cDevice::GetAudioChannel ( void  )

Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).

Definition at line 1000 of file device.c.

References GetAudioChannelDevice().

◆ GetAudioChannelDevice()

int cDevice::GetAudioChannelDevice ( void  )
protectedvirtual

Gets the current audio channel, which is stereo (0), mono left (1) or mono right (2).

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 958 of file device.c.

Referenced by GetAudioChannel().

◆ GetCurrentAudioTrack()

eTrackType cDevice::GetCurrentAudioTrack ( void  ) const
inline

◆ GetCurrentlyTunedTransponder()

const cChannel * cDevice::GetCurrentlyTunedTransponder ( void  ) const
virtual

Returns a pointer to the currently tuned transponder.

This is not one of the channels in the global cChannels list, but rather a local copy. The result may be NULL if the device is not tuned to any transponder.

Reimplemented in cDvbDevice.

Definition at line 770 of file device.c.

◆ GetCurrentSubtitleTrack()

eTrackType cDevice::GetCurrentSubtitleTrack ( void  ) const
inline

Definition at line 573 of file device.h.

References currentSubtitleTrack.

Referenced by EnsureSubtitleTrack().

◆ GetDevice() [1/2]

cDevice * cDevice::GetDevice ( const cChannel Channel,
int  Priority,
bool  LiveView,
bool  Query = false 
)
static

Returns a device that is able to receive the given Channel at the given Priority, with the least impact on active recordings and live viewing.

The LiveView parameter tells whether the device will be used for live viewing or a recording. If the Channel is encrypted, a CAM slot that claims to be able to decrypt the channel is automatically selected and assigned to the returned device. Whether or not this combination of device and CAM slot is actually able to decrypt the channel can only be determined by checking the "scrambling control" bits of the received TS packets. The Action() function automatically does this and takes care that after detaching any receivers because the channel can't be decrypted, this device/CAM combination will be skipped in the next call to GetDevice(). If Query is true, no actual CAM assignments or receiver detachments will be done, so that this function can be called without any side effects in order to just determine whether a device is available for the given Channel. See also ProvidesChannel().

Definition at line 243 of file device.c.

References cCamSlot::Assign(), cChannel::Ca(), CA_DVB_MAX, CA_ENCRYPTED_MIN, cChannel::Caids(), cChannelCamRelations::CamChecked(), cChannelCamRelations::CamDecrypt(), CamSlots, ChannelCamRelations, cListBase::Count(), DetachAllReceivers(), device, DeviceNumber(), cListBase::Get(), cChannel::GetChannelID(), GetClippedNumProvidedSystems(), HasCi(), IDLEPRIORITY, IsPrimaryDevice(), MAXPRIORITY, msReady, cCamSlot::MtdSpawn(), cList< T >::Next(), numDevices, cCamSlot::Priority(), Priority(), ProvidesChannel(), cTransferControl::ReceiverDevice(), and Receiving().

◆ GetDevice() [2/2]

cDevice * cDevice::GetDevice ( int  Index)
static

◆ GetDeviceForTransponder()

cDevice * cDevice::GetDeviceForTransponder ( const cChannel Channel,
int  Priority 
)
static

Returns a device that is not currently "occupied" and can be tuned to the transponder of the given Channel, without disturbing any receiver at priorities higher or equal to Priority.

If no such device is currently available, NULL will be returned.

Definition at line 415 of file device.c.

References GetDevice(), and Priority().

Referenced by main().

◆ GetOsdSize()

void cDevice::GetOsdSize ( int &  Width,
int &  Height,
double &  PixelAspect 
)
virtual

Returns the Width, Height and PixelAspect ratio the OSD should use to best fit the resolution of the output device.

If PixelAspect is not 1.0, the OSD may take this as a hint to scale its graphics in a way that, e.g., a circle will actually show up as a circle on the screen, and not as an ellipse. Values greater than 1.0 mean to stretch the graphics in the vertical direction (or shrink it in the horizontal direction, depending on which dimension shall be fixed). Values less than 1.0 work the other way round. Note that the OSD is not guaranteed to actually use this hint.

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 521 of file device.c.

Referenced by cDvbSdFfDevice::GetOsdSize().

◆ GetSpuDecoder()

cSpuDecoder * cDevice::GetSpuDecoder ( void  )
virtual

Returns a pointer to the device's SPU decoder (or NULL, if this device doesn't have an SPU decoder).

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 210 of file device.c.

Referenced by SetVideoDisplayFormat().

◆ GetSTC()

int64_t cDevice::GetSTC ( void  )
virtual

Gets the current System Time Counter, which can be used to synchronize audio, video and subtitles.

If this device is able to replay, it must provide an STC. The value returned doesn't need to be an actual "clock" value, it is sufficient if it holds the PTS (Presentation Time Stamp) of the most recently presented frame. A proper value must be returned in normal replay mode as well as in any trick modes (like slow motion, fast forward/rewind). Only the lower 32 bit of this value are actually used, since some devices can't handle the msb correctly.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1215 of file device.c.

Referenced by cPlayer::DeviceGetSTC().

◆ GetTrack()

const tTrackId * cDevice::GetTrack ( eTrackType  Type)

◆ GetTSPacket()

bool cDevice::GetTSPacket ( uchar *&  Data)
protectedvirtual

Gets exactly one TS packet from the DVR of this device and returns a pointer to it in Data.

Only the first 188 bytes (TS_SIZE) Data points to are valid and may be accessed. If there is currently no new data available, Data will be set to NULL. The function returns false in case of a non recoverable error, otherwise it returns true, even if Data is NULL.

Reimplemented in cDvbDevice.

Definition at line 1745 of file device.c.

Referenced by Action().

◆ GetVideoSize()

void cDevice::GetVideoSize ( int &  Width,
int &  Height,
double &  VideoAspect 
)
virtual

Returns the Width, Height and VideoAspect ratio of the currently displayed video material.

Width and Height are given in pixel (e.g. 720x576) and VideoAspect is e.g. 1.33333 for a 4:3 broadcast, or 1.77778 for 16:9. The default implementation returns 0 for Width and Height and 1.0 for VideoAspect.

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 514 of file device.c.

Referenced by cDvbHdFfDevice::GetVideoSize(), and cDvbSdFfDevice::GetVideoSize().

◆ GrabImage()

uchar * cDevice::GrabImage ( int &  Size,
bool  Jpeg = true,
int  Quality = -1,
int  SizeX = -1,
int  SizeY = -1 
)
virtual

Grabs the currently visible screen image.

Size is the size of the returned data block. If Jpeg is true it will write a JPEG file. Otherwise a PNM file will be written. Quality is the compression factor for JPEG. 1 will create a very blocky and small image, 70..80 will yield reasonable quality images while keeping the image file size around 50 KB for a full frame. The default will create a big but very high quality image. SizeX is the number of horizontal pixels in the frame (default is the current screen width). SizeY is the number of vertical pixels in the frame (default is the current screen height). Returns a pointer to the grabbed image data, or NULL in case of an error. The caller takes ownership of the returned memory and must free() it once it isn't needed any more.

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 455 of file device.c.

Referenced by GrabImageFile().

◆ GrabImageFile()

bool cDevice::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.

Returns true if all went well. The caller is responsible for making sure that the given file name doesn't lead to overwriting any important other file.

Definition at line 460 of file device.c.

References GrabImage(), isyslog, LOG_ERROR_STR, and safe_write().

◆ HasCi()

bool cDevice::HasCi ( void  )
virtual

Returns true if this device has a Common Interface.

Reimplemented in cDvbDevice.

Definition at line 435 of file device.c.

Referenced by GetDevice().

◆ HasDecoder()

bool cDevice::HasDecoder ( void  ) const
virtual

Tells whether this device has an MPEG decoder.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 205 of file device.c.

Referenced by CanReplay(), IsPrimaryDevice(), and main().

◆ HasLock()

bool cDevice::HasLock ( int  TimeoutMs = 0) const
virtual

Returns true if the device has a lock on the requested transponder.

Default is true, a specific device implementation may return false to indicate that it is not ready yet. If TimeoutMs is not zero, waits for the given number of milliseconds before returning false.

Reimplemented in cDvbDevice.

Definition at line 947 of file device.c.

Referenced by cSectionHandler::Action(), AttachReceiver(), and cSectionHandler::SetStatus().

◆ HasPid()

bool cDevice::HasPid ( int  Pid) const
protected

Returns true if this device is currently receiving the given PID.

Definition at line 531 of file device.c.

References MAXPIDHANDLES, mutexPids, and pidHandles.

Referenced by cDvbDevice::ProvidesChannel(), cDvbSdFfDevice::SetChannelDevice(), and cDvbHdFfDevice::SetChannelDevice().

◆ HasProgramme()

bool cDevice::HasProgramme ( void  ) const
virtual

Returns true if the device is currently showing any programme to the user, either through replaying or live.

Definition at line 952 of file device.c.

References mutexChannel, cDevice::cPidHandle::pid, pidHandles, ptAudio, ptVideo, and Replaying().

Referenced by Priority().

◆ IsMute()

bool cDevice::IsMute ( void  ) const
inline

Definition at line 610 of file device.h.

References mute.

Referenced by cDvbSdFfDevice::SetDigitalAudioDevice().

◆ IsPrimaryDevice()

bool cDevice::IsPrimaryDevice ( void  ) const
inline

◆ IsTunedToTransponder()

bool cDevice::IsTunedToTransponder ( const cChannel Channel) const
virtual

Returns true if this device is currently tuned to the given Channel's transponder.

Reimplemented in cDvbDevice.

Definition at line 775 of file device.c.

Referenced by main().

◆ MakePrimaryDevice()

void cDevice::MakePrimaryDevice ( bool  On)
protectedvirtual

Informs a device that it will be the primary device.

If there is anything the device needs to set up when it becomes the primary device (On = true) or to shut down when it no longer is the primary device (On = false), it should do so in this function. A derived class must call the MakePrimaryDevice() function of its base class.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 179 of file device.c.

References DELETENULL(), dvbSubtitleConverter, and liveSubtitle.

Referenced by cDvbSdFfDevice::MakePrimaryDevice(), cDvbHdFfDevice::MakePrimaryDevice(), and SetPrimaryDevice().

◆ MaySwitchTransponder()

bool cDevice::MaySwitchTransponder ( const cChannel Channel) const
virtual

Returns true if it is ok to switch to the Channel's transponder on this device, without disturbing any other activities.

If an occupied timeout has been set for this device, and that timeout has not yet expired, this function returns false,

Reimplemented in cDvbDevice.

Definition at line 780 of file device.c.

References occupiedTimeout, cDevice::cPidHandle::pid, pidHandles, ptAudio, ptDolby, ptVideo, and Receiving().

Referenced by cDvbDevice::MaySwitchTransponder(), and cEITScanner::Process().

◆ Mute()

void cDevice::Mute ( void  )
virtual

Turns off audio while replaying.

A derived class must call the base class function to make sure all registered cAudio objects are notified.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1245 of file device.c.

References Audios, and cAudios::MuteAudio().

Referenced by cPlayer::DeviceMute(), cDvbSdFfDevice::Mute(), and cDvbHdFfDevice::Mute().

◆ NextCardIndex()

int cDevice::NextCardIndex ( int  n = 0)
staticprotected

Calculates the next card index.

Each device in a given machine must have a unique card index, which will be used to identify the device for assigning Ca parameters and deciding whether to actually use that device in this particular instance of VDR. Every time a new cDevice is created, it will be given the current nextCardIndex, and then nextCardIndex will be automatically incremented by 1. A derived class can determine whether a given device shall be used by checking UseDevice(NextCardIndex()). If a device is skipped, or if there are possible device indexes left after a derived class has set up all its devices, NextCardIndex(n) must be called, where n is the number of card indexes to skip.

Definition at line 148 of file device.c.

References esyslog, MAXDEVICES, and nextCardIndex.

Referenced by cDvbDevice::Initialize().

◆ NumAudioTracks()

int cDevice::NumAudioTracks ( void  ) const

Returns the number of audio tracks that are currently available.

This is just for information, to quickly find out whether there is more than one audio track.

Definition at line 1094 of file device.c.

References NumTracks(), ttAudioFirst, and ttDolbyLast.

Referenced by SetAvailableTrack().

◆ NumProvidedSystems()

int cDevice::NumProvidedSystems ( void  ) const
virtual

Returns the number of individual "delivery systems" this device provides.

The default implementation returns 0, so any derived class that can actually provide channels must implement this function. The result of this function is used when selecting a device, in order to avoid devices that provide more than one system.

Reimplemented in cDvbDevice, cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 745 of file device.c.

Referenced by GetClippedNumProvidedSystems().

◆ NumSubtitleTracks()

int cDevice::NumSubtitleTracks ( void  ) const

Returns the number of subtitle tracks that are currently available.

Definition at line 1099 of file device.c.

References NumTracks(), ttSubtitleFirst, and ttSubtitleLast.

◆ NumTracks()

int cDevice::NumTracks ( eTrackType  FirstTrack,
eTrackType  LastTrack 
) const

Returns the number of tracks in the given range that are currently available.

Definition at line 1084 of file device.c.

References availableTracks.

Referenced by NumAudioTracks(), and NumSubtitleTracks().

◆ Occupied()

int cDevice::Occupied ( void  ) const

Returns the number of seconds this device is still occupied for.

Definition at line 930 of file device.c.

References occupiedTimeout.

◆ OpenDvr()

bool cDevice::OpenDvr ( void  )
protectedvirtual

Opens the DVR of this device and prepares it to deliver a Transport Stream for use in a cReceiver.

Reimplemented in cDvbDevice.

Definition at line 1736 of file device.c.

Referenced by Action().

◆ OpenFilter()

int cDevice::OpenFilter ( u_short  Pid,
u_char  Tid,
u_char  Mask 
)
virtual

Opens a file handle for the given filter data.

A derived device that provides section data must implement this function.

Reimplemented in cDvbDevice.

Definition at line 678 of file device.c.

Referenced by cSectionHandler::Add().

◆ Play()

void cDevice::Play ( void  )
virtual

Sets the device into play mode (after a previous trick mode).

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1231 of file device.c.

References Audios, dvbSubtitleConverter, cDvbSubtitleConverter::Freeze(), mute, and cAudios::MuteAudio().

Referenced by cPlayer::DevicePlay(), cDvbSdFfDevice::Play(), and cDvbHdFfDevice::Play().

◆ PlayAudio()

int cDevice::PlayAudio ( const uchar Data,
int  Length,
uchar  Id 
)
protectedvirtual

Plays the given data block as audio.

Data points to exactly one complete PES packet of the given Length. Id indicates the type of audio data this packet holds. PlayAudio() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). Returns the number of bytes actually taken from Data, or -1 in case of an error.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1381 of file device.c.

Referenced by PlayPesPacket(), and PlayTsAudio().

◆ PlayPes()

int cDevice::PlayPes ( const uchar Data,
int  Length,
bool  VideoOnly = false 
)
virtual

Plays all valid PES packets in Data with the given Length.

If Data is NULL any leftover data from a previous call will be discarded. If VideoOnly is true, only the video will be displayed, which is necessary for trick modes like 'fast forward'. Data should point to a sequence of complete PES packets. If the last packet in Data is not complete, it will be copied and combined to a complete packet with data from the next call to PlayPes(). That way any functions called from within PlayPes() will be guaranteed to always receive complete PES packets.

Definition at line 1491 of file device.c.

References dvbSubtitleConverter, esyslog, PesLength(), PlayPesPacket(), and cDvbSubtitleConverter::Reset().

Referenced by cPlayer::PlayPes().

◆ PlayPesPacket()

int cDevice::PlayPesPacket ( const uchar Data,
int  Length,
bool  VideoOnly = false 
)
protectedvirtual

Plays the single PES packet in Data with the given Length.

If VideoOnly is true, only the video will be displayed, which is necessary for trick modes like 'fast forward'. Data must point to one single, complete PES packet.

Definition at line 1393 of file device.c.

References Audios, availableTracks, ClrAvailableTracks(), currentAudioTrack, currentSubtitleTrack, dsyslog, esyslog, isPlayingVideo, MIN_PRE_1_3_19_PRIVATESTREAM, cAudios::PlayAudio(), PlayAudio(), PlaySubtitle(), PlayVideo(), pre_1_3_19_PrivateStream, SetAvailableTrack(), Setup, cThread::Start(), ttAudio, ttDolby, ttNone, ttSubtitle, and cSetup::UseDolbyDigital.

Referenced by PlayPes().

◆ PlaySubtitle()

int cDevice::PlaySubtitle ( const uchar Data,
int  Length 
)
protectedvirtual

Plays the given data block as a subtitle.

Data points to exactly one complete PES packet of the given Length. PlaySubtitle() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). Returns the number of bytes actually taken from Data, or -1 in case of an error.

Definition at line 1386 of file device.c.

References cDvbSubtitleConverter::ConvertFragments(), and dvbSubtitleConverter.

Referenced by PlayPesPacket().

◆ PlayTs()

int cDevice::PlayTs ( const uchar Data,
int  Length,
bool  VideoOnly = false 
)
virtual

Plays the given TS packet.

If VideoOnly is true, only the video will be displayed, which is necessary for trick modes like 'fast forward'. Data points to a single TS packet, Length is always TS_SIZE (the total size of a single TS packet). If Data is NULL any leftover data from a previous call will be discarded. A derived device can reimplement this function to handle the TS packets itself. Any packets the derived function can't handle must be sent to the base class function. This applies especially to the PAT/PMT packets. Returns -1 in case of error, otherwise the number of actually processed bytes is returned. PlayTs() shall process the TS packets either as a whole (returning TS_SIZE) or not at all, returning 0 or -1 and setting 'errno' accordingly).

Definition at line 1569 of file device.c.

References Audios, availableTracks, currentAudioTrack, currentSubtitleTrack, esyslog, isPlayingVideo, cPatPmtParser::ParsePat(), cPatPmtParser::ParsePmt(), PATPID, patPmtParser, cAudios::PlayTsAudio(), PlayTsAudio(), PlayTsSubtitle(), PlayTsVideo(), cTsToPes::Reset(), TS_SIZE, TS_SYNC, TsHasPayload(), TsPayloadOffset(), TsPid(), tsToPesAudio, tsToPesSubtitle, and tsToPesVideo.

Referenced by Detach(), and cPlayer::PlayTs().

◆ PlayTsAudio()

int cDevice::PlayTsAudio ( const uchar Data,
int  Length 
)
protectedvirtual

Plays the given data block as audio.

Data points to exactly one complete TS packet of the given Length (which is always TS_SIZE). PlayTsAudio() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). The default implementation collects all incoming TS payload belonging to one PES packet and calls PlayAudio() with the resulting packet.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1539 of file device.c.

References cTsToPes::GetPes(), PlayAudio(), cTsToPes::PutTs(), cTsToPes::Reset(), cTsToPes::SetRepeatLast(), and tsToPesAudio.

Referenced by PlayTs().

◆ PlayTsSubtitle()

int cDevice::PlayTsSubtitle ( const uchar Data,
int  Length 
)
protectedvirtual

Plays the given data block as a subtitle.

Data points to exactly one complete TS packet of the given Length (which is always TS_SIZE). PlayTsSubtitle() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). The default implementation collects all incoming TS payload belonging to one PES packet and displays the resulting subtitle via the OSD.

Definition at line 1555 of file device.c.

References cDvbSubtitleConverter::Convert(), dvbSubtitleConverter, cTsToPes::GetPes(), cTsToPes::PutTs(), cTsToPes::Reset(), and tsToPesSubtitle.

Referenced by PlayTs().

◆ PlayTsVideo()

int cDevice::PlayTsVideo ( const uchar Data,
int  Length 
)
protectedvirtual

Plays the given data block as video.

Data points to exactly one complete TS packet of the given Length (which is always TS_SIZE). PlayTsVideo() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). The default implementation collects all incoming TS payload belonging to one PES packet and calls PlayVideo() with the resulting packet.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1520 of file device.c.

References cTsToPes::GetPes(), PlayVideo(), cTsToPes::PutTs(), cTsToPes::Reset(), cTsToPes::SetRepeatLast(), TsPayloadStart(), and tsToPesVideo.

Referenced by PlayTs().

◆ PlayVideo()

int cDevice::PlayVideo ( const uchar Data,
int  Length 
)
protectedvirtual

Plays the given data block as video.

Data points to exactly one complete PES packet of the given Length. PlayVideo() shall process the packet either as a whole (returning Length) or not at all (returning 0 or -1 and setting 'errno' accordingly). Returns the number of bytes actually taken from Data, or -1 in case of an error.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1376 of file device.c.

Referenced by PlayPesPacket(), and PlayTsVideo().

◆ Poll()

bool cDevice::Poll ( cPoller Poller,
int  TimeoutMs = 0 
)
virtual

Returns true if the device itself or any of the file handles in Poller is ready for further action.

If TimeoutMs is not zero, the device will wait up to the given number of milliseconds before returning in case it can't accept any data.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1366 of file device.c.

Referenced by cPlayer::DevicePoll().

◆ Positioner()

const cPositioner * cDevice::Positioner ( void  ) const
virtual

Returns a pointer to the positioner (if any) this device has used to move the satellite dish to the requested position (only applies to DVB-S devices).

If no positioner is involved, or this is not a DVB-S device, NULL will be returned.

Reimplemented in cDvbDevice.

Definition at line 750 of file device.c.

Referenced by cEITScanner::Process(), and cDisplayChannel::ProcessKey().

◆ Priority()

int cDevice::Priority ( void  ) const

Returns the priority of the current receiving session (-MAXPRIORITY..MAXPRIORITY), or IDLEPRIORITY if no receiver is currently active.

Definition at line 1632 of file device.c.

References HasProgramme(), IDLEPRIORITY, IsPrimaryDevice(), max(), MAXRECEIVERS, mutexReceiver, receiver, Replaying(), and TRANSFERPRIORITY.

Referenced by GetDevice(), GetDeviceForTransponder(), cCamSlot::Priority(), cEITScanner::Process(), and cDvbDevice::ProvidesChannel().

◆ ProvidesChannel()

bool cDevice::ProvidesChannel ( const cChannel Channel,
int  Priority = IDLEPRIORITY,
bool *  NeedsDetachReceivers = NULL 
) const
virtual

Returns true if this device can provide the given channel.

In case the device has cReceivers attached to it, Priority is used to decide whether the caller's request can be honored. The special Priority value IDLEPRIORITY will tell the caller whether this device is principally able to provide the given Channel, regardless of any attached cReceivers. If NeedsDetachReceivers is given, the resulting value in it will tell the caller whether or not it will have to detach any currently attached receivers from this device before calling SwitchChannel. Note that the return value in NeedsDetachReceivers is only meaningful if the function itself actually returns true. The default implementation always returns false, so a derived cDevice class that can provide channels must implement this function.

Reimplemented in cDvbDevice.

Definition at line 735 of file device.c.

Referenced by GetDevice().

◆ ProvidesEIT()

bool cDevice::ProvidesEIT ( void  ) const
virtual

Returns true if this device provides EIT data and thus wants to be tuned to the channels it can receive regularly to update the data.

The default implementation returns false.

Reimplemented in cDvbDevice.

Definition at line 740 of file device.c.

Referenced by cEITScanner::Process().

◆ ProvidesSource()

bool cDevice::ProvidesSource ( int  Source) const
virtual

Returns true if this device can provide the given source.

Reimplemented in cDvbDevice, cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 705 of file device.c.

Referenced by cMenuSetupLNB::Setup().

◆ ProvidesTransponder()

bool cDevice::ProvidesTransponder ( const cChannel Channel) const
virtual

Returns true if this device can provide the transponder of the given Channel (which implies that it can provide the Channel's source).

Reimplemented in cDvbDevice.

Definition at line 721 of file device.c.

Referenced by cEITScanner::Process(), and ProvidesTransponderExclusively().

◆ ProvidesTransponderExclusively()

bool cDevice::ProvidesTransponderExclusively ( const cChannel Channel) const
virtual

Returns true if this is the only device that is able to provide the given channel's transponder.

Definition at line 726 of file device.c.

References device, numDevices, and ProvidesTransponder().

Referenced by cEITScanner::Process().

◆ ReadFilter()

int cDevice::ReadFilter ( int  Handle,
void *  Buffer,
size_t  Length 
)
virtual

Reads data from a handle for the given filter.

A derived class need not implement this function, because this is done by the default implementation.

Definition at line 683 of file device.c.

References safe_read().

Referenced by cSectionHandler::Action().

◆ Ready()

bool cDevice::Ready ( void  )
protectedvirtual

Returns true if this device is ready.

Devices with conditional access hardware may need some time until they are up and running. This function is called in a loop at startup until all devices are ready (see WaitForAllDevicesReady()).

Definition at line 1645 of file device.c.

Referenced by WaitForAllDevicesReady().

◆ Receiving()

bool cDevice::Receiving ( bool  Dummy = false) const

Returns true if we are currently receiving. The parameter has no meaning (for backwards compatibility only).

Definition at line 1650 of file device.c.

References MAXRECEIVERS, mutexReceiver, and receiver.

Referenced by GetDevice(), MaySwitchTransponder(), cDvbDevice::ProvidesChannel(), and cRcuRemote::Recording().

◆ Replaying()

bool cDevice::Replaying ( void  ) const

Returns true if we are currently replaying.

Definition at line 1309 of file device.c.

References player.

Referenced by cSkinLCARSDisplayMenu::DrawLiveIndicator(), cSkinLCARSDisplayMenu::Flush(), HasProgramme(), Priority(), and SetCurrentSubtitleTrack().

◆ SetAudioChannel()

void cDevice::SetAudioChannel ( int  AudioChannel)

Sets the audio channel to stereo (0), mono left (1) or mono right (2).

Any other values will be silently ignored.

Definition at line 1006 of file device.c.

References SetAudioChannelDevice().

Referenced by ClrAvailableTracks(), and EnsureAudioTrack().

◆ SetAudioChannelDevice()

void cDevice::SetAudioChannelDevice ( int  AudioChannel)
protectedvirtual

Sets the audio channel to stereo (0), mono left (1) or mono right (2).

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 963 of file device.c.

Referenced by SetAudioChannel().

◆ SetAudioTrackDevice()

void cDevice::SetAudioTrackDevice ( eTrackType  Type)
protectedvirtual

Sets the current audio track to the given value.

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 975 of file device.c.

Referenced by SetCurrentAudioTrack().

◆ SetAvailableTrack()

bool cDevice::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.

Type must be one of the basic eTrackType values, like ttAudio or ttDolby. Index tells which track of the given basic type is meant. If Id is 0 any existing id will be left untouched and only the given Language and Description will be set. Returns true if the track was set correctly, false otherwise.

Definition at line 1050 of file device.c.

References autoSelectPreferredSubtitleLanguage, availableTracks, currentAudioTrack, currentAudioTrackMissingCount, cThread::description, EnsureAudioTrack(), EnsureSubtitleTrack(), esyslog, tTrackId::id, IS_AUDIO_TRACK, IS_DOLBY_TRACK, IS_SUBTITLE_TRACK, NumAudioTracks(), strn0cpy(), ttAudio, ttDolby, ttSubtitle, and Utf8Strn0Cpy().

Referenced by cPlayer::DeviceSetAvailableTrack(), PlayPesPacket(), and SetChannel().

◆ SetCamSlot()

void cDevice::SetCamSlot ( cCamSlot CamSlot)

Sets the given CamSlot to be used with this device.

Definition at line 440 of file device.c.

References camSlot, and LOCK_THREAD.

Referenced by cCamSlot::Assign().

◆ SetChannel()

eSetChannelResult cDevice::SetChannel ( const cChannel Channel,
bool  LiveView 
)
private

◆ SetChannelDevice()

bool cDevice::SetChannelDevice ( const cChannel Channel,
bool  LiveView 
)
protectedvirtual

Sets the device to the given channel (actual physical setup).

Reimplemented in cDvbDevice, cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 942 of file device.c.

Referenced by ForceTransferMode(), and SetChannel().

◆ SetCurrentAudioTrack()

bool cDevice::SetCurrentAudioTrack ( eTrackType  Type)

Sets the current audio track to the given Type.

Returns true if Type is a valid audio track, false otherwise.

Definition at line 1104 of file device.c.

References currentAudioTrack, GetTrack(), IS_AUDIO_TRACK, IS_DOLBY_TRACK, mutexCurrentAudioTrack, player, cPlayer::SetAudioTrack(), SetAudioTrackDevice(), SetDigitalAudioDevice(), ttDolbyLast, and ttNone.

Referenced by cPlayer::DeviceSetCurrentAudioTrack(), and EnsureAudioTrack().

◆ SetCurrentChannel()

static void cDevice::SetCurrentChannel ( const cChannel Channel)
inlinestatic

◆ SetCurrentSubtitleTrack()

bool cDevice::SetCurrentSubtitleTrack ( eTrackType  Type,
bool  Manual = false 
)

Sets the current subtitle track to the given Type.

IF Manual is true, no automatic preferred subtitle language selection will be done for the rest of the current replay session, or until the channel is changed. Returns true if Type is a valid subtitle track, false otherwise.

Definition at line 1122 of file device.c.

References AttachReceiver(), autoSelectPreferredSubtitleLanguage, cLiveSubtitle, currentSubtitleTrack, DELETENULL(), dvbSubtitleConverter, GetTrack(), tTrackId::id, IS_SUBTITLE_TRACK, liveSubtitle, mutexCurrentSubtitleTrack, player, Replaying(), cDvbSubtitleConverter::Reset(), cPlayer::SetSubtitleTrack(), SetSubtitleTrackDevice(), Transferring(), and ttNone.

Referenced by cPlayer::DeviceSetCurrentSubtitleTrack(), and EnsureSubtitleTrack().

◆ SetDigitalAudioDevice()

void cDevice::SetDigitalAudioDevice ( bool  On)
protectedvirtual

Tells the output device that the current audio track is Dolby Digital.

Only used by the original "full featured" DVB cards - do not use for new developments!

Reimplemented in cDvbSdFfDevice.

Definition at line 971 of file device.c.

Referenced by SetCurrentAudioTrack().

◆ SetOccupied()

void cDevice::SetOccupied ( int  Seconds)

Sets the occupied timeout for this device to the given number of Seconds, This can be used to tune a device to a particular transponder and make sure it will stay there for a certain amount of time, for instance to collect EPG data.

This function shall only be called after the device has been successfully tuned to the requested transponder. Seconds will be silently limited to MAXOCCUPIEDTIMEOUT. Values less than 0 will be silently ignored.

Definition at line 936 of file device.c.

References MAXOCCUPIEDTIMEOUT, min(), and occupiedTimeout.

Referenced by main().

◆ SetPid()

bool cDevice::SetPid ( cPidHandle Handle,
int  Type,
bool  On 
)
protectedvirtual

Does the actual PID setting on this device.

On indicates whether the PID shall be added or deleted. Handle->handle can be used by the device to store information it needs to receive this PID (for instance a file handle). Handle->used indicates how many receivers are using this PID. Type indicates some special types of PIDs, which the device may need to set in a specific way.

Reimplemented in cDvbDevice, cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 637 of file device.c.

Referenced by AddPid(), and DelPid().

◆ SetPlayMode()

bool cDevice::SetPlayMode ( ePlayMode  PlayMode)
protectedvirtual

Sets the device into the given play mode.

Returns true if the operation was successful.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1210 of file device.c.

Referenced by AttachPlayer(), and Detach().

◆ SetPrimaryDevice()

bool cDevice::SetPrimaryDevice ( int  n)
static

Sets the primary device to 'n'.

n must be in the range 1...numDevices. Returns true if this was possible.

Definition at line 187 of file device.c.

References cSetup::CurrentVolume, device, esyslog, isyslog, MakePrimaryDevice(), numDevices, primaryDevice, cSetup::PrimaryDVB, Setup, SetVideoFormat(), SetVolumeDevice(), and cSetup::VideoFormat.

Referenced by main().

◆ SetSubtitleTrackDevice()

void cDevice::SetSubtitleTrackDevice ( eTrackType  Type)
protectedvirtual

Sets the current subtitle track to the given value.

Definition at line 979 of file device.c.

Referenced by SetCurrentSubtitleTrack().

◆ SetUseDevice()

void cDevice::SetUseDevice ( int  n)
static

Sets the 'useDevice' flag of the given device.

If this function is not called before initializing, all devices will be used.

Definition at line 142 of file device.c.

References MAXDEVICES, and useDevice.

Referenced by main().

◆ SetVideoDisplayFormat()

void cDevice::SetVideoDisplayFormat ( eVideoDisplayFormat  VideoDisplayFormat)
virtual

Sets the video display format to the given one (only useful if this device has an MPEG decoder).

A derived class must first call the base class function! NOTE: this is only for SD devices. HD devices shall implement their own setup menu with the necessary parameters for controlling output.

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 487 of file device.c.

References cSpuDecoder::eSpuLetterBox, cSpuDecoder::eSpuNormal, cSpuDecoder::eSpuPanAndScan, esyslog, GetSpuDecoder(), cSpuDecoder::setScaleMode(), Setup, vdfCenterCutOut, vdfLetterBox, vdfPanAndScan, and cSetup::VideoFormat.

Referenced by Detach(), cPlayer::DeviceSetVideoDisplayFormat(), cDvbHdFfDevice::SetVideoDisplayFormat(), and cDvbSdFfDevice::SetVideoDisplayFormat().

◆ SetVideoFormat()

void cDevice::SetVideoFormat ( bool  VideoFormat16_9)
virtual

Sets the output video format to either 16:9 or 4:3 (only useful if this device has an MPEG decoder).

NOTE: this is only for SD devices. HD devices shall implement their own setup menu with the necessary parameters for controlling output.

Reimplemented in cDvbSdFfDevice.

Definition at line 510 of file device.c.

Referenced by SetPrimaryDevice().

◆ SetVolume()

void cDevice::SetVolume ( int  Volume,
bool  Absolute = false 
)

Sets the volume to the given value, either absolutely or relative to the current volume.

Definition at line 1012 of file device.c.

References Audios, constrain(), MAXVOLUME, cStatus::MsgSetVolume(), mute, cAudios::MuteAudio(), Setup, SetVolumeDevice(), volume, cSetup::VolumeLinearize, and cSetup::VolumeSteps.

Referenced by ToggleMute().

◆ SetVolumeDevice()

void cDevice::SetVolumeDevice ( int  Volume)
protectedvirtual

Sets the audio volume on this device (Volume = 0...255).

Reimplemented in cDvbSdFfDevice, and cDvbHdFfDevice.

Definition at line 967 of file device.c.

Referenced by SetPrimaryDevice(), and SetVolume().

◆ Shutdown()

void cDevice::Shutdown ( void  )
static

Closes down all devices.

Must be called at the end of the program.

Definition at line 446 of file device.c.

References cListBase::Clear(), device, deviceHooks, and numDevices.

Referenced by main().

◆ SignalQuality()

int cDevice::SignalQuality ( void  ) const
virtual

Returns the "quality" of the currently received signal.

This is a value in the range 0 (worst quality) through 100 (best possible quality). A value of -1 indicates that this device has no concept of a "signal quality".

Reimplemented in cDvbDevice.

Definition at line 765 of file device.c.

Referenced by DrawDeviceSignal(), and cSkinSTTNGDisplayChannel::Flush().

◆ SignalStats()

bool cDevice::SignalStats ( int &  Valid,
double *  Strength = NULL,
double *  Cnr = NULL,
double *  BerPre = NULL,
double *  BerPost = NULL,
double *  Per = NULL,
int *  Status = NULL 
) const
virtual

Returns statistics about the currently received signal (if available).

Strength is the signal strength in dBm (typical range -100dBm...0dBm). Cnr is the carrier to noise ratio in dB (typical range 0dB...40dB). BerPre is the bit error rate before the forward error correction (FEC). BerPost is the bit error rate after the forward error correction (FEC). Per is the block error rate after the forward error correction (FEC). Status is the masked frontend status (signal/carrier/viterbi/sync/lock). Typical range for BerPre, BerPost and Per is 0...1. If any of the given pointers is not NULL, the value of the respective signal statistic is returned in it. Upon return, Valid holds a combination of DTV_STAT_VALID_* flags, indicating which of the returned values are actually valid. If the flag for a particular parameter in Valid is 0, the returned value is undefined. It depends on the device which of these parameters (if any) are available. Returns true if any of the requested parameters is valid. If false is returned, the value in Valid is undefined.

Reimplemented in cDvbDevice.

Definition at line 755 of file device.c.

◆ SignalStrength()

int cDevice::SignalStrength ( void  ) const
virtual

Returns the "strength" of the currently received signal.

This is a value in the range 0 (no signal at all) through 100 (best possible signal). A value of -1 indicates that this device has no concept of a "signal strength".

Reimplemented in cDvbDevice.

Definition at line 760 of file device.c.

Referenced by DrawDeviceSignal(), and cSkinSTTNGDisplayChannel::Flush().

◆ StartSectionHandler()

void cDevice::StartSectionHandler ( void  )
protected

A derived device that provides section data must call this function (typically in its constructor) to actually set up the section handler.

Definition at line 651 of file device.c.

References AttachFilter(), eitFilter, nitFilter, patFilter, sdtFilter, and sectionHandler.

Referenced by cDvbDevice::cDvbDevice().

◆ StillPicture()

void cDevice::StillPicture ( const uchar Data,
int  Length 
)
virtual

Displays the given I-frame as a still picture.

Data points either to a series of TS (first byte is 0x47) or PES (first byte is 0x00) data of the given Length. The default implementation converts TS to PES and calls itself again, allowing a derived class to display PES if it can't handle TS directly.

Reimplemented in cDvbHdFfDevice, and cDvbSdFfDevice.

Definition at line 1250 of file device.c.

References esyslog, cTsToPes::GetPes(), LOG_ERROR_STR, cPatPmtParser::ParsePat(), cPatPmtParser::ParsePmt(), PATPID, patPmtParser, cTsToPes::PutTs(), cTsToPes::Reset(), TS_SIZE, TsPayloadStart(), and TsPid().

Referenced by cPlayer::DeviceStillPicture(), cDvbSdFfDevice::StillPicture(), and cDvbHdFfDevice::StillPicture().

◆ StopReplay()

void cDevice::StopReplay ( void  )

Stops the current replay session (if any).

Definition at line 1357 of file device.c.

References Detach(), IsPrimaryDevice(), player, and cControl::Shutdown().

Referenced by SetChannel().

◆ StopSectionHandler()

void cDevice::StopSectionHandler ( void  )
protected

A device that has called StartSectionHandler() must call this function (typically in its destructor) to stop the section handler.

Definition at line 662 of file device.c.

References eitFilter, nitFilter, patFilter, sdtFilter, and sectionHandler.

Referenced by cDvbHdFfDevice::cDvbHdFfDevice(), and cDvbDevice::~cDvbDevice().

◆ SwitchChannel() [1/2]

bool cDevice::SwitchChannel ( const cChannel Channel,
bool  LiveView 
)

◆ SwitchChannel() [2/2]

bool cDevice::SwitchChannel ( int  Direction)
static

Switches the primary device to the next available channel in the given Direction (only the sign of Direction is evaluated, positive values switch to higher channel numbers).

Definition at line 807 of file device.c.

References dsyslog, GetDevice(), LIVEPRIORITY, LOCK_CHANNELS_READ, mtError, cChannel::Number(), cSkins::QueueMessage(), sgn(), cControl::Shutdown(), Skins, SwitchChannel(), and tr.

◆ ToggleMute()

bool cDevice::ToggleMute ( void  )

Turns the volume off or on and returns the new mute state.

Definition at line 983 of file device.c.

References Audios, mute, cAudios::MuteAudio(), SetVolume(), and volume.

◆ Transferring()

bool cDevice::Transferring ( void  ) const

◆ TrickSpeed()

void cDevice::TrickSpeed ( int  Speed,
bool  Forward 
)
virtual

Sets the device into a mode where replay is done slower.

Every single frame shall then be displayed the given number of times. Forward is true if replay is done in the normal (forward) direction, false if it is done reverse. The cDvbPlayer uses the following values for the various speeds: 1x 2x 3x Fast Forward 6 3 1 Fast Reverse 6 3 1 Slow Forward 8 4 2 Slow Reverse 63 48 24

Reimplemented in cDvbSdFfDevice.

Definition at line 1220 of file device.c.

Referenced by cPlayer::DeviceTrickSpeed().

◆ WaitForAllDevicesReady()

bool cDevice::WaitForAllDevicesReady ( int  Timeout = 0)
static

Waits until all devices have become ready, or the given Timeout (seconds) has expired.

While waiting, the Ready() function of each device is called in turn, until they all return true. Returns true if all devices have become ready within the given timeout.

Definition at line 126 of file device.c.

References device, numDevices, Ready(), and cCondWait::SleepMs().

Referenced by main().

Friends And Related Function Documentation

◆ cDeviceHook

friend class cDeviceHook
friend

Definition at line 119 of file device.h.

◆ cLiveSubtitle

friend class cLiveSubtitle
friend

Definition at line 118 of file device.h.

Referenced by SetCurrentSubtitleTrack().

◆ cReceiver

friend class cReceiver
friend

Definition at line 120 of file device.h.

Member Data Documentation

◆ autoSelectPreferredSubtitleLanguage

bool cDevice::autoSelectPreferredSubtitleLanguage
private

Definition at line 536 of file device.h.

Referenced by cDevice(), SetAvailableTrack(), and SetCurrentSubtitleTrack().

◆ availableTracks

tTrackId cDevice::availableTracks[ttMaxTrackTypes]
private

◆ camSlot

cCamSlot* cDevice::camSlot
private

Definition at line 457 of file device.h.

Referenced by AddPid(), AttachReceiver(), cDevice(), DelPid(), Detach(), SetCamSlot(), and SetChannel().

◆ cardIndex

int cDevice::cardIndex
private

Definition at line 184 of file device.h.

Referenced by cDevice().

◆ currentAudioTrack

eTrackType cDevice::currentAudioTrack
private

◆ currentAudioTrackMissingCount

int cDevice::currentAudioTrackMissingCount
private

Definition at line 535 of file device.h.

Referenced by cDevice(), ClrAvailableTracks(), and SetAvailableTrack().

◆ currentChannel

int cDevice::currentChannel = 1
staticprotected

Definition at line 256 of file device.h.

Referenced by SetChannel(), and SetCurrentChannel().

◆ currentSubtitleTrack

eTrackType cDevice::currentSubtitleTrack
private

◆ device

cDevice * cDevice::device = { NULL }
staticprivate

◆ deviceHooks

cList< cDeviceHook > cDevice::deviceHooks
staticprivate

Definition at line 236 of file device.h.

Referenced by cDeviceHook::cDeviceHook(), DeviceHooksProvidesTransponder(), and Shutdown().

◆ dvbSubtitleConverter

cDvbSubtitleConverter* cDevice::dvbSubtitleConverter
private

◆ eitFilter

cEitFilter* cDevice::eitFilter
private

Definition at line 422 of file device.h.

Referenced by cDevice(), StartSectionHandler(), and StopSectionHandler().

◆ isPlayingVideo

bool cDevice::isPlayingVideo
private

Definition at line 632 of file device.h.

Referenced by cDevice(), Detach(), PlayPesPacket(), and PlayTs().

◆ keepTracks

bool cDevice::keepTracks
private

Definition at line 537 of file device.h.

Referenced by cDevice(), ClrAvailableTracks(), EnsureAudioTrack(), and EnsureSubtitleTrack().

◆ liveSubtitle

cLiveSubtitle* cDevice::liveSubtitle
private

◆ mute

bool cDevice::mute
private

Definition at line 595 of file device.h.

Referenced by cDevice(), IsMute(), Play(), SetVolume(), and ToggleMute().

◆ mutexChannel

cMutex cDevice::mutexChannel
mutableprivate

Definition at line 253 of file device.h.

Referenced by HasProgramme(), and SetChannel().

◆ mutexCurrentAudioTrack

cMutex cDevice::mutexCurrentAudioTrack
private

Definition at line 533 of file device.h.

Referenced by SetCurrentAudioTrack().

◆ mutexCurrentSubtitleTrack

cMutex cDevice::mutexCurrentSubtitleTrack
private

Definition at line 534 of file device.h.

Referenced by Detach(), and SetCurrentSubtitleTrack().

◆ mutexPids

cMutex cDevice::mutexPids
mutableprivate

Definition at line 387 of file device.h.

Referenced by AddPid(), DelLivePids(), DelPid(), and HasPid().

◆ mutexReceiver

cMutex cDevice::mutexReceiver
mutableprivate

◆ nextCardIndex

int cDevice::nextCardIndex = 0
staticprivate

Definition at line 183 of file device.h.

Referenced by cDevice(), and NextCardIndex().

◆ nitFilter

cNitFilter* cDevice::nitFilter
private

Definition at line 425 of file device.h.

Referenced by cDevice(), StartSectionHandler(), and StopSectionHandler().

◆ numDevices

int cDevice::numDevices = 0
staticprivate

◆ occupiedTimeout

time_t cDevice::occupiedTimeout
private

Definition at line 254 of file device.h.

Referenced by cDevice(), MaySwitchTransponder(), Occupied(), and SetOccupied().

◆ patFilter

cPatFilter* cDevice::patFilter
private

Definition at line 423 of file device.h.

Referenced by cDevice(), SetChannel(), StartSectionHandler(), and StopSectionHandler().

◆ patPmtParser

cPatPmtParser cDevice::patPmtParser
private

Definition at line 628 of file device.h.

Referenced by AttachPlayer(), Detach(), PlayTs(), and StillPicture().

◆ pidHandles

cPidHandle cDevice::pidHandles[MAXPIDHANDLES]
protected

◆ player

cPlayer* cDevice::player
private

◆ pre_1_3_19_PrivateStream

int cDevice::pre_1_3_19_PrivateStream
private

Definition at line 538 of file device.h.

Referenced by ClrAvailableTracks(), and PlayPesPacket().

◆ primaryDevice

cDevice * cDevice::primaryDevice = NULL
staticprivate

Definition at line 125 of file device.h.

Referenced by CurrentVolume(), IsPrimaryDevice(), SetPrimaryDevice(), and ~cDevice().

◆ receiver

cReceiver* cDevice::receiver[MAXRECEIVERS]
private

◆ sdtFilter

cSdtFilter* cDevice::sdtFilter
private

Definition at line 424 of file device.h.

Referenced by cDevice(), StartSectionHandler(), and StopSectionHandler().

◆ sectionHandler

cSectionHandler* cDevice::sectionHandler
private

◆ tsToPesAudio

cTsToPes cDevice::tsToPesAudio
private

Definition at line 630 of file device.h.

Referenced by PlayTs(), and PlayTsAudio().

◆ tsToPesSubtitle

cTsToPes cDevice::tsToPesSubtitle
private

Definition at line 631 of file device.h.

Referenced by PlayTs(), and PlayTsSubtitle().

◆ tsToPesVideo

cTsToPes cDevice::tsToPesVideo
private

Definition at line 629 of file device.h.

Referenced by PlayTs(), and PlayTsVideo().

◆ useDevice

int cDevice::useDevice = 0
staticprivate

Definition at line 123 of file device.h.

Referenced by SetUseDevice().

◆ volume

int cDevice::volume
private

Definition at line 596 of file device.h.

Referenced by cDevice(), CurrentVolume(), SetVolume(), and ToggleMute().


The documentation for this class was generated from the following files: