vdr-plugin-softhddevice-drm-gles 1.4.0
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
cSoftHdDevice Class Reference

#include <softhddevice.h>

Collaboration diagram for cSoftHdDevice:
Collaboration graph
[legend]

Public Member Functions

 cSoftHdDevice (cSoftHdConfig *)
 cSoftHdDevice constructor More...
 
virtual ~cSoftHdDevice (void)
 cSoftHdDevice destructor More...
 
virtual cString DeviceName (void) const
 
virtual bool HasDecoder (void) const
 Tells whether this device has an MPEG decoder. More...
 
virtual cSpuDecoder * GetSpuDecoder (void)
 Get the device SPU decoder. More...
 
virtual bool CanReplay (void) const
 Returns true if this device can currently start a replay session. More...
 
virtual bool SetPlayMode (ePlayMode)
 Sets the device into the given play mode. More...
 
virtual int PlayVideo (const uchar *, int)
 Play a video packet of the main videostream. More...
 
virtual int PlayAudio (const uchar *, int, uchar)
 Play an audio packet. More...
 
virtual int64_t GetSTC (void)
 Gets the current System Time Counter, which can be used to synchronize audio, video and subtitles. More...
 
virtual cRect CanScaleVideo (const cRect &, int taCenter)
 Ask the output, if it can scale video. More...
 
virtual void ScaleVideo (const cRect &=cRect::Null)
 Scale the currently shown video. More...
 
virtual void TrickSpeed (int, bool)
 Set trick play speed. More...
 
virtual void Clear (void)
 Clears all video and audio data from the device. More...
 
virtual void Play (void)
 Sets the device into play mode (after a previous trick mode, or pause) More...
 
virtual void Freeze (void)
 Puts the device into "freeze frame" mode. More...
 
virtual void StillPicture (const uchar *, int)
 Display the given I-frame as a still picture. More...
 
virtual bool Poll (cPoller &, int=0)
 Returns true if the device itself or any of the file handles in Poller is ready for further action. More...
 
virtual bool Flush (int=0)
 Flush the device output buffers. More...
 
virtual uchar * GrabImage (int &, bool, int, int, int)
 Grabs the currently visible screen image. More...
 
virtual void SetVideoDisplayFormat (eVideoDisplayFormat)
 Sets the video display format. More...
 
virtual void SetVideoFormat (bool)
 Set the video format. More...
 
virtual void GetVideoSize (int &, int &, double &)
 Get the video size. More...
 
virtual void GetOsdSize (int &, int &, double &)
 Returns the width, height and aspect ratio the OSD. More...
 
virtual void SetAudioTrackDevice (eTrackType)
 
virtual int GetAudioChannelDevice (void)
 
virtual void SetAudioChannelDevice (int)
 
virtual void SetVolumeDevice (int)
 Sets the audio volume on this device (Volume = 0...255). More...
 
virtual void SetDigitalAudioDevice (bool)
 
const char * CommandLineHelp (void)
 Return command line help string. More...
 
int ProcessArgs (int, char *[])
 Process the command line arguments. More...
 
int Start (void)
 Called by VDR when the plugin is started. More...
 
void Stop (void)
 Called by VDR when the plugin is stopped. More...
 
cSoftHdConfigConfig (void)
 
cVideoStreamVideoStream (void)
 
cVideoRenderRender (void)
 
cSoftHdAudioAudio (void)
 
void SetDisableDeint (void)
 Disables deinterlacer (called from setup menu or conf) More...
 
void OsdClose (void)
 Close the OSD. More...
 
void OsdDrawARGB (int, int, int, int, int, const uint8_t *, int, int)
 Draw an OSD pixmap. More...
 
void SetScreenSize (int, int, uint32_t)
 Set the screen size. More...
 
int GetVideoAudioDelayMs (void)
 
void SetPassthrough (int)
 Set the passthrough mask (called from setup menu or conf) More...
 
void ResetChannelId (void)
 Reset the channel ID (restarts audio) More...
 
void GetStats (int *, int *, int *)
 Get statistics from the renderer. More...
 
void SetAudioCodec (enum AVCodecID, AVCodecParameters *, AVRational)
 Open an audio codec. More...
 
void SetVideoCodec (enum AVCodecID, AVCodecParameters *, AVRational)
 Open a video codec. More...
 
int PlayAudioPkts (AVPacket *)
 Play an audio packet. More...
 
int PlayVideoPkts (AVPacket *)
 Play a video packet. More...
 
void Detach (void)
 Detach the device. More...
 
void Attach (void)
 Attach the device again. More...
 
bool IsDetached (void) const
 Returns true, if the device is detached. More...
 
void ResetOsdProvider (void)
 
bool IsOsdProviderSet (void) const
 
bool IsBufferingThresholdReached (void)
 Check if the buffering threshold has been reached. More...
 
void PipEnable (void)
 Start picture-in-picture. More...
 
void PipDisable (void)
 Stop picture-in-picture. More...
 
void PipToggle (void)
 Toggle picture-in-picture. More...
 
void PipChannelChange (int)
 Change the pip channel. More...
 
void PipChannelSwap (void)
 Swap the pip channel with main live channel. More...
 
bool PipIsEnabled (void)
 Returns true, if picture-in-picture is running. More...
 
int PlayPipVideo (const uchar *, int)
 Play a video packet of the pip videostream. More...
 
void PipSetSize (void)
 Set size and position for the pip window. More...
 
void PipSwapPosition (void)
 Swap pip between normal and alternative position. More...
 
virtual void OnEventReceived (const Event &)=0
 

Protected Member Functions

virtual void MakePrimaryDevice (bool)
 Informs a device that it will be the primary device. More...
 

Private Member Functions

int PlayVideoInternal (cVideoStream *, cReassemblyBufferVideo *, const uchar *, int)
 Play a video packet. More...
 
void ClearAudio (void)
 Clear all audio data from the decoder and ringbuffer. More...
 
void OnEventReceived (const Event &)
 Event handler for playback state transitions. More...
 
void HandleStillPicture (const uchar *data, int size)
 The still picture data received from VDR can contain multiple PES packets. More...
 
int64_t GetFirstAudioPtsMsToPlay ()
 Calculate the first audio PTS that should be played during synchronized playback. More...
 
int64_t GetFirstVideoPtsMsToPlay ()
 
int GetBufferFillLevelThresholdMs ()
 Returns the buffer fill level threshold in milliseconds. More...
 
void SetState (State)
 Sets the device into the given state. More...
 
void OnEnteringState (State)
 Actions to be performed when entering a state. More...
 
void OnLeavingState (State)
 Actions to be performed when leaving a state. More...
 
void SetEnablePip (bool)
 Enable/ disable picture-in-picture. More...
 
void TogglePip (void)
 Toggle picture-in-picture. More...
 
void ChangePipChannel (int)
 Change the pip channel. More...
 
void ResetPipChannel (void)
 Resets the pip channel to the current live stream channel. More...
 
void DelPip (void)
 Delete the pip receiver, clear decoder and display buffers and disable rendering the pip window. More...
 
void NewPip (int)
 Create a new pip receiver and render the pip stream. More...
 
void HandlePip (enum PipState)
 Handle the pip event. More...
 
void SetPipSize (void)
 Set size and position for the pip window. More...
 
void SwapPipPosition (void)
 Swap pip between normal and alternative position. More...
 

Private Attributes

std::atomic< Statem_state = DETACHED
 current plugin state, normal plugin start sets detached state More...
 
std::mutex m_eventMutex
 mutex to protect event queue More...
 
bool m_needsMakePrimary = false
 
cDvbSpuDecoder * m_pSpuDecoder
 pointer to spu decoder More...
 
cSoftHdConfigm_pConfig
 pointer to cSoftHdConfig object More...
 
cVideoRenderm_pRender
 pointer to cVideoRender object More...
 
cVideoStreamm_pVideoStream
 pointer to main video stream More...
 
cSoftHdAudiom_pAudio
 pointer to cSoftHdAudio object More...
 
cAudioDecoderm_pAudioDecoder
 pointer to cAudioDecoder object More...
 
cSoftOsdProviderm_pOsdProvider
 pointer to cSoftOsdProvider object More...
 
cReassemblyBufferVideo m_videoReassemblyBuffer
 video pes reassembly buffer More...
 
cReassemblyBufferAudio m_audioReassemblyBuffer
 audio pes reassembly buffer More...
 
std::atomic< PlaybackModem_playbackMode = NONE
 current playback mode More...
 
int m_audioChannelID
 current audio channel ID More...
 
bool m_grabActive
 simple lock variable skips a new grab request if the last one is still active More...
 
bool m_pipActive
 true, if pip is active More...
 
int m_pipChannelNum
 current pip channel number More...
 
const cChannel * m_pPipChannel
 current pip channel More...
 
cPipReceiverm_pPipReceiver
 cReceiver for pip stream More...
 
cVideoStreamm_pPipStream
 pointer to pip video stream More...
 
cReassemblyBufferVideo m_pipReassemblyBuffer
 pip pes reassembly buffer More...
 
std::mutex m_mutex
 mutex to lock the state machine More...
 
std::mutex m_sizeMutex
 mutex to lock screen size (which is accessed by different threads) More...
 
std::atomic< bool > m_receivedAudio = false
 flag if audio packets have been received More...
 
std::atomic< bool > m_receivedVideo = false
 flag if video packets have been received More...
 
bool m_pipUseAlt
 use alternative pip position More...
 
int m_screenWidth
 
int m_screenHeight
 
uint32_t m_screenRefreshRate
 

Static Private Attributes

static constexpr int MIN_BUFFER_FILL_LEVEL_THRESHOLD_MS = 450
 min buffering threshold in ms More...
 

Detailed Description

Definition at line 110 of file softhddevice.h.

Constructor & Destructor Documentation

◆ cSoftHdDevice()

cSoftHdDevice::cSoftHdDevice ( cSoftHdConfig config)

cSoftHdDevice constructor

Initializes some member variables

Parameters
configpointer to cSoftHdConfig class

Definition at line 143 of file softhddevice.cpp.

References cSoftHdConfig::ConfigPipUseAlt, m_audioChannelID, m_pAudioDecoder, m_pConfig, m_pipActive, m_pipUseAlt, m_pOsdProvider, and m_pSpuDecoder.

◆ ~cSoftHdDevice()

cSoftHdDevice::~cSoftHdDevice ( void  )
virtual

cSoftHdDevice destructor

only deletes spu decoder, which was created in constructor

Definition at line 161 of file softhddevice.cpp.

References LOGDEBUG, and m_pSpuDecoder.

Member Function Documentation

◆ Attach()

void cSoftHdDevice::Attach ( void  )

Attach the device again.

Kind of a plugin restart. Inits and starts all necessary resources. Only valid after a detach.

Definition at line 1768 of file softhddevice.cpp.

References m_needsMakePrimary, MakePrimaryDevice(), and OnEventReceived().

Referenced by cPluginSoftHdDevice::SVDRPCommand().

◆ Audio()

cSoftHdAudio * cSoftHdDevice::Audio ( void  )
inline

◆ CanReplay()

bool cSoftHdDevice::CanReplay ( void  ) const
virtual

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

Definition at line 243 of file softhddevice.cpp.

References IsDetached(), and LOGDEBUG.

◆ CanScaleVideo()

cRect cSoftHdDevice::CanScaleVideo ( const cRect &  ,
int  taCenter 
)
virtual

Ask the output, if it can scale video.

Parameters
rectrequested video window rectangle
Returns
the real rectangle or cRect::NULL if invalid

Definition at line 1443 of file softhddevice.cpp.

◆ ChangePipChannel()

void cSoftHdDevice::ChangePipChannel ( int  direction)
private

Change the pip channel.

Parameters
direction1: channel up, -1: channel down
Note
This function is called from HandlePip() within the state change

Definition at line 1962 of file softhddevice.cpp.

References DelPip(), m_pipActive, m_pPipChannel, and NewPip().

Referenced by HandlePip().

◆ Clear()

void cSoftHdDevice::Clear ( void  )
virtual

◆ ClearAudio()

void cSoftHdDevice::ClearAudio ( void  )
private

Clear all audio data from the decoder and ringbuffer.

Definition at line 190 of file softhddevice.cpp.

References cSoftHdAudio::FlushBuffers(), cAudioDecoder::FlushBuffers(), LOGDEBUG, m_audioReassemblyBuffer, m_pAudio, m_pAudioDecoder, and cReassemblyBuffer::Reset().

Referenced by Clear(), and OnEnteringState().

◆ CommandLineHelp()

const char * cSoftHdDevice::CommandLineHelp ( void  )

Return command line help string.

Definition at line 1471 of file softhddevice.cpp.

Referenced by cPluginSoftHdDevice::CommandLineHelp().

◆ Config()

cSoftHdConfig * cSoftHdDevice::Config ( void  )
inline

◆ DelPip()

void cSoftHdDevice::DelPip ( void  )
private

Delete the pip receiver, clear decoder and display buffers and disable rendering the pip window.

We do not need to halt main stream decoder and display thread for this, so only halt the pip decoding thread here - not in OnEventReceived().

The last viewed pip channel is remembered and will be used when opening a new pip window.

Definition at line 2041 of file softhddevice.cpp.

References cVideoStream::CancelFilterThread(), cVideoRender::ClearPipDecoderToDisplayQueue(), cVideoStream::ClearVdrCoreToDecoderQueue(), cVideoStream::CloseDecoder(), cVideoStream::DecodingThreadHalt(), cVideoStream::DecodingThreadResume(), LOGDEBUG, m_pipReassemblyBuffer, m_pPipChannel, m_pPipReceiver, m_pPipStream, m_pRender, and cReassemblyBuffer::Reset().

Referenced by ChangePipChannel(), NewPip(), ResetPipChannel(), and SetEnablePip().

◆ Detach()

void cSoftHdDevice::Detach ( void  )

Detach the device.

Clears audio and video, stops all threads and releases drm/alsa. A detached state can only be exited (restarted) with an AttachEvent.

Definition at line 1747 of file softhddevice.cpp.

References LOGDEBUG, m_needsMakePrimary, MakePrimaryDevice(), and OnEventReceived().

Referenced by cPluginSoftHdDevice::SVDRPCommand().

◆ DeviceName()

virtual cString cSoftHdDevice::DeviceName ( void  ) const
inlinevirtual

Definition at line 123 of file softhddevice.h.

◆ Flush()

bool cSoftHdDevice::Flush ( int  timeout = 0)
virtual

Flush the device output buffers.

Parameters
timeout_mstimeout in ms to become ready

Definition at line 855 of file softhddevice.cpp.

References cVideoStream::GetAvPacketsFilled(), IsDetached(), LOGDEBUG, and m_pVideoStream.

◆ Freeze()

void cSoftHdDevice::Freeze ( void  )
virtual

Puts the device into "freeze frame" mode.

Definition at line 771 of file softhddevice.cpp.

References LOGDEBUG, and OnEventReceived().

Referenced by cSoftHdControl::ProcessKey().

◆ GetAudioChannelDevice()

int cSoftHdDevice::GetAudioChannelDevice ( void  )
virtual

Definition at line 1076 of file softhddevice.cpp.

◆ GetBufferFillLevelThresholdMs()

int cSoftHdDevice::GetBufferFillLevelThresholdMs ( )
private

Returns the buffer fill level threshold in milliseconds.

Combines the minimum threshold with the user-configured additional buffer length.

Definition at line 1791 of file softhddevice.cpp.

References cSoftHdConfig::ConfigAdditionalBufferLengthMs, m_pConfig, and MIN_BUFFER_FILL_LEVEL_THRESHOLD_MS.

Referenced by IsBufferingThresholdReached().

◆ GetFirstAudioPtsMsToPlay()

int64_t cSoftHdDevice::GetFirstAudioPtsMsToPlay ( )
private

Calculate the first audio PTS that should be played during synchronized playback.

This method determines the starting audio presentation timestamp when transitioning from BUFFERING to PLAY state. It synchronizes audio with video by taking the maximum of both output PTSes, then adjusts for user-configured audio/video delay.

Returns
The first audio PTS in milliseconds that should be played
Note
Positive ConfigVideoAudioDelayMs means audio is intentionally delayed (video ahead)
Negative ConfigVideoAudioDelayMs means video is intentionally delayed (audio ahead)

Definition at line 1240 of file softhddevice.cpp.

References cSoftHdConfig::ConfigVideoAudioDelayMs, cSoftHdAudio::GetOutputPtsMs(), cVideoRender::GetOutputPtsMs(), m_pAudio, m_pConfig, and m_pRender.

Referenced by IsBufferingThresholdReached(), and OnEventReceived().

◆ GetFirstVideoPtsMsToPlay()

int64_t cSoftHdDevice::GetFirstVideoPtsMsToPlay ( )
private

◆ GetOsdSize()

void cSoftHdDevice::GetOsdSize ( int &  width,
int &  height,
double &  aspectRatio 
)
virtual

Returns the width, height and aspect ratio the OSD.

FIXME: Called every second, for nothing (no OSD displayed)?

Definition at line 929 of file softhddevice.cpp.

References IsDetached(), m_screenHeight, m_screenWidth, and m_sizeMutex.

Referenced by cOglOsd::cOglOsd(), cSoftOsd::Flush(), and GrabImage().

◆ GetSpuDecoder()

cSpuDecoder * cSoftHdDevice::GetSpuDecoder ( void  )
virtual

Get the device SPU decoder.

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

Definition at line 219 of file softhddevice.cpp.

References LOGDEBUG, and m_pSpuDecoder.

◆ GetStats()

void cSoftHdDevice::GetStats ( int *  duped,
int *  dropped,
int *  counter 
)

Get statistics from the renderer.

Parameters
[out]dupedduped frames
[out]droppeddropped frames
[out]countnumber of total rendered frames

Definition at line 1662 of file softhddevice.cpp.

References cVideoRender::GetStats(), and m_pRender.

Referenced by cMenuSetupSoft::Create().

◆ GetSTC()

int64_t cSoftHdDevice::GetSTC ( void  )
virtual

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

Definition at line 684 of file softhddevice.cpp.

References AUDIO_AND_VIDEO, AUDIO_ONLY, AV_NOPTS_VALUE, cSoftHdAudio::GetHardwareOutputPtsTimebaseUnits(), cVideoRender::GetVideoClock(), m_pAudio, m_playbackMode, m_pRender, NONE, and VIDEO_ONLY.

◆ GetVideoAudioDelayMs()

int cSoftHdDevice::GetVideoAudioDelayMs ( void  )
inline

◆ GetVideoSize()

void cSoftHdDevice::GetVideoSize ( int &  width,
int &  height,
double &  aspectRatio 
)
virtual

Get the video size.

Returns the width, height and aspect ratio of the currently displayed video material

Note
the video_aspect is used to scale the subtitle.

Definition at line 910 of file softhddevice.cpp.

References cVideoStream::GetVideoSize(), IsDetached(), and m_pVideoStream.

◆ GrabImage()

uchar * cSoftHdDevice::GrabImage ( int &  size,
bool  jpeg,
int  quality,
int  width,
int  height 
)
virtual

Grabs the currently visible screen image.

Parameters
sizesize of the returned data
jpegflag true, create JPEG data
qualityJPEG quality
widthnumber of horizontal pixels in the frame
heightnumber of vertical pixels in the frame

This works as follows:

  1. Trigger the grab in render thread which clones the buffers Because of the cloning, the render thread is just blocked until the data is copied
  2. Convert these buffers to rgb and free the cloned buffers afterwards
  3. Get video and osd data
  4. Blit the video into a full black screen if it is scaled
  5. Blend the osd over video
  6. Scale the result to the requested size
  7. Create the jpeg or pnm

Definition at line 1282 of file softhddevice.cpp.

References AlphaBlend(), BlitVideo(), cVideoRender::ClearGrab(), cVideoRender::ConvertOsdBufToRgb(), cVideoRender::ConvertPipBufToRgb(), cVideoRender::ConvertVideoBufToRgb(), CreateJpeg(), cSoftHdGrab::GetData(), cVideoRender::GetGrab(), GetOsdSize(), cSoftHdGrab::GetSize(), IsDetached(), L_GRAB, LOGDEBUG2, LOGERROR, LOGWARNING, m_grabActive, m_pRender, ScaleRgb24(), and cVideoRender::TriggerGrab().

◆ HandlePip()

void cSoftHdDevice::HandlePip ( enum PipState  event)
private

◆ HandleStillPicture()

void cSoftHdDevice::HandleStillPicture ( const uchar *  data,
int  size 
)
private

The still picture data received from VDR can contain multiple PES packets.

This sends each PES packet's raw data separately to PlayVideo(), and does a flush to display the frame immediately.

Parameters
datapes data of one or more frames
sizelength of data area

Definition at line 804 of file softhddevice.cpp.

References cVideoStream::Flush(), cPes::GetPacketLength(), cPes::IsValid(), LOGWARNING, m_pVideoStream, m_videoReassemblyBuffer, PlayVideoInternal(), cReassemblyBufferVideo::PopAvPacket(), cVideoStream::PushAvPacket(), SetState(), and STILL_PICTURE.

Referenced by OnEventReceived().

◆ HasDecoder()

bool cSoftHdDevice::HasDecoder ( void  ) const
virtual

Tells whether this device has an MPEG decoder.

Definition at line 231 of file softhddevice.cpp.

References IsDetached().

◆ IsBufferingThresholdReached()

bool cSoftHdDevice::IsBufferingThresholdReached ( void  )

Check if the buffering threshold has been reached.

During the BUFFERING state, this method determines when sufficient audio/video data has been buffered to start playback.

Returns
true if buffering threshold is reached and playback can start, false otherwise

Definition at line 1189 of file softhddevice.cpp.

References AV_NOPTS_VALUE, BUFFERING, GetBufferFillLevelThresholdMs(), GetFirstAudioPtsMsToPlay(), GetFirstVideoPtsMsToPlay(), cSoftHdAudio::GetInputPtsMs(), cVideoStream::GetInputPtsMs(), cSoftHdAudio::GetOutputPtsMs(), cVideoRender::GetOutputPtsMs(), cVideoStream::HasInputPts(), cSoftHdAudio::HasPts(), cVideoRender::IsOutputBufferFull(), L_AV_SYNC, LOGDEBUG, LOGDEBUG2, m_pAudio, m_pRender, m_pVideoStream, m_receivedAudio, m_receivedVideo, m_state, and Timestamp2String().

Referenced by cVideoRender::DisplayFrame(), and PlayAudio().

◆ IsDetached()

bool cSoftHdDevice::IsDetached ( void  ) const

◆ IsOsdProviderSet()

bool cSoftHdDevice::IsOsdProviderSet ( void  ) const
inline

Definition at line 213 of file softhddevice.h.

References m_pOsdProvider.

Referenced by cSoftOsdProvider::~cSoftOsdProvider().

◆ MakePrimaryDevice()

void cSoftHdDevice::MakePrimaryDevice ( bool  on)
protectedvirtual

Informs a device that it will be the primary device.

Parameters
onflag if becoming or loosing primary

Definition at line 203 of file softhddevice.cpp.

References LOGDEBUG, and m_pOsdProvider.

Referenced by Attach(), and Detach().

◆ NewPip()

void cSoftHdDevice::NewPip ( int  channelNum)
private

Create a new pip receiver and render the pip stream.

Parameters
channelNumnumber of the channel to be switched to 0 switches to the current main stream channel

Definition at line 2067 of file softhddevice.cpp.

References DelPip(), LOGDEBUG, m_pipChannelNum, m_pPipChannel, and m_pPipReceiver.

Referenced by ChangePipChannel(), ResetPipChannel(), and SetEnablePip().

◆ OnEnteringState()

void cSoftHdDevice::OnEnteringState ( State  state)
private

◆ OnEventReceived()

void cSoftHdDevice::OnEventReceived ( const Event event)
privatevirtual

Event handler for playback state transitions.

Processes events (Play, Pause, Stop, TrickSpeed, StillPicture) and performs the appropriate state transitions based on the current state. The method halts both display and decoding threads before processing the event and resumes them afterwards to ensure thread-safe state transitions.

Parameters
eventThe event to process (variant type containing specific event data)

Implements IEventReceiver.

Definition at line 262 of file softhddevice.cpp.

References AUDIO_AND_VIDEO, AUDIO_ONLY, BUFFERING, cSoftHdConfig::ConfigVideoAudioDelayMs, cVideoStream::DecodingThreadHalt(), cVideoStream::DecodingThreadResume(), DETACHED, cVideoRender::DisplayThreadHalt(), cVideoRender::DisplayThreadResume(), cSoftHdAudio::DropSamplesOlderThanPtsMs(), EventToString(), GetFirstAudioPtsMsToPlay(), GetFirstVideoPtsMsToPlay(), cSoftHdAudio::GetOutputPtsMs(), cVideoRender::GetOutputPtsMs(), HandlePip(), HandleStillPicture(), cVideoStream::HasInputPts(), cSoftHdAudio::HasPts(), cSoftHdAudio::LazyInit(), LOGDEBUG, LOGFATAL, LOGWARNING, m_mutex, m_pAudio, m_pConfig, m_playbackMode, m_pRender, m_pVideoStream, m_state, NONE, PIPSTOP, PLAY, cVideoStream::ResetFilterThreadNeededCheck(), cVideoRender::ResetFrameCounter(), cVideoRender::SchedulePlaybackStartAtPtsMs(), cSoftHdAudio::SetPaused(), cVideoRender::SetPlaybackPaused(), cVideoRender::SetScheduleAudioResume(), SetState(), cVideoRender::SetTrickSpeed(), StateToString(), STILL_PICTURE, STOP, TRICK_SPEED, and VIDEO_ONLY.

Referenced by Attach(), Detach(), Freeze(), PipChannelChange(), PipChannelSwap(), PipDisable(), PipEnable(), PipSetSize(), PipSwapPosition(), PipToggle(), Play(), PlayAudio(), SetPlayMode(), Start(), StillPicture(), Stop(), and TrickSpeed().

◆ OnLeavingState()

void cSoftHdDevice::OnLeavingState ( State  state)
private

◆ OsdClose()

void cSoftHdDevice::OsdClose ( void  )

◆ OsdDrawARGB()

void cSoftHdDevice::OsdDrawARGB ( int  xi,
int  yi,
int  height,
int  width,
int  pitch,
const uint8_t *  argb,
int  x,
int  y 
)

Draw an OSD pixmap.

Parameters
xix-coordinate in argb image
yiy-coordinate in argb image
heightheight in pixel in argb image
widthwidth in pixel in argb image
pitchpitch of argb image
argb32bit ARGB image data
xx-coordinate on screen of argb image
yy-coordinate on screen of argb image

Definition at line 1570 of file softhddevice.cpp.

References IsDetached(), m_pRender, and cVideoRender::OsdDrawARGB().

Referenced by cOglCmdCopyBufferToOutputFb::Execute(), and cSoftOsd::Flush().

◆ PipChannelChange()

void cSoftHdDevice::PipChannelChange ( int  direction)

Change the pip channel.

Parameters
direction1: channel up, -1: channel down

Definition at line 1833 of file softhddevice.cpp.

References OnEventReceived(), PIPCHANDOWN, and PIPCHANUP.

Referenced by cSoftHdMenu::HandleHotKey(), cSoftHdMenu::ProcessKey(), and cPluginSoftHdDevice::SVDRPCommand().

◆ PipChannelSwap()

void cSoftHdDevice::PipChannelSwap ( void  )

Swap the pip channel with main live channel.

The channel switch of the main stream must be done out of OnEventReceived() because it triggers a SetPlayMode() which end in a deadlock otherwise.

Definition at line 1847 of file softhddevice.cpp.

References LOGDEBUG, m_pPipChannel, OnEventReceived(), and PIPCHANSWAP.

Referenced by cSoftHdMenu::HandleHotKey(), cSoftHdMenu::ProcessKey(), and cPluginSoftHdDevice::SVDRPCommand().

◆ PipDisable()

void cSoftHdDevice::PipDisable ( void  )

Stop picture-in-picture.

Definition at line 1806 of file softhddevice.cpp.

References OnEventReceived(), and PIPSTOP.

Referenced by cPluginSoftHdDevice::SVDRPCommand().

◆ PipEnable()

void cSoftHdDevice::PipEnable ( void  )

Start picture-in-picture.

Definition at line 1798 of file softhddevice.cpp.

References OnEventReceived(), and PIPSTART.

Referenced by cPluginSoftHdDevice::SVDRPCommand().

◆ PipIsEnabled()

bool cSoftHdDevice::PipIsEnabled ( void  )

Returns true, if picture-in-picture is running.

Definition at line 1822 of file softhddevice.cpp.

References m_mutex, and m_pipActive.

Referenced by cPluginSoftHdDevice::SVDRPCommand().

◆ PipSetSize()

void cSoftHdDevice::PipSetSize ( void  )

Set size and position for the pip window.

Definition at line 1865 of file softhddevice.cpp.

References OnEventReceived(), and PIPSIZECHANGE.

Referenced by cMenuSetupSoft::Store().

◆ PipSwapPosition()

void cSoftHdDevice::PipSwapPosition ( void  )

Swap pip between normal and alternative position.

Definition at line 1873 of file softhddevice.cpp.

References OnEventReceived(), and PIPSWAPPOSITION.

Referenced by cSoftHdMenu::HandleHotKey(), cSoftHdMenu::ProcessKey(), and cPluginSoftHdDevice::SVDRPCommand().

◆ PipToggle()

void cSoftHdDevice::PipToggle ( void  )

Toggle picture-in-picture.

Definition at line 1814 of file softhddevice.cpp.

References OnEventReceived(), and PIPTOGGLE.

Referenced by cSoftHdMenu::HandleHotKey(), and cSoftHdMenu::ProcessKey().

◆ Play()

void cSoftHdDevice::Play ( void  )
virtual

Sets the device into play mode (after a previous trick mode, or pause)

This is called by VDR via DevicePlay() in the Play() and Goto() call

Definition at line 761 of file softhddevice.cpp.

References OnEventReceived().

Referenced by cSoftHdControl::ProcessKey().

◆ PlayAudio()

int cSoftHdDevice::PlayAudio ( const uchar *  data,
int  size,
uchar  id 
)
virtual

Play an audio packet.

Parameters
datadata of exactly one complete PES packet
sizesize of PES packet
idPES packet type

The caller must ensure, that PlayAudio() is not called in detached state. (CanReplay() and HasDecoder() return false in this state and we are not the primary device.)

Definition at line 1007 of file softhddevice.cpp.

References cAudioDecoder::Close(), cAudioDecoder::Decode(), cReassemblyBuffer::GetCodec(), cAudioDecoder::GetCodecId(), cPes::GetPayload(), cPes::GetPayloadSize(), cPes::GetPts(), cSoftHdAudio::IsBufferFull(), IsBufferingThresholdReached(), cPes::IsValid(), LOGDEBUG, m_audioChannelID, m_audioReassemblyBuffer, m_pAudio, m_pAudioDecoder, m_receivedAudio, OnEventReceived(), cAudioDecoder::Open(), cReassemblyBufferAudio::PopAvPacket(), cReassemblyBuffer::Push(), and cReassemblyBuffer::Reset().

◆ PlayAudioPkts()

int cSoftHdDevice::PlayAudioPkts ( AVPacket *  pkt)

Play an audio packet.

Parameters
pktAVPacket to play
Return values
0packet could not be player, free audio buffer too small
1packet was sent to be decoded

Definition at line 1708 of file softhddevice.cpp.

References cAudioDecoder::Decode(), cSoftHdAudio::IsBufferFull(), cSoftHdAudio::LazyInit(), m_pAudio, and m_pAudioDecoder.

Referenced by cSoftHdPlayer::Player().

◆ PlayPipVideo()

int cSoftHdDevice::PlayPipVideo ( const uchar *  data,
int  size 
)

Play a video packet of the pip videostream.

Parameters
dataA complete PES packet with optionally fragmented payload
sizethe length of the PES packet including header

The caller must ensure, that PlayPipVideo() is not called in detached state. (CanReplay() and HasDecoder() return false in this state and we are not the primary device.)

Definition at line 1124 of file softhddevice.cpp.

References m_pipReassemblyBuffer, m_pPipStream, and PlayVideoInternal().

Referenced by cPipReceiver::PlayTs().

◆ PlayVideo()

int cSoftHdDevice::PlayVideo ( const uchar *  data,
int  size 
)
virtual

Play a video packet of the main videostream.

Parameters
dataA complete PES packet with optionally fragmented payload
sizethe length of the PES packet including header

This is called directly from VDR

The caller must ensure, that PlayVideo() is not called in detached state. (CanReplay() and HasDecoder() return false in this state and we are not the primary device.)

Definition at line 1108 of file softhddevice.cpp.

References m_pVideoStream, m_videoReassemblyBuffer, and PlayVideoInternal().

◆ PlayVideoInternal()

int cSoftHdDevice::PlayVideoInternal ( cVideoStream stream,
cReassemblyBufferVideo buffer,
const uchar *  data,
int  size 
)
private

◆ PlayVideoPkts()

int cSoftHdDevice::PlayVideoPkts ( AVPacket *  pkt)

Play a video packet.

Parameters
pktAVPacket to play
Return values
0packet could not be player, free audio buffer too small
1packet was sent to be decoded

Definition at line 1728 of file softhddevice.cpp.

References cVideoStream::GetAvPacketsFilled(), cSoftHdAudio::LazyInit(), m_pAudio, m_pVideoStream, cVideoStream::PushAvPacket(), and VIDEO_PACKET_MAX.

Referenced by cSoftHdPlayer::Player().

◆ Poll()

bool cSoftHdDevice::Poll ( cPoller &  ,
int  = 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.

Parameters
pollerfile handles (unused)
timeoutMstimeout in ms to become ready
Return values
trueif ready
falseif busy

Definition at line 838 of file softhddevice.cpp.

References cSoftHdAudio::IsBufferFull(), cVideoStream::IsInputBufferFull(), m_pAudio, and m_pVideoStream.

◆ ProcessArgs()

int cSoftHdDevice::ProcessArgs ( int  argc,
char *  argv[] 
)

Process the command line arguments.

Parameters
argcnumber of arguments
argvarguments vector

Definition at line 1490 of file softhddevice.cpp.

References _, cSoftHdConfig::ConfigAudioMixerChannel, cSoftHdConfig::ConfigAudioPassthroughDevice, cSoftHdConfig::ConfigAudioPCMDevice, cSoftHdConfig::ConfigDisplayResolution, and m_pConfig.

Referenced by cPluginSoftHdDevice::ProcessArgs().

◆ Render()

cVideoRender * cSoftHdDevice::Render ( void  )
inline

Definition at line 176 of file softhddevice.h.

References m_pRender.

Referenced by cOglOsd::cOglOsd(), and cOglThread::cOglThread().

◆ ResetChannelId()

void cSoftHdDevice::ResetChannelId ( void  )

Reset the channel ID (restarts audio)

Definition at line 1649 of file softhddevice.cpp.

References LOGDEBUG, and m_audioChannelID.

Referenced by cMenuSetupSoft::Store().

◆ ResetOsdProvider()

void cSoftHdDevice::ResetOsdProvider ( void  )
inline

Definition at line 212 of file softhddevice.h.

References m_pOsdProvider.

Referenced by cSoftOsdProvider::~cSoftOsdProvider().

◆ ResetPipChannel()

void cSoftHdDevice::ResetPipChannel ( void  )
private

Resets the pip channel to the current live stream channel.

Note
This function is called from HandlePip() within the state change

Definition at line 2002 of file softhddevice.cpp.

References DelPip(), m_pipActive, and NewPip().

Referenced by HandlePip().

◆ ScaleVideo()

void cSoftHdDevice::ScaleVideo ( const cRect &  rect = cRect::Null)
virtual

Scale the currently shown video.

Parameters
xvideo window x coordinate OSD relative
yvideo window x coordinate OSD relative
widthvideo window width OSD relative
heightvideo window height OSD relative

Definition at line 1456 of file softhddevice.cpp.

References IsDetached(), L_OSD, LOGDEBUG2, m_pRender, and cVideoRender::SetVideoOutputPosition().

◆ SetAudioChannelDevice()

void cSoftHdDevice::SetAudioChannelDevice ( int  )
virtual

Definition at line 1070 of file softhddevice.cpp.

◆ SetAudioCodec()

void cSoftHdDevice::SetAudioCodec ( enum AVCodecID  codecId,
AVCodecParameters *  par,
AVRational  timebase 
)

Open an audio codec.

Parameters
codecIdaudio codec id
paraudio codec parameters
timebasetimebase

Definition at line 1683 of file softhddevice.cpp.

References m_pAudioDecoder, and cAudioDecoder::Open().

Referenced by cSoftHdPlayer::Player().

◆ SetAudioTrackDevice()

void cSoftHdDevice::SetAudioTrackDevice ( eTrackType  )
virtual

Definition at line 1060 of file softhddevice.cpp.

◆ SetDigitalAudioDevice()

void cSoftHdDevice::SetDigitalAudioDevice ( bool  )
virtual

Definition at line 1065 of file softhddevice.cpp.

◆ SetDisableDeint()

void cSoftHdDevice::SetDisableDeint ( void  )

Disables deinterlacer (called from setup menu or conf)

Definition at line 1630 of file softhddevice.cpp.

References cSoftHdConfig::ConfigDisableDeint, cVideoStream::DisableDeint(), m_pConfig, and m_pVideoStream.

Referenced by cMenuSetupSoft::Store().

◆ SetEnablePip()

void cSoftHdDevice::SetEnablePip ( bool  on)
private

Enable/ disable picture-in-picture.

Parameters
ontrue, if pip should be enabled
Note
This function is called from HandlePip() within the state change

Definition at line 1920 of file softhddevice.cpp.

References DelPip(), LOGDEBUG, m_pipActive, m_pipChannelNum, m_pRender, NewPip(), and cVideoRender::SetPipActive().

Referenced by HandlePip(), and TogglePip().

◆ SetPassthrough()

void cSoftHdDevice::SetPassthrough ( int  mask)

Set the passthrough mask (called from setup menu or conf)

Definition at line 1639 of file softhddevice.cpp.

References m_pAudio, m_pAudioDecoder, cSoftHdAudio::SetPassthrough(), and cAudioDecoder::SetPassthrough().

Referenced by cMenuSetupSoft::Store().

◆ SetPipSize()

void cSoftHdDevice::SetPipSize ( void  )
private

Set size and position for the pip window.

Note
This function is called from HandlePip() within the state change

Definition at line 2016 of file softhddevice.cpp.

References m_pipUseAlt, m_pRender, and cVideoRender::SetPipSize().

Referenced by HandlePip().

◆ SetPlayMode()

bool cSoftHdDevice::SetPlayMode ( ePlayMode  play_mode)
virtual

Sets the device into the given play mode.

Parameters
play_modenew play mode (Audio/Video/External...)

Definition at line 657 of file softhddevice.cpp.

References LOGDEBUG, LOGERROR, and OnEventReceived().

◆ SetScreenSize()

void cSoftHdDevice::SetScreenSize ( int  width,
int  height,
uint32_t  refreshRate 
)

Set the screen size.

Parameters
widthscreen width
heightscreen height
refreshRatescreen refresh rate (currently unused)

Definition at line 951 of file softhddevice.cpp.

References m_screenHeight, m_screenRefreshRate, m_screenWidth, and m_sizeMutex.

Referenced by cVideoRender::SetScreenSize().

◆ SetState()

void cSoftHdDevice::SetState ( State  newState)
private

Sets the device into the given state.

Parameters
newStatenew state

Definition at line 640 of file softhddevice.cpp.

References LOGDEBUG, m_state, OnEnteringState(), OnLeavingState(), and StateToString().

Referenced by Clear(), HandleStillPicture(), and OnEventReceived().

◆ SetVideoCodec()

void cSoftHdDevice::SetVideoCodec ( enum AVCodecID  codecId,
AVCodecParameters *  par,
AVRational  timebase 
)

Open a video codec.

Parameters
codecIdvideo codec id
parvideo codec parameters
timebasetimebase

Definition at line 1695 of file softhddevice.cpp.

References m_pVideoStream, and cVideoStream::Open().

Referenced by cSoftHdPlayer::Player().

◆ SetVideoDisplayFormat()

void cSoftHdDevice::SetVideoDisplayFormat ( eVideoDisplayFormat  videoDisplayFormat)
virtual

Sets the video display format.

Parameters
videoDisplayFormatvideo display format Set it to the given one (only useful if this device has an MPEG decoder).

Definition at line 877 of file softhddevice.cpp.

References LOGDEBUG.

Referenced by SetVideoFormat().

◆ SetVideoFormat()

void cSoftHdDevice::SetVideoFormat ( bool  videoFormat16_9)
virtual

Set the video format.

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

Should call SetVideoDisplayFormat

Parameters
videoFormat16_9flag true 16:9.

Definition at line 894 of file softhddevice.cpp.

References LOGDEBUG, and SetVideoDisplayFormat().

◆ SetVolumeDevice()

void cSoftHdDevice::SetVolumeDevice ( int  volume)
virtual

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

Parameters
volumedevice volume

Definition at line 1087 of file softhddevice.cpp.

References IsDetached(), LOGDEBUG, m_pAudio, and cSoftHdAudio::SetVolume().

◆ Start()

int cSoftHdDevice::Start ( void  )

Called by VDR when the plugin is started.

Definition at line 170 of file softhddevice.cpp.

References LOGDEBUG, and OnEventReceived().

Referenced by cPluginSoftHdDevice::Start().

◆ StillPicture()

void cSoftHdDevice::StillPicture ( const uchar *  data,
int  size 
)
virtual

Display the given I-frame as a still picture.

Parameters
datapes or ts data of a frame
lengthlength of data area

Definition at line 785 of file softhddevice.cpp.

References LOGDEBUG, and OnEventReceived().

◆ Stop()

void cSoftHdDevice::Stop ( void  )

Called by VDR when the plugin is stopped.

Definition at line 181 of file softhddevice.cpp.

References LOGDEBUG, and OnEventReceived().

Referenced by cPluginSoftHdDevice::Stop().

◆ SwapPipPosition()

void cSoftHdDevice::SwapPipPosition ( void  )
private

Swap pip between normal and alternative position.

Note
This function is called from HandlePip() within the state change

Definition at line 2026 of file softhddevice.cpp.

References m_pipUseAlt, m_pRender, and cVideoRender::SetPipSize().

Referenced by HandlePip().

◆ TogglePip()

void cSoftHdDevice::TogglePip ( void  )
private

Toggle picture-in-picture.

Note
This function is called from HandlePip() within the state change

Definition at line 1950 of file softhddevice.cpp.

References m_pipActive, and SetEnablePip().

Referenced by HandlePip().

◆ TrickSpeed()

void cSoftHdDevice::TrickSpeed ( int  speed,
bool  forward 
)
virtual

Set trick play speed.

Every single frame shall then be displayed the given number of times.

Parameters
speedtrick speed
forwardflag forward direction

Definition at line 708 of file softhddevice.cpp.

References LOGDEBUG, and OnEventReceived().

◆ VideoStream()

cVideoStream * cSoftHdDevice::VideoStream ( void  )
inline

Member Data Documentation

◆ m_audioChannelID

int cSoftHdDevice::m_audioChannelID
private

current audio channel ID

Definition at line 245 of file softhddevice.h.

Referenced by cSoftHdDevice(), PlayAudio(), and ResetChannelId().

◆ m_audioReassemblyBuffer

cReassemblyBufferAudio cSoftHdDevice::m_audioReassemblyBuffer
private

audio pes reassembly buffer

Definition at line 242 of file softhddevice.h.

Referenced by ClearAudio(), and PlayAudio().

◆ m_eventMutex

std::mutex cSoftHdDevice::m_eventMutex
private

mutex to protect event queue

Definition at line 232 of file softhddevice.h.

◆ m_grabActive

bool cSoftHdDevice::m_grabActive
private

simple lock variable skips a new grab request if the last one is still active

Definition at line 246 of file softhddevice.h.

Referenced by GrabImage().

◆ m_mutex

std::mutex cSoftHdDevice::m_mutex
mutableprivate

mutex to lock the state machine

Definition at line 255 of file softhddevice.h.

Referenced by IsDetached(), OnEventReceived(), and PipIsEnabled().

◆ m_needsMakePrimary

bool cSoftHdDevice::m_needsMakePrimary = false
private

Definition at line 233 of file softhddevice.h.

Referenced by Attach(), and Detach().

◆ m_pAudio

cSoftHdAudio* cSoftHdDevice::m_pAudio
private

◆ m_pAudioDecoder

cAudioDecoder* cSoftHdDevice::m_pAudioDecoder
private

◆ m_pConfig

cSoftHdConfig* cSoftHdDevice::m_pConfig
private

◆ m_pipActive

bool cSoftHdDevice::m_pipActive
private

true, if pip is active

Definition at line 249 of file softhddevice.h.

Referenced by ChangePipChannel(), cSoftHdDevice(), PipIsEnabled(), ResetPipChannel(), SetEnablePip(), and TogglePip().

◆ m_pipChannelNum

int cSoftHdDevice::m_pipChannelNum
private

current pip channel number

Definition at line 250 of file softhddevice.h.

Referenced by NewPip(), and SetEnablePip().

◆ m_pipReassemblyBuffer

cReassemblyBufferVideo cSoftHdDevice::m_pipReassemblyBuffer
private

pip pes reassembly buffer

Definition at line 254 of file softhddevice.h.

Referenced by DelPip(), and PlayPipVideo().

◆ m_pipUseAlt

bool cSoftHdDevice::m_pipUseAlt
private

use alternative pip position

Definition at line 259 of file softhddevice.h.

Referenced by cSoftHdDevice(), SetPipSize(), and SwapPipPosition().

◆ m_playbackMode

std::atomic<PlaybackMode> cSoftHdDevice::m_playbackMode = NONE
private

current playback mode

Definition at line 244 of file softhddevice.h.

Referenced by Clear(), GetSTC(), OnEnteringState(), and OnEventReceived().

◆ m_pOsdProvider

cSoftOsdProvider* cSoftHdDevice::m_pOsdProvider
private

◆ m_pPipChannel

const cChannel* cSoftHdDevice::m_pPipChannel
private

current pip channel

Definition at line 251 of file softhddevice.h.

Referenced by ChangePipChannel(), DelPip(), NewPip(), and PipChannelSwap().

◆ m_pPipReceiver

cPipReceiver* cSoftHdDevice::m_pPipReceiver
private

cReceiver for pip stream

Definition at line 252 of file softhddevice.h.

Referenced by DelPip(), and NewPip().

◆ m_pPipStream

cVideoStream* cSoftHdDevice::m_pPipStream
private

pointer to pip video stream

Definition at line 253 of file softhddevice.h.

Referenced by DelPip(), OnEnteringState(), OnLeavingState(), and PlayPipVideo().

◆ m_pRender

cVideoRender* cSoftHdDevice::m_pRender
private

◆ m_pSpuDecoder

cDvbSpuDecoder* cSoftHdDevice::m_pSpuDecoder
private

pointer to spu decoder

Definition at line 234 of file softhddevice.h.

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

◆ m_pVideoStream

cVideoStream* cSoftHdDevice::m_pVideoStream
private

◆ m_receivedAudio

std::atomic<bool> cSoftHdDevice::m_receivedAudio = false
private

flag if audio packets have been received

Definition at line 257 of file softhddevice.h.

Referenced by IsBufferingThresholdReached(), OnLeavingState(), and PlayAudio().

◆ m_receivedVideo

std::atomic<bool> cSoftHdDevice::m_receivedVideo = false
private

flag if video packets have been received

Definition at line 258 of file softhddevice.h.

Referenced by IsBufferingThresholdReached(), OnLeavingState(), and PlayVideoInternal().

◆ m_screenHeight

int cSoftHdDevice::m_screenHeight
private

Definition at line 262 of file softhddevice.h.

Referenced by GetOsdSize(), and SetScreenSize().

◆ m_screenRefreshRate

uint32_t cSoftHdDevice::m_screenRefreshRate
private

Definition at line 263 of file softhddevice.h.

Referenced by SetScreenSize().

◆ m_screenWidth

int cSoftHdDevice::m_screenWidth
private

Definition at line 261 of file softhddevice.h.

Referenced by GetOsdSize(), and SetScreenSize().

◆ m_sizeMutex

std::mutex cSoftHdDevice::m_sizeMutex
private

mutex to lock screen size (which is accessed by different threads)

Definition at line 256 of file softhddevice.h.

Referenced by GetOsdSize(), and SetScreenSize().

◆ m_state

std::atomic<State> cSoftHdDevice::m_state = DETACHED
private

current plugin state, normal plugin start sets detached state

Definition at line 231 of file softhddevice.h.

Referenced by IsBufferingThresholdReached(), IsDetached(), OnEventReceived(), and SetState().

◆ m_videoReassemblyBuffer

cReassemblyBufferVideo cSoftHdDevice::m_videoReassemblyBuffer
private

video pes reassembly buffer

Definition at line 241 of file softhddevice.h.

Referenced by Clear(), HandleStillPicture(), OnEnteringState(), and PlayVideo().

◆ MIN_BUFFER_FILL_LEVEL_THRESHOLD_MS

constexpr int cSoftHdDevice::MIN_BUFFER_FILL_LEVEL_THRESHOLD_MS = 450
staticconstexprprivate

min buffering threshold in ms

Definition at line 229 of file softhddevice.h.

Referenced by GetBufferFillLevelThresholdMs().


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