Skip to content

Commit

Permalink
libmythtv: Remove various uses of MythRenderOpenGL:GetOpenGLRender
Browse files Browse the repository at this point in the history
  • Loading branch information
mark-kendall committed Dec 22, 2020
1 parent 98b6fd1 commit 8fb250b
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 50 deletions.
6 changes: 4 additions & 2 deletions mythtv/libs/libmythtv/decoders/mythdrmprimecontext.cpp
@@ -1,5 +1,6 @@
// MythTV
#include "avformatdecoder.h"
#include "mythplayerui.h"
#include "mythdrmprimecontext.h"

#define LOC QString("DRMPRIMECtx: ")
Expand Down Expand Up @@ -109,8 +110,9 @@ int MythDRMPRIMEContext::HwDecoderInit(AVCodecContext *Context)
return -1;

#ifdef USING_EGL
auto * context = MythRenderOpenGL::GetOpenGLRender();
m_interop = MythDRMPRIMEInterop::CreateDRM(context);
if (auto * player = GetPlayerUI(Context); player != nullptr)
if (FrameTypeIsSupported(Context, FMT_DRMPRIME))
m_interop = MythDRMPRIMEInterop::CreateDRM(dynamic_cast<MythRenderOpenGL*>(player->GetRender()));
#endif
return m_interop ? 0 : -1;
}
Expand Down
4 changes: 2 additions & 2 deletions mythtv/libs/libmythtv/decoders/mythmediacodeccontext.cpp
Expand Up @@ -167,12 +167,12 @@ int MythMediaCodecContext::InitialiseDecoder(AVCodecContext *Context)

// The interop must have a reference to the ui player so it can be deleted
// from the main thread.
MythPlayerUI* player = GetPlayerUI(Context);
auto * player = GetPlayerUI(Context);
if (!player)
return -1;

// Retrieve OpenGL render context
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
auto * render = dynamic_cast<MythRenderOpenGL*>(player->GetRender());
if (!render)
return -1;
OpenGLLocker locker(render);
Expand Down
4 changes: 2 additions & 2 deletions mythtv/libs/libmythtv/decoders/mythnvdeccontext.cpp
Expand Up @@ -137,12 +137,12 @@ int MythNVDECContext::InitialiseDecoder(AVCodecContext *Context)

// We need a player to release the interop. As we are using direct rendering
// it must be a MythPlayerUI instance
MythPlayerUI* player = GetPlayerUI(Context);
auto * player = GetPlayerUI(Context);
if (!player)
return -1;

// Retrieve OpenGL render context
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
auto * render = dynamic_cast<MythRenderOpenGL*>(player->GetRender());
if (!render)
return -1;
OpenGLLocker locker(render);
Expand Down
11 changes: 6 additions & 5 deletions mythtv/libs/libmythtv/decoders/mythv4l2m2mcontext.cpp
Expand Up @@ -415,17 +415,18 @@ int MythV4L2M2MContext::InitialiseV4L2RequestContext(AVCodecContext *Context)
if (!Context || !gCoreContext->IsUIThread())
return -1;

// We need a render device
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
if (!render)
return -1;

// The interop must have a reference to the ui player so it can be deleted
// from the main thread.
MythPlayerUI* player = GetPlayerUI(Context);
if (!player)
return -1;

// Retrieve OpenGL render context
auto * render = dynamic_cast<MythRenderOpenGL*>(player->GetRender());
if (!render)
return -1;
OpenGLLocker locker(render);

// Create interop
MythOpenGLInterop *interop = nullptr;
#ifdef USING_EGL
Expand Down
27 changes: 6 additions & 21 deletions mythtv/libs/libmythtv/decoders/mythvaapicontext.cpp
Expand Up @@ -238,17 +238,17 @@ int MythVAAPIContext::InitialiseContext(AVCodecContext *Context)
if (!Context || !gCoreContext->IsUIThread())
return -1;

// We need a render device
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
if (!render)
return -1;

// The interop must have a reference to the ui player so it can be deleted
// from the main thread.
MythPlayerUI* player = GetPlayerUI(Context);
auto * player = GetPlayerUI(Context);
if (!player)
return -1;

// Retrieve OpenGL render context
auto * render = dynamic_cast<MythRenderOpenGL*>(player->GetRender());
if (!render)
return -1;

// Create interop
auto * interop = MythVAAPIInterop::CreateVAAPI(render);
if (!interop)
Expand Down Expand Up @@ -581,21 +581,6 @@ const VAAPIProfiles &MythVAAPIContext::GetProfiles(void)
}
av_freep(&profilelist);
av_buffer_unref(&hwdevicectx);

// Once only check for EGL support for best performance
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
if (!s_profiles.isEmpty() && render)
{
if (render->IsEGL())
{
LOG(VB_GENERAL, LOG_INFO, LOC + "EGL DMABUF available for best VAAPI performance");
}
else
{
LOG(VB_GENERAL, LOG_WARNING, LOC + "No EGL support. VAAPI performance will be reduced");
LOG(VB_GENERAL, LOG_WARNING, LOC + "Consider setting MYTHTV_FORCE_EGL=1 to try and enable");
}
}
return s_profiles;
}

Expand Down
12 changes: 6 additions & 6 deletions mythtv/libs/libmythtv/decoders/mythvtbcontext.cpp
Expand Up @@ -132,18 +132,18 @@ int MythVTBContext::InitialiseDecoder(AVCodecContext *Context)
if (!gCoreContext->IsUIThread())
return -1;

// Retrieve OpenGL render context
MythRenderOpenGL* render = MythRenderOpenGL::GetOpenGLRender();
if (!render)
return -1;
OpenGLLocker locker(render);

// The interop must have a reference to the ui player so it can be deleted
// from the main thread.
MythPlayerUI* player = GetPlayerUI(Context);
if (!player)
return -1;

// Retrieve OpenGL render context
auto * render = dynamic_cast<MythRenderOpenGL*>(player->GetRender());
if (!render)
return -1;
OpenGLLocker locker(render);

// Create interop
MythVTBInterop* interop = MythVTBInterop::CreateVTB(render);
if (!interop)
Expand Down
2 changes: 0 additions & 2 deletions mythtv/libs/libmythtv/opengl/mythegldmabuf.cpp
Expand Up @@ -24,8 +24,6 @@ MythEGLDMABUF::MythEGLDMABUF(MythRenderOpenGL *Context)

bool MythEGLDMABUF::HaveDMABuf(MythRenderOpenGL *Context)
{
if (!Context)
Context = MythRenderOpenGL::GetOpenGLRender();
if (!Context)
return false;
OpenGLLocker locker(Context);
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythtv/opengl/mythmmalinterop.h
Expand Up @@ -14,7 +14,7 @@ class MythMMALInterop : public MythOpenGLInterop
{
public:
static void GetMMALTypes(MythRenderOpenGL* Render, MythInteropGPU::InteropMap& Types);
static MythMMALInterop* CreateMMAL(MythRenderOpenGL *Context);
static MythMMALInterop* CreateMMAL(MythRenderOpenGL* Context);
virtual vector<MythVideoTextureOpenGL*> Acquire(MythRenderOpenGL *Context,
MythVideoColourSpace *ColourSpace,
MythVideoFrame *Frame, FrameScanType Scan) override;
Expand Down
18 changes: 9 additions & 9 deletions mythtv/programs/mythfrontend/statusbox.cpp
Expand Up @@ -1555,25 +1555,25 @@ void StatusBox::doDisplayStatus()
if (m_justHelpText)
m_justHelpText->SetText(displayhelp);

MythMainWindow* window = GetMythMainWindow();
auto * window = GetMythMainWindow();
QStringList desc = window->GetDisplay()->GetDescription();
for (const auto & line : qAsConst(desc))
AddLogLine(line);
AddLogLine("");

MythRender* render = window->GetRenderDevice();
if (render)
auto * render = window->GetRenderDevice();
if (render && render->Type() == kRenderOpenGL)
{
MythRenderOpenGL* gl = MythRenderOpenGL::GetOpenGLRender();
if (gl && (gl->GetExtraFeatures() & kGLNVMemory))
auto * opengl = dynamic_cast<MythRenderOpenGL*>(render);
if (opengl && (opengl->GetExtraFeatures() & kGLNVMemory))
{
auto GetGPUMem = []()
{
if (auto * opengl = MythRenderOpenGL::GetOpenGLRender(); opengl)
return opengl->GetGPUMemory();
return std::tuple<int,int,int>{ 0, 0, 0 };
auto * rend = GetMythMainWindow()->GetRenderDevice();
if (auto * gl = dynamic_cast<MythRenderOpenGL*>(rend); gl != nullptr)
return gl->GetGPUMemory();
return std::tuple<int,int,int> { 0, 0, 0 };
};

auto UpdateUsed = [&GetGPUMem](StatusBoxItem* Item)
{
auto mem = GetGPUMem();
Expand Down

0 comments on commit 8fb250b

Please sign in to comment.