MythTV  master
mythdrmprimeinterop.h
Go to the documentation of this file.
1 #ifndef MYTHDRMPRIMEINTEROP_H
2 #define MYTHDRMPRIMEINTEROP_H
3 
4 // MythTV
5 #include "mythegldmabuf.h"
6 #include "mythopenglinterop.h"
7 
8 #ifdef USING_DRM_VIDEO
9 #include "drm/mythvideodrm.h"
10 #endif
11 
12 struct AVDRMFrameDescriptor;
13 
15 {
16  public:
17  static void GetDRMTypes(MythRenderOpenGL* Render, MythInteropGPU::InteropMap& Types);
19  void DeleteTextures(void) override;
20  std::vector<MythVideoTextureOpenGL*>
21  Acquire(MythRenderOpenGL *Context,
22  MythVideoColourSpace *ColourSpace,
23  MythVideoFrame *Frame, FrameScanType Scan) override;
24 
25  protected:
27  ~MythDRMPRIMEInterop() override;
28 
29  private:
30  AVDRMFrameDescriptor* VerifyBuffer(MythRenderOpenGL *Context, MythVideoFrame *Frame);
31  bool m_deinterlacing { false };
32  bool m_composable { true };
33 
34 #ifdef USING_DRM_VIDEO
35  bool HandleDRMVideo(MythVideoColourSpace* ColourSpace, MythVideoFrame* Frame,
36  AVDRMFrameDescriptor* DRMDesc);
37  MythVideoDRM* m_drm { nullptr };
38  bool m_drmTriedAndFailed { false };
39 #endif
40 };
41 
42 #endif
MythDRMPRIMEInterop::CreateDRM
static MythDRMPRIMEInterop * CreateDRM(MythRenderOpenGL *Context, MythPlayerUI *Player)
Create a DRM PRIME interop instance.
Definition: mythdrmprimeinterop.cpp:62
MythDRMPRIMEInterop::GetDRMTypes
static void GetDRMTypes(MythRenderOpenGL *Render, MythInteropGPU::InteropMap &Types)
Definition: mythdrmprimeinterop.cpp:78
MythDRMPRIMEInterop
Definition: mythdrmprimeinterop.h:14
mythopenglinterop.h
Frame
Definition: zmdefines.h:93
MythDRMPRIMEInterop::DeleteTextures
void DeleteTextures(void) override
Definition: mythdrmprimeinterop.cpp:33
MythEGLDMABUF
Definition: mythegldmabuf.h:15
mythvideodrm.h
mythegldmabuf.h
MythInteropGPU::InteropMap
std::map< VideoFrameType, InteropTypes > InteropMap
Definition: mythinteropgpu.h:44
MythDRMPRIMEInterop::m_composable
bool m_composable
Definition: mythdrmprimeinterop.h:32
MythPlayerUI
Definition: mythplayerui.h:12
MythOpenGLInterop
Definition: mythopenglinterop.h:17
MythInteropGPU::InteropType
InteropType
Definition: mythinteropgpu.h:25
MythVideoDRM
Definition: mythvideodrm.h:14
MythDRMPRIMEInterop::m_deinterlacing
bool m_deinterlacing
Definition: mythdrmprimeinterop.h:31
MythRenderOpenGL
Definition: mythrenderopengl.h:96
MythDRMPRIMEInterop::Acquire
std::vector< MythVideoTextureOpenGL * > Acquire(MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan) override
Definition: mythdrmprimeinterop.cpp:128
MythDRMPRIMEInterop::VerifyBuffer
AVDRMFrameDescriptor * VerifyBuffer(MythRenderOpenGL *Context, MythVideoFrame *Frame)
Definition: mythdrmprimeinterop.cpp:94
MythDRMPRIMEInterop::~MythDRMPRIMEInterop
~MythDRMPRIMEInterop() override
Definition: mythdrmprimeinterop.cpp:25
FrameScanType
FrameScanType
Definition: videoouttypes.h:94
Player
Definition: zmliveplayer.h:34
MythVideoFrame
Definition: mythframe.h:88
MythDRMPRIMEInterop::MythDRMPRIMEInterop
MythDRMPRIMEInterop(MythRenderOpenGL *Context, MythPlayerUI *Player, InteropType Type)
Definition: mythdrmprimeinterop.cpp:19
MythVideoColourSpace
MythVideoColourSpace contains a QMatrix4x4 that can convert YCbCr data to RGB.
Definition: mythvideocolourspace.h:18