vdr-plugin-softhddevice-drm-gles 1.6.2
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)
 
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)
 
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)
 
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 140 of file videorender.h.

Member Function Documentation

◆ DisableOglOsd()

void cVideoRender::DisableOglOsd ( void  )
inline

Definition at line 207 of file videorender.h.

References m_disableOglOsd.

Referenced by cSoftHdDevice::SetDisableOglOsd().

◆ EglContext()

EGLContext cVideoRender::EglContext ( void  )
inline

Definition at line 212 of file videorender.h.

References cDrmDevice::EglContext(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EglDisplay()

EGLDisplay cVideoRender::EglDisplay ( void  )
inline

Definition at line 211 of file videorender.h.

References cDrmDevice::EglDisplay(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EglSurface()

EGLSurface cVideoRender::EglSurface ( void  )
inline

Definition at line 210 of file videorender.h.

References cDrmDevice::EglSurface(), and m_pDrmDevice.

Referenced by cOglThread::eglAcquireContext().

◆ EnableOglOsd()

void cVideoRender::EnableOglOsd ( void  )
inline

Definition at line 208 of file videorender.h.

References m_disableOglOsd.

Referenced by cSoftHdDevice::SetEnableOglOsd().

◆ GetFramesFilled()

int cVideoRender::GetFramesFilled ( void  )
inline

Definition at line 192 of file videorender.h.

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

◆ GetGrabbedOsdBuffer()

cGrabBuffer * cVideoRender::GetGrabbedOsdBuffer ( void  )
inline

Definition at line 182 of file videorender.h.

References m_grabOsd.

Referenced by cSoftHdGrab::GetGrab().

◆ GetGrabbedPipBuffer()

cGrabBuffer * cVideoRender::GetGrabbedPipBuffer ( void  )
inline

Definition at line 183 of file videorender.h.

References m_grabPip.

Referenced by cSoftHdGrab::GetGrab().

◆ GetGrabbedVideoBuffer()

cGrabBuffer * cVideoRender::GetGrabbedVideoBuffer ( void  )
inline

Definition at line 181 of file videorender.h.

References m_grabVideo.

Referenced by cSoftHdGrab::GetGrab().

◆ GetMainOutputBuffer()

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

Definition at line 202 of file videorender.h.

References m_drmBufferQueue.

Referenced by cSoftHdDevice::OnLeavingState().

◆ GetPipOutputBuffer()

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

Definition at line 203 of file videorender.h.

References m_pipDrmBufferQueue.

Referenced by cSoftHdDevice::OnLeavingState().

◆ GetVideoClock()

int64_t cVideoRender::GetVideoClock ( void  )
inline

Definition at line 153 of file videorender.h.

References m_pts.

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

◆ GlInitiated()

int cVideoRender::GlInitiated ( void  )
inline

Definition at line 213 of file videorender.h.

References cDrmDevice::GlInitiated(), and m_pDrmDevice.

Referenced by cOglThread::InitOpenGL().

◆ Halt()

void cVideoRender::Halt ( void  )
inline

Definition at line 148 of file videorender.h.

References m_mutex.

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

◆ IsForwardTrickspeed()

bool cVideoRender::IsForwardTrickspeed ( void  )
inline

Definition at line 174 of file videorender.h.

References m_forwardTrickspeed.

Referenced by cVideoStream::CheckForcingFrameDecode().

◆ IsStillpicture()

bool cVideoRender::IsStillpicture ( void  )
inline

Definition at line 176 of file videorender.h.

References m_stillpicture.

Referenced by DisplayFrame().

◆ IsTrickSpeed()

bool cVideoRender::IsTrickSpeed ( void  )
inline

◆ OglOsdDisabled()

bool cVideoRender::OglOsdDisabled ( void  )
inline

Definition at line 209 of file videorender.h.

References m_disableOglOsd.

Referenced by cDrmDevice::Init().

◆ ResetBufferReuseStrategy()

void cVideoRender::ResetBufferReuseStrategy ( )
inline

◆ ResetDecodingStrategy()

void cVideoRender::ResetDecodingStrategy ( )
inline

Definition at line 163 of file videorender.h.

References m_decodingStrategy.

Referenced by cSoftHdDevice::OnEnteringState().

◆ ResetPipBufferReuseStrategy()

void cVideoRender::ResetPipBufferReuseStrategy ( )
inline

Definition at line 164 of file videorender.h.

References m_pipBufferReuseStrategy.

Referenced by cSoftHdDevice::ResetPipStream().

◆ ResetPipDecodingStrategy()

void cVideoRender::ResetPipDecodingStrategy ( )
inline

Definition at line 165 of file videorender.h.

References m_pipDecodingStrategy.

Referenced by cSoftHdDevice::ResetPipStream().

◆ 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 201 of file videorender.h.

References m_scheduleResyncAtPtsMs.

Referenced by cSoftHdDevice::OnEventReceived().

◆ ScheduleVideoPlaybackPauseAt()

void cVideoRender::ScheduleVideoPlaybackPauseAt ( int64_t  ptsMs)
inline

Definition at line 159 of file videorender.h.

References m_videoPlaybackPauseScheduledAt.

Referenced by cSoftHdDevice::OnEventReceived().

◆ SetDisplayOneFrameThenPause()

void cVideoRender::SetDisplayOneFrameThenPause ( bool  pause)
inline

Definition at line 199 of file videorender.h.

References m_displayOneFrameThenPause.

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

◆ SetEnableHdr()

void cVideoRender::SetEnableHdr ( bool  enable)
inline

Definition at line 188 of file videorender.h.

References m_enableHdr.

Referenced by cSoftHdDevice::SetEnableHdr().

◆ SetPipActive()

void cVideoRender::SetPipActive ( bool  on)
inline

Definition at line 217 of file videorender.h.

References m_pipActive.

Referenced by cSoftHdDevice::SetRenderPipActive().

◆ SetPlaybackPaused()

void cVideoRender::SetPlaybackPaused ( bool  pause)
inline

◆ SetScheduleAudioResume()

void cVideoRender::SetScheduleAudioResume ( bool  resume)
inline

Definition at line 158 of file videorender.h.

References m_resumeAudioScheduled.

Referenced by cSoftHdDevice::OnEventReceived().

◆ SetStillpicture()

void cVideoRender::SetStillpicture ( bool  active)
inline

◆ SetVideoClock()

void cVideoRender::SetVideoClock ( int64_t  pts)
inlineprivate

Definition at line 300 of file videorender.h.

References m_pts.

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

Member Data Documentation

◆ m_bo

struct gbm_bo* cVideoRender::m_bo
private

pointer to current gbm buffer object

Definition at line 291 of file videorender.h.

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

◆ m_bufBlack

cDrmBuffer cVideoRender::m_bufBlack
private

black drm buffer object

Definition at line 264 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 278 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 287 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 280 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 290 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 271 of file videorender.h.

Referenced by DisplayFrame(), and SetDisplayOneFrameThenPause().

◆ m_drmBufferPool

cDrmBufferPool cVideoRender::m_drmBufferPool
private

pool of drm buffers

Definition at line 276 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 232 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 285 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 229 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 236 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 238 of file videorender.h.

Referenced by DisplayFrame(), and SetTrickSpeed().

◆ m_framesDropped

int cVideoRender::m_framesDropped = 0
private

number of frames dropped

Definition at line 250 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 249 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 243 of file videorender.h.

Referenced by CreateGrabBuffers(), and TriggerGrab().

◆ m_grabOsd

cGrabBuffer cVideoRender::m_grabOsd
private

keeps the current grabbed osd

Definition at line 244 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 246 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 245 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 284 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 251 of file videorender.h.

Referenced by DisplayFrame().

◆ m_mutex

std::mutex cVideoRender::m_mutex
private

mutex for thread control

Definition at line 228 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 239 of file videorender.h.

Referenced by Reset().

◆ m_originalColorRange

drmColorRange cVideoRender::m_originalColorRange = COLORRANGE_LIMITED
private

initial color range

Definition at line 286 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 267 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 226 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 263 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 227 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 265 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 266 of file videorender.h.

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

◆ m_pDevice

cSoftHdDevice* cVideoRender::m_pDevice
private

pointer to cSoftHdDevice

Definition at line 225 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 275 of file videorender.h.

Referenced by ProcessEvents().

◆ m_pHdrMetadata

cHdrMetadata cVideoRender::m_pHdrMetadata
private

hdr metadata object

Definition at line 283 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 296 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 279 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 281 of file videorender.h.

Referenced by PushPipFrame(), and ResetPipDecodingStrategy().

◆ m_pipDrmBufferPool

cDrmBufferPool cVideoRender::m_pipDrmBufferPool
private

PIP pool of drm buffers.

Definition at line 277 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 233 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 259 of file videorender.h.

Referenced by SetPipBuffer(), and SetPipSize().

◆ m_pipScalePercent

int cVideoRender::m_pipScalePercent
private

scale factor for pip

Definition at line 258 of file videorender.h.

Referenced by SetPipBuffer(), and SetPipSize().

◆ m_pipTopPercent

int cVideoRender::m_pipTopPercent
private

top margin for pip

Definition at line 260 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 293 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 292 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 254 of file videorender.h.

Referenced by GetVideoClock(), and SetVideoClock().

◆ m_refreshRateHz

double cVideoRender::m_refreshRateHz
private

screen refresh rate in Hz

Definition at line 230 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 269 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 272 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 273 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 248 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 242 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 237 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 252 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 253 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 235 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 234 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 257 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 268 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 270 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 256 of file videorender.h.

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


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