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 int FilteredReceiveFrame (AVCodecContext *Context, AVFrame *Frame)
 Retrieve and process/filter AVFrame. More...
 
virtual void SetDeinterlacing (AVCodecContext *, MythVideoProfile *, bool)
 
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

◆ InitVideoCodec()

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

Reimplemented from MythCodecContext.

Definition at line 285 of file mythmediacodeccontext.cpp.

◆ HwDecoderInit()

int MythMediaCodecContext::HwDecoderInit ( AVCodecContext *  Context)
overridevirtual

Reimplemented from MythCodecContext.

Definition at line 298 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.

◆ 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().

◆ GetFormat()

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

Definition at line 316 of file mythmediacodeccontext.cpp.

Referenced by InitVideoCodec().

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

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

◆ GetDecoderList()

void MythMediaCodecContext::GetDecoderList ( QStringList &  Decoders)
static

Definition at line 494 of file mythmediacodeccontext.cpp.

Referenced by MythCodecContext::GetDecoderDescription().

◆ HaveMediaCodec()

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

◆ GetProfiles()

MCProfiles & MythMediaCodecContext::GetProfiles ( void  )
staticprivate

◆ InitialiseDecoder()

int MythMediaCodecContext::InitialiseDecoder ( AVCodecContext *  Context)
staticprivate

Definition at line 173 of file mythmediacodeccontext.cpp.

Referenced by HwDecoderInit().


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