diff --git a/app/app.pro b/app/app.pro index be16d837..2690273e 100644 --- a/app/app.pro +++ b/app/app.pro @@ -286,6 +286,18 @@ mmal { DEFINES += HAVE_MMAL SOURCES += streaming/video/ffmpeg-renderers/mmal.cpp HEADERS += streaming/video/ffmpeg-renderers/mmal.h + + # We suppress EGL usage when MMAL is available because MMAL has + # significantly better performance than EGL on the Pi. Setting + # this option allows EGL usage even if built with MMAL support. + # + # It is highly recommended to also build with 'glslow' to avoid + # EGL being preferred if direct DRM rendering is available. + allow-egl-with-mmal { + message(Allowing EGL usage with MMAL enabled) + + DEFINES += ALLOW_EGL_WITH_MMAL + } } libdrm { message(DRM renderer selected) diff --git a/app/streaming/video/ffmpeg-renderers/drm.cpp b/app/streaming/video/ffmpeg-renderers/drm.cpp index e5a5d08d..89e0a6cd 100644 --- a/app/streaming/video/ffmpeg-renderers/drm.cpp +++ b/app/streaming/video/ffmpeg-renderers/drm.cpp @@ -1239,7 +1239,7 @@ bool DrmRenderer::canExportEGL() { return false; } -#ifdef HAVE_MMAL +#if defined(HAVE_MMAL) && !defined(ALLOW_EGL_WITH_MMAL) // EGL rendering is so slow on the Raspberry Pi 4 that we should basically // never use it. It is suitable for 1080p 30 FPS on a good day, and much // much less than that if you decide to do something crazy like stream diff --git a/app/streaming/video/ffmpeg.cpp b/app/streaming/video/ffmpeg.cpp index 46bcf845..314cb2eb 100644 --- a/app/streaming/video/ffmpeg.cpp +++ b/app/streaming/video/ffmpeg.cpp @@ -1032,7 +1032,7 @@ bool FFmpegVideoDecoder::isDecoderIgnored(const AVCodec *decoder) { Q_UNUSED(decoder); -#ifdef HAVE_MMAL +#if defined(HAVE_MMAL) && !defined(ALLOW_EGL_WITH_MMAL) // Only enable V4L2M2M by default on non-MMAL (RPi) builds. The performance // of the V4L2M2M wrapper around MMAL is not enough for 1080p 60 FPS, so we // would rather show the missing hardware acceleration warning when the user