#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 |
◆ 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 116 of file mythnvdecinterop.cpp.
◆ CleanupContext()
| void MythNVDECInterop::CleanupContext |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext |
|
) |
| |
|
static |
◆ CreateCUDAContext()
| bool MythNVDECInterop::CreateCUDAContext |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext |
|
) |
| |
|
static |
◆ CreateCUDAPriv()
| bool MythNVDECInterop::CreateCUDAPriv |
( |
MythRenderOpenGL * |
GLContext, |
|
|
CudaFunctions *& |
CudaFuncs, |
|
|
CUcontext & |
CudaContext, |
|
|
bool & |
Retry |
|
) |
| |
|
staticprivate |
◆ CreateNVDEC()
◆ DeleteTextures()
| void MythNVDECInterop::DeleteTextures |
( |
void |
| ) |
|
|
overrideprivatevirtual |
◆ GetCUDAContext()
| CUcontext MythNVDECInterop::GetCUDAContext |
( |
| ) |
|
◆ GetNVDECTypes()
◆ 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 321 of file mythnvdecinterop.cpp.
Referenced by MythNVDECInterop().
◆ IsValid()
| bool MythNVDECInterop::IsValid |
( |
void |
| ) |
|
◆ RotateReferenceFrames()
| void MythNVDECInterop::RotateReferenceFrames |
( |
CUdeviceptr |
Buffer | ) |
|
|
private |
◆ 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: