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 @@ -68,9 +68,6 @@ const struct vo_driver *const video_out_drivers[] = &video_out_libmpv, #if HAVE_ANDROID &video_out_mediacodec_embed, -#endif -#if HAVE_RPI - &video_out_rpi, #endif &video_out_gpu, #if HAVE_VDPAU @@ -100,6 +97,9 @@ const struct vo_driver *const video_out_drivers[] = #endif #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" ),