Skip to content

Commit

Permalink
meson: make libplacebo a required dependency
Browse files Browse the repository at this point in the history
Make it not possible to build mpv without the latest libplacebo anymore.
This will allow for less code duplication between mpv and libplacebo,
and in the future also let us delete legacy ifdefs and track libplacebo
better.
  • Loading branch information
llyyr authored and haasn committed Oct 23, 2023
1 parent 59a3c45 commit f5ca11e
Show file tree
Hide file tree
Showing 9 changed files with 20 additions and 41 deletions.
2 changes: 1 addition & 1 deletion ci/build-macos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ PKG_CONFIG_PATH="${FFMPEG_SYSROOT}/lib/pkgconfig/" CC="${CC}" CXX="${CXX}" \
meson setup build \
-Dprefix="${MPV_INSTALL_PREFIX}" \
-D{libmpv,tests}=true \
-D{gl,iconv,lcms2,libplacebo,lua,jpeg,plain-gl,zlib}=enabled \
-D{gl,iconv,lcms2,lua,jpeg,plain-gl,zlib}=enabled \
-D{cocoa,coreaudio,gl-cocoa,macos-cocoa-cb,macos-touchbar,videotoolbox-gl}=enabled

meson compile -C build -j4
Expand Down
2 changes: 1 addition & 1 deletion ci/build-mingw64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ meson setup $build --cross-file "$prefix_dir/crossfile" \
-Dc_args="-Wno-error=deprecated -Wno-error=deprecated-declarations" \
--buildtype debugoptimized \
-Dlibmpv=true -Dlua=luajit \
-D{shaderc,spirv-cross,d3d11,libplacebo}=enabled
-D{shaderc,spirv-cross,d3d11}=enabled

meson compile -C $build

Expand Down
44 changes: 16 additions & 28 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ libavutil = dependency('libavutil', version: '>= 56.70.100')
libswresample = dependency('libswresample', version: '>= 3.9.100')
libswscale = dependency('libswscale', version: '>= 5.9.100')

libplacebo = dependency('libplacebo', version: '>=6.338.0', fallback: ['libplacebo', 'libplacebo'],
default_options: ['default_library=static', 'demos=false'])

libass = dependency('libass', version: '>= 0.12.2')

# the dependency order of libass -> ffmpeg is necessary due to
Expand All @@ -32,6 +35,7 @@ dependencies = [libass,
libavfilter,
libavformat,
libavutil,
libplacebo,
libswresample,
libswscale]

Expand All @@ -44,6 +48,7 @@ features = {
'avif-muxer': libavformat.version().version_compare('>= 59.24.100'),
'libass': true,
'threads': true,
'libplacebo': true,
}


Expand Down Expand Up @@ -234,6 +239,12 @@ sources = files(
'video/repack.c',
'video/sws_utils.c',

## libplacebo
'video/out/placebo/ra_pl.c',
'video/out/placebo/utils.c',
'video/out/vo_gpu_next.c',
'video/out/gpu_next/context.c',

## osdep
'osdep/io.c',
'osdep/semaphore_osx.c',
Expand Down Expand Up @@ -930,16 +941,6 @@ if features['jpeg']
dependencies += jpeg
endif

libplacebo = dependency('libplacebo', version: '>=6.292.0', required: get_option('libplacebo'))
features += {'libplacebo': libplacebo.found()}
if features['libplacebo']
dependencies += libplacebo
sources += files('video/out/placebo/ra_pl.c',
'video/out/placebo/utils.c',
'video/out/vo_gpu_next.c',
'video/out/gpu_next/context.c')
endif

sdl2_video = get_option('sdl2-video').require(
features['sdl2'],
error_message: 'sdl2 was not found!',
Expand Down Expand Up @@ -1257,7 +1258,7 @@ endif
# vulkan
vulkan_opt = get_option('vulkan').require(
libplacebo.get_variable('pl_has_vulkan', default_value: '0') == '1',
error_message: 'libplacebo could not be found!',
error_message: 'libplacebo compiled without vulkan support!',
)
vulkan = dependency('vulkan', version: '>= 1.1.70', required: vulkan_opt)
features += {'vulkan': vulkan.found()}
Expand Down Expand Up @@ -1330,9 +1331,8 @@ endif

vulkan_interop = get_option('vulkan-interop').require(
features['vulkan'] and vulkan.version().version_compare('>=1.3.238') and
features['libplacebo'] and
libavutil.version().version_compare('>=58.11.100'),
error_message: 'Vulkan Interop requires vulkan headers >= 1.3.238, libplacebo, and libavutil >= 58.11.100',
error_message: 'Vulkan Interop requires vulkan headers >= 1.3.238, and libavutil >= 58.11.100',
)
features += {'vulkan-interop': vulkan_interop.allowed()}
if vulkan_interop.allowed()
Expand Down Expand Up @@ -1426,14 +1426,9 @@ features += {'vaapi': vaapi.allowed()}
if features['vaapi']
dependencies += libva
sources += files('video/filter/vf_vavpp.c',
'video/vaapi.c')
endif

features += {'vaapi-egl': features['vaapi'] and features['egl'] and features['drm']}
features += {'vaapi-libplacebo': features['vaapi'] and libplacebo.found()}

if features['vaapi-egl'] or features['vaapi-libplacebo']
sources += files('video/out/hwdec/hwdec_vaapi.c')
'video/vaapi.c',
'video/out/hwdec/hwdec_vaapi.c',
'video/out/hwdec/dmabuf_interop_pl.c')
endif

dmabuf_interop_gl = features['egl'] and features['drm']
Expand All @@ -1442,12 +1437,6 @@ if features['dmabuf-interop-gl']
sources += files('video/out/hwdec/dmabuf_interop_gl.c')
endif

dmabuf_interop_pl = features['vaapi-libplacebo']
features += {'dmabuf-interop-pl': dmabuf_interop_pl}
if features['dmabuf-interop-pl']
sources += files('video/out/hwdec/dmabuf_interop_pl.c')
endif

vdpau_opt = get_option('vdpau').require(
features['x11'],
error_message: 'x11 was not found!',
Expand Down Expand Up @@ -1786,7 +1775,6 @@ if get_option('tests')
endif

summary({'d3d11': features['d3d11'],
'gpu-next': features['libplacebo'],
'javascript': features['javascript'],
'libmpv': get_option('libmpv'),
'lua': features['lua'],
Expand Down
1 change: 0 additions & 1 deletion meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ option('gl-dxinterop', type: 'feature', value: 'auto', description: 'OpenGL/Dire
option('gl-win32', type: 'feature', value: 'auto', description: 'OpenGL Win32 Backend')
option('gl-x11', type: 'feature', value: 'disabled', description: 'OpenGL X11/GLX (deprecated/legacy)')
option('jpeg', type: 'feature', value: 'auto', description: 'JPEG support')
option('libplacebo', type: 'feature', value: 'auto', description: 'libplacebo support')
option('rpi', type: 'feature', value: 'disabled', description: 'Raspberry Pi support')
option('sdl2-video', type: 'feature', value: 'auto', description: 'SDL2 video output')
option('shaderc', type: 'feature', value: 'auto', description: 'libshaderc SPIR-V compiler')
Expand Down
4 changes: 0 additions & 4 deletions player/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@

#include "config.h"

#if HAVE_LIBPLACEBO
#include <libplacebo/config.h>
#endif

#include "mpv_talloc.h"

Expand Down Expand Up @@ -149,9 +147,7 @@ void mp_print_version(struct mp_log *log, int always)
mp_msg(log, v, "%s %s\n", mpv_version, mpv_copyright);
if (strcmp(mpv_builddate, "UNKNOWN"))
mp_msg(log, v, " built on %s\n", mpv_builddate);
#if HAVE_LIBPLACEBO
mp_msg(log, v, "libplacebo version: %s\n", PL_VERSION);
#endif
check_library_versions(log, v);
mp_msg(log, v, "\n");
// Only in verbose mode.
Expand Down
2 changes: 1 addition & 1 deletion video/out/gpu/hwdec.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ extern const struct ra_hwdec_driver ra_hwdec_aimagereader;
extern const struct ra_hwdec_driver ra_hwdec_vulkan;

const struct ra_hwdec_driver *const ra_hwdec_drivers[] = {
#if HAVE_VAAPI_EGL || HAVE_VAAPI_LIBPLACEBO
#if HAVE_VAAPI
&ra_hwdec_vaapi,
#endif
#if HAVE_VIDEOTOOLBOX_GL || HAVE_IOS_GL
Expand Down
2 changes: 1 addition & 1 deletion video/out/hwdec/hwdec_drmprime.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const static dmabuf_interop_init interop_inits[] = {
#if HAVE_DMABUF_INTEROP_GL
dmabuf_interop_gl_init,
#endif
#if HAVE_DMABUF_INTEROP_PL
#if HAVE_VAAPI
dmabuf_interop_pl_init,
#endif
#if HAVE_DMABUF_WAYLAND
Expand Down
2 changes: 0 additions & 2 deletions video/out/hwdec/hwdec_vaapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,7 @@ const static dmabuf_interop_init interop_inits[] = {
#if HAVE_DMABUF_INTEROP_GL
dmabuf_interop_gl_init,
#endif
#if HAVE_DMABUF_INTEROP_PL
dmabuf_interop_pl_init,
#endif
#if HAVE_DMABUF_WAYLAND
dmabuf_interop_wl_init,
#endif
Expand Down
2 changes: 0 additions & 2 deletions video/out/vo.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,7 @@ static const struct vo_driver *const video_out_drivers[] =
&video_out_mediacodec_embed,
#endif
&video_out_gpu,
#if HAVE_LIBPLACEBO
&video_out_gpu_next,
#endif
#if HAVE_VDPAU
&video_out_vdpau,
#endif
Expand Down

0 comments on commit f5ca11e

Please sign in to comment.