vdr 2.6.9
cDvbHdFfDevice Class Reference

#include <dvbhdffdevice.h>

Public Member Functions

 cDvbHdFfDevice (int Adapter, int Frontend, bool OutputOnly)
 
virtual ~cDvbHdFfDevice ()
 
virtual bool HasDecoder (void) const
 
virtual cSpuDecoderGetSpuDecoder (void)
 
virtual bool ProvidesSource (int Source) const
 
virtual int NumProvidedSystems (void) const
 
virtual ucharGrabImage (int &Size, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
 
virtual void SetVideoDisplayFormat (eVideoDisplayFormat VideoDisplayFormat)
 
virtual void GetVideoSize (int &Width, int &Height, double &VideoAspect)
 
virtual void GetOsdSize (int &Width, int &Height, double &PixelAspect)
 
virtual int64_t GetSTC (void)
 
virtual cRect CanScaleVideo (const cRect &Rect, int Alignment=taCenter)
 
virtual void ScaleVideo (const cRect &Rect=cRect::Null)
 
virtual void TrickSpeed (int Speed)
 
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)
 
- Public Member Functions inherited from cDvbDevice
 cDvbDevice (int Adapter, int Frontend)
 
virtual ~cDvbDevice ()
 
int Adapter (void) const
 
int Frontend (void) const
 
virtual cString DeviceType (void) const
 
virtual cString DeviceName (void) const
 
bool Bond (cDvbDevice *Device)
 
void UnBond (void)
 
bool BondingOk (const cChannel *Channel, bool ConsiderOccupied=false) const
 
virtual bool ProvidesDeliverySystem (int DeliverySystem) const
 
virtual bool ProvidesTransponder (const cChannel *Channel) const
 
virtual bool ProvidesChannel (const cChannel *Channel, int Priority=IDLEPRIORITY, bool *NeedsDetachReceivers=NULL) const
 
virtual bool ProvidesEIT (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
 
virtual void SetPowerSaveMode (bool On)
 
virtual bool HasLock (int TimeoutMs=0) const
 
virtual bool HasCi (void)
 
- Public Member Functions inherited from cDevice
bool IsPrimaryDevice (bool CheckDecoder=true) const
 
int CardIndex (void) const
 
int DeviceNumber (void) const
 
virtual bool AvoidRecording (void) const
 
virtual bool ProvidesTransponderExclusively (const cChannel *Channel) const
 
void SetPowerSaveIfUnused (void)
 
bool SwitchChannel (const cChannel *Channel, bool LiveView)
 
void ForceTransferMode (void)
 
int Occupied (int Priority=MINPRIORITY) const
 
void SetOccupied (int Seconds, int Priority=MINPRIORITY, time_t From=0)
 
virtual bool HasProgramme (void) const
 
void DelLivePids (void)
 
virtual int ReadFilter (int Handle, void *Buffer, size_t Length)
 
void AttachFilter (cFilter *Filter)
 
void Detach (cFilter *Filter)
 
const cSdtFilterSdtFilter (void) const
 
cSectionHandlerSectionHandler (void) const
 
virtual bool HasInternalCam (void)
 
void SetCamSlot (cCamSlot *CamSlot)
 
cCamSlotCamSlot (void) const
 
bool GrabImageFile (const char *FileName, bool Jpeg=true, int Quality=-1, int SizeX=-1, int SizeY=-1)
 
virtual void SetVideoFormat (bool VideoFormat16_9)
 
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)
 
void SetKeepTracks (bool KeepTracks)
 
bool IsMute (void) const
 
bool ToggleMute (void)
 
int GetAudioChannel (void)
 
void SetAudioChannel (int AudioChannel)
 
void SetVolume (int Volume, bool Absolute=false)
 
virtual bool IsPlayingVideo (void) const
 
virtual bool HasIBPTrickSpeed (void)
 
virtual void TrickSpeed (int Speed, bool Forward)
 
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 (bool IgnoreOccupied=false) const
 
bool Receiving (bool Dummy=false) const
 
bool AttachReceiver (cReceiver *Receiver)
 
void Detach (cReceiver *Receiver, bool ReleaseCam=true)
 
void DetachAll (int Pid)
 
- 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 Probe (int Adapter, int Frontend)
 
static HDFF::cHdffCmdIfGetHdffCmdHandler (void)
 
- Static Public Member Functions inherited from cDvbDevice
static bool Initialize (void)
 
static bool BondDevices (const char *Bondings)
 
static void UnBondDevices (void)
 
static void SetTransferModeForDolbyDigital (int Mode)
 
- Static Public Member Functions inherited from cDevice
static int NumDevices (void)
 
static bool WaitForAllDevicesReady (int Timeout=0)
 
static void SetUseDevice (int n)
 
static bool UseDevice (int n)
 
static bool SetPrimaryDevice (int n)
 
static cDevicePrimaryDevice (void)
 
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 int CurrentChannel (void)
 
static void SetCurrentChannel (int ChannelNumber)
 
static int CurrentVolume (void)
 
- Static Public Member Functions inherited from cThread
static tThreadId ThreadId (void)
 
static tThreadId IsMainThread (void)
 
static void SetMainThreadId (void)
 

Protected Member Functions

virtual void MakePrimaryDevice (bool On)
 
virtual bool SetChannelDevice (const cChannel *Channel, bool LiveView)
 
virtual bool SetPid (cPidHandle *Handle, int Type, bool On)
 
virtual void SetAudioTrackDevice (eTrackType Type)
 
virtual int GetAudioChannelDevice (void)
 
virtual void SetAudioChannelDevice (int AudioChannel)
 
virtual void SetVolumeDevice (int Volume)
 
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 PlayTsVideo (const uchar *Data, int Length)
 
virtual int PlayTsAudio (const uchar *Data, int Length)
 
- Protected Member Functions inherited from cDvbDevice
virtual bool IsBonded (void) const
 
virtual int OpenFilter (u_short Pid, u_char Tid, u_char Mask)
 
virtual void CloseFilter (int Handle)
 
virtual bool OpenDvr (void)
 
virtual void CloseDvr (void)
 
virtual bool GetTSPacket (uchar *&Data)
 
virtual void DetachAllReceivers (void)
 
- Protected Member Functions inherited from cDevice
 cDevice (void)
 
virtual ~cDevice ()
 
virtual bool Ready (void)
 
bool DeviceHooksProvidesTransponder (const cChannel *Channel) const
 
bool DeviceHooksProvidesEIT (void) const
 
bool HasPid (int Pid) const
 
bool AddPid (int Pid, ePidType PidType=ptOther, int StreamType=0)
 
void DelPid (int Pid, ePidType PidType=ptOther)
 
void StartSectionHandler (void)
 
void StopSectionHandler (void)
 
virtual void SetSubtitleTrackDevice (eTrackType Type)
 
virtual void SetDigitalAudioDevice (bool On)
 
const cPatPmtParserPatPmtParser (void) const
 
virtual int PlaySubtitle (const uchar *Data, int Length)
 
virtual int PlayPesPacket (const uchar *Data, int Length, bool VideoOnly=false)
 
virtual int PlayTsSubtitle (const uchar *Data, int Length)
 
- Protected Member Functions inherited from cThread
void SetPriority (int Priority)
 
void SetIOPriority (int Priority)
 
void Lock (void)
 
void Unlock (void)
 
bool Running (void)
 
void Cancel (int WaitSeconds=0)
 

Protected Attributes

ePlayMode playMode
 
- Protected Attributes inherited from cDvbDevice
int adapter
 
int frontend
 
- Protected Attributes inherited from cDevice
cPidHandle pidHandles [MAXPIDHANDLES]
 

Private Member Functions

void TurnOffLiveMode (bool LiveView)
 
void BuildTsPacket (uint8_t *TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t *Data, uint32_t Length)
 
uint32_t PesToTs (uint8_t *TsBuffer, uint16_t Pid, uint8_t &Counter, const uint8_t *Data, uint32_t Length)
 

Private Attributes

int fd_osd
 
int fd_audio
 
int fd_video
 
bool outputOnly
 
cDvbSpuDecoderspuDecoder
 
int audioChannel
 
int playVideoPid
 
int playAudioPid
 
int playPcrPid
 
bool freezed
 
bool trickMode
 
bool isPlayingVideo
 
bool isTransferMode
 
bool supportsPcrInTransferMode
 
uint8_t videoCounter
 
uint8_t audioCounter
 
bool isHdffPrimary
 
HDFF::cHdffCmdIfmHdffCmdIf
 

Static Private Attributes

static int devHdffOffset = -1
 

Additional Inherited Members

- Static Public Attributes inherited from cDvbDevice
static bool useDvbDevices = true
 
- Protected Types inherited from cDevice
enum  ePidType {
  ptAudio , ptVideo , ptPcr , ptTeletext ,
  ptDolby , ptOther
}
 
- Static Protected Member Functions inherited from cDevice
static int NextCardIndex (int n=0)
 
- Static Protected Attributes inherited from cDvbDevice
static int setTransferModeForDolbyDigital = 1
 
- Static Protected Attributes inherited from cDevice
static int currentChannel = 1
 

Detailed Description

The cDvbHdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.

Definition at line 19 of file dvbhdffdevice.h.

Constructor & Destructor Documentation

◆ cDvbHdFfDevice()

cDvbHdFfDevice::cDvbHdFfDevice ( int Adapter,
int Frontend,
bool OutputOnly )

Definition at line 32 of file dvbhdffdevice.c.

References cDvbDevice::adapter, cHdffSetup::AnalogueVideo, audioChannel, cHdffSetup::AudioDelay, cHdffSetup::AudioDownmix, cHdffSetup::AvSyncShift, HdffHdmiConfig_t::CecDeviceName, cHdffSetup::CecEnabled, HdffHdmiConfig_t::CecEnabled, HDFF::cHdffCmdIf::CmdAvEnableSync(), HDFF::cHdffCmdIf::CmdAvEnableVideoAfterStop(), HDFF::cHdffCmdIf::CmdAvSetAudioDelay(), HDFF::cHdffCmdIf::CmdAvSetAudioDownmix(), HDFF::cHdffCmdIf::CmdAvSetAudioPid(), HDFF::cHdffCmdIf::CmdAvSetAudioSpeed(), HDFF::cHdffCmdIf::CmdAvSetDecoderInput(), HDFF::cHdffCmdIf::CmdAvSetPcrPid(), HDFF::cHdffCmdIf::CmdAvSetPlayMode(), HDFF::cHdffCmdIf::CmdAvSetSyncShift(), HDFF::cHdffCmdIf::CmdAvSetVideoPid(), HDFF::cHdffCmdIf::CmdAvSetVideoSpeed(), HDFF::cHdffCmdIf::CmdGetFirmwareVersion(), HDFF::cHdffCmdIf::CmdHdmiConfigure(), HDFF::cHdffCmdIf::CmdHdmiSetVideoMode(), HDFF::cHdffCmdIf::CmdMuxSetVideoOut(), HDFF::cHdffCmdIf::CmdOsdReset(), HDFF::cHdffCmdIf::CmdRemoteSetAddressFilter(), HDFF::cHdffCmdIf::CmdRemoteSetProtocol(), DEV_DVB_AUDIO, DEV_DVB_OSD, DEV_DVB_VIDEO, devHdffOffset, DvbOpen(), fd_audio, fd_osd, fd_video, HdffHdmiConfig_t::ForceDviMode, cDvbDevice::frontend, cHdffSetup::GetVideoMode(), gHdffSetup, HDFF_AUDIO_STREAM_MPEG1, HDFF_VIDEO_STREAM_MPEG1, isHdffPrimary, mHdffCmdIf, outputOnly, playMode, pmNone, cHdffSetup::RemoteAddress, cHdffSetup::RemoteProtocol, spuDecoder, cDevice::StopSectionHandler(), supportsPcrInTransferMode, HdffHdmiConfig_t::TransmitAudio, cHdffSetup::VideoModeAdaption, and HdffHdmiConfig_t::VideoModeAdaption.

◆ ~cDvbHdFfDevice()

cDvbHdFfDevice::~cDvbHdFfDevice ( )
virtual

Definition at line 104 of file dvbhdffdevice.c.

References isHdffPrimary, mHdffCmdIf, and spuDecoder.

Member Function Documentation

◆ BuildTsPacket()

void cDvbHdFfDevice::BuildTsPacket ( uint8_t * TsBuffer,
bool PusiSet,
uint16_t Pid,
uint8_t Counter,
const uint8_t * Data,
uint32_t Length )
private

Definition at line 781 of file dvbhdffdevice.c.

Referenced by PesToTs().

◆ CanReplay()

bool cDvbHdFfDevice::CanReplay ( void ) const
protectedvirtual

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

Reimplemented from cDevice.

Definition at line 492 of file dvbhdffdevice.c.

References cDevice::CanReplay().

◆ CanScaleVideo()

cRect cDvbHdFfDevice::CanScaleVideo ( const cRect & Rect,
int Alignment = taCenter )
virtual

Asks the output device whether it can scale the currently shown video in such a way that it fits into the given Rect, while retaining its proper aspect ratio.

If the scaled video doesn't exactly fit into Rect, Alignment is used to determine how to align the actual rectangle with the requested one. The actual rectangle can be smaller, larger or the same size as the given Rect, and its location may differ, depending on the capabilities of the output device, which may not be able to display a scaled video at arbitrary sizes and locations. The device shall, however, do its best to match the requested Rect as closely as possible, preferring a size and location that fits completely into the requested Rect if possible. Returns the rectangle that can actually be used when scaling the video. A skin plugin using this function should rearrange its content according to the rectangle returned from calling this function, and should especially be prepared for cases where the returned rectangle is way off the requested Rect, or even Null. In such cases, the skin may want to fall back to working with full screen video. The coordinates of Rect are in the range of the width and height returned by GetOsdSize(). If this device can't scale the video, a Null rectangle is returned (this is also the default implementation).

Reimplemented from cDevice.

Definition at line 584 of file dvbhdffdevice.c.

◆ Clear()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 644 of file dvbhdffdevice.c.

References CHECK, cDevice::Clear(), HDFF::cHdffCmdIf::CmdAvSetAudioPid(), HDFF::cHdffCmdIf::CmdAvSetVideoPid(), fd_video, HDFF_AUDIO_STREAM_MPEG1, HDFF_VIDEO_STREAM_MPEG1, mHdffCmdIf, playAudioPid, and playVideoPid.

◆ Flush()

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

Definition at line 775 of file dvbhdffdevice.c.

◆ Freeze()

void cDvbHdFfDevice::Freeze ( void )
virtual

Puts the device into "freeze frame" mode.

Reimplemented from cDevice.

Definition at line 666 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvSetAudioSpeed(), HDFF::cHdffCmdIf::CmdAvSetVideoSpeed(), cDevice::Freeze(), freezed, and mHdffCmdIf.

◆ GetAudioChannelDevice()

int cDvbHdFfDevice::GetAudioChannelDevice ( void )
protectedvirtual

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

Reimplemented from cDevice.

Definition at line 442 of file dvbhdffdevice.c.

References audioChannel.

◆ GetHdffCmdHandler()

◆ GetOsdSize()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 288 of file dvbhdffdevice.c.

References cHdffSetup::GetOsdSize(), and gHdffSetup.

Referenced by ScaleVideo().

◆ GetSpuDecoder()

cSpuDecoder * cDvbHdFfDevice::GetSpuDecoder ( void )
virtual

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

Reimplemented from cDevice.

Definition at line 130 of file dvbhdffdevice.c.

References cDevice::IsPrimaryDevice(), and spuDecoder.

◆ GetSTC()

int64_t cDvbHdFfDevice::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 from cDevice.

Definition at line 555 of file dvbhdffdevice.c.

References AUDIO_GET_PTS, cDevice::CardIndex(), esyslog, fd_audio, fd_video, and isPlayingVideo.

◆ GetVideoSize()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 267 of file dvbhdffdevice.c.

References fd_video, cDevice::GetVideoSize(), and LOG_ERROR.

◆ GrabImage()

uchar * cDvbHdFfDevice::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 from cDevice.

Definition at line 137 of file dvbhdffdevice.c.

References cDvbDevice::adapter, BUFFER_SIZE, DEV_DVB_VIDEO, dsyslog, DvbOpen(), esyslog, cDvbDevice::frontend, and YuvToJpeg().

◆ HasDecoder()

bool cDvbHdFfDevice::HasDecoder ( void ) const
virtual

Tells whether this device has an MPEG decoder.

Reimplemented from cDevice.

Definition at line 125 of file dvbhdffdevice.c.

References isHdffPrimary.

◆ MakePrimaryDevice()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 115 of file dvbhdffdevice.c.

References gHdffSetup, cDevice::MakePrimaryDevice(), mHdffCmdIf, and cHdffSetup::SetVideoFormat().

◆ Mute()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 674 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvMuteAudio(), mHdffCmdIf, and cDevice::Mute().

◆ NumProvidedSystems()

int cDvbHdFfDevice::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 from cDvbDevice.

Definition at line 368 of file dvbhdffdevice.c.

References cDvbDevice::NumProvidedSystems(), and outputOnly.

◆ PesToTs()

uint32_t cDvbHdFfDevice::PesToTs ( uint8_t * TsBuffer,
uint16_t Pid,
uint8_t & Counter,
const uint8_t * Data,
uint32_t Length )
private

Definition at line 808 of file dvbhdffdevice.c.

References BuildTsPacket().

Referenced by PlayAudio(), and PlayVideo().

◆ Play()

void cDvbHdFfDevice::Play ( void )
virtual

◆ PlayAudio()

int cDvbHdFfDevice::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 from cDevice.

Definition at line 859 of file dvbhdffdevice.c.

References audioCounter, HDFF::cHdffCmdIf::CmdAvSetAudioPid(), fd_video, freezed, HDFF_AUDIO_STREAM_AC3, HDFF_AUDIO_STREAM_DTS, HDFF_AUDIO_STREAM_MPEG1, HDFF_AUDIO_STREAM_PCM, HDFF_AV_CONTAINER_PES, HDFF_AV_CONTAINER_PES_DVD, mHdffCmdIf, PesToTs(), playAudioPid, cDvbDevice::tsBuffer, and WriteAllOrNothing().

◆ PlayTsAudio()

int cDvbHdFfDevice::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 from cDevice.

Definition at line 952 of file dvbhdffdevice.c.

References cPatPmtParser::Apid(), cPatPmtParser::Atype(), HDFF::cHdffCmdIf::CmdAvSetAudioPid(), cPatPmtParser::Dpid(), cPatPmtParser::Dtype(), fd_video, freezed, MapAudioStreamTypes(), mHdffCmdIf, cDevice::PatPmtParser(), playAudioPid, TsPid(), and WriteAllOrNothing().

◆ PlayTsVideo()

int cDvbHdFfDevice::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 from cDevice.

Definition at line 910 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvEnableSync(), HDFF::cHdffCmdIf::CmdAvSetPcrPid(), HDFF::cHdffCmdIf::CmdAvSetVideoPid(), fd_video, freezed, isPlayingVideo, isTransferMode, MapVideoStreamTypes(), mHdffCmdIf, cDevice::PatPmtParser(), playPcrPid, playVideoPid, supportsPcrInTransferMode, TsPid(), and WriteAllOrNothing().

◆ PlayVideo()

int cDvbHdFfDevice::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 from cDevice.

Definition at line 829 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvEnableSync(), HDFF::cHdffCmdIf::CmdAvSetVideoPid(), fd_video, freezed, HDFF_VIDEO_STREAM_MPEG2, isPlayingVideo, mHdffCmdIf, PesToTs(), playVideoPid, cDvbDevice::tsBuffer, videoCounter, and WriteAllOrNothing().

◆ Poll()

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

Definition at line 769 of file dvbhdffdevice.c.

References cPoller::Add(), fd_video, and cPoller::Poll().

◆ Probe()

static bool cDvbHdFfDevice::Probe ( int Adapter,
int Frontend )
static

◆ ProvidesSource()

bool cDvbHdFfDevice::ProvidesSource ( int Source) const
virtual

Returns true if this device can provide the given source.

Reimplemented from cDvbDevice.

Definition at line 361 of file dvbhdffdevice.c.

References outputOnly, and cDvbDevice::ProvidesSource().

◆ ScaleVideo()

void cDvbHdFfDevice::ScaleVideo ( const cRect & Rect = cRect::Null)
virtual

Scales the currently shown video in such a way that it fits into the given Rect.

Rect should be one retrieved through a previous call to CanScaleVideo() (otherwise results may be undefined). Even if video output is scaled, the functions GetVideoSize() and GetOsdSize() must still return the same values as if in full screen mode! If this device can't scale the video, nothing happens. To restore full screen video, call this function with a Null rectangle.

Reimplemented from cDevice.

Definition at line 589 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvSetVideoWindow(), GetOsdSize(), cRect::Height(), mHdffCmdIf, cRect::Null, cRect::Width(), cRect::X(), and cRect::Y().

◆ SetAudioChannelDevice()

void cDvbHdFfDevice::SetAudioChannelDevice ( int AudioChannel)
protectedvirtual

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

Reimplemented from cDevice.

Definition at line 447 of file dvbhdffdevice.c.

References audioChannel, HDFF::cHdffCmdIf::CmdAvSetAudioChannel(), and mHdffCmdIf.

◆ SetAudioTrackDevice()

◆ SetChannelDevice()

◆ SetPid()

bool cDvbHdFfDevice::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 from cDvbDevice.

Definition at line 293 of file dvbhdffdevice.c.

References SI::AC3DescriptorTag, cDvbDevice::adapter, CHECK, HDFF::cHdffCmdIf::CmdAvSetAudioPid(), HDFF::cHdffCmdIf::CmdAvSetPcrPid(), HDFF::cHdffCmdIf::CmdAvSetVideoPid(), DEV_DVB_DEMUX, DvbOpen(), SI::EnhancedAC3DescriptorTag, cDvbDevice::frontend, cDevice::cPidHandle::handle, HDFF_AUDIO_STREAM_AAC, HDFF_AUDIO_STREAM_AC3, HDFF_AUDIO_STREAM_EAC3, HDFF_AUDIO_STREAM_HE_AAC, HDFF_AUDIO_STREAM_MPEG1, HDFF_AUDIO_STREAM_MPEG2, HDFF_VIDEO_STREAM_H264, HDFF_VIDEO_STREAM_MPEG1, HDFF_VIDEO_STREAM_MPEG2, LOG_ERROR, mHdffCmdIf, cDevice::cPidHandle::pid, cDevice::ptAudio, cDevice::ptDolby, cDevice::ptPcr, cDevice::ptVideo, cDevice::cPidHandle::streamType, and cDevice::cPidHandle::used.

Referenced by SetAudioTrackDevice().

◆ SetPlayMode()

◆ SetVideoDisplayFormat()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 247 of file dvbhdffdevice.c.

References gHdffSetup, HDFF_TV_FORMAT_4_BY_3, HDFF_VIDEO_CONVERSION_CENTRE_CUT_OUT, HDFF_VIDEO_CONVERSION_LETTERBOX_16_BY_9, mHdffCmdIf, cDevice::SetVideoDisplayFormat(), cHdffSetup::SetVideoFormat(), cHdffSetup::TvFormat, vdfCenterCutOut, vdfLetterBox, vdfPanAndScan, and cHdffSetup::VideoConversion.

◆ SetVolumeDevice()

void cDvbHdFfDevice::SetVolumeDevice ( int Volume)
protectedvirtual

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

Reimplemented from cDevice.

Definition at line 453 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdMuxSetVolume(), and mHdffCmdIf.

◆ StillPicture()

void cDvbHdFfDevice::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 from cDevice.

Definition at line 690 of file dvbhdffdevice.c.

References HDFF::cHdffCmdIf::CmdAvShowStillImage(), MALLOC, MapVideoStreamTypes(), mHdffCmdIf, cDevice::PatPmtParser(), cDevice::StillPicture(), and TS_SIZE.

◆ TrickSpeed()

void cDvbHdFfDevice::TrickSpeed ( int Speed)
virtual

Definition at line 632 of file dvbhdffdevice.c.

References HDFF_AUDIO_STREAM_MPEG1.

◆ TurnOffLiveMode()

void cDvbHdFfDevice::TurnOffLiveMode ( bool LiveView)
private

Member Data Documentation

◆ audioChannel

int cDvbHdFfDevice::audioChannel
private

Definition at line 73 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), GetAudioChannelDevice(), and SetAudioChannelDevice().

◆ audioCounter

uint8_t cDvbHdFfDevice::audioCounter
private

Definition at line 93 of file dvbhdffdevice.h.

Referenced by PlayAudio(), and SetPlayMode().

◆ devHdffOffset

int cDvbHdFfDevice::devHdffOffset = -1
staticprivate

Definition at line 127 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), and GetHdffCmdHandler().

◆ fd_audio

int cDvbHdFfDevice::fd_audio
private

Definition at line 21 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), GetSTC(), and SetPlayMode().

◆ fd_osd

int cDvbHdFfDevice::fd_osd
private

Definition at line 21 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice().

◆ fd_video

int cDvbHdFfDevice::fd_video
private

◆ freezed

bool cDvbHdFfDevice::freezed
private

Definition at line 85 of file dvbhdffdevice.h.

Referenced by Freeze(), Play(), PlayAudio(), PlayTsAudio(), PlayTsVideo(), PlayVideo(), and SetPlayMode().

◆ isHdffPrimary

bool cDvbHdFfDevice::isHdffPrimary
private

Definition at line 128 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), HasDecoder(), and ~cDvbHdFfDevice().

◆ isPlayingVideo

bool cDvbHdFfDevice::isPlayingVideo
private

Definition at line 87 of file dvbhdffdevice.h.

Referenced by GetSTC(), Play(), PlayTsVideo(), PlayVideo(), and SetPlayMode().

◆ isTransferMode

bool cDvbHdFfDevice::isTransferMode
private

Definition at line 88 of file dvbhdffdevice.h.

Referenced by PlayTsVideo(), and SetPlayMode().

◆ mHdffCmdIf

◆ outputOnly

bool cDvbHdFfDevice::outputOnly
private

Definition at line 22 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), NumProvidedSystems(), and ProvidesSource().

◆ playAudioPid

int cDvbHdFfDevice::playAudioPid
private

Definition at line 83 of file dvbhdffdevice.h.

Referenced by Clear(), PlayAudio(), PlayTsAudio(), and SetPlayMode().

◆ playMode

ePlayMode cDvbHdFfDevice::playMode
protected

Definition at line 98 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), and SetPlayMode().

◆ playPcrPid

int cDvbHdFfDevice::playPcrPid
private

Definition at line 84 of file dvbhdffdevice.h.

Referenced by PlayTsVideo(), and SetPlayMode().

◆ playVideoPid

int cDvbHdFfDevice::playVideoPid
private

Definition at line 82 of file dvbhdffdevice.h.

Referenced by Clear(), PlayTsVideo(), PlayVideo(), and SetPlayMode().

◆ spuDecoder

cDvbSpuDecoder* cDvbHdFfDevice::spuDecoder
private

Definition at line 34 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), GetSpuDecoder(), and ~cDvbHdFfDevice().

◆ supportsPcrInTransferMode

bool cDvbHdFfDevice::supportsPcrInTransferMode
private

Definition at line 89 of file dvbhdffdevice.h.

Referenced by cDvbHdFfDevice(), and PlayTsVideo().

◆ trickMode

bool cDvbHdFfDevice::trickMode
private

Definition at line 86 of file dvbhdffdevice.h.

Referenced by Play(), and SetPlayMode().

◆ videoCounter

uint8_t cDvbHdFfDevice::videoCounter
private

Definition at line 92 of file dvbhdffdevice.h.

Referenced by PlayVideo(), and SetPlayMode().


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