static int InitialiseDecoder(AVCodecContext *Context)
void PostProcessFrame(AVCodecContext *Context, MythVideoFrame *Frame) override
bool RetrieveFrame(AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override
~MythNVDECContext() override
static bool GetBuffer(AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame, int Flags)
Convert AVFrame data to MythFrame.
static enum AVPixelFormat GetFormat(AVCodecContext *Context, const AVPixelFormat *PixFmt)
static void GetDecoderList(QStringList &Decoders)
bool Supports(cudaVideoCodec Codec, cudaVideoChromaFormat Format, uint Depth, int Width, int Height) const
void InitVideoCodec(AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override
static const std::vector< MythNVDECCaps > & GetProfiles(void)
MythDeintType m_deinterlacer
cudaVideoChromaFormat m_format
bool DecoderWillResetOnFlush(void) override
void SetDeinterlacing(AVCodecContext *Context, MythVideoProfile *Profile, bool DoubleRate) override
Enable NVDEC/CUDA deinterlacing if necessary.
static bool HaveNVDEC(bool Reinit=false)
int HwDecoderInit(AVCodecContext *Context) override
void InitFramesContext(AVCodecContext *Context)
MythCodecContext::CodecProfile m_profile
MythNVDECCaps(cudaVideoCodec Codec, uint Depth, cudaVideoChromaFormat Format, QSize Minimum, QSize Maximum, uint MacroBlocks)
bool IsDeinterlacing(bool &DoubleRate, bool StreamChange=false) override
AVBufferRef * m_framesContext
MythNVDECContext(DecoderBase *Parent, MythCodecID CodecID)
static MythCodecID GetSupportedCodec(AVCodecContext **CodecContext, const AVCodec **Codec, const QString &Decoder, AVStream *Stream, uint StreamType)
Determine whether NVDEC decoding is supported for this codec.