vdr-plugin-softhddevice-drm-gles 1.6.4-d0291bb
cVideoRender Class Reference

Video Renderer. More...

#include <videorender.h>

Public Member Functions

 cVideoRender (cSoftHdDevice *)
 Create the video renderer.
 
 ~cVideoRender (void)
 Destroy the video renderer.
 
void Init (void)
 Initialize the renderer.
 
void Exit (void)
 Exit and cleanup the renderer.
 
void Stop (void)
 Stop the thread.
 
void Halt (void)
 
void Resume (void)
 
void SetVideoOutputPosition (const cRect &)
 Set size and position of the video on the screen.
 
void SetScreenSize (int, int, double)
 Wrapper to set the screen size in the device.
 
int64_t GetVideoClock (void)
 
void GetStats (int *, int *, int *)
 Get some rendering statistics.
 
void ResetFrameCounter (void)
 Send start condition to video thread.
 
void Reset ()
 Reset the renderer.
 
void SetPlaybackPaused (bool pause)
 
void SetScheduleAudioResume (bool resume)
 
void ScheduleVideoPlaybackPauseAt (int64_t ptsMs)
 
void ProcessEvents (void)
 Process queued events and forward to event receiver.
 
void ResetBufferReuseStrategy ()
 
void ResetDecodingStrategy ()
 
void ResetPipBufferReuseStrategy ()
 
void ResetPipDecodingStrategy ()
 
void OsdClear (void)
 Clear the OSD (draw an empty/ transparent OSD)
 
void OsdDrawARGB (int, int, int, int, int, const uint8_t *, int, int)
 Draw an OSD ARGB image.
 
void SetTrickSpeed (double, bool, bool)
 Set the trickspeed parameters.
 
bool IsTrickSpeed (void)
 
bool IsForwardTrickspeed (void)
 
void SetStillpicture (bool active)
 
bool IsStillpicture (void)
 
int TriggerGrab (void)
 Trigger a screen grab.
 
void ClearGrabBuffers (void)
 Clear the grab drm buffers.
 
cGrabBufferGetGrabbedVideoBuffer (void)
 
cGrabBufferGetGrabbedOsdBuffer (void)
 
cGrabBufferGetGrabbedPipBuffer (void)
 
int DrmHandleEvent (void)
 Wrapper for drmHandleEvent()
 
bool CanHandleHdr (void)
 Return true, if the device can handle HDR.
 
void SetEnableHdr (bool enable)
 
bool DisplayFrame ()
 Display the frame (video and/or osd)
 
int GetFramesFilled (void)
 
void PushMainFrame (AVFrame *)
 Push a main frame into the render ringbuffer.
 
void PushPipFrame (AVFrame *)
 Push a PiP frame into the render ringbuffer.
 
int64_t GetOutputPtsMs (void)
 Get the output PTS in milliseconds.
 
void DisplayBlackFrame (void)
 Display a black video frame.
 
void ClearDecoderToDisplayQueue (void)
 Clear (empty) the decoder to display queue.
 
bool IsOutputBufferFull (void)
 Check, if the main render output buffer is full.
 
void SetDisplayOneFrameThenPause (bool pause)
 
void SchedulePlaybackStartAtPtsMs (int64_t ptsMs)
 
void ScheduleResyncAtPtsMs (int64_t ptsMs)
 
cQueue< cDrmBuffer > * GetMainOutputBuffer (void)
 
cQueue< cDrmBuffer > * GetPipOutputBuffer (void)
 
void DisableOglOsd (void)
 
void EnableOglOsd (void)
 
bool OglOsdDisabled (void)
 
EGLSurface EglSurface (void)
 
EGLDisplay EglDisplay (void)
 
EGLContext EglContext (void)
 
int GlInitiated (void)
 
void SetPipActive (bool on)
 
void ClearPipDecoderToDisplayQueue (void)
 Clear (empty) the decoder to display queue.
 
void SetPipSize (bool)
 Set the size and position of the pip window.
 

Protected Member Functions

virtual void Action (void)
 Thread loop, which tries to display frames and processes events.
 

Private Member Functions

int GetFrameFlags (AVFrame *)
 Get frame flags.
 
void SetFrameFlags (AVFrame *, int)
 Set frame flags.
 
void SetVideoClock (int64_t pts)
 
bool PageFlip (cDrmBuffer *, cDrmBuffer *)
 Do the pageflip.
 
int SetVideoBuffer (cDrmBuffer *)
 Modesetting for video.
 
int SetOsdBuffer (drmModeAtomicReqPtr)
 Modesetting for osd.
 
int SetPipBuffer (cDrmBuffer *)
 Modesetting for pip.
 
int CommitBuffer (cDrmBuffer *, cDrmBuffer *)
 Commit the frame to the hardware.
 
void CreateGrabBuffers (bool)
 Copy current video, osd and pip buffers to dedicated grabbing buffers.
 
void LogDroppedDuped (int64_t, int64_t, int)
 Log A/V sync debug message.
 
int64_t PtsToMs (int64_t)
 Convert a PTS to milliseconds.
 
void PushFrame (AVFrame *, bool, std::atomic< cBufferStrategy * > &, std::atomic< cDecodingStrategy * > &, cQueue< cDrmBuffer > *, cDrmBufferPool *)
 Push the frame into the render ringbuffer.
 
int GetFramePresentationCount (int64_t)
 Get the number of times the current frame shall be presented in trickspeed mode.
 
void SetHdrBlob (struct hdr_output_metadata)
 Create an hdr blob and set it for the connector.
 
void SetColorSpace (drmColorRange)
 Set kms color space, color encoding and color range.
 
void RestoreColorSpace ()
 Restore color space, color encoding and color range to BT709 and the original color range.
 

Private Attributes

cSoftHdDevicem_pDevice
 pointer to cSoftHdDevice
 
cSoftHdAudiom_pAudio
 pointer to cSoftHdAudio
 
cSoftHdConfigm_pConfig
 pointer to cSoftHdConfig
 
std::mutex m_mutex
 mutex for thread control
 
std::vector< Eventm_eventQueue
 event queue for incoming events
 
double m_refreshRateHz
 screen refresh rate in Hz
 
cQueue< cDrmBufferm_drmBufferQueue {VIDEO_SURFACES_MAX}
 queue for DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)
 
cQueue< cDrmBufferm_pipDrmBufferQueue {VIDEO_SURFACES_MAX}
 queue for PIP DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)
 
std::atomic< doublem_trickspeedFactor = 0
 current trick speed
 
std::atomic< boolm_trickspeed = false
 true, if trickspeed is active
 
std::atomic< boolm_forwardTrickspeed = true
 true, if trickspeed plays forward
 
std::atomic< boolm_stillpicture = false
 true, if stillpicture is active
 
std::atomic< intm_framePresentationCounter = 0
 number of times the current frame has to be shown (for slow-motion)
 
int m_numWrongProgressive
 counter for progressive frames sent in an interlaced stream (only used for logging)
 
bool m_startgrab = false
 internal flag to trigger grabbing
 
cCondVar m_grabCond
 condition gets signalled, if renederer finished to clone the grabbed buffers
 
cGrabBuffer m_grabOsd
 keeps the current grabbed osd
 
cGrabBuffer m_grabVideo
 keeps the current grabbed video
 
cGrabBuffer m_grabPip
 keeps the current grabbed pip video
 
int m_startCounter = 0
 counter for displayed frames, indicates a video start
 
int m_framesDuped = 0
 number of frames duplicated
 
int m_framesDropped = 0
 number of frames dropped
 
bool m_lastFrameWasDropped = false
 true, if the last frame was dropped
 
AVRational m_timebase
 timebase used for pts, set by first RenderFrame()
 
std::mutex m_timebaseMutex
 mutex used around m_timebase
 
std::atomic< int64_tm_pts = AV_NOPTS_VALUE
 current video PTS
 
cRect m_videoRect
 rect of the currently displayed video
 
bool m_videoIsScaled = false
 true, if the currently displayed video is scaled
 
int m_pipScalePercent
 scale factor for pip
 
int m_pipLeftPercent
 left margin for pip
 
int m_pipTopPercent
 top margin for pip
 
cDrmDevicem_pDrmDevice
 pointer cDrmDevice object
 
cDrmBufferm_pBufOsd = nullptr
 pointer to osd drm buffer object
 
cDrmBuffer m_bufBlack
 black drm buffer object
 
cDrmBufferm_pCurrentlyDisplayed = nullptr
 pointer to currently displayed DRM buffer
 
cDrmBufferm_pCurrentlyPipDisplayed = nullptr
 pointer to currently displayed DRM buffer
 
bool m_osdShown = false
 set, if osd is shown currently
 
std::atomic< boolm_videoPlaybackPaused = true
 set, if playback is frozen (used for pause)
 
std::atomic< boolm_resumeAudioScheduled = false
 set, if audio resume is scheduled after a pause
 
std::atomic< int64_tm_videoPlaybackPauseScheduledAt = AV_NOPTS_VALUE
 if set, video will be paused at the given pts
 
std::atomic< boolm_displayOneFrameThenPause = false
 set, if only one frame shall be displayed and then pause playback
 
std::atomic< int64_tm_schedulePlaybackStartAtPtsMs = AV_NOPTS_VALUE
 if set, frames with PTS older than this will be dropped
 
std::atomic< int64_tm_scheduleResyncAtPtsMs = AV_NOPTS_VALUE
 if set, a resync (enter state BUFFERING) will be forced at the given pts
 
IEventReceiverm_pEventReceiver
 pointer to event receiver
 
cDrmBufferPool m_drmBufferPool
 pool of drm buffers
 
cDrmBufferPool m_pipDrmBufferPool
 PIP pool of drm buffers.
 
std::atomic< cBufferStrategy * > m_bufferReuseStrategy = nullptr
 strategy to select drm buffers
 
std::atomic< cBufferStrategy * > m_pipBufferReuseStrategy = nullptr
 strategy to select drm buffers
 
std::atomic< cDecodingStrategy * > m_decodingStrategy = nullptr
 strategy for decoding setup
 
std::atomic< cDecodingStrategy * > m_pipDecodingStrategy = nullptr
 strategy for decoding setup
 
cHdrMetadata m_pHdrMetadata
 hdr metadata object
 
bool m_hasDoneHdrModeset = false
 true, if we ever created an hdr blob and did a modesetting
 
std::atomic< boolm_enableHdr = false
 hdr is enabled
 
drmColorRange m_originalColorRange = COLORRANGE_LIMITED
 initial color range
 
bool m_colorRangeStored = false
 true, if the original color range was stored
 
bool m_disableOglOsd
 set, if ogl osd is disabled
 
struct gbm_bom_bo
 pointer to current gbm buffer object
 
struct gbm_bom_pOldBo
 pointer to old gbm buffer object (for later free)
 
struct gbm_bom_pNextBo
 pointer to next gbm buffer object (for later free)
 
std::atomic< boolm_pipActive = false
 true, if pip should be displayed
 

Detailed Description

Video Renderer.

This part is responsible to put all the parts together and display them on the screen

Definition at line 163 of file videorender.h.

Constructor & Destructor Documentation

◆ cVideoRender()

cVideoRender::cVideoRender ( cSoftHdDevice device)

Create the video renderer.

Parameters
devicepointer to cSoftHdDevice

Definition at line 58 of file videorender.cpp.

References cSoftHdConfig::ConfigDisableOglOsd, cSoftHdConfig::ConfigPipUseAlt, m_bo, m_disableOglOsd, m_pConfig, m_pNextBo, m_pOldBo, m_timebase, and SetPipSize().

◆ ~cVideoRender()

cVideoRender::~cVideoRender ( void  )

Destroy the video renderer.

Definition at line 81 of file videorender.cpp.

References L_DRM, LOGDEBUG2, m_pDrmDevice, and Stop().

Member Function Documentation

◆ Action()

void cVideoRender::Action ( void  )
protectedvirtual

Thread loop, which tries to display frames and processes events.

Definition at line 620 of file videorender.cpp.

References DisplayFrame(), LOGDEBUG, m_mutex, and ProcessEvents().

◆ CanHandleHdr()

bool cVideoRender::CanHandleHdr ( void  )

Return true, if the device can handle HDR.

Definition at line 824 of file videorender.cpp.

References cDrmDevice::CanHandleHdr(), and m_pDrmDevice.

Referenced by cHdrMetadata::Build().

◆ ClearDecoderToDisplayQueue()

void cVideoRender::ClearDecoderToDisplayQueue ( void  )

◆ ClearGrabBuffers()

void cVideoRender::ClearGrabBuffers ( void  )

Clear the grab drm buffers.

Definition at line 1168 of file videorender.cpp.

References cGrabBuffer::FreeDrmBuf(), cGrabBuffer::GetDrmBuf(), m_grabOsd, m_grabPip, and m_grabVideo.

Referenced by cSoftHdGrab::Start().

◆ ClearPipDecoderToDisplayQueue()

void cVideoRender::ClearPipDecoderToDisplayQueue ( void  )

Clear (empty) the decoder to display queue.

Definition at line 105 of file videorender.cpp.

References cQueue< T >::Clear(), cDrmBufferPool::DestroyAllExcept(), m_pCurrentlyPipDisplayed, m_pipDrmBufferPool, and m_pipDrmBufferQueue.

Referenced by cSoftHdDevice::ResetPipStream().

◆ CommitBuffer()

int cVideoRender::CommitBuffer ( cDrmBuffer buf,
cDrmBuffer pip 
)
private

Commit the frame to the hardware.

Parameters
bufvideo drm buffer
Return values
0modesetting and commit was done, need to process outstanding DRM events
-1no modesetting and commit was done

Definition at line 443 of file videorender.cpp.

References L_DRM, LOGDEBUG2, LOGERROR, m_osdShown, m_pCurrentlyDisplayed, m_pCurrentlyPipDisplayed, m_pDrmDevice, cDrmDevice::ModeAtomicAlloc(), cDrmDevice::ModeAtomicCommit(), cDrmDevice::ModeAtomicFree(), cDrmDevice::OsdPlane(), cDrmDevice::PipPlane(), SetOsdBuffer(), SetPipBuffer(), SetVideoBuffer(), and cDrmDevice::VideoPlane().

Referenced by PageFlip().

◆ CreateGrabBuffers()

void cVideoRender::CreateGrabBuffers ( bool  grabPip)
private

Copy current video, osd and pip buffers to dedicated grabbing buffers.

Parameters
grabPiptrue, if the pip buffer should be grabbed

Definition at line 1137 of file videorender.cpp.

References L_GRAB, LOGDEBUG2, m_grabCond, m_grabOsd, m_grabPip, m_grabVideo, m_osdShown, m_pBufOsd, m_pCurrentlyDisplayed, m_pCurrentlyPipDisplayed, m_startgrab, and cGrabBuffer::SetDrmBuf().

Referenced by DisplayFrame().

◆ DisableOglOsd()

void cVideoRender::DisableOglOsd ( void  )
inline

Definition at line 230 of file videorender.h.

References m_disableOglOsd.

Referenced by cSoftHdDevice::SetDisableOglOsd().

◆ DisplayBlackFrame()

void cVideoRender::DisplayBlackFrame ( void  )

Display a black video frame.

Definition at line 790 of file videorender.cpp.

References cDrmBuffer::Destroy(), cDrmBuffer::frame, L_DRM, LOGDEBUG2, m_bufBlack, m_pCurrentlyDisplayed, and PageFlip().

Referenced by cSoftHdDevice::OnEnteringState().

◆ DisplayFrame()

◆ DrmHandleEvent()

int cVideoRender::DrmHandleEvent ( void  )

Wrapper for drmHandleEvent()

Definition at line 816 of file videorender.cpp.

References cDrmDevice::HandleEvent(), and m_pDrmDevice.

◆ EglContext()

EGLContext cVideoRender::EglContext ( void  )
inline

Definition at line 235 of file videorender.h.

References cDrmDevice::EglContext(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EglDisplay()

EGLDisplay cVideoRender::EglDisplay ( void  )
inline

Definition at line 234 of file videorender.h.

References cDrmDevice::EglDisplay(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EglSurface()

EGLSurface cVideoRender::EglSurface ( void  )
inline

Definition at line 233 of file videorender.h.

References cDrmDevice::EglSurface(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EnableOglOsd()

void cVideoRender::EnableOglOsd ( void  )
inline

Definition at line 231 of file videorender.h.

References m_disableOglOsd.

Referenced by cSoftHdDevice::SetEnableOglOsd().

◆ Exit()

◆ GetFrameFlags()

int cVideoRender::GetFrameFlags ( AVFrame frame)
private

Get frame flags.

Parameters
frameAVFrame
Returns
FRAME_FLAG_TRICKSPEED or FRAME_FLAG_STILLPICTURE

Definition at line 551 of file videorender.cpp.

◆ GetFramePresentationCount()

int cVideoRender::GetFramePresentationCount ( int64_t  interFrameGapMs)
private

Get the number of times the current frame shall be presented in trickspeed mode.

This is calculated based on the inter-frame gap (distance between each I-frame VDR sends us during trickspeed), the refresh rate of the output device, and the trickspeed speed.

Parameters
interFrameGapMsinter-frame gap in ms
Return values
numberof times the current frame shall be presented

Definition at line 1092 of file videorender.cpp.

References IsTrickSpeed(), m_refreshRateHz, and m_trickspeedFactor.

Referenced by DisplayFrame().

◆ GetFramesFilled()

int cVideoRender::GetFramesFilled ( void  )
inline

Definition at line 215 of file videorender.h.

References m_drmBufferQueue, and cQueue< T >::Size().

◆ GetGrabbedOsdBuffer()

cGrabBuffer * cVideoRender::GetGrabbedOsdBuffer ( void  )
inline

Definition at line 205 of file videorender.h.

References m_grabOsd.

Referenced by cSoftHdGrab::GetGrab().

◆ GetGrabbedPipBuffer()

cGrabBuffer * cVideoRender::GetGrabbedPipBuffer ( void  )
inline

Definition at line 206 of file videorender.h.

References m_grabPip.

Referenced by cSoftHdGrab::GetGrab().

◆ GetGrabbedVideoBuffer()

cGrabBuffer * cVideoRender::GetGrabbedVideoBuffer ( void  )
inline

Definition at line 204 of file videorender.h.

References m_grabVideo.

Referenced by cSoftHdGrab::GetGrab().

◆ GetMainOutputBuffer()

cQueue< cDrmBuffer > * cVideoRender::GetMainOutputBuffer ( void  )
inline

Definition at line 225 of file videorender.h.

References m_drmBufferQueue.

Referenced by cSoftHdDevice::OnLeavingState().

◆ GetOutputPtsMs()

int64_t cVideoRender::GetOutputPtsMs ( void  )

Get the output PTS in milliseconds.

Returns the presentation timestamp of the next frame to be displayed.

Returns
PTS in milliseconds

Definition at line 1035 of file videorender.cpp.

References AV_NOPTS_VALUE, GetVideoClock(), m_timebase, and m_timebaseMutex.

Referenced by cSoftHdDevice::GetFirstAudioPtsMsToPlay(), cSoftHdDevice::GetFirstVideoPtsMsToPlay(), cSoftHdDevice::IsBufferingThresholdReached(), and cSoftHdDevice::OnEventReceived().

◆ GetPipOutputBuffer()

cQueue< cDrmBuffer > * cVideoRender::GetPipOutputBuffer ( void  )
inline

Definition at line 226 of file videorender.h.

References m_pipDrmBufferQueue.

Referenced by cSoftHdDevice::OnLeavingState().

◆ GetStats()

void cVideoRender::GetStats ( int duped,
int dropped,
int counter 
)

Get some rendering statistics.

Parameters
[out]dupednumber of duplicated frames
[out]droppednumber of dropped frames
[out]counternumber of decoded frames

Definition at line 1185 of file videorender.cpp.

References m_framesDropped, m_framesDuped, and m_startCounter.

Referenced by cSoftHdDevice::GetStats().

◆ GetVideoClock()

int64_t cVideoRender::GetVideoClock ( void  )
inline

Definition at line 176 of file videorender.h.

References m_pts.

Referenced by GetOutputPtsMs(), cSoftHdDevice::GetSTC(), and PushFrame().

◆ GlInitiated()

int cVideoRender::GlInitiated ( void  )
inline

Definition at line 236 of file videorender.h.

References cDrmDevice::GlInitiated(), and m_pDrmDevice.

Referenced by cOglThread::InitOpenGL().

◆ Halt()

void cVideoRender::Halt ( void  )
inline

Definition at line 171 of file videorender.h.

References m_mutex.

Referenced by cSoftHdDevice::Clear(), and cSoftHdDevice::OnEventReceived().

◆ Init()

◆ IsForwardTrickspeed()

bool cVideoRender::IsForwardTrickspeed ( void  )
inline

Definition at line 197 of file videorender.h.

References m_forwardTrickspeed.

Referenced by cVideoStream::CheckForcingFrameDecode().

◆ IsOutputBufferFull()

bool cVideoRender::IsOutputBufferFull ( void  )

Check, if the main render output buffer is full.

Return values
truerender output buffer is full

Definition at line 957 of file videorender.cpp.

References cQueue< T >::IsFull(), and m_drmBufferQueue.

Referenced by cSoftHdDevice::IsBufferingThresholdReached().

◆ IsStillpicture()

bool cVideoRender::IsStillpicture ( void  )
inline

Definition at line 199 of file videorender.h.

References m_stillpicture.

Referenced by DisplayFrame().

◆ IsTrickSpeed()

bool cVideoRender::IsTrickSpeed ( void  )
inline

◆ LogDroppedDuped()

void cVideoRender::LogDroppedDuped ( int64_t  audioPtsMs,
int64_t  videoPtsMs,
int  audioBehindVideoByMs 
)
private

Log A/V sync debug message.

Parameters
audioPtsMsaudio pts
videoPtsMsvideo pts
audioBehindVideoByMsaudio is behind video by this many ms

Definition at line 522 of file videorender.cpp.

References cVideoStream::GetAvPacketsFilled(), cSoftHdAudio::GetHardwareOutputDelayMs(), cSoftHdAudio::GetUsedBytes(), cSoftHdDevice::GetVideoAudioDelayMs(), L_AV_SYNC, LOGDEBUG2, m_drmBufferQueue, m_framesDropped, m_framesDuped, m_pAudio, m_pDevice, cQueue< T >::Size(), Timestamp2String(), and cSoftHdDevice::VideoStream().

Referenced by DisplayFrame().

◆ OglOsdDisabled()

bool cVideoRender::OglOsdDisabled ( void  )
inline

Definition at line 232 of file videorender.h.

References m_disableOglOsd.

Referenced by cDrmDevice::Init().

◆ OsdClear()

◆ OsdDrawARGB()

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

Draw an OSD ARGB image.

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 890 of file videorender.cpp.

References EGL_CHECK, cDrmDevice::EglDisplay(), cDrmDevice::EglSurface(), cDrmDevice::GbmSurface(), cDrmDevice::GetBufFromBo(), L_OPENGL, L_OSD, LOGDEBUG2, LOGERROR, m_bo, m_disableOglOsd, m_osdShown, m_pBufOsd, m_pDrmDevice, m_pNextBo, m_pOldBo, cDrmBuffer::MarkDirty(), MIN, cDrmBuffer::Pitch(), and cDrmBuffer::Plane().

Referenced by cSoftHdDevice::OsdDrawARGB().

◆ PageFlip()

bool cVideoRender::PageFlip ( cDrmBuffer buf,
cDrmBuffer pipBuf 
)
private

Do the pageflip.

Parameters
bufdrm buffer
pipBufdrm pip buffer
Returns
true if page flip was done

Definition at line 587 of file videorender.cpp.

References AV_NOPTS_VALUE, CommitBuffer(), cDrmDevice::HandleEvent(), L_PACKET, LOGDEBUG2, LOGERROR, m_pDrmDevice, SetVideoClock(), and Timestamp2String().

Referenced by DisplayBlackFrame(), and DisplayFrame().

◆ ProcessEvents()

void cVideoRender::ProcessEvents ( void  )

Process queued events and forward to event receiver.

Definition at line 1377 of file videorender.cpp.

References m_eventQueue, m_pEventReceiver, and IEventReceiver::OnEventReceived().

Referenced by Action().

◆ PtsToMs()

int64_t cVideoRender::PtsToMs ( int64_t  pts)
private

Convert a PTS to milliseconds.

Definition at line 806 of file videorender.cpp.

References m_timebase, and m_timebaseMutex.

Referenced by DisplayFrame().

◆ PushFrame()

void cVideoRender::PushFrame ( AVFrame frame,
bool  trickspeed,
std::atomic< cBufferStrategy * > &  bufferReuseStrategy,
std::atomic< cDecodingStrategy * > &  decodingStrategy,
cQueue< cDrmBuffer > *  drmBufferQueue,
cDrmBufferPool drmBufferPool 
)
private

Push the frame into the render ringbuffer.

Definition at line 981 of file videorender.cpp.

References AV_NOPTS_VALUE, cDrmDevice::Fd(), GetVideoClock(), LOGFATAL, m_pDrmDevice, and SetVideoClock().

Referenced by PushMainFrame(), and PushPipFrame().

◆ PushMainFrame()

void cVideoRender::PushMainFrame ( AVFrame frame)

Push a main frame into the render ringbuffer.

Definition at line 965 of file videorender.cpp.

References IsTrickSpeed(), m_bufferReuseStrategy, m_decodingStrategy, m_drmBufferPool, m_drmBufferQueue, and PushFrame().

Referenced by cSoftHdDevice::OnLeavingState().

◆ PushPipFrame()

void cVideoRender::PushPipFrame ( AVFrame frame)

Push a PiP frame into the render ringbuffer.

Definition at line 973 of file videorender.cpp.

References m_pipBufferReuseStrategy, m_pipDecodingStrategy, m_pipDrmBufferPool, m_pipDrmBufferQueue, and PushFrame().

Referenced by cSoftHdDevice::OnLeavingState().

◆ Reset()

void cVideoRender::Reset ( void  )

◆ ResetBufferReuseStrategy()

void cVideoRender::ResetBufferReuseStrategy ( )
inline

◆ ResetDecodingStrategy()

void cVideoRender::ResetDecodingStrategy ( )
inline

Definition at line 186 of file videorender.h.

References m_decodingStrategy.

Referenced by cSoftHdDevice::OnEnteringState().

◆ ResetFrameCounter()

void cVideoRender::ResetFrameCounter ( void  )

Send start condition to video thread.

Definition at line 1048 of file videorender.cpp.

References IsTrickSpeed(), LOGDEBUG, and m_startCounter.

Referenced by cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().

◆ ResetPipBufferReuseStrategy()

void cVideoRender::ResetPipBufferReuseStrategy ( )
inline

Definition at line 187 of file videorender.h.

References m_pipBufferReuseStrategy.

Referenced by cSoftHdDevice::ResetPipStream().

◆ ResetPipDecodingStrategy()

void cVideoRender::ResetPipDecodingStrategy ( )
inline

Definition at line 188 of file videorender.h.

References m_pipDecodingStrategy.

Referenced by cSoftHdDevice::ResetPipStream().

◆ RestoreColorSpace()

◆ Resume()

void cVideoRender::Resume ( void  )
inline

◆ SchedulePlaybackStartAtPtsMs()

void cVideoRender::SchedulePlaybackStartAtPtsMs ( int64_t  ptsMs)
inline

◆ ScheduleResyncAtPtsMs()

void cVideoRender::ScheduleResyncAtPtsMs ( int64_t  ptsMs)
inline

Definition at line 224 of file videorender.h.

References m_scheduleResyncAtPtsMs.

Referenced by cSoftHdDevice::OnEventReceived().

◆ ScheduleVideoPlaybackPauseAt()

void cVideoRender::ScheduleVideoPlaybackPauseAt ( int64_t  ptsMs)
inline

Definition at line 182 of file videorender.h.

References m_videoPlaybackPauseScheduledAt.

Referenced by cSoftHdDevice::OnEventReceived().

◆ SetColorSpace()

◆ SetDisplayOneFrameThenPause()

void cVideoRender::SetDisplayOneFrameThenPause ( bool  pause)
inline

Definition at line 222 of file videorender.h.

References m_displayOneFrameThenPause.

Referenced by cSoftHdDevice::Clear(), and cSoftHdDevice::OnLeavingState().

◆ SetEnableHdr()

void cVideoRender::SetEnableHdr ( bool  enable)
inline

Definition at line 211 of file videorender.h.

References m_enableHdr.

Referenced by cSoftHdDevice::SetEnableHdr().

◆ SetFrameFlags()

void cVideoRender::SetFrameFlags ( AVFrame frame,
int  flags 
)
private

Set frame flags.

Parameters
frameAVFrame
flagsFRAME_FLAG_TRICKSPEED and/or FRAME_FLAG_STILLPICTURE

Definition at line 566 of file videorender.cpp.

References LOGFATAL.

◆ SetHdrBlob()

void cVideoRender::SetHdrBlob ( struct hdr_output_metadata  hdrData)
private

Create an hdr blob and set it for the connector.

Parameters
hdrDatahdr metadata

Definition at line 175 of file videorender.cpp.

References cDrmDevice::CreateHdrBlob(), cDrmDevice::DestroyHdrBlob(), cDrmDevice::GetVideoPlaneColorRange(), LOGERROR, m_colorRangeStored, m_originalColorRange, m_pDrmDevice, and cDrmDevice::SetConnectorHdrBlobProperty().

Referenced by SetVideoBuffer().

◆ SetOsdBuffer()

◆ SetPipActive()

void cVideoRender::SetPipActive ( bool  on)
inline

Definition at line 240 of file videorender.h.

References m_pipActive.

Referenced by cSoftHdDevice::SetRenderPipActive().

◆ SetPipBuffer()

int cVideoRender::SetPipBuffer ( cDrmBuffer buf)
private

Modesetting for pip.

Parameters
[in]bufdrm video buffer to display
Return values
1no modesetting was done
0modesetting was done

Definition at line 382 of file videorender.cpp.

References ComputeFittedRect(), cDrmDevice::CrtcId(), cDrmDevice::DisplayHeight(), cDrmDevice::DisplayWidth(), m_pDrmDevice, m_pipActive, m_pipLeftPercent, m_pipScalePercent, m_pipTopPercent, m_videoIsScaled, m_videoRect, and cDrmDevice::PipPlane().

Referenced by CommitBuffer().

◆ SetPipSize()

void cVideoRender::SetPipSize ( bool  useAlt)

◆ SetPlaybackPaused()

void cVideoRender::SetPlaybackPaused ( bool  pause)
inline

◆ SetScheduleAudioResume()

void cVideoRender::SetScheduleAudioResume ( bool  resume)
inline

Definition at line 181 of file videorender.h.

References m_resumeAudioScheduled.

Referenced by cSoftHdDevice::OnEventReceived().

◆ SetScreenSize()

void cVideoRender::SetScreenSize ( int  width,
int  height,
double  refreshRateHz 
)

Wrapper to set the screen size in the device.

Parameters
widthscreen width
heightscreen height
refreshRateHzscreen refresh rate in Hz

Definition at line 1203 of file videorender.cpp.

References m_pDevice, m_refreshRateHz, and cSoftHdDevice::SetScreenSize().

Referenced by cDrmDevice::Init().

◆ SetStillpicture()

void cVideoRender::SetStillpicture ( bool  active)
inline

◆ SetTrickSpeed()

void cVideoRender::SetTrickSpeed ( double  speed,
bool  active,
bool  forward 
)

Set the trickspeed parameters.

Parameters
speedtrick speed value from VDR (0 = normal)
activetrue if trickspeed is active
forwardtrue if forward trick speed, false if backward

Definition at line 1076 of file videorender.cpp.

References L_TRICK, LOGDEBUG2, m_forwardTrickspeed, m_framePresentationCounter, m_trickspeed, and m_trickspeedFactor.

Referenced by cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().

◆ SetVideoBuffer()

int cVideoRender::SetVideoBuffer ( cDrmBuffer buf)
private

Modesetting for video.

Parameters
[in]bufdrm video buffer to display
Return values
1no modesetting was done
0modesetting was done

Definition at line 287 of file videorender.cpp.

References cHdrMetadata::Build(), COLORRANGE_LIMITED, ComputeFittedRect(), cDrmDevice::CrtcId(), cDrmDevice::DisplayHeight(), cDrmDevice::DisplayWidth(), m_enableHdr, m_pDrmDevice, m_pHdrMetadata, m_videoIsScaled, m_videoRect, SetColorSpace(), SetHdrBlob(), and cDrmDevice::VideoPlane().

Referenced by CommitBuffer().

◆ SetVideoClock()

void cVideoRender::SetVideoClock ( int64_t  pts)
inlineprivate

Definition at line 323 of file videorender.h.

References m_pts.

Referenced by PageFlip(), PushFrame(), and Reset().

◆ SetVideoOutputPosition()

void cVideoRender::SetVideoOutputPosition ( const cRect rect)

Set size and position of the video on the screen.

Parameters
recta cRect, where the video should be rendered in

Definition at line 1362 of file videorender.cpp.

References LOGDEBUG, m_videoIsScaled, and m_videoRect.

Referenced by cSoftHdDevice::ScaleVideo().

◆ Stop()

void cVideoRender::Stop ( void  )

Stop the thread.

Definition at line 643 of file videorender.cpp.

References LOGDEBUG.

Referenced by Exit(), and ~cVideoRender().

◆ TriggerGrab()

int cVideoRender::TriggerGrab ( void  )

Trigger a screen grab.

Return values
0on success, grab was triggered
1on timeout, grab was not triggered

Definition at line 1115 of file videorender.cpp.

References LOGWARNING, m_grabCond, and m_startgrab.

Referenced by cSoftHdGrab::Start().

Member Data Documentation

◆ m_bo

struct gbm_bo* cVideoRender::m_bo
private

pointer to current gbm buffer object

Definition at line 314 of file videorender.h.

Referenced by cVideoRender(), OsdClear(), and OsdDrawARGB().

◆ m_bufBlack

cDrmBuffer cVideoRender::m_bufBlack
private

black drm buffer object

Definition at line 287 of file videorender.h.

Referenced by DisplayBlackFrame(), Exit(), and Init().

◆ m_bufferReuseStrategy

std::atomic<cBufferStrategy *> cVideoRender::m_bufferReuseStrategy = nullptr
private

strategy to select drm buffers

Definition at line 301 of file videorender.h.

Referenced by PushMainFrame(), and ResetBufferReuseStrategy().

◆ m_colorRangeStored

bool cVideoRender::m_colorRangeStored = false
private

true, if the original color range was stored

Definition at line 310 of file videorender.h.

Referenced by RestoreColorSpace(), and SetHdrBlob().

◆ m_decodingStrategy

std::atomic<cDecodingStrategy *> cVideoRender::m_decodingStrategy = nullptr
private

strategy for decoding setup

Definition at line 303 of file videorender.h.

Referenced by PushMainFrame(), Reset(), and ResetDecodingStrategy().

◆ m_disableOglOsd

bool cVideoRender::m_disableOglOsd
private

set, if ogl osd is disabled

Definition at line 313 of file videorender.h.

Referenced by cVideoRender(), DisableOglOsd(), EnableOglOsd(), Exit(), Init(), OglOsdDisabled(), OsdClear(), and OsdDrawARGB().

◆ m_displayOneFrameThenPause

std::atomic<bool> cVideoRender::m_displayOneFrameThenPause = false
private

set, if only one frame shall be displayed and then pause playback

Definition at line 294 of file videorender.h.

Referenced by DisplayFrame(), and SetDisplayOneFrameThenPause().

◆ m_drmBufferPool

cDrmBufferPool cVideoRender::m_drmBufferPool
private

pool of drm buffers

Definition at line 299 of file videorender.h.

Referenced by ClearDecoderToDisplayQueue(), and PushMainFrame().

◆ m_drmBufferQueue

cQueue<cDrmBuffer> cVideoRender::m_drmBufferQueue {VIDEO_SURFACES_MAX}
private

queue for DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)

Definition at line 255 of file videorender.h.

Referenced by ClearDecoderToDisplayQueue(), DisplayFrame(), GetFramesFilled(), GetMainOutputBuffer(), IsOutputBufferFull(), LogDroppedDuped(), and PushMainFrame().

◆ m_enableHdr

std::atomic<bool> cVideoRender::m_enableHdr = false
private

hdr is enabled

Definition at line 308 of file videorender.h.

Referenced by SetEnableHdr(), and SetVideoBuffer().

◆ m_eventQueue

std::vector<Event> cVideoRender::m_eventQueue
private

event queue for incoming events

Definition at line 252 of file videorender.h.

Referenced by DisplayFrame(), and ProcessEvents().

◆ m_forwardTrickspeed

std::atomic<bool> cVideoRender::m_forwardTrickspeed = true
private

true, if trickspeed plays forward

Definition at line 259 of file videorender.h.

Referenced by IsForwardTrickspeed(), and SetTrickSpeed().

◆ m_framePresentationCounter

std::atomic<int> cVideoRender::m_framePresentationCounter = 0
private

number of times the current frame has to be shown (for slow-motion)

Definition at line 261 of file videorender.h.

Referenced by DisplayFrame(), and SetTrickSpeed().

◆ m_framesDropped

int cVideoRender::m_framesDropped = 0
private

number of frames dropped

Definition at line 273 of file videorender.h.

Referenced by GetStats(), LogDroppedDuped(), and Reset().

◆ m_framesDuped

int cVideoRender::m_framesDuped = 0
private

number of frames duplicated

Definition at line 272 of file videorender.h.

Referenced by GetStats(), LogDroppedDuped(), and Reset().

◆ m_grabCond

cCondVar cVideoRender::m_grabCond
private

condition gets signalled, if renederer finished to clone the grabbed buffers

Definition at line 266 of file videorender.h.

Referenced by CreateGrabBuffers(), and TriggerGrab().

◆ m_grabOsd

cGrabBuffer cVideoRender::m_grabOsd
private

keeps the current grabbed osd

Definition at line 267 of file videorender.h.

Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedOsdBuffer().

◆ m_grabPip

cGrabBuffer cVideoRender::m_grabPip
private

keeps the current grabbed pip video

Definition at line 269 of file videorender.h.

Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedPipBuffer().

◆ m_grabVideo

cGrabBuffer cVideoRender::m_grabVideo
private

keeps the current grabbed video

Definition at line 268 of file videorender.h.

Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedVideoBuffer().

◆ m_hasDoneHdrModeset

bool cVideoRender::m_hasDoneHdrModeset = false
private

true, if we ever created an hdr blob and did a modesetting

Definition at line 307 of file videorender.h.

Referenced by Exit(), RestoreColorSpace(), and SetColorSpace().

◆ m_lastFrameWasDropped

bool cVideoRender::m_lastFrameWasDropped = false
private

true, if the last frame was dropped

Definition at line 274 of file videorender.h.

Referenced by DisplayFrame().

◆ m_mutex

std::mutex cVideoRender::m_mutex
private

mutex for thread control

Definition at line 251 of file videorender.h.

Referenced by Action(), Halt(), and Resume().

◆ m_numWrongProgressive

int cVideoRender::m_numWrongProgressive
private

counter for progressive frames sent in an interlaced stream (only used for logging)

Definition at line 262 of file videorender.h.

Referenced by Reset().

◆ m_originalColorRange

drmColorRange cVideoRender::m_originalColorRange = COLORRANGE_LIMITED
private

initial color range

Definition at line 309 of file videorender.h.

Referenced by RestoreColorSpace(), and SetHdrBlob().

◆ m_osdShown

bool cVideoRender::m_osdShown = false
private

set, if osd is shown currently

Definition at line 290 of file videorender.h.

Referenced by CommitBuffer(), CreateGrabBuffers(), Init(), OsdClear(), OsdDrawARGB(), and SetOsdBuffer().

◆ m_pAudio

cSoftHdAudio* cVideoRender::m_pAudio
private

pointer to cSoftHdAudio

Definition at line 249 of file videorender.h.

Referenced by DisplayFrame(), and LogDroppedDuped().

◆ m_pBufOsd

cDrmBuffer* cVideoRender::m_pBufOsd = nullptr
private

pointer to osd drm buffer object

Definition at line 286 of file videorender.h.

Referenced by CreateGrabBuffers(), DisplayFrame(), Exit(), Init(), OsdClear(), OsdDrawARGB(), and SetOsdBuffer().

◆ m_pConfig

cSoftHdConfig* cVideoRender::m_pConfig
private

pointer to cSoftHdConfig

Definition at line 250 of file videorender.h.

Referenced by cVideoRender(), and SetPipSize().

◆ m_pCurrentlyDisplayed

cDrmBuffer* cVideoRender::m_pCurrentlyDisplayed = nullptr
private

pointer to currently displayed DRM buffer

Definition at line 288 of file videorender.h.

Referenced by ClearDecoderToDisplayQueue(), CommitBuffer(), CreateGrabBuffers(), DisplayBlackFrame(), and DisplayFrame().

◆ m_pCurrentlyPipDisplayed

cDrmBuffer* cVideoRender::m_pCurrentlyPipDisplayed = nullptr
private

pointer to currently displayed DRM buffer

Definition at line 289 of file videorender.h.

Referenced by ClearPipDecoderToDisplayQueue(), CommitBuffer(), CreateGrabBuffers(), and DisplayFrame().

◆ m_pDevice

cSoftHdDevice* cVideoRender::m_pDevice
private

pointer to cSoftHdDevice

Definition at line 248 of file videorender.h.

Referenced by DisplayFrame(), Init(), LogDroppedDuped(), and SetScreenSize().

◆ m_pDrmDevice

◆ m_pEventReceiver

IEventReceiver* cVideoRender::m_pEventReceiver
private

pointer to event receiver

Definition at line 298 of file videorender.h.

Referenced by ProcessEvents().

◆ m_pHdrMetadata

cHdrMetadata cVideoRender::m_pHdrMetadata
private

hdr metadata object

Definition at line 306 of file videorender.h.

Referenced by SetColorSpace(), and SetVideoBuffer().

◆ m_pipActive

std::atomic<bool> cVideoRender::m_pipActive = false
private

true, if pip should be displayed

Definition at line 319 of file videorender.h.

Referenced by SetPipActive(), and SetPipBuffer().

◆ m_pipBufferReuseStrategy

std::atomic<cBufferStrategy *> cVideoRender::m_pipBufferReuseStrategy = nullptr
private

strategy to select drm buffers

Definition at line 302 of file videorender.h.

Referenced by PushPipFrame(), and ResetPipBufferReuseStrategy().

◆ m_pipDecodingStrategy

std::atomic<cDecodingStrategy *> cVideoRender::m_pipDecodingStrategy = nullptr
private

strategy for decoding setup

Definition at line 304 of file videorender.h.

Referenced by PushPipFrame(), and ResetPipDecodingStrategy().

◆ m_pipDrmBufferPool

cDrmBufferPool cVideoRender::m_pipDrmBufferPool
private

PIP pool of drm buffers.

Definition at line 300 of file videorender.h.

Referenced by ClearPipDecoderToDisplayQueue(), and PushPipFrame().

◆ m_pipDrmBufferQueue

cQueue<cDrmBuffer> cVideoRender::m_pipDrmBufferQueue {VIDEO_SURFACES_MAX}
private

queue for PIP DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)

Definition at line 256 of file videorender.h.

Referenced by ClearPipDecoderToDisplayQueue(), DisplayFrame(), GetPipOutputBuffer(), and PushPipFrame().

◆ m_pipLeftPercent

int cVideoRender::m_pipLeftPercent
private

left margin for pip

Definition at line 282 of file videorender.h.

Referenced by SetPipBuffer(), and SetPipSize().

◆ m_pipScalePercent

int cVideoRender::m_pipScalePercent
private

scale factor for pip

Definition at line 281 of file videorender.h.

Referenced by SetPipBuffer(), and SetPipSize().

◆ m_pipTopPercent

int cVideoRender::m_pipTopPercent
private

top margin for pip

Definition at line 283 of file videorender.h.

Referenced by SetPipBuffer(), and SetPipSize().

◆ m_pNextBo

struct gbm_bo* cVideoRender::m_pNextBo
private

pointer to next gbm buffer object (for later free)

Definition at line 316 of file videorender.h.

Referenced by cVideoRender(), Exit(), OsdClear(), and OsdDrawARGB().

◆ m_pOldBo

struct gbm_bo* cVideoRender::m_pOldBo
private

pointer to old gbm buffer object (for later free)

Definition at line 315 of file videorender.h.

Referenced by cVideoRender(), Exit(), OsdClear(), and OsdDrawARGB().

◆ m_pts

std::atomic<int64_t> cVideoRender::m_pts = AV_NOPTS_VALUE
private

current video PTS

Definition at line 277 of file videorender.h.

Referenced by GetVideoClock(), and SetVideoClock().

◆ m_refreshRateHz

double cVideoRender::m_refreshRateHz
private

screen refresh rate in Hz

Definition at line 253 of file videorender.h.

Referenced by GetFramePresentationCount(), and SetScreenSize().

◆ m_resumeAudioScheduled

std::atomic<bool> cVideoRender::m_resumeAudioScheduled = false
private

set, if audio resume is scheduled after a pause

Definition at line 292 of file videorender.h.

Referenced by DisplayFrame(), and SetScheduleAudioResume().

◆ m_schedulePlaybackStartAtPtsMs

std::atomic<int64_t> cVideoRender::m_schedulePlaybackStartAtPtsMs = AV_NOPTS_VALUE
private

if set, frames with PTS older than this will be dropped

Definition at line 295 of file videorender.h.

Referenced by DisplayFrame(), and SchedulePlaybackStartAtPtsMs().

◆ m_scheduleResyncAtPtsMs

std::atomic<int64_t> cVideoRender::m_scheduleResyncAtPtsMs = AV_NOPTS_VALUE
private

if set, a resync (enter state BUFFERING) will be forced at the given pts

Definition at line 296 of file videorender.h.

Referenced by DisplayFrame(), and ScheduleResyncAtPtsMs().

◆ m_startCounter

int cVideoRender::m_startCounter = 0
private

counter for displayed frames, indicates a video start

Definition at line 271 of file videorender.h.

Referenced by DisplayFrame(), GetStats(), Reset(), and ResetFrameCounter().

◆ m_startgrab

bool cVideoRender::m_startgrab = false
private

internal flag to trigger grabbing

Definition at line 265 of file videorender.h.

Referenced by CreateGrabBuffers(), and TriggerGrab().

◆ m_stillpicture

std::atomic<bool> cVideoRender::m_stillpicture = false
private

true, if stillpicture is active

Definition at line 260 of file videorender.h.

Referenced by IsStillpicture(), and SetStillpicture().

◆ m_timebase

AVRational cVideoRender::m_timebase
private

timebase used for pts, set by first RenderFrame()

Definition at line 275 of file videorender.h.

Referenced by cVideoRender(), DisplayFrame(), GetOutputPtsMs(), and PtsToMs().

◆ m_timebaseMutex

std::mutex cVideoRender::m_timebaseMutex
private

mutex used around m_timebase

Definition at line 276 of file videorender.h.

Referenced by GetOutputPtsMs(), and PtsToMs().

◆ m_trickspeed

std::atomic<bool> cVideoRender::m_trickspeed = false
private

true, if trickspeed is active

Definition at line 258 of file videorender.h.

Referenced by IsTrickSpeed(), and SetTrickSpeed().

◆ m_trickspeedFactor

std::atomic<double> cVideoRender::m_trickspeedFactor = 0
private

current trick speed

Definition at line 257 of file videorender.h.

Referenced by GetFramePresentationCount(), and SetTrickSpeed().

◆ m_videoIsScaled

bool cVideoRender::m_videoIsScaled = false
private

true, if the currently displayed video is scaled

Definition at line 280 of file videorender.h.

Referenced by DisplayFrame(), SetPipBuffer(), SetVideoBuffer(), and SetVideoOutputPosition().

◆ m_videoPlaybackPaused

std::atomic<bool> cVideoRender::m_videoPlaybackPaused = true
private

set, if playback is frozen (used for pause)

Definition at line 291 of file videorender.h.

Referenced by DisplayFrame(), and SetPlaybackPaused().

◆ m_videoPlaybackPauseScheduledAt

std::atomic<int64_t> cVideoRender::m_videoPlaybackPauseScheduledAt = AV_NOPTS_VALUE
private

if set, video will be paused at the given pts

Definition at line 293 of file videorender.h.

Referenced by DisplayFrame(), and ScheduleVideoPlaybackPauseAt().

◆ m_videoRect

cRect cVideoRender::m_videoRect
private

rect of the currently displayed video

Definition at line 279 of file videorender.h.

Referenced by SetPipBuffer(), SetVideoBuffer(), and SetVideoOutputPosition().


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