summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Cawley <ccawley2011@gmail.com>2019-07-14 14:56:10 +0100
committerwm4 <wm4@nowhere>2019-09-20 11:39:06 +0200
commitdb09d77e46128a68f06dc89d34bdc6045ace63f2 (patch)
tree3fc89be59ff503710fec24b01d522360dce18630
parenta46f83e98296c55f5aea04ca44d505ed871a766b (diff)
downloadmpv-db09d77e46128a68f06dc89d34bdc6045ace63f2.tar.bz2
mpv-db09d77e46128a68f06dc89d34bdc6045ace63f2.tar.xz
rpi: Update for modern systems
-rw-r--r--video/out/gpu/hwdec.c2
-rw-r--r--video/out/opengl/context_rpi.c4
-rw-r--r--video/out/vo.c6
-rw-r--r--wscript23
-rw-r--r--wscript_build.py4
5 files changed, 14 insertions, 25 deletions
diff --git a/video/out/gpu/hwdec.c b/video/out/gpu/hwdec.c
index 751ed5944b..ed96bf529f 100644
--- a/video/out/gpu/hwdec.c
+++ b/video/out/gpu/hwdec.c
@@ -72,7 +72,7 @@ const struct ra_hwdec_driver *const ra_hwdec_drivers[] = {
#if HAVE_VDPAU_GL_X11
&ra_hwdec_vdpau,
#endif
-#if HAVE_RPI
+#if HAVE_RPI_MMAL
&ra_hwdec_rpi_overlay,
#endif
#if HAVE_DRMPRIME && HAVE_DRM
diff --git a/video/out/opengl/context_rpi.c b/video/out/opengl/context_rpi.c
index fbd9721b89..570d43d99c 100644
--- a/video/out/opengl/context_rpi.c
+++ b/video/out/opengl/context_rpi.c
@@ -139,7 +139,7 @@ static bool recreate_dispmanx(struct ra_ctx *ctx)
VC_RECT_T dst = {.x = p->x, .y = p->y, .width = p->w, .height = p->h};
VC_RECT_T src = {.width = p->w << 16, .height = p->h << 16};
VC_DISPMANX_ALPHA_T alpha = {
- .flags = DISPMANX_FLAGS_ALPHA_FROM_SOURCE,
+ .flags = DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS,
.opacity = 0xFF,
};
p->window = vc_dispmanx_element_add(p->update, p->display, layer, &dst, 0,
@@ -234,7 +234,7 @@ static bool rpi_init(struct ra_ctx *ctx)
if (!mpegl_create_context(ctx, p->egl_display, &p->egl_context, &p->egl_config))
goto fail;
- if (recreate_dispmanx(ctx) < 0)
+ if (!recreate_dispmanx(ctx))
goto fail;
mpegl_load_functions(&p->gl, ctx->log);
diff --git a/video/out/vo.c b/video/out/vo.c
index a094885112..7aafe28c64 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -69,9 +69,6 @@ const struct vo_driver *const video_out_drivers[] =
#if HAVE_ANDROID
&video_out_mediacodec_embed,
#endif
-#if HAVE_RPI
- &video_out_rpi,
-#endif
&video_out_gpu,
#if HAVE_VDPAU
&video_out_vdpau,
@@ -101,6 +98,9 @@ const struct vo_driver *const video_out_drivers[] =
#if HAVE_DRM
&video_out_drm,
#endif
+#if HAVE_RPI_MMAL
+ &video_out_rpi,
+#endif
&video_out_lavc,
NULL
};
diff --git a/wscript b/wscript
index 62ea9c2998..0fa0480f55 100644
--- a/wscript
+++ b/wscript
@@ -763,25 +763,9 @@ video_output_features = [
'deps': 'win32-desktop && shaderc && spirv-cross',
'func': check_cc(header_name=['d3d11_1.h', 'dxgi1_2.h']),
}, {
- # We need MMAL/bcm_host/dispmanx APIs. Also, most RPI distros require
- # every project to hardcode the paths to the include directories. Also,
- # these headers are so broken that they spam tons of warnings by merely
- # including them (compensate with -isystem and -fgnu89-inline).
'name': '--rpi',
'desc': 'Raspberry Pi support',
- 'func': compose_checks(
- check_cc(cflags=["-isystem/opt/vc/include",
- "-isystem/opt/vc/include/interface/vcos/pthreads",
- "-isystem/opt/vc/include/interface/vmcs_host/linux",
- "-fgnu89-inline"],
- linkflags="-L/opt/vc/lib",
- header_name="bcm_host.h",
- lib=['mmal_core', 'mmal_util', 'mmal_vc_client', 'bcm_host']),
- # We still need all OpenGL symbols, because the vo_gpu code is
- # generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core.
- check_cc(lib="EGL", linkflags="-lGLESv2"),
- check_cc(lib="GLESv2"),
- ),
+ 'func': check_pkg_config('brcmegl'),
} , {
'name': '--ios-gl',
'desc': 'iOS OpenGL ES hardware decoding interop support',
@@ -861,6 +845,11 @@ hwaccel_features = [
'desc': 'CUDA hwaccel',
'deps': '(gl || vulkan) && ffnvcodec',
'func': check_true,
+ }, {
+ 'name': '--rpi-mmal',
+ 'desc': 'Raspberry Pi MMAL hwaccel',
+ 'deps': 'rpi',
+ 'func': check_pkg_config('mmal'),
}
]
diff --git a/wscript_build.py b/wscript_build.py
index 63cd7538ec..8e5b9a1b29 100644
--- a/wscript_build.py
+++ b/wscript_build.py
@@ -463,7 +463,7 @@ def build(ctx):
( "video/out/opengl/hwdec_dxva2gldx.c", "gl-dxinterop-d3d9" ),
( "video/out/opengl/hwdec_ios.m", "ios-gl" ),
( "video/out/opengl/hwdec_osx.c", "videotoolbox-gl" ),
- ( "video/out/opengl/hwdec_rpi.c", "rpi" ),
+ ( "video/out/opengl/hwdec_rpi.c", "rpi-mmal" ),
( "video/out/opengl/hwdec_vdpau.c", "vdpau-gl-x11" ),
( "video/out/opengl/libmpv_gl.c", "gl" ),
( "video/out/opengl/oml_sync.c", "egl-x11 || gl-x11" ),
@@ -479,7 +479,7 @@ def build(ctx):
( "video/out/vo_libmpv.c" ),
( "video/out/vo_mediacodec_embed.c", "android" ),
( "video/out/vo_null.c" ),
- ( "video/out/vo_rpi.c", "rpi" ),
+ ( "video/out/vo_rpi.c", "rpi-mmal" ),
( "video/out/vo_sdl.c", "sdl2" ),
( "video/out/vo_tct.c" ),
( "video/out/vo_vaapi.c", "vaapi-x11 && gpl" ),