|
vdr-plugin-softhddevice-drm-gles 1.6.7
|
Video Renderer. More...
#include <videorender.h>
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 | InitBuffers (void) |
| Init the osd and black buffer. | |
| void | DeleteBuffers (void) |
| Delete the osd and black buffer. | |
| void | CreateGrabBuffers (bool) |
| Copy current video, osd and pip buffers to dedicated grabbing buffers. | |
| bool | FrameDropNecessary (int64_t, int64_t) |
| Do the AV Sync. | |
| 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 *, bool) |
| 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 (void) |
| Restore color space, color encoding and color range to BT709 and the original color range. | |
Private Attributes | |
| cSoftHdDevice * | m_pDevice |
| pointer to cSoftHdDevice | |
| cSoftHdAudio * | m_pAudio |
| pointer to cSoftHdAudio | |
| cSoftHdConfig * | m_pConfig |
| pointer to cSoftHdConfig | |
| std::mutex | m_mutex |
| mutex for thread control | |
| std::vector< Event > | m_eventQueue |
| event queue for incoming events | |
| std::atomic< double > | m_refreshRateHz |
| screen refresh rate in Hz | |
| cQueue< cDrmBuffer > | m_drmBufferQueue {VIDEO_SURFACES_MAX} |
| queue for DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h) | |
| cQueue< cDrmBuffer > | m_pipDrmBufferQueue {VIDEO_SURFACES_MAX} |
| queue for PIP DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h) | |
| std::atomic< double > | m_trickspeedFactor = 0 |
| current trick speed | |
| std::atomic< bool > | m_trickspeed = false |
| true, if trickspeed is active | |
| std::atomic< bool > | m_forwardTrickspeed = true |
| true, if trickspeed plays forward | |
| std::atomic< bool > | m_stillpicture = false |
| true, if stillpicture is active | |
| std::atomic< int > | m_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) | |
| std::atomic< 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_t > | m_pts = AV_NOPTS_VALUE |
| current video PTS | |
| std::mutex | m_grabMutex |
| mutex around grabbing | |
| 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 | |
| cDrmDevice * | m_pDrmDevice |
| pointer cDrmDevice object | |
| cDrmBuffer * | m_pBufOsd = nullptr |
| pointer to osd drm buffer object | |
| cDrmBuffer | m_bufBlack |
| black drm buffer object | |
| cDrmBuffer * | m_pCurrentlyDisplayed = nullptr |
| pointer to currently displayed DRM buffer | |
| cDrmBuffer * | m_pCurrentlyPipDisplayed = nullptr |
| pointer to currently displayed DRM buffer | |
| bool | m_osdShown = false |
| set, if osd is shown currently | |
| std::atomic< bool > | m_videoPlaybackPaused = true |
| set, if playback is frozen (used for pause) | |
| std::atomic< bool > | m_resumeAudioScheduled = false |
| set, if audio resume is scheduled after a pause | |
| std::atomic< int64_t > | m_videoPlaybackPauseScheduledAt = AV_NOPTS_VALUE |
| if set, video will be paused at the given pts | |
| std::atomic< bool > | m_displayOneFrameThenPause = false |
| set, if only one frame shall be displayed and then pause playback | |
| std::atomic< int64_t > | m_schedulePlaybackStartAtPtsMs = AV_NOPTS_VALUE |
| if set, frames with PTS older than this will be dropped | |
| std::atomic< int64_t > | m_scheduleResyncAtPtsMs = AV_NOPTS_VALUE |
| if set, a resync (enter state BUFFERING) will be forced at the given pts | |
| IEventReceiver * | m_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 | |
| int | m_framesPerFlipCycle = 1 |
| number of pageflips over which a single video frame should be presented 1 in progressive display mode 2 in interlaced display mode, to skip the sync and present an (interleaved) frame 2 times | |
| int | m_flipCounter = 0 |
| page flip counter | |
| cHdrMetadata | m_pHdrMetadata |
| hdr metadata object | |
| bool | m_hasDoneHdrModeset = false |
| true, if we ever created an hdr blob and did a modesetting | |
| std::atomic< bool > | m_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_bo * | m_bo |
| pointer to current gbm buffer object | |
| struct gbm_bo * | m_pOldBo |
| pointer to old gbm buffer object (for later free) | |
| struct gbm_bo * | m_pNextBo |
| pointer to next gbm buffer object (for later free) | |
| std::atomic< bool > | m_pipActive = false |
| true, if pip should be displayed | |
Static Private Attributes | |
| static constexpr int | AV_SYNC_THRESHOLD_AUDIO_BEHIND_VIDEO_MS = 20 |
| Sync Corridor. | |
| static constexpr int | AV_SYNC_THRESHOLD_AUDIO_AHEAD_VIDEO_MS = 20 |
| threshold in ms, when to drop video frames to keep audio and video in sync | |
Video Renderer.
This part is responsible to put all the parts together and display them on the screen
Definition at line 160 of file videorender.h.
| cVideoRender::cVideoRender | ( | cSoftHdDevice * | device | ) |
Create the video renderer.
| device | pointer 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 | ( | void | ) |
Destroy the video renderer.
Definition at line 84 of file videorender.cpp.
References L_DRM, LOGDEBUG2, m_pDrmDevice, and Stop().
Thread loop, which tries to display frames and processes events.
Definition at line 614 of file videorender.cpp.
References DisplayFrame(), LOGDEBUG, m_mutex, and ProcessEvents().
Return true, if the device can handle HDR.
Definition at line 849 of file videorender.cpp.
References cDrmDevice::CanHandleHdr(), and m_pDrmDevice.
Referenced by cHdrMetadata::Build().
Wrapper to check, if drm can handle the display mode.
| mode | display mode |
Definition at line 1265 of file videorender.cpp.
References cDrmDevice::CanHandleMode(), and m_pDrmDevice.
Referenced by cVideoStream::RenderFrame(), and cSoftHdDevice::SetDisplayMode().
Clear (empty) the decoder to display queue.
Definition at line 96 of file videorender.cpp.
References cQueue< T >::Clear(), cDrmBufferPool::DestroyAllExcept(), m_drmBufferPool, m_drmBufferQueue, m_pCurrentlyDisplayed, and cDrmBuffer::SetDestroyAfterUse().
Referenced by cSoftHdDevice::Clear(), and cSoftHdDevice::OnEnteringState().
Clear the grab drm buffers.
Definition at line 1196 of file videorender.cpp.
References cGrabBuffer::Clear(), m_grabMutex, m_grabOsd, m_grabPip, and m_grabVideo.
Referenced by cSoftHdGrab::Finish(), and cSoftHdGrab::Start().
Clear (empty) the decoder to display queue.
Definition at line 108 of file videorender.cpp.
References cQueue< T >::Clear(), cDrmBufferPool::DestroyAllExcept(), m_pCurrentlyPipDisplayed, m_pipDrmBufferPool, and m_pipDrmBufferQueue.
Referenced by cSoftHdDevice::ResetPipStream().
|
private |
Commit the frame to the hardware.
| buf | video drm buffer |
| 0 | modesetting and commit was done, need to process outstanding DRM events |
| -1 | no modesetting and commit was done |
Definition at line 429 of file videorender.cpp.
References LOGERROR, 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().
Copy current video, osd and pip buffers to dedicated grabbing buffers.
| grabPip | true, if the pip buffer should be grabbed |
Definition at line 1166 of file videorender.cpp.
References L_GRAB, LOGDEBUG2, m_grabCond, m_grabMutex, m_grabOsd, m_grabPip, m_grabVideo, m_osdShown, m_pBufOsd, m_pCurrentlyDisplayed, m_pCurrentlyPipDisplayed, m_startgrab, and cGrabBuffer::Set().
Referenced by DisplayFrame().
Delete the osd and black buffer.
The GBM bo (GLES OSD) are also destroyed here
Definition at line 1437 of file videorender.cpp.
References cDrmBuffer::Destroy(), m_bufBlack, m_disableOglOsd, m_pBufOsd, m_pNextBo, and m_pOldBo.
Referenced by Exit().
Definition at line 231 of file videorender.h.
References m_disableOglOsd.
Referenced by cSoftHdDevice::SetDisableOglOsd().
Display a black video frame.
Definition at line 815 of file videorender.cpp.
References cDrmBuffer::Destroy(), cDrmBuffer::frame, L_DRM, LOGDEBUG2, m_bufBlack, m_pCurrentlyDisplayed, and PageFlip().
Referenced by cSoftHdDevice::OnEnteringState().
Display the frame (video and/or osd)
Definition at line 713 of file videorender.cpp.
References AV_NOPTS_VALUE, cSoftHdConfig::ConfigShowChannelSwitchDurationMessage, CreateGrabBuffers(), cSoftHdAudio::DropSamplesOlderThanPtsMs(), cDrmBuffer::frame, FrameDropNecessary(), cVideoStream::GetAvPacketsFilled(), cSoftHdDevice::GetChannelSwitchFirstPacketTime(), cSoftHdDevice::GetChannelSwitchStartTime(), GetFramePresentationCount(), cSoftHdAudio::GetHardwareOutputPtsMs(), cSoftHdDevice::IsBufferingThresholdReached(), cDrmBuffer::IsDirty(), cQueue< T >::IsEmpty(), IsStillpicture(), IsTrickSpeed(), cSoftHdDevice::IsVideoOnlyPlayback(), LOGDEBUG, m_displayOneFrameThenPause, m_drmBufferQueue, m_eventQueue, m_flipCounter, m_framePresentationCounter, m_framesPerFlipCycle, m_lastFrameWasDropped, m_pAudio, m_pBufOsd, m_pConfig, m_pCurrentlyDisplayed, m_pCurrentlyPipDisplayed, m_pDevice, m_pipDrmBufferQueue, m_schedulePlaybackStartAtPtsMs, m_startCounter, m_timebase, m_videoIsScaled, m_videoPlaybackPaused, m_videoPlaybackPauseScheduledAt, PageFlip(), cQueue< T >::Pop(), cDrmBuffer::PresentationFinished(), PtsToMs(), VIDEO, and cSoftHdDevice::VideoStream().
Referenced by Action().
Wrapper for drmHandleEvent()
Definition at line 841 of file videorender.cpp.
References cDrmDevice::HandleEvent(), and m_pDrmDevice.
|
inline |
Definition at line 236 of file videorender.h.
References cDrmDevice::EglContext(), and m_pDrmDevice.
Referenced by cOglThread::eglAcquireContext().
|
inline |
Definition at line 235 of file videorender.h.
References cDrmDevice::EglDisplay(), and m_pDrmDevice.
Referenced by cOglThread::eglAcquireContext().
|
inline |
Definition at line 234 of file videorender.h.
References cDrmDevice::EglSurface(), and m_pDrmDevice.
Referenced by cOglThread::eglAcquireContext().
Definition at line 232 of file videorender.h.
References m_disableOglOsd.
Referenced by cSoftHdDevice::SetEnableOglOsd().
Exit and cleanup the renderer.
Definition at line 1463 of file videorender.cpp.
References cDrmDevice::Close(), DeleteBuffers(), cDrmPlane::FreeProperties(), LOGDEBUG, m_hasDoneHdrModeset, m_pDrmDevice, cDrmDevice::OsdPlane(), Reset(), RestoreColorSpace(), cDrmDevice::RestoreCrtc(), Stop(), and cDrmDevice::VideoPlane().
Referenced by cSoftHdDevice::OnEnteringState().
Do the AV Sync.
| audioPtsMs | audio pts |
| videoPtsMs | video pts |
Definition at line 654 of file videorender.cpp.
References AV_NOPTS_VALUE, AV_SYNC_THRESHOLD_AUDIO_AHEAD_VIDEO_MS, AV_SYNC_THRESHOLD_AUDIO_BEHIND_VIDEO_MS, cSoftHdAudio::GetAvResyncBorderMs(), cSoftHdDevice::GetVideoAudioDelayMs(), cSoftHdAudio::IsPaused(), L_AV_SYNC, LOGDEBUG2, LogDroppedDuped(), m_displayOneFrameThenPause, m_eventQueue, m_framePresentationCounter, m_lastFrameWasDropped, m_pAudio, m_pDevice, m_resumeAudioScheduled, m_scheduleResyncAtPtsMs, m_startCounter, m_videoPlaybackPauseScheduledAt, PtsToMs(), cSoftHdAudio::SetPaused(), and Timestamp2String().
Referenced by DisplayFrame().
Get frame flags.
| frame | AVFrame |
Definition at line 543 of file videorender.cpp.
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.
| interFrameGapMs | inter-frame gap in ms |
| number | of times the current frame shall be presented |
Definition at line 1119 of file videorender.cpp.
References IsTrickSpeed(), m_refreshRateHz, and m_trickspeedFactor.
Referenced by DisplayFrame().
Definition at line 216 of file videorender.h.
References m_drmBufferQueue, and cQueue< T >::Size().
|
inline |
Definition at line 206 of file videorender.h.
References m_grabOsd.
Referenced by cSoftHdGrab::GetGrabbedOsdData().
|
inline |
Definition at line 207 of file videorender.h.
References m_grabPip.
Referenced by cSoftHdGrab::GetGrabbedPipData().
|
inline |
Definition at line 205 of file videorender.h.
References m_grabVideo.
Referenced by cSoftHdGrab::GetGrabbedVideoData().
|
inline |
Definition at line 226 of file videorender.h.
References m_drmBufferQueue.
Referenced by cSoftHdDevice::OnLeavingState().
Get the output PTS in milliseconds.
Returns the presentation timestamp of the next frame to be displayed.
Definition at line 1061 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().
|
inline |
Definition at line 227 of file videorender.h.
References m_pipDrmBufferQueue.
Referenced by cSoftHdDevice::OnLeavingState().
Get some rendering statistics.
| [out] | duped | number of duplicated frames |
| [out] | dropped | number of dropped frames |
| [out] | counter | number of decoded frames |
Definition at line 1212 of file videorender.cpp.
References m_framesDropped, m_framesDuped, and m_startCounter.
Referenced by cSoftHdDevice::GetStats().
Definition at line 177 of file videorender.h.
References m_pts.
Referenced by GetOutputPtsMs(), cSoftHdDevice::GetSTC(), and PushFrame().
Definition at line 237 of file videorender.h.
References cDrmDevice::GlInitiated(), and m_pDrmDevice.
Referenced by cOglThread::InitOpenGL().
Definition at line 169 of file videorender.h.
References m_mutex.
Referenced by cSoftHdDevice::Clear(), cSoftHdDevice::OnEventReceived(), cSoftHdDevice::ResetPipStream(), cSoftHdDevice::SetRenderPipActive(), and cSoftHdDevice::SetRenderPipSize().
Initialize the renderer.
Definition at line 1336 of file videorender.cpp.
References cDrmDevice::CreateModeBlob(), cDrmDevice::CrtcId(), cDrmDevice::DestroyModeBlob(), cDrmDevice::DisplayHeight(), cDrmDevice::DisplayWidth(), cDrmDevice::HasPipPlane(), cDrmBuffer::Height(), cDrmBuffer::Id(), cDrmDevice::Init(), InitBuffers(), cDrmDevice::InitEGL(), cDrmDevice::InitEvent(), cDrmDevice::InitGbm(), LOGFATAL, m_bufBlack, m_disableOglOsd, m_osdShown, m_pBufOsd, m_pDevice, m_pDrmDevice, cDrmDevice::ModeAtomicAlloc(), cDrmDevice::ModeAtomicCommit(), cDrmDevice::ModeAtomicFree(), cDrmDevice::OsdPlane(), cDrmDevice::SaveCrtc(), cDrmDevice::SetConnectorCrtcId(), cDrmDevice::SetCrtcActive(), cDrmDevice::SetCrtcModeId(), cSoftHdDevice::SetDrmCanDisplayPip(), cDrmDevice::UseZpos(), cDrmDevice::VideoPlane(), cDrmBuffer::Width(), cDrmDevice::ZposOverlay(), and cDrmDevice::ZposPrimary().
Referenced by cSoftHdDevice::OnLeavingState().
Init the osd and black buffer.
The osd buffer is only created in non-GLES mode
Size of the black buffer: Initial (default) display size Size of the osd buffer: User requested size (if set as commandline arg) or initial (default) display size
Definition at line 1278 of file videorender.cpp.
References cDrmDevice::DisplayHeight(), cDrmDevice::DisplayWidth(), cDrmDevice::Fd(), cDrmBuffer::FillBlack(), L_DRM, LOGDEBUG2, m_bufBlack, m_disableOglOsd, m_pBufOsd, m_pDrmDevice, cDrmDevice::OsdHeight(), cDrmDevice::OsdWidth(), and cDrmBuffer::Setup().
Referenced by Init().
Definition at line 198 of file videorender.h.
References m_forwardTrickspeed.
Referenced by cVideoStream::CheckForcingFrameDecode().
Check, if the main render output buffer is full.
| true | render output buffer is full |
Definition at line 982 of file videorender.cpp.
References cQueue< T >::IsFull(), and m_drmBufferQueue.
Referenced by cSoftHdDevice::IsBufferingThresholdReached().
Definition at line 200 of file videorender.h.
References m_stillpicture.
Referenced by DisplayFrame().
Definition at line 197 of file videorender.h.
References m_trickspeed.
Referenced by cVideoStream::DecodeInput(), DisplayFrame(), GetFramePresentationCount(), PushMainFrame(), and ResetFrameCounter().
|
private |
Log A/V sync debug message.
| audioPtsMs | audio pts |
| videoPtsMs | video pts |
| audioBehindVideoByMs | audio is behind video by this many ms |
Definition at line 508 of file videorender.cpp.
References AV_SYNC_THRESHOLD_AUDIO_AHEAD_VIDEO_MS, AV_SYNC_THRESHOLD_AUDIO_BEHIND_VIDEO_MS, cVideoStream::GetAvPacketsFilled(), cSoftHdAudio::GetHardwareOutputDelayMs(), cSoftHdAudio::GetInputPtsMs(), cSoftHdAudio::GetUsedRingbufferBytes(), cSoftHdAudio::GetUsedRingbufferMs(), cSoftHdDevice::GetVideoAudioDelayMs(), L_AV_SYNC, LOGDEBUG2, m_drmBufferQueue, m_framesDropped, m_framesDuped, m_pAudio, m_pDevice, m_startCounter, cQueue< T >::Size(), Timestamp2String(), and cSoftHdDevice::VideoStream().
Referenced by FrameDropNecessary().
Definition at line 233 of file videorender.h.
References m_disableOglOsd.
Clear the OSD (draw an empty/ transparent OSD)
Definition at line 861 of file videorender.cpp.
References EGL_CHECK, cDrmDevice::EglDisplay(), cDrmDevice::EglSurface(), cDrmDevice::GbmSurface(), cDrmDevice::GetBufFromBo(), cDrmBuffer::Height(), L_OPENGL, LOGDEBUG2, LOGERROR, m_bo, m_disableOglOsd, m_osdShown, m_pBufOsd, m_pDrmDevice, m_pNextBo, m_pOldBo, cDrmBuffer::MarkDirty(), cDrmBuffer::Pitch(), and cDrmBuffer::Plane().
Referenced by cSoftHdDevice::OsdClose().
| 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.
| xi | x-coordinate in argb image |
| yi | y-coordinate in argb image |
| height | height in pixel in argb image |
| width | width in pixel in argb image |
| pitch | pitch of argb image |
| argb | 32bit ARGB image data |
| x | x-coordinate on screen of argb image |
| y | y-coordinate on screen of argb image |
Definition at line 915 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().
|
private |
Do the pageflip.
| buf | drm buffer |
| pipBuf | drm pip buffer |
Definition at line 579 of file videorender.cpp.
References AV_NOPTS_VALUE, CommitBuffer(), cDrmDevice::HandleEvent(), L_PACKET, LOGDEBUG2, LOGERROR, m_flipCounter, m_pDrmDevice, SetVideoClock(), and Timestamp2String().
Referenced by DisplayBlackFrame(), and DisplayFrame().
Process queued events and forward to event receiver.
Definition at line 1504 of file videorender.cpp.
References m_eventQueue, m_pEventReceiver, and IEventReceiver::OnEventReceived().
Referenced by Action().
Convert a PTS to milliseconds.
Definition at line 831 of file videorender.cpp.
References m_timebase, and m_timebaseMutex.
Referenced by DisplayFrame(), and FrameDropNecessary().
|
private |
Push the frame into the render ringbuffer.
Definition at line 1006 of file videorender.cpp.
References AV_NOPTS_VALUE, cDrmDevice::Fd(), GetVideoClock(), LOGFATAL, m_pDrmDevice, and SetVideoClock().
Referenced by PushMainFrame(), and PushPipFrame().
Push a main frame into the render ringbuffer.
Definition at line 990 of file videorender.cpp.
References IsTrickSpeed(), m_bufferReuseStrategy, m_decodingStrategy, m_drmBufferPool, m_drmBufferQueue, and PushFrame().
Referenced by cSoftHdDevice::OnLeavingState().
Push a PiP frame into the render ringbuffer.
Definition at line 998 of file videorender.cpp.
References m_pipBufferReuseStrategy, m_pipDecodingStrategy, m_pipDrmBufferPool, m_pipDrmBufferQueue, and PushFrame().
Referenced by cSoftHdDevice::OnLeavingState().
Re-Initialize the drm device with current display mode settings.
Definition at line 1304 of file videorender.cpp.
References cDrmDevice::CreateModeBlob(), cDrmDevice::DestroyModeBlob(), LOGFATAL, m_pDrmDevice, cDrmDevice::ModeAtomicAlloc(), cDrmDevice::ModeAtomicCommit(), cDrmDevice::ModeAtomicFree(), cDrmDevice::ReInit(), cDrmDevice::SetConnectorCrtcId(), and cDrmDevice::SetCrtcModeId().
Referenced by cSoftHdDevice::HandleDisplayModeChange().
Reset the renderer.
Definition at line 1083 of file videorender.cpp.
References AV_NOPTS_VALUE, m_decodingStrategy, m_flipCounter, m_framesDropped, m_framesDuped, m_numWrongProgressive, m_startCounter, and SetVideoClock().
Referenced by cSoftHdDevice::Clear(), Exit(), and cSoftHdDevice::OnEnteringState().
|
inline |
Definition at line 186 of file videorender.h.
References m_bufferReuseStrategy.
Referenced by cSoftHdDevice::OnEnteringState(), and cSoftHdDevice::OnLeavingState().
|
inline |
Definition at line 187 of file videorender.h.
References m_decodingStrategy.
Referenced by cSoftHdDevice::OnEnteringState().
Send start condition to video thread.
Definition at line 1074 of file videorender.cpp.
References IsTrickSpeed(), LOGDEBUG, and m_startCounter.
Referenced by cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().
|
inline |
Definition at line 188 of file videorender.h.
References m_pipBufferReuseStrategy.
Referenced by cSoftHdDevice::ResetPipStream().
|
inline |
Definition at line 189 of file videorender.h.
References m_pipDecodingStrategy.
Referenced by cSoftHdDevice::ResetPipStream().
Restore color space, color encoding and color range to BT709 and the original color range.
Definition at line 239 of file videorender.cpp.
References COLORENCODING_BT709, COLORRANGE_LIMITED, COLORSPACE_BT709_YCC, LOGFATAL, m_colorRangeStored, m_hasDoneHdrModeset, m_originalColorRange, m_pDrmDevice, cDrmDevice::ModeAtomicAlloc(), cDrmDevice::ModeAtomicCommit(), cDrmDevice::ModeAtomicFree(), cDrmDevice::SetConnectorColorspace(), cDrmDevice::SetConnectorHdrOutputMetadata(), cDrmDevice::SetVideoPlaneColorEncoding(), and cDrmDevice::SetVideoPlaneColorRange().
Referenced by Exit().
Definition at line 170 of file videorender.h.
References m_mutex.
Referenced by cSoftHdDevice::Clear(), cSoftHdDevice::OnEnteringState(), cSoftHdDevice::OnEventReceived(), cSoftHdDevice::ResetPipStream(), cSoftHdDevice::SetRenderPipActive(), and cSoftHdDevice::SetRenderPipSize().
Definition at line 224 of file videorender.h.
References m_schedulePlaybackStartAtPtsMs.
Referenced by cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().
Definition at line 225 of file videorender.h.
References m_scheduleResyncAtPtsMs.
Referenced by cSoftHdDevice::OnEventReceived().
Definition at line 183 of file videorender.h.
References m_videoPlaybackPauseScheduledAt.
Referenced by cSoftHdDevice::OnEventReceived().
|
private |
Set kms color space, color encoding and color range.
depending on the hdr data
| colorRange | color range to set |
Definition at line 206 of file videorender.cpp.
References COLORENCODING_BT2020, COLORENCODING_BT709, COLORRANGE_FULL, COLORSPACE_BT2020_RGB, COLORSPACE_BT709_YCC, cDrmDevice::ConnectorId(), cHdrMetadata::GetColorPrimaries(), cDrmPlane::GetId(), L_DRM, LOGDEBUG2, LOGFATAL, m_hasDoneHdrModeset, m_pDrmDevice, m_pHdrMetadata, cDrmDevice::ModeAtomicAlloc(), cDrmDevice::ModeAtomicCommit(), cDrmDevice::ModeAtomicFree(), cDrmDevice::SetConnectorColorspace(), cDrmDevice::SetVideoPlaneColorEncoding(), cDrmDevice::SetVideoPlaneColorRange(), and cDrmDevice::VideoPlane().
Referenced by SetVideoBuffer().
Wrapper to set the display mode.
| idx | idx in the setup menu display mode array |
Definition at line 1255 of file videorender.cpp.
References m_pDevice, and cSoftHdDevice::SetDisplayMode().
Referenced by cVideoStream::RenderFrame().
Definition at line 223 of file videorender.h.
References m_displayOneFrameThenPause.
Referenced by cSoftHdDevice::Clear(), and cSoftHdDevice::OnLeavingState().
Definition at line 212 of file videorender.h.
References m_enableHdr.
Referenced by cSoftHdDevice::SetEnableHdr().
Set frame flags.
| frame | AVFrame |
| flags | FRAME_FLAG_TRICKSPEED and/or FRAME_FLAG_STILLPICTURE |
Definition at line 558 of file videorender.cpp.
References LOGFATAL.
|
private |
Create an hdr blob and set it for the connector.
| hdrData | hdr metadata |
Definition at line 178 of file videorender.cpp.
References cDrmDevice::CreateHdrBlob(), cDrmDevice::DestroyHdrBlob(), cDrmDevice::GetVideoPlaneColorRange(), LOGERROR, m_colorRangeStored, m_originalColorRange, m_pDrmDevice, and cDrmDevice::SetConnectorHdrBlobProperty().
Referenced by SetVideoBuffer().
|
private |
Modesetting for osd.
| 1 | osd is not dirty, do nothing |
| 0 | osd modesetting was done |
Definition at line 324 of file videorender.cpp.
References cDrmDevice::CrtcId(), cDrmDevice::DisplayHeight(), cDrmDevice::DisplayWidth(), cDrmBuffer::Height(), cDrmBuffer::Id(), cDrmBuffer::IsDirty(), L_DRM, LOGDEBUG2, m_osdShown, m_pBufOsd, m_pDrmDevice, cDrmBuffer::MarkClean(), cDrmDevice::OsdPlane(), cDrmBuffer::SetSizeOnScreen(), cDrmDevice::UseZpos(), cDrmDevice::VideoPlane(), cDrmBuffer::Width(), cDrmDevice::ZposOverlay(), and cDrmDevice::ZposPrimary().
Referenced by CommitBuffer().
Wrapper to set the osd size in the device.
| width | osd width |
| height | osd height |
Definition at line 1229 of file videorender.cpp.
References m_pDevice, and cSoftHdDevice::SetOsdSize().
Referenced by cDrmDevice::Init().
Definition at line 241 of file videorender.h.
References m_pipActive.
Referenced by cSoftHdDevice::SetRenderPipActive().
|
private |
Modesetting for pip.
| [in] | buf | drm video buffer to display |
| 1 | no modesetting was done |
| 0 | modesetting was done |
Definition at line 368 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().
Set the size and position of the pip window.
| useAlt | true, if the alternative position and size (see setup menu) should be used |
Definition at line 1517 of file videorender.cpp.
References cSoftHdConfig::ConfigPipAltLeftPercent, cSoftHdConfig::ConfigPipAltScalePercent, cSoftHdConfig::ConfigPipAltTopPercent, cSoftHdConfig::ConfigPipLeftPercent, cSoftHdConfig::ConfigPipScalePercent, cSoftHdConfig::ConfigPipTopPercent, m_pConfig, m_pipLeftPercent, m_pipScalePercent, and m_pipTopPercent.
Referenced by cVideoRender(), and cSoftHdDevice::SetRenderPipSize().
Definition at line 181 of file videorender.h.
References m_videoPlaybackPaused.
Referenced by cSoftHdDevice::HandleStillPicture(), cSoftHdDevice::OnEnteringState(), cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().
Definition at line 182 of file videorender.h.
References m_resumeAudioScheduled.
Referenced by cSoftHdDevice::OnEventReceived().
Wrapper to set the screen size in the device.
| width | screen width |
| height | screen height |
| refreshRateHz | screen refresh rate in Hz |
| interlaced | true, if this is an interlaced screen mode |
Definition at line 1242 of file videorender.cpp.
References m_flipCounter, m_framesPerFlipCycle, m_pDevice, m_refreshRateHz, and cSoftHdDevice::SetScreenSize().
Referenced by cDrmDevice::FindMode().
Definition at line 199 of file videorender.h.
References m_stillpicture.
Referenced by cSoftHdDevice::HandleStillPicture(), cSoftHdDevice::OnEnteringState(), and cSoftHdDevice::OnEventReceived().
Set the trickspeed parameters.
| speed | trick speed value from VDR (0 = normal) |
| active | true if trickspeed is active |
| forward | true if forward trick speed, false if backward |
Definition at line 1103 of file videorender.cpp.
References L_TRICK, LOGDEBUG2, m_forwardTrickspeed, m_framePresentationCounter, m_trickspeed, and m_trickspeedFactor.
Referenced by cSoftHdDevice::OnEventReceived(), and cSoftHdDevice::OnLeavingState().
|
private |
Modesetting for video.
| [in] | buf | drm video buffer to display |
| 1 | no modesetting was done |
| 0 | modesetting was done |
Definition at line 271 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().
Definition at line 344 of file videorender.h.
References m_pts.
Referenced by PageFlip(), PushFrame(), and Reset().
Set size and position of the video on the screen.
| rect | a cRect, where the video should be rendered in |
Definition at line 1489 of file videorender.cpp.
References LOGDEBUG, m_videoIsScaled, and m_videoRect.
Referenced by cSoftHdDevice::ScaleVideo().
Stop the thread.
Definition at line 637 of file videorender.cpp.
References LOGDEBUG.
Referenced by Exit(), and ~cVideoRender().
Trigger a screen grab.
| 0 | on success, grab was triggered |
| 1 | on timeout, grab was not triggered |
Definition at line 1142 of file videorender.cpp.
References LOGWARNING, m_grabCond, m_grabMutex, and m_startgrab.
Referenced by cSoftHdGrab::Start().
threshold in ms, when to drop video frames to keep audio and video in sync
Definition at line 286 of file videorender.h.
Referenced by FrameDropNecessary(), and LogDroppedDuped().
Sync Corridor.
The current sync logic drops all old audio data at playback start to start with nearly the same audio and video pts. So the theoretical initial AV-diff is 0ms. However, the real one isn't because it takes some time from BufferingThresholdReached() to the first AV Sync. The tolerance window historically changed from -25/+55ms (original softhddevice) to -5/+35 (softhddevice-drm) up to -20/20ms, which is a symmetrical window around the theoretical 0ms-sync-destination. The AV-diff is mostly stable once synched (except for the consequences of ClockDriftCompensation) but has outliers ~3-4ms from time to time due to audio pts fluctuation. Now, if the initial sync was done to -4ms and such an outlier arrives, we land at -7ms, the frame is dropped and our new AV-diff is +14ms now. This can be avoided by the -20/+20ms window. threshold in ms, when to duplicate video frames to keep audio and video in sync
Definition at line 285 of file videorender.h.
Referenced by FrameDropNecessary(), and LogDroppedDuped().
pointer to current gbm buffer object
Definition at line 335 of file videorender.h.
Referenced by cVideoRender(), OsdClear(), and OsdDrawARGB().
|
private |
black drm buffer object
Definition at line 304 of file videorender.h.
Referenced by DeleteBuffers(), DisplayBlackFrame(), Init(), and InitBuffers().
|
private |
strategy to select drm buffers
Definition at line 318 of file videorender.h.
Referenced by PushMainFrame(), and ResetBufferReuseStrategy().
true, if the original color range was stored
Definition at line 331 of file videorender.h.
Referenced by RestoreColorSpace(), and SetHdrBlob().
|
private |
strategy for decoding setup
Definition at line 320 of file videorender.h.
Referenced by PushMainFrame(), Reset(), and ResetDecodingStrategy().
|
private |
set, if ogl osd is disabled
Definition at line 334 of file videorender.h.
Referenced by cVideoRender(), DeleteBuffers(), DisableOglOsd(), EnableOglOsd(), Init(), InitBuffers(), OglOsdDisabled(), OsdClear(), and OsdDrawARGB().
set, if only one frame shall be displayed and then pause playback
Definition at line 311 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), and SetDisplayOneFrameThenPause().
|
private |
pool of drm buffers
Definition at line 316 of file videorender.h.
Referenced by ClearDecoderToDisplayQueue(), and PushMainFrame().
|
private |
queue for DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)
Definition at line 256 of file videorender.h.
Referenced by ClearDecoderToDisplayQueue(), DisplayFrame(), GetFramesFilled(), GetMainOutputBuffer(), IsOutputBufferFull(), LogDroppedDuped(), and PushMainFrame().
hdr is enabled
Definition at line 329 of file videorender.h.
Referenced by SetEnableHdr(), and SetVideoBuffer().
|
private |
event queue for incoming events
Definition at line 253 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), and ProcessEvents().
|
private |
page flip counter
Definition at line 325 of file videorender.h.
Referenced by DisplayFrame(), PageFlip(), Reset(), and SetScreenSize().
true, if trickspeed plays forward
Definition at line 260 of file videorender.h.
Referenced by IsForwardTrickspeed(), and SetTrickSpeed().
|
private |
number of times the current frame has to be shown (for slow-motion)
Definition at line 262 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), and SetTrickSpeed().
|
private |
number of frames dropped
Definition at line 289 of file videorender.h.
Referenced by GetStats(), LogDroppedDuped(), and Reset().
|
private |
number of frames duplicated
Definition at line 288 of file videorender.h.
Referenced by GetStats(), LogDroppedDuped(), and Reset().
|
private |
number of pageflips over which a single video frame should be presented 1 in progressive display mode 2 in interlaced display mode, to skip the sync and present an (interleaved) frame 2 times
Definition at line 322 of file videorender.h.
Referenced by DisplayFrame(), and SetScreenSize().
|
private |
condition gets signalled, if renederer finished to clone the grabbed buffers
Definition at line 267 of file videorender.h.
Referenced by CreateGrabBuffers(), and TriggerGrab().
|
private |
mutex around grabbing
Definition at line 294 of file videorender.h.
Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and TriggerGrab().
|
private |
keeps the current grabbed osd
Definition at line 268 of file videorender.h.
Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedOsdBuffer().
|
private |
keeps the current grabbed pip video
Definition at line 270 of file videorender.h.
Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedPipBuffer().
|
private |
keeps the current grabbed video
Definition at line 269 of file videorender.h.
Referenced by ClearGrabBuffers(), CreateGrabBuffers(), and GetGrabbedVideoBuffer().
true, if we ever created an hdr blob and did a modesetting
Definition at line 328 of file videorender.h.
Referenced by Exit(), RestoreColorSpace(), and SetColorSpace().
true, if the last frame was dropped
Definition at line 290 of file videorender.h.
Referenced by DisplayFrame(), and FrameDropNecessary().
|
private |
mutex for thread control
Definition at line 252 of file videorender.h.
|
private |
counter for progressive frames sent in an interlaced stream (only used for logging)
Definition at line 263 of file videorender.h.
Referenced by Reset().
|
private |
initial color range
Definition at line 330 of file videorender.h.
Referenced by RestoreColorSpace(), and SetHdrBlob().
set, if osd is shown currently
Definition at line 307 of file videorender.h.
Referenced by CreateGrabBuffers(), Init(), OsdClear(), OsdDrawARGB(), and SetOsdBuffer().
|
private |
pointer to cSoftHdAudio
Definition at line 250 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), and LogDroppedDuped().
|
private |
pointer to osd drm buffer object
Definition at line 303 of file videorender.h.
Referenced by CreateGrabBuffers(), DeleteBuffers(), DisplayFrame(), Init(), InitBuffers(), OsdClear(), OsdDrawARGB(), and SetOsdBuffer().
|
private |
pointer to cSoftHdConfig
Definition at line 251 of file videorender.h.
Referenced by cVideoRender(), DisplayFrame(), and SetPipSize().
|
private |
pointer to currently displayed DRM buffer
Definition at line 305 of file videorender.h.
Referenced by ClearDecoderToDisplayQueue(), CommitBuffer(), CreateGrabBuffers(), DisplayBlackFrame(), and DisplayFrame().
|
private |
pointer to currently displayed DRM buffer
Definition at line 306 of file videorender.h.
Referenced by ClearPipDecoderToDisplayQueue(), CommitBuffer(), CreateGrabBuffers(), and DisplayFrame().
|
private |
pointer to cSoftHdDevice
Definition at line 249 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), Init(), LogDroppedDuped(), SetDisplayMode(), SetOsdSize(), and SetScreenSize().
|
private |
pointer cDrmDevice object
Definition at line 302 of file videorender.h.
Referenced by CanHandleHdr(), CanHandleMode(), CommitBuffer(), DrmHandleEvent(), EglContext(), EglDisplay(), EglSurface(), Exit(), GlInitiated(), Init(), InitBuffers(), OsdClear(), OsdDrawARGB(), PageFlip(), PushFrame(), ReInitDisplayMode(), RestoreColorSpace(), SetColorSpace(), SetHdrBlob(), SetOsdBuffer(), SetPipBuffer(), SetVideoBuffer(), and ~cVideoRender().
|
private |
pointer to event receiver
Definition at line 315 of file videorender.h.
Referenced by ProcessEvents().
|
private |
hdr metadata object
Definition at line 327 of file videorender.h.
Referenced by SetColorSpace(), and SetVideoBuffer().
true, if pip should be displayed
Definition at line 340 of file videorender.h.
Referenced by SetPipActive(), and SetPipBuffer().
|
private |
strategy to select drm buffers
Definition at line 319 of file videorender.h.
Referenced by PushPipFrame(), and ResetPipBufferReuseStrategy().
|
private |
strategy for decoding setup
Definition at line 321 of file videorender.h.
Referenced by PushPipFrame(), and ResetPipDecodingStrategy().
|
private |
PIP pool of drm buffers.
Definition at line 317 of file videorender.h.
Referenced by ClearPipDecoderToDisplayQueue(), and PushPipFrame().
|
private |
queue for PIP DRM buffers to be displayed (VIDEO_SURFACES_MAX is defined in thread.h)
Definition at line 257 of file videorender.h.
Referenced by ClearPipDecoderToDisplayQueue(), DisplayFrame(), GetPipOutputBuffer(), and PushPipFrame().
|
private |
left margin for pip
Definition at line 299 of file videorender.h.
Referenced by SetPipBuffer(), and SetPipSize().
|
private |
scale factor for pip
Definition at line 298 of file videorender.h.
Referenced by SetPipBuffer(), and SetPipSize().
|
private |
top margin for pip
Definition at line 300 of file videorender.h.
Referenced by SetPipBuffer(), and SetPipSize().
pointer to next gbm buffer object (for later free)
Definition at line 337 of file videorender.h.
Referenced by cVideoRender(), DeleteBuffers(), OsdClear(), and OsdDrawARGB().
pointer to old gbm buffer object (for later free)
Definition at line 336 of file videorender.h.
Referenced by cVideoRender(), DeleteBuffers(), OsdClear(), and OsdDrawARGB().
|
private |
current video PTS
Definition at line 293 of file videorender.h.
Referenced by GetVideoClock(), and SetVideoClock().
|
private |
screen refresh rate in Hz
Definition at line 254 of file videorender.h.
Referenced by GetFramePresentationCount(), and SetScreenSize().
set, if audio resume is scheduled after a pause
Definition at line 309 of file videorender.h.
Referenced by FrameDropNecessary(), and SetScheduleAudioResume().
|
private |
if set, frames with PTS older than this will be dropped
Definition at line 312 of file videorender.h.
Referenced by DisplayFrame(), and SchedulePlaybackStartAtPtsMs().
|
private |
if set, a resync (enter state BUFFERING) will be forced at the given pts
Definition at line 313 of file videorender.h.
Referenced by FrameDropNecessary(), and ScheduleResyncAtPtsMs().
|
private |
counter for displayed frames, indicates a video start
Definition at line 287 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), GetStats(), LogDroppedDuped(), Reset(), and ResetFrameCounter().
internal flag to trigger grabbing
Definition at line 266 of file videorender.h.
Referenced by CreateGrabBuffers(), and TriggerGrab().
true, if stillpicture is active
Definition at line 261 of file videorender.h.
Referenced by IsStillpicture(), and SetStillpicture().
|
private |
timebase used for pts, set by first RenderFrame()
Definition at line 291 of file videorender.h.
Referenced by cVideoRender(), DisplayFrame(), GetOutputPtsMs(), and PtsToMs().
|
private |
mutex used around m_timebase
Definition at line 292 of file videorender.h.
Referenced by GetOutputPtsMs(), and PtsToMs().
true, if trickspeed is active
Definition at line 259 of file videorender.h.
Referenced by IsTrickSpeed(), and SetTrickSpeed().
|
private |
current trick speed
Definition at line 258 of file videorender.h.
Referenced by GetFramePresentationCount(), and SetTrickSpeed().
true, if the currently displayed video is scaled
Definition at line 297 of file videorender.h.
Referenced by DisplayFrame(), SetPipBuffer(), SetVideoBuffer(), and SetVideoOutputPosition().
set, if playback is frozen (used for pause)
Definition at line 308 of file videorender.h.
Referenced by DisplayFrame(), and SetPlaybackPaused().
|
private |
if set, video will be paused at the given pts
Definition at line 310 of file videorender.h.
Referenced by DisplayFrame(), FrameDropNecessary(), and ScheduleVideoPlaybackPauseAt().
|
private |
rect of the currently displayed video
Definition at line 296 of file videorender.h.
Referenced by SetPipBuffer(), SetVideoBuffer(), and SetVideoOutputPosition().