MythTV master
Public Member Functions | Static Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
MythMMALContext Class Reference

#include <libmythtv/decoders/mythmmalcontext.h>

Inheritance diagram for MythMMALContext:
[legend]
Collaboration diagram for MythMMALContext:
[legend]

Public Member Functions

 MythMMALContext (DecoderBase *Parent, MythCodecID Codec)
 
 ~MythMMALContext () override
 
void InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override
 
bool RetrieveFrame (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override
 
int HwDecoderInit (AVCodecContext *Context) override
 
void SetDecoderOptions (AVCodecContext *Context, const AVCodec *Codec) override
 
bool GetBuffer2 (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame, int)
 
- Public Member Functions inherited from MythCodecContext
 MythCodecContext (DecoderBase *Parent, MythCodecID CodecID)
 
virtual ~MythCodecContext ()=default
 
virtual void InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering)
 
virtual int HwDecoderInit (AVCodecContext *)
 
virtual bool RetrieveFrame (AVCodecContext *, MythVideoFrame *, AVFrame *)
 
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 *)
 
virtual bool DecoderWillResetOnFlush (void)
 
virtual bool DecoderWillResetOnAspect (void)
 
virtual bool DecoderNeedsReset (AVCodecContext *)
 

Static Public Member Functions

static MythCodecID GetSupportedCodec (AVCodecContext **Context, const AVCodec **Codec, const QString &Decoder, AVStream *Stream, uint StreamType)
 
static bool GetBuffer (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame, int)
 
static enum AVPixelFormat GetFormat (AVCodecContext *, const AVPixelFormat *PixFmt)
 
static void GetDecoderList (QStringList &Decoders)
 
static bool HaveMMAL (bool Reinit=false)
 
static bool CheckCodecSize (int Width, int Height, MythCodecContext::CodecProfile Profile)
 
- 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 Protected Member Functions

static const MMALProfilesGetProfiles (void)
 
- 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

MythMMALInteropm_interop { nullptr }
 
- Protected Attributes inherited from MythCodecContext
DecoderBasem_parent { nullptr }
 
MythCodecID m_codecID { kCodec_NONE }
 
bool m_resetRequired { false }
 

Additional Inherited Members

- Public Types inherited from MythCodecContext
enum  CodecProfile : std::uint8_t {
  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 Attributes inherited from MythCodecContext
static QAtomicInt s_hwFramesContextCount
 

Detailed Description

Definition at line 10 of file mythmmalcontext.h.

Constructor & Destructor Documentation

◆ MythMMALContext()

MythMMALContext::MythMMALContext ( DecoderBase Parent,
MythCodecID  Codec 
)

Definition at line 15 of file mythmmalcontext.cpp.

◆ ~MythMMALContext()

MythMMALContext::~MythMMALContext ( )
override

Definition at line 20 of file mythmmalcontext.cpp.

Member Function Documentation

◆ CheckCodecSize()

bool MythMMALContext::CheckCodecSize ( int  Width,
int  Height,
MythCodecContext::CodecProfile  Profile 
)
static

Definition at line 26 of file mythmmalcontext.cpp.

Referenced by GetSupportedCodec(), and MythV4L2M2MContext::GetSupportedCodec().

◆ GetBuffer()

bool MythMMALContext::GetBuffer ( AVCodecContext *  Context,
MythVideoFrame Frame,
AVFrame AvFrame,
int   
)
static

Definition at line 165 of file mythmmalcontext.cpp.

Referenced by RetrieveFrame().

◆ GetBuffer2()

bool MythMMALContext::GetBuffer2 ( AVCodecContext *  Context,
MythVideoFrame Frame,
AVFrame AvFrame,
int   
)

Definition at line 198 of file mythmmalcontext.cpp.

Referenced by RetrieveFrame().

◆ GetDecoderList()

void MythMMALContext::GetDecoderList ( QStringList &  Decoders)
static

Definition at line 267 of file mythmmalcontext.cpp.

Referenced by MythCodecContext::GetDecoderDescription().

◆ GetFormat()

AVPixelFormat MythMMALContext::GetFormat ( AVCodecContext *  ,
const AVPixelFormat *  PixFmt 
)
static

Definition at line 233 of file mythmmalcontext.cpp.

Referenced by InitVideoCodec().

◆ GetProfiles()

const MMALProfiles & MythMMALContext::GetProfiles ( void  )
staticprotected

Definition at line 284 of file mythmmalcontext.cpp.

Referenced by GetDecoderList(), GetSupportedCodec(), and HaveMMAL().

◆ GetSupportedCodec()

MythCodecID MythMMALContext::GetSupportedCodec ( AVCodecContext **  Context,
const AVCodec **  Codec,
const QString &  Decoder,
AVStream *  Stream,
uint  StreamType 
)
static

Definition at line 42 of file mythmmalcontext.cpp.

Referenced by MythCodecContext::FindDecoder().

◆ HaveMMAL()

bool MythMMALContext::HaveMMAL ( bool  Reinit = false)
static

Definition at line 244 of file mythmmalcontext.cpp.

Referenced by MythCodecContext::GetDecoders().

◆ HwDecoderInit()

int MythMMALContext::HwDecoderInit ( AVCodecContext *  Context)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 135 of file mythmmalcontext.cpp.

◆ InitVideoCodec()

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

Reimplemented from MythCodecContext.

Definition at line 108 of file mythmmalcontext.cpp.

◆ RetrieveFrame()

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

Reimplemented from MythCodecContext.

Definition at line 125 of file mythmmalcontext.cpp.

◆ SetDecoderOptions()

void MythMMALContext::SetDecoderOptions ( AVCodecContext *  Context,
const AVCodec *  Codec 
)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 153 of file mythmmalcontext.cpp.

Member Data Documentation

◆ m_interop

MythMMALInterop* MythMMALContext::m_interop { nullptr }
protected

Definition at line 33 of file mythmmalcontext.h.

Referenced by GetBuffer2(), HwDecoderInit(), and ~MythMMALContext().


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