Go to the documentation of this file.
13 #define LOC QString("VidOutNull: ")
19 if (Options.
decoders->contains(
"ffmpeg"))
22 if (Options.
decoders->contains(
"vtb-dec"))
26 if (Options.
decoders->contains(
"vdpau-dec"))
30 if (Options.
decoders->contains(
"nvdec-dec"))
34 if (Options.
decoders->contains(
"vaapi-dec"))
37 #ifdef USING_MEDIACODEC
38 if (Options.
decoders->contains(
"mediacodec-dec"))
42 if (Options.
decoders->contains(
"v4l2-dec"))
46 if (Options.
decoders->contains(
"mmal-dec"))
56 if (result->Init(VideoDim, VideoDispDim, VideoAspect, QRect(), CodecID))
70 LOG(VB_PLAYBACK, LOG_INFO,
LOC + QString(
"InputChanged(WxH = %1x%2, aspect = %3)")
71 .arg(VideoDispDim.width()).arg(VideoDispDim.height()).arg(
static_cast<qreal
>(VideoAspect)));
75 LOG(VB_GENERAL, LOG_ERR,
LOC +
76 QString(
"VideoOutputNull::InputChanged(): new video codec is not supported."));
88 VideoAspect, CodecID, AspectOnly,
89 ReferenceFrames, ForceChange);
97 LOG(VB_GENERAL, LOG_ERR,
LOC +
98 "VideoOutputNull::InputChanged(): Failed to recreate buffers");
106 float VideoAspect,
const QRect DisplayVisibleRect,
MythCodecID CodecID)
108 if (VideoDispDim.isEmpty())
113 LOG(VB_GENERAL, LOG_ERR,
LOC + QString(
"Cannot create VideoOutputNull for codec %1")
150 LOG(VB_GENERAL, LOG_ERR,
LOC +
"No frame in PrepareFrame!");
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
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.
bool Init(QSize VideoDim, QSize VideoDispDim, float VideoAspect, QRect DisplayVisibleRect, MythCodecID CodecID) override
static MythVideoOutputNull * Create(QSize VideoDim, QSize VideoDispDim, float VideoAspect, MythCodecID CodecID)
MythVideoOutputNull()=default
VideoErrorState m_errorState
void SetDeinterlacing(MythDeintType Single, MythDeintType Double, MythCodecID CodecID)
MythDeintType m_forcedDeinterlacer
const int kPrebufferFramesSmall
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
bool CreateBuffers(VideoFrameType Type, const VideoFrameTypes *RenderFormats, QSize Size, uint NeedFree, uint NeedprebufferNormal, uint NeedPrebufferSmall, int MaxReferenceFrames=16)
void PrepareFrame(MythVideoFrame *Frame, FrameScanType Scan) override
virtual bool Init(QSize VideoDim, QSize VideoDispDim, float VideoAspect, QRect WindowRect, MythCodecID CodecID)
void Filter(MythVideoFrame *Frame, FrameScanType Scan, MythVideoProfile *Profile, bool Force=false)
Deinterlace Frame if needed.
QMap< QString, QStringList > * safe_renderers
MythCodecID m_videoCodecID
const int kPrebufferFramesNormal
MythDeinterlacer m_deinterlacer
void RenderFrame(MythVideoFrame *Frame, FrameScanType Scan) override
static void GetRenderOptions(RenderOptions &Options)
void MoveResize(void)
performs all the calculations for video framing and any resizing.
const VideoFrameTypes * m_renderFormats
static bool codec_is_std(MythCodecID id)
virtual void SetDeinterlacing(bool Enable, bool DoubleRate, MythDeintType Force=DEINT_NONE)
const int kNeedFreeFrames
bool InputChanged(QSize VideoDim, QSize VideoDispDim, float VideoAspect, MythCodecID CodecID, bool &AspectOnly, int ReferenceFrames, bool ForceChange) override
Tells video output to discard decoded frames and wait for new ones.
void Init(uint NumDecode, uint NeedFree, uint NeedprebufferNormal, uint NeedPrebufferSmall)
Creates buffers and sets various buffer management parameters.
QSize GetVideoDim(void) const
static uint GetNumBuffers(int PixelFormat, int MaxReferenceFrames=16, bool Decoder=false)
void SetDeinterlacing(bool Enable, bool DoubleRate, MythDeintType Force=DEINT_NONE) override
VideoBuffers m_videoBuffers
QMap< QString, uint > * priorities