#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: