Go to the documentation of this file. 1 #ifndef MYTH_VIDEOOUT_H_
2 #define MYTH_VIDEOOUT_H_
13 #include <qwindowdefs.h>
44 virtual bool Init(QSize VideoDim, QSize VideoDispDim,
45 float VideoAspect, QRect WindowRect,
MythCodecID CodecID);
52 virtual bool InputChanged(QSize VideoDim, QSize VideoDispDim,
54 bool& AspectChanged,
int ReferenceFrames,
bool ForceChange);
56 float& VisibleAspect,
float& FontScaling,
57 float ThemeAspect)
const;
80 QRect
GetImageRect(QRect Rect, QRect* DisplayRect =
nullptr);
92 QRect
GetVisibleOSDBounds(
float& VisibleAspect,
float& FontScaling,
float ThemeAspect)
const;
virtual void GetOSDBounds(QRect &Total, QRect &Visible, float &VisibleAspect, float &FontScaling, float ThemeAspect) const
LetterBoxColour m_dbLetterboxColour
virtual bool InputChanged(QSize VideoDim, QSize VideoDispDim, float VideoAspect, MythCodecID CodecID, bool &AspectChanged, int ReferenceFrames, bool ForceChange)
Tells video output to discard decoded frames and wait for new ones.
int FreeVideoFrames()
Returns number of frames available for decoding onto.
VideoErrorState GetError() const
VideoErrorState m_errorState
virtual void PrepareFrame(MythVideoFrame *Frame, FrameScanType Scan=kScan_Ignore)=0
~MythVideoOutput() override=default
MythDeintType m_forcedDeinterlacer
virtual void SetFramesPlayed(long long FramesPlayed)
static bool codec_sw_copy(MythCodecID id)
void SetPrebuffering(bool Normal)
Sets whether to use a normal number of buffers or fewer buffers.
virtual void EndFrame()=0
virtual bool Init(QSize VideoDim, QSize VideoDispDim, float VideoAspect, QRect WindowRect, MythCodecID CodecID)
PictureAttributeSupported
virtual int ValidVideoFrames() const
Returns number of frames that are fully decoded.
virtual void CheckFrameStates()
virtual void ClearAfterSeek()
Tells video output to toss decoded buffers due to a seek.
virtual void DeLimboFrame(MythVideoFrame *Frame)
Releases a frame for reuse if it is in limbo.
std::vector< VideoFrameType > VideoFrameTypes
QString GetFrameStatus() const
Returns string with status of each frame for debugging.
MythVideoProfilePtr m_videoProfile
virtual MythVideoFrame * GetNextFreeFrame()
Blocks until it is possible to return a frame for decoding onto.
QRect GetImageRect(QRect Rect, QRect *DisplayRect=nullptr)
translates caption/dvd button rectangle into 'screen' space
Handles software based deinterlacing of video frames.
virtual long long GetFramesPlayed()
virtual void DiscardFrames(bool KeyFrame, bool Flushed)
Releases all frames not being actively displayed from any queue onto the queue of frames ready for de...
virtual MythVideoFrame * GetLastDecodedFrame()
MythCodecID m_videoCodecID
MythDeinterlacer m_deinterlacer
bool EnoughFreeFrames()
Returns true iff enough frames are available to decode onto.
virtual void ReleaseFrame(MythVideoFrame *Frame)
Releases a frame from the ready for decoding queue onto the queue of frames ready for display.
virtual void StartDisplayingFrame()
Tell GetLastShownFrame() to return the next frame from the head of the queue of frames to display.
virtual void RenderFrame(MythVideoFrame *Frame, FrameScanType)=0
const VideoFrameTypes * m_renderFormats
virtual void DiscardFrame(MythVideoFrame *Frame)
Releases frame from any queue onto the queue of frames ready for decoding onto.
static const VideoFrameTypes kDefaultRenderFormats
PictureAttributeSupported GetSupportedPictureAttributes()
QRect GetSafeRect()
Returns a QRect describing an area of the screen on which it is 'safe' to render the On Screen Displa...
bool HasSoftwareFrames() const
std::shared_ptr< MythVideoProfile > MythVideoProfilePtr
static void GetRenderOptions(RenderOptions &Options, MythRender *Render)
virtual void SetDeinterlacing(bool Enable, bool DoubleRate, MythDeintType Force=DEINT_NONE)
bool EnoughDecodedFrames()
Returns true iff there are plenty of decoded frames ready for display.
virtual void InitPictureAttributes()
virtual MythVideoFrame * GetLastShownFrame()
Returns frame from the head of the ready to be displayed queue, if StartDisplayingFrame has been call...
virtual void RenderEnd()=0
QRect GetVisibleOSDBounds(float &VisibleAspect, float &FontScaling, float ThemeAspect) const
Returns visible portions of total OSD bounds.
MythVideoColourSpace contains a QMatrix4x4 that can convert YCbCr data to RGB.
virtual void UpdatePauseFrame(std::chrono::milliseconds &, FrameScanType=kScan_Progressive)
virtual void SetVideoFrameRate(float VideoFrameRate)
VideoBuffers m_videoBuffers
MythVideoColourSpace m_videoColourSpace
virtual void DoneDisplayingFrame(MythVideoFrame *Frame)
Releases frame returned from GetLastShownFrame() onto the queue of frames ready for decoding onto.