|
MythTV master
|
A handler for V4L2 Memory2Memory codecs. More...
#include <libmythtv/decoders/mythv4l2m2mcontext.h>
Public Member Functions | |
| MythV4L2M2MContext (DecoderBase *Parent, MythCodecID CodecID) | |
| ~MythV4L2M2MContext () override=default | |
| void | InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override |
| bool | RetrieveFrame (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override |
| void | SetDecoderOptions (AVCodecContext *Context, const AVCodec *Codec) override |
| Reduce the number of capture buffers. More... | |
| int | HwDecoderInit (AVCodecContext *Context) override |
| bool | DecoderWillResetOnFlush () override |
Public Member Functions inherited from MythDRMPRIMEContext | |
| MythDRMPRIMEContext (DecoderBase *Parent, MythCodecID CodecID) | |
| ~MythDRMPRIMEContext () override | |
| int | HwDecoderInit (AVCodecContext *Context) override |
| void | InitVideoCodec (AVCodecContext *Context, bool SelectedStream, bool &DirectRendering) override |
| bool | RetrieveFrame (AVCodecContext *Context, MythVideoFrame *Frame, AVFrame *AvFrame) override |
| bool | DecoderWillResetOnFlush (void) override |
| bool | GetDRMBuffer (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) |
| Retrieve a frame from CPU memory. More... | |
| static bool | HaveV4L2Codecs (bool Reinit=false) |
| static void | GetDecoderList (QStringList &Decoders) |
| static enum AVPixelFormat | GetV4L2RequestFormat (AVCodecContext *Context, const AVPixelFormat *PixFmt) |
| static int | InitialiseV4L2RequestContext (AVCodecContext *Context) |
Static Public Member Functions inherited from MythDRMPRIMEContext | |
| static MythCodecID | GetSupportedCodec (AVCodecContext **Context, const AVCodec **Codec, const QString &Decoder, AVStream *Stream, uint StreamType) |
| static bool | HavePrimeDecoders (bool Reinit=false, AVCodecID Codec=AV_CODEC_ID_NONE) |
| static enum AVPixelFormat | GetFormat (AVCodecContext *Context, const AVPixelFormat *PixFmt) |
Static Public Member Functions inherited from MythCodecContext | |
| static MythCodecContext * | CreateContext (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 MythPlayerUI * | GetPlayerUI (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 V4L2Profiles & | GetStandardProfiles () |
| static const V4L2Profiles & | GetRequestProfiles () |
Static Protected Member Functions inherited from MythDRMPRIMEContext | |
| static MythCodecID | GetPrimeCodec (AVCodecContext **Context, const AVCodec **Codec, AVStream *Stream, MythCodecID Successs, MythCodecID Failure, const QString &CodecName, AVPixelFormat Format) |
Static Protected Member Functions inherited from MythCodecContext | |
| static void | DestroyInterop (MythInteropGPU *Interop) |
| static void | NewHardwareFramesContext (void) |
| Track the number of concurrent frames contexts. More... | |
Static Private Member Functions | |
| static V4L2Profiles | GetProfiles (const std::vector< V4L2Mapping > &Profiles) |
Private Attributes | |
| bool | m_request { false } |
A handler for V4L2 Memory2Memory codecs.
The bulk of the 'direct rendering' support is in MythDRMPRIMEContext. This sub-class handles v4l2 specific functionality checks and support for software frame formats.
Definition at line 10 of file mythv4l2m2mcontext.h.
| MythV4L2M2MContext::MythV4L2M2MContext | ( | DecoderBase * | Parent, |
| MythCodecID | CodecID | ||
| ) |
Definition at line 41 of file mythv4l2m2mcontext.cpp.
|
overridedefault |
|
overridevirtual |
Reimplemented from MythDRMPRIMEContext.
Definition at line 46 of file mythv4l2m2mcontext.cpp.
|
static |
Retrieve a frame from CPU memory.
This is similar to the default, direct render supporting, get_av_buffer in AvFormatDecoder but we copy the data from the AVFrame rather than providing our own buffer (the codec does not support direct rendering).
Definition at line 211 of file mythv4l2m2mcontext.cpp.
Referenced by RetrieveFrame().
|
static |
Definition at line 391 of file mythv4l2m2mcontext.cpp.
Referenced by MythCodecContext::GetDecoderDescription().
|
staticprivate |
Definition at line 286 of file mythv4l2m2mcontext.cpp.
Referenced by GetRequestProfiles(), and GetStandardProfiles().
|
staticprotected |
Definition at line 462 of file mythv4l2m2mcontext.cpp.
Referenced by GetDecoderList(), GetSupportedCodec(), HaveV4L2Codecs(), and InitVideoCodec().
|
staticprotected |
Definition at line 260 of file mythv4l2m2mcontext.cpp.
Referenced by GetDecoderList(), GetSupportedCodec(), and HaveV4L2Codecs().
|
static |
Definition at line 51 of file mythv4l2m2mcontext.cpp.
Referenced by MythCodecContext::FindDecoder().
|
static |
Definition at line 484 of file mythv4l2m2mcontext.cpp.
Referenced by InitVideoCodec().
Definition at line 413 of file mythv4l2m2mcontext.cpp.
Referenced by MythCodecContext::GetDecoders().
|
overridevirtual |
Reimplemented from MythDRMPRIMEContext.
Definition at line 125 of file mythv4l2m2mcontext.cpp.
|
static |
Definition at line 501 of file mythv4l2m2mcontext.cpp.
Referenced by GetV4L2RequestFormat().
|
overridevirtual |
Reimplemented from MythDRMPRIMEContext.
Definition at line 136 of file mythv4l2m2mcontext.cpp.
|
overridevirtual |
Reimplemented from MythDRMPRIMEContext.
Definition at line 171 of file mythv4l2m2mcontext.cpp.
|
overridevirtual |
Reduce the number of capture buffers.
Testing on Pi 3, the default of 20 is too high and leads to memory allocation failures in the the kernel driver.
Reimplemented from MythCodecContext.
Definition at line 187 of file mythv4l2m2mcontext.cpp.
Definition at line 39 of file mythv4l2m2mcontext.h.
Referenced by InitVideoCodec(), RetrieveFrame(), and SetDecoderOptions().