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

#include <libmythtv/opengl/mythvaapidrminterop.h>

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

Public Member Functions

 MythVAAPIInteropDRM (MythPlayerUI *Player, MythRenderOpenGL *Context, InteropType Type)
 
 ~MythVAAPIInteropDRM () override
 
std::vector< MythVideoTextureOpenGL * > Acquire (MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan) override
 
void DeleteTextures () override
 
- Public Member Functions inherited from MythVAAPIInterop
VASurfaceID VerifySurface (MythRenderOpenGL *Context, MythVideoFrame *Frame)
 
VADisplay GetDisplay (void)
 
QString GetVendor (void)
 
- Public Member Functions inherited from MythOpenGLInterop
 ~MythOpenGLInterop () override
 
virtual std::vector< MythVideoTextureOpenGL * > Acquire (MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan)
 
- Public Member Functions inherited from MythInteropGPU
 MythInteropGPU (MythRender *Context, InteropType Type, MythPlayerUI *Player=nullptr)
 
 ~MythInteropGPU () override
 
InteropType GetType ()
 
MythPlayerUIGetPlayer ()
 
void SetDefaultFree (FreeAVHWDeviceContext FreeContext)
 
void SetDefaultUserOpaque (void *UserOpaque)
 
FreeAVHWDeviceContext GetDefaultFree ()
 
void * GetDefaultUserOpaque ()
 
- Public Member Functions inherited from ReferenceCounter
 ReferenceCounter (const QString &debugName, bool logDebug=true)
 Creates reference counter with an initial value of 1. More...
 
virtual int IncrRef (void)
 Increments reference count. More...
 
virtual int DecrRef (void)
 Decrements reference count and deletes on 0. More...
 
- Public Member Functions inherited from MythEGLDMABUF
 MythEGLDMABUF (MythRenderOpenGL *Context)
 
 ~MythEGLDMABUF ()=default
 
std::vector< MythVideoTextureOpenGL * > CreateTextures (AVDRMFrameDescriptor *Desc, MythRenderOpenGL *Context, MythVideoFrame *Frame, bool UseSeparate, FrameScanType Scan=kScan_Progressive)
 

Static Public Member Functions

static bool IsSupported (MythRenderOpenGL *Context)
 
- Static Public Member Functions inherited from MythVAAPIInterop
static void GetVAAPITypes (MythRenderOpenGL *Context, MythInteropGPU::InteropMap &Types)
 Return a list of interops that are supported by the current render device. More...
 
static MythVAAPIInteropCreateVAAPI (MythPlayerUI *Player, MythRenderOpenGL *Context)
 
static bool SetupDeinterlacer (MythDeintType Deinterlacer, bool DoubleRate, AVBufferRef *FramesContext, int Width, int Height, AVFilterGraph *&Graph, AVFilterContext *&Source, AVFilterContext *&Sink)
 
- Static Public Member Functions inherited from MythOpenGLInterop
static void GetTypes (MythRender *Render, MythInteropGPU::InteropMap &Types)
 
static std::vector< MythVideoTextureOpenGL * > Retrieve (MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan)
 
- Static Public Member Functions inherited from MythInteropGPU
static InteropMap GetTypes (MythRender *Render)
 
static QString TypeToString (InteropType Type)
 
static QString TypesToString (const InteropMap &Types)
 
static MythInteropGPUCreateDummy ()
 
- Static Public Member Functions inherited from ReferenceCounter
static void PrintDebug (void)
 Print out any leaks if that level of debugging is enabled. More...
 
- Static Public Member Functions inherited from MythEGLDMABUF
static bool HaveDMABuf (MythRenderOpenGL *Context)
 
static void ClearDMATextures (MythRenderOpenGL *Context, std::vector< MythVideoTextureOpenGL * > &Textures)
 

Protected Member Functions

void DestroyDeinterlacer () override
 
void PostInitDeinterlacer () override
 
- Protected Member Functions inherited from MythVAAPIInterop
 MythVAAPIInterop (MythPlayerUI *Player, MythRenderOpenGL *Context, InteropType Type)
 
 ~MythVAAPIInterop () override
 
void InitaliseDisplay (void)
 
VASurfaceID Deinterlace (MythVideoFrame *Frame, VASurfaceID Current, FrameScanType Scan)
 
virtual void DestroyDeinterlacer (void)
 
virtual void PostInitDeinterlacer (void)
 
- Protected Member Functions inherited from MythOpenGLInterop
 MythOpenGLInterop (MythRenderOpenGL *Context, InteropType Type, MythPlayerUI *Player=nullptr)
 
virtual void DeleteTextures ()
 
- Protected Member Functions inherited from ReferenceCounter
virtual ~ReferenceCounter (void)
 Called on destruction, will warn if object deleted with references in place. More...
 

Private Member Functions

void CleanupReferenceFrames ()
 
void RotateReferenceFrames (AVBufferRef *Buffer)
 
std::vector< MythVideoTextureOpenGL * > GetReferenceFrames ()
 
std::vector< MythVideoTextureOpenGL * > AcquireVAAPI (VASurfaceID Id, MythRenderOpenGL *Context, MythVideoFrame *Frame)
 
std::vector< MythVideoTextureOpenGL * > AcquirePrime (VASurfaceID Id, MythRenderOpenGL *Context, MythVideoFrame *Frame)
 Export the given VideoFrame as a DRM PRIME descriptor. More...
 
AVDRMFrameDescriptor * GetDRMFrameDescriptor (VASurfaceID Id)
 
void CleanupDRMPRIME ()
 
bool TestPrimeInterop ()
 

Static Private Member Functions

static VideoFrameType VATypeToMythType (uint32_t Fourcc)
 

Private Attributes

QFile m_drmFile
 
QVector< AVBufferRef * > m_referenceFrames
 
bool m_usePrime { false }
 
QHash< unsigned long long, AVDRMFrameDescriptor * > m_drmFrames
 

Additional Inherited Members

- Public Types inherited from MythInteropGPU
enum  InteropType : std::uint8_t {
  Unsupported = 0 , GL_VAAPIGLXCOPY , GL_VAAPIGLXPIX , GL_VAAPIEGLDRM ,
  GL_VTB , GL_VTBSURFACE , GL_MEDIACODEC , GL_VDPAU ,
  GL_NVDEC , GL_MMAL , GL_DRMPRIME , DRM_DRMPRIME ,
  DUMMY
}
 
using InteropTypes = std::vector< InteropType >
 
using InteropMap = std::map< VideoFrameType, InteropTypes >
 
- Protected Attributes inherited from MythVAAPIInterop
VADisplay m_vaDisplay { nullptr }
 
QString m_vaVendor
 
MythDeintType m_deinterlacer { DEINT_NONE }
 
bool m_deinterlacer2x { false }
 
bool m_firstField { true }
 
AVBufferRef * m_vppFramesContext { nullptr }
 
AVFilterContext * m_filterSink { nullptr }
 
AVFilterContext * m_filterSource { nullptr }
 
AVFilterGraph * m_filterGraph { nullptr }
 
bool m_filterError { false }
 
int m_filterWidth { 0 }
 
int m_filterHeight { 0 }
 
VASurfaceID m_lastFilteredFrame { 0 }
 
uint64_t m_lastFilteredFrameCount { 0 }
 
- Protected Attributes inherited from MythOpenGLInterop
MythRenderOpenGLm_openglContext { nullptr }
 
QHash< unsigned long long, std::vector< MythVideoTextureOpenGL * > > m_openglTextures
 
- Protected Attributes inherited from MythInteropGPU
MythRenderm_context { nullptr }
 
QSize m_textureSize
 
uint64_t m_discontinuityCounter { 0 }
 
FreeAVHWDeviceContext m_defaultFree { nullptr }
 
void * m_defaultUserOpaque { nullptr }
 
MythPlayerUIm_player { nullptr }
 
InteropType m_type { Unsupported }
 
- Protected Attributes inherited from ReferenceCounter
bool m_logDebug
 This is used to suppress creating LoggingItem classes for LoggingItem reference count changes. More...
 
QAtomicInt m_referenceCount {1}
 

Detailed Description

Definition at line 16 of file mythvaapidrminterop.h.

Constructor & Destructor Documentation

◆ MythVAAPIInteropDRM()

MythVAAPIInteropDRM::MythVAAPIInteropDRM ( MythPlayerUI Player,
MythRenderOpenGL Context,
InteropType  Type 
)

Definition at line 23 of file mythvaapidrminterop.cpp.

◆ ~MythVAAPIInteropDRM()

MythVAAPIInteropDRM::~MythVAAPIInteropDRM ( )
override

Definition at line 55 of file mythvaapidrminterop.cpp.

Member Function Documentation

◆ Acquire()

std::vector< MythVideoTextureOpenGL * > MythVAAPIInteropDRM::Acquire ( MythRenderOpenGL Context,
MythVideoColourSpace ColourSpace,
MythVideoFrame Frame,
FrameScanType  Scan 
)
overridevirtual

Reimplemented from MythOpenGLInterop.

Definition at line 172 of file mythvaapidrminterop.cpp.

◆ AcquirePrime()

std::vector< MythVideoTextureOpenGL * > MythVAAPIInteropDRM::AcquirePrime ( VASurfaceID  Id,
MythRenderOpenGL Context,
MythVideoFrame Frame 
)
private

Export the given VideoFrame as a DRM PRIME descriptor.

This is funcionally equivalent to the 'regular' VAAPI version but is useful for testing DRM PRIME functionality on desktops.

Definition at line 414 of file mythvaapidrminterop.cpp.

Referenced by Acquire().

◆ AcquireVAAPI()

std::vector< MythVideoTextureOpenGL * > MythVAAPIInteropDRM::AcquireVAAPI ( VASurfaceID  Id,
MythRenderOpenGL Context,
MythVideoFrame Frame 
)
private

Definition at line 292 of file mythvaapidrminterop.cpp.

Referenced by Acquire().

◆ CleanupDRMPRIME()

void MythVAAPIInteropDRM::CleanupDRMPRIME ( )
private

◆ CleanupReferenceFrames()

void MythVAAPIInteropDRM::CleanupReferenceFrames ( )
private

Definition at line 115 of file mythvaapidrminterop.cpp.

Referenced by Acquire(), and ~MythVAAPIInteropDRM().

◆ DeleteTextures()

void MythVAAPIInteropDRM::DeleteTextures ( void  )
overridevirtual

Reimplemented from MythOpenGLInterop.

Definition at line 69 of file mythvaapidrminterop.cpp.

Referenced by DestroyDeinterlacer(), PostInitDeinterlacer(), and ~MythVAAPIInteropDRM().

◆ DestroyDeinterlacer()

void MythVAAPIInteropDRM::DestroyDeinterlacer ( void  )
overrideprotectedvirtual

Reimplemented from MythVAAPIInterop.

Definition at line 96 of file mythvaapidrminterop.cpp.

Referenced by Acquire(), and ~MythVAAPIInteropDRM().

◆ GetDRMFrameDescriptor()

AVDRMFrameDescriptor * MythVAAPIInteropDRM::GetDRMFrameDescriptor ( VASurfaceID  Id)
private

Definition at line 428 of file mythvaapidrminterop.cpp.

Referenced by AcquirePrime().

◆ GetReferenceFrames()

std::vector< MythVideoTextureOpenGL * > MythVAAPIInteropDRM::GetReferenceFrames ( )
private

Definition at line 147 of file mythvaapidrminterop.cpp.

Referenced by Acquire().

◆ IsSupported()

bool MythVAAPIInteropDRM::IsSupported ( MythRenderOpenGL Context)
static

Definition at line 380 of file mythvaapidrminterop.cpp.

Referenced by MythVAAPIInterop::GetVAAPITypes().

◆ PostInitDeinterlacer()

void MythVAAPIInteropDRM::PostInitDeinterlacer ( void  )
overrideprotectedvirtual

Reimplemented from MythVAAPIInterop.

Definition at line 107 of file mythvaapidrminterop.cpp.

◆ RotateReferenceFrames()

void MythVAAPIInteropDRM::RotateReferenceFrames ( AVBufferRef *  Buffer)
private

Definition at line 124 of file mythvaapidrminterop.cpp.

Referenced by Acquire().

◆ TestPrimeInterop()

bool MythVAAPIInteropDRM::TestPrimeInterop ( )
private

Definition at line 458 of file mythvaapidrminterop.cpp.

Referenced by MythVAAPIInteropDRM().

◆ VATypeToMythType()

VideoFrameType MythVAAPIInteropDRM::VATypeToMythType ( uint32_t  Fourcc)
staticprivate

Definition at line 359 of file mythvaapidrminterop.cpp.

Referenced by AcquireVAAPI().

Member Data Documentation

◆ m_drmFile

QFile MythVAAPIInteropDRM::m_drmFile
private

Definition at line 39 of file mythvaapidrminterop.h.

Referenced by MythVAAPIInteropDRM(), and ~MythVAAPIInteropDRM().

◆ m_drmFrames

QHash<unsigned long long, AVDRMFrameDescriptor*> MythVAAPIInteropDRM::m_drmFrames
private

Definition at line 53 of file mythvaapidrminterop.h.

Referenced by AcquirePrime(), and CleanupDRMPRIME().

◆ m_referenceFrames

QVector<AVBufferRef*> MythVAAPIInteropDRM::m_referenceFrames
private

◆ m_usePrime

bool MythVAAPIInteropDRM::m_usePrime { false }
private

Definition at line 52 of file mythvaapidrminterop.h.

Referenced by Acquire(), and MythVAAPIInteropDRM().


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