MythTV  master
Public Member Functions | Static Public Member Functions | Static Private Member Functions | List of all members
MythVDPAUContext Class Reference

#include <mythvdpaucontext.h>

Inheritance diagram for MythVDPAUContext:
Inheritance graph
[legend]
Collaboration diagram for MythVDPAUContext:
Collaboration graph
[legend]

Public Member Functions

 MythVDPAUContext (DecoderBase *Parent, MythCodecID CodecID)
 
void InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override
 
bool RetrieveFrame (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override
 
bool DecoderWillResetOnFlush (void) override
 
bool DecoderWillResetOnAspect (void) override
 
bool DecoderNeedsReset (AVCodecContext *Context) override
 Report whether the decoder is known to be errored. More...
 
- Public Member Functions inherited from MythCodecContext
 MythCodecContext (DecoderBase *Parent, MythCodecID CodecID)
 
virtual ~MythCodecContext ()=default
 
virtual int HwDecoderInit (AVCodecContext *)
 
virtual int FilteredReceiveFrame (AVCodecContext *Context, AVFrame *Frame)
 Retrieve and process/filter AVFrame. More...
 
virtual void SetDeinterlacing (AVCodecContext *, MythVideoProfile *, bool)
 
virtual void PostProcessFrame (AVCodecContext *, MythVideoFrame *)
 
virtual bool IsDeinterlacing (bool &, bool=false)
 
virtual void SetDecoderOptions (AVCodecContext *, const AVCodec *)
 

Static Public Member Functions

static MythCodecID GetSupportedCodec (AVCodecContext **CodecContext, const AVCodec **Codec, const QString &Decoder, uint StreamType)
 
static enum AVPixelFormat GetFormat (AVCodecContext *Context, const enum AVPixelFormat *PixFmt)
 \ brief Confirm pixel format and create VDPAU device for direct rendering (MythVDPAUInterop required) More...
 
static enum AVPixelFormat GetFormat2 (AVCodecContext *Context, const enum AVPixelFormat *PixFmt)
 \ brief Confirm pixel format and create VDPAU device for copy back (no MythVDPAUInterop required) More...
 
- Static Public Member Functions inherited from MythCodecContext
static MythCodecContextCreateContext (DecoderBase *Parent, MythCodecID Codec)
 
static void GetDecoders (RenderOptions &Opts, bool Reinit=false)
 
static QStringList GetDecoderDescription (void)
 
static MythCodecID FindDecoder (const QString &Decoder, AVStream *Stream, AVCodecContext **Context, const AVCodec **Codec)
 
static int GetBuffer (struct AVCodecContext *Context, AVFrame *Frame, int Flags)
 A generic hardware buffer initialisation method when using AVHWFramesContext. More...
 
static bool GetBuffer2 (struct AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame, int Flags)
 A generic hardware buffer initialisation method when AVHWFramesContext is NOT used. More...
 
static int InitialiseDecoder (AVCodecContext *Context, CreateHWDecoder Callback, const QString &Debug)
 Initialise a hardware decoder that is expected to use AVHWFramesContext. More...
 
static int InitialiseDecoder2 (AVCodecContext *Context, CreateHWDecoder Callback, const QString &Debug)
 Initialise a hardware decoder that is NOT expected to use AVHWFramesContext. More...
 
static void ReleaseBuffer (void *Opaque, uint8_t *Data)
 
static void FramesContextFinished (AVHWFramesContext *Context)
 
static void DeviceContextFinished (AVHWDeviceContext *Context)
 
static void CreateDecoderCallback (void *Wait, void *Context, void *Callback)
 
static MythPlayerUIGetPlayerUI (AVCodecContext *Context)
 
static bool FrameTypeIsSupported (AVCodecContext *Context, VideoFrameType Format)
 
static AVBufferRef * CreateDevice (AVHWDeviceType Type, MythInteropGPU *Interop, const QString &Device=QString())
 
static bool IsUnsupportedProfile (AVCodecContext *Context)
 Most hardware decoders do not support these codecs/profiles. More...
 
static QString GetProfileDescription (CodecProfile Profile, QSize Size, VideoFrameType Format=FMT_NONE, uint ColorDepth=0)
 
static CodecProfile FFmpegToMythProfile (AVCodecID CodecID, int Profile)
 

Static Private Member Functions

static int InitialiseContext (AVCodecContext *Context)
 Create a VDPAU device for use with direct rendering. More...
 

Additional Inherited Members

- Public Types inherited from MythCodecContext
enum  CodecProfile {
  NoProfile = 0, MPEG1, MPEG2, MPEG2Simple,
  MPEG2Main, MPEG2422, MPEG2High, MPEG2Spatial,
  MPEG2SNR, MPEG4, MPEG4Simple, MPEG4SimpleScaleable,
  MPEG4Core, MPEG4Main, MPEG4NBit, MPEG4ScaleableTexture,
  MPEG4SimpleFace, MPEG4BasicAnimated, MPEG4Hybrid, MPEG4AdvancedRT,
  MPEG4CoreScaleable, MPEG4AdvancedCoding, MPEG4AdvancedCore, MPEG4AdvancedScaleableTexture,
  MPEG4SimpleStudio, MPEG4AdvancedSimple, H263, H264,
  H264Baseline, H264ConstrainedBaseline, H264Main, H264MainExtended,
  H264High, H264High10, H264Extended, H264High422,
  H264High444, H264ConstrainedHigh, HEVC, HEVCMain,
  HEVCMain10, HEVCMainStill, HEVCRext, HEVCMain10HDR,
  HEVCMain10HDRPlus, VC1, VC1Simple, VC1Main,
  VC1Complex, VC1Advanced, VP8, VP9,
  VP9_0, VP9_1, VP9_2, VP9_3,
  VP9_2HDR, VP9_2HDRPlus, VP9_3HDR, VP9_3HDRPlus,
  AV1, AV1Main, AV1High, AV1Professional,
  MJPEG
}
 
- Protected Member Functions inherited from MythCodecContext
virtual bool RetrieveHWFrame (MythVideoFrame *Frame, AVFrame *AvFrame)
 
- Static Protected Member Functions inherited from MythCodecContext
static void DestroyInterop (MythInteropGPU *Interop)
 
static void NewHardwareFramesContext (void)
 Track the number of concurrent frames contexts. More...
 
- Protected Attributes inherited from MythCodecContext
DecoderBasem_parent { nullptr }
 
MythCodecID m_codecID { kCodec_NONE }
 
bool m_resetRequired { false }
 
- Static Protected Attributes inherited from MythCodecContext
static QAtomicInt s_hwFramesContextCount
 

Detailed Description

See also
MythVDPAUHelper
MythVDAPUInterop
MythCodecContext

Definition at line 7 of file mythvdpaucontext.h.

Constructor & Destructor Documentation

◆ MythVDPAUContext()

MythVDPAUContext::MythVDPAUContext ( DecoderBase Parent,
MythCodecID  CodecID 
)

Definition at line 26 of file mythvdpaucontext.cpp.

Member Function Documentation

◆ InitVideoCodec()

void MythVDPAUContext::InitVideoCodec ( AVCodecContext *  Context,
bool  SelectedStream,
bool DirectRendering 
)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 274 of file mythvdpaucontext.cpp.

◆ RetrieveFrame()

bool MythVDPAUContext::RetrieveFrame ( AVCodecContext *  Context,
MythVideoFrame Frame,
AVFrame AvFrame 
)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 224 of file mythvdpaucontext.cpp.

◆ DecoderWillResetOnFlush()

bool MythVDPAUContext::DecoderWillResetOnFlush ( void  )
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 233 of file mythvdpaucontext.cpp.

◆ DecoderWillResetOnAspect()

bool MythVDPAUContext::DecoderWillResetOnAspect ( void  )
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 238 of file mythvdpaucontext.cpp.

◆ DecoderNeedsReset()

bool MythVDPAUContext::DecoderNeedsReset ( AVCodecContext *  Context)
overridevirtual

Report whether the decoder is known to be errored.

This is used to determine whether the VDPAU display has been preempted. FFmpeg does not deal with preemption so we need to detect it ourselves in the interop class. We do not necessarily have a frame at this point, so need to access the interop through AVHWFramesContext.

Note
May be called without a current AVCodecContext to confirm any previous reset request.

Reimplemented from MythCodecContext.

Definition at line 252 of file mythvdpaucontext.cpp.

◆ GetSupportedCodec()

MythCodecID MythVDPAUContext::GetSupportedCodec ( AVCodecContext **  CodecContext,
const AVCodec **  Codec,
const QString &  Decoder,
uint  StreamType 
)
static

Definition at line 120 of file mythvdpaucontext.cpp.

Referenced by MythCodecContext::FindDecoder().

◆ GetFormat()

enum AVPixelFormat MythVDPAUContext::GetFormat ( AVCodecContext *  Context,
const enum AVPixelFormat *  PixFmt 
)
static

\ brief Confirm pixel format and create VDPAU device for direct rendering (MythVDPAUInterop required)

Definition at line 190 of file mythvdpaucontext.cpp.

Referenced by InitVideoCodec().

◆ GetFormat2()

enum AVPixelFormat MythVDPAUContext::GetFormat2 ( AVCodecContext *  Context,
const enum AVPixelFormat *  PixFmt 
)
static

\ brief Confirm pixel format and create VDPAU device for copy back (no MythVDPAUInterop required)

Definition at line 203 of file mythvdpaucontext.cpp.

Referenced by InitVideoCodec().

◆ InitialiseContext()

int MythVDPAUContext::InitialiseContext ( AVCodecContext *  Context)
staticprivate

Create a VDPAU device for use with direct rendering.

Definition at line 32 of file mythvdpaucontext.cpp.

Referenced by GetFormat().


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