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

#include <libmythtv/decoders/mythmediacodeccontext.h>

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

Public Member Functions

 MythMediaCodecContext (DecoderBase *Parent, MythCodecID CodecID)
 
void InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override
 
int HwDecoderInit (AVCodecContext *Context) override
 
bool RetrieveFrame (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override
 
void PostProcessFrame (AVCodecContext *, MythVideoFrame *) override
 Mark all MediaCodec decoded frames as progressive,. More...
 
bool IsDeinterlacing (bool &DoubleRate, bool=false) override
 
- 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 GetBestSupportedCodec (AVCodecContext **Context, const AVCodec **Codec, const QString &Decoder, AVStream *Stream, uint StreamType)
 
static AVPixelFormat GetFormat (AVCodecContext *, const AVPixelFormat *PixFmt)
 
static void GetDecoderList (QStringList &Decoders)
 
static bool HaveMediaCodec (bool Reinit=false)
 
- 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 MCProfilesGetProfiles (void)
 
static int InitialiseDecoder (AVCodecContext *Context)
 

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 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

Definition at line 16 of file mythmediacodeccontext.h.

Constructor & Destructor Documentation

◆ MythMediaCodecContext()

MythMediaCodecContext::MythMediaCodecContext ( DecoderBase Parent,
MythCodecID  CodecID 
)

Definition at line 280 of file mythmediacodeccontext.cpp.

Member Function Documentation

◆ GetBestSupportedCodec()

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

Definition at line 220 of file mythmediacodeccontext.cpp.

Referenced by MythCodecContext::FindDecoder().

◆ GetDecoderList()

void MythMediaCodecContext::GetDecoderList ( QStringList &  Decoders)
static

Definition at line 494 of file mythmediacodeccontext.cpp.

Referenced by MythCodecContext::GetDecoderDescription().

◆ GetFormat()

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

Definition at line 316 of file mythmediacodeccontext.cpp.

Referenced by InitVideoCodec().

◆ GetProfiles()

MCProfiles & MythMediaCodecContext::GetProfiles ( void  )
staticprivate

◆ HaveMediaCodec()

bool MythMediaCodecContext::HaveMediaCodec ( bool  Reinit = false)
static

◆ HwDecoderInit()

int MythMediaCodecContext::HwDecoderInit ( AVCodecContext *  Context)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 298 of file mythmediacodeccontext.cpp.

◆ InitialiseDecoder()

int MythMediaCodecContext::InitialiseDecoder ( AVCodecContext *  Context)
staticprivate

Definition at line 173 of file mythmediacodeccontext.cpp.

Referenced by HwDecoderInit().

◆ InitVideoCodec()

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

Reimplemented from MythCodecContext.

Definition at line 285 of file mythmediacodeccontext.cpp.

◆ IsDeinterlacing()

bool MythMediaCodecContext::IsDeinterlacing ( bool DoubleRate,
bool  = false 
)
overridevirtual

/brief Say yes

Note
As for PostProcessFrame this may not be accurate.

Reimplemented from MythCodecContext.

Definition at line 349 of file mythmediacodeccontext.cpp.

◆ PostProcessFrame()

void MythMediaCodecContext::PostProcessFrame ( AVCodecContext *  ,
MythVideoFrame Frame 
)
overridevirtual

Mark all MediaCodec decoded frames as progressive,.

Note
This may not be appropriate for all devices

Reimplemented from MythCodecContext.

Definition at line 331 of file mythmediacodeccontext.cpp.

◆ RetrieveFrame()

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

Reimplemented from MythCodecContext.

Definition at line 307 of file mythmediacodeccontext.cpp.


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