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  vector<MythVideoTextureOpenGL*> Acquire(MythRenderOpenGL *Context,
21  MythVideoColourSpace *ColourSpace,
22  MythVideoFrame *Frame, FrameScanType Scan) override;
23 
24  protected:
26  ~MythDRMPRIMEInterop() override;
27 
28  private:
29  AVDRMFrameDescriptor* VerifyBuffer(MythRenderOpenGL *Context, MythVideoFrame *Frame);
30  bool m_deinterlacing { false };
31  bool m_composable { true };
32 
33 #ifdef USING_DRM_VIDEO
34  bool HandleDRMVideo(MythVideoColourSpace* ColourSpace, MythVideoFrame* Frame,
35  AVDRMFrameDescriptor* DRMDesc);
36  MythVideoDRM* m_drm { nullptr };
37  bool m_drmTriedAndFailed { false };
38 #endif
39 };
40 
41 #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:77
MythDRMPRIMEInterop
Definition: mythdrmprimeinterop.h:14
mythopenglinterop.h
Frame
Definition: zmdefines.h:93
MythDRMPRIMEInterop::DeleteTextures
void DeleteTextures(void) override
Definition: mythdrmprimeinterop.cpp:33
FrameScanType
FrameScanType
Definition: videoouttypes.h:94
MythEGLDMABUF
Definition: mythegldmabuf.h:15
mythvideodrm.h
mythegldmabuf.h
MythInteropGPU::InteropMap
std::map< VideoFrameType, InteropTypes > InteropMap
Definition: mythinteropgpu.h:45
MythDRMPRIMEInterop::m_composable
bool m_composable
Definition: mythdrmprimeinterop.h:31
MythPlayerUI
Definition: mythplayerui.h:10
MythOpenGLInterop
Definition: mythopenglinterop.h:17
MythVideoDRM
Definition: mythvideodrm.h:14
MythDRMPRIMEInterop::m_deinterlacing
bool m_deinterlacing
Definition: mythdrmprimeinterop.h:30
MythRenderOpenGL
Definition: mythrenderopengl.h:99
MythDRMPRIMEInterop::VerifyBuffer
AVDRMFrameDescriptor * VerifyBuffer(MythRenderOpenGL *Context, MythVideoFrame *Frame)
Definition: mythdrmprimeinterop.cpp:93
MythDRMPRIMEInterop::~MythDRMPRIMEInterop
~MythDRMPRIMEInterop() override
Definition: mythdrmprimeinterop.cpp:25
Player
Definition: zmliveplayer.h:34
MythVideoFrame
Definition: mythframe.h:88
MythInteropGPU::InteropType
InteropType
Definition: mythinteropgpu.h:26
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
MythDRMPRIMEInterop::Acquire
vector< MythVideoTextureOpenGL * > Acquire(MythRenderOpenGL *Context, MythVideoColourSpace *ColourSpace, MythVideoFrame *Frame, FrameScanType Scan) override
Definition: mythdrmprimeinterop.cpp:126