#include <libmythtv/opengl/mythnvdecinterop.h>
|
static void | GetNVDECTypes (MythRenderOpenGL *Render, MythInteropGPU::InteropMap &Types) |
|
static MythNVDECInterop * | CreateNVDEC (MythPlayerUI *Player, MythRenderOpenGL *Context) |
|
static bool | CreateCUDAContext (MythRenderOpenGL *GLContext, CudaFunctions *&CudaFuncs, CUcontext &CudaContext) |
|
static void | CleanupContext (MythRenderOpenGL *GLContext, CudaFunctions *&CudaFuncs, CUcontext &CudaContext) |
|
static void | GetTypes (MythRender *Render, MythInteropGPU::InteropMap &Types) |
|
static std::vector< MythVideoTextureOpenGL * > | Retrieve (MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan) |
|
static InteropMap | GetTypes (MythRender *Render) |
|
static QString | TypeToString (InteropType Type) |
|
static QString | TypesToString (const InteropMap &Types) |
|
static MythInteropGPU * | CreateDummy () |
|
static void | PrintDebug (void) |
| Print out any leaks if that level of debugging is enabled. More...
|
|
|
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 > |
|
MythRenderOpenGL * | m_openglContext { nullptr } |
|
QHash< unsigned long long, std::vector< MythVideoTextureOpenGL * > > | m_openglTextures |
|
MythRender * | m_context { nullptr } |
|
QSize | m_textureSize |
|
uint64_t | m_discontinuityCounter { 0 } |
|
FreeAVHWDeviceContext | m_defaultFree { nullptr } |
|
void * | m_defaultUserOpaque { nullptr } |
|
MythPlayerUI * | m_player { nullptr } |
|
InteropType | m_type { Unsupported } |
|
bool | m_logDebug |
| This is used to suppress creating LoggingItem classes for LoggingItem reference count changes. More...
|
|
QAtomicInt | m_referenceCount {1} |
|
Definition at line 12 of file mythnvdecinterop.h.
◆ MythNVDECInterop()
◆ ~MythNVDECInterop()
MythNVDECInterop::~MythNVDECInterop |
( |
| ) |
|
|
overrideprotected |
◆ GetNVDECTypes()
◆ CreateNVDEC()
◆ CreateCUDAContext()
bool MythNVDECInterop::CreateCUDAContext |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext |
|
) |
| |
|
static |
◆ CleanupContext()
void MythNVDECInterop::CleanupContext |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext |
|
) |
| |
|
static |
◆ IsValid()
bool MythNVDECInterop::IsValid |
( |
| ) |
|
◆ GetCUDAContext()
CUcontext MythNVDECInterop::GetCUDAContext |
( |
| ) |
|
◆ Acquire()
Map CUDA video memory to OpenGL textures.
- Note
- This is not zero copy - although the copy will be extremely fast. It may be marginally quicker to implement a custom FFmpeg buffer pool that allocates textures and maps the texture storage to a CUdeviceptr (if that is possible). Alternatively EGL interopability may also be useful.
Reimplemented from MythOpenGLInterop.
Definition at line 115 of file mythnvdecinterop.cpp.
◆ InitialiseCuda()
bool MythNVDECInterop::InitialiseCuda |
( |
| ) |
|
|
private |
Initialise a CUDA context.
- Note
- We do not use the FFmpeg internal context creation as the created context is deleted before we have a chance to cleanup our own CUDA resources.
Definition at line 320 of file mythnvdecinterop.cpp.
Referenced by MythNVDECInterop().
◆ DeleteTextures()
void MythNVDECInterop::DeleteTextures |
( |
| ) |
|
|
overrideprivatevirtual |
◆ RotateReferenceFrames()
void MythNVDECInterop::RotateReferenceFrames |
( |
CUdeviceptr |
Buffer | ) |
|
|
private |
◆ CreateCUDAPriv()
bool MythNVDECInterop::CreateCUDAPriv |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext, |
|
|
bool & |
Retry |
|
) |
| |
|
staticprivate |
◆ m_cudaContext
CUcontext MythNVDECInterop::m_cudaContext {} |
|
private |
◆ m_cudaFuncs
CudaFunctions* MythNVDECInterop::m_cudaFuncs { nullptr } |
|
private |
◆ m_referenceFrames
QVector<CUdeviceptr> MythNVDECInterop::m_referenceFrames |
|
private |
The documentation for this class was generated from the following files: