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 committed Sep 26, 2023
1 parent 8e85b70 commit 8f19a82
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 33 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 @@ -271,7 +271,7 @@ rm -rf $build
meson setup $build --cross-file "$prefix_dir/crossfile" \
--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
39 changes: 16 additions & 23 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')
pthreads = dependency('threads')

Expand All @@ -33,6 +36,7 @@ dependencies = [libass,
libavfilter,
libavformat,
libavutil,
libplacebo,
libswresample,
libswscale,
pthreads]
Expand All @@ -46,6 +50,7 @@ features = {
'avif-muxer': libavformat.version().version_compare('>= 59.24.100'),
'libass': true,
'threads': true,
'libplacebo': true,
}


Expand Down Expand Up @@ -236,6 +241,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 @@ -934,16 +945,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 @@ -1261,7 +1262,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 @@ -1334,9 +1335,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 @@ -1430,14 +1430,8 @@ 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')
endif

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

dmabuf_interop_pl = features['vaapi-libplacebo']
dmabuf_interop_pl = features['vaapi']
features += {'dmabuf-interop-pl': dmabuf_interop_pl}
if features['dmabuf-interop-pl']
sources += files('video/out/hwdec/dmabuf_interop_pl.c')
Expand Down Expand Up @@ -1775,7 +1769,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 @@ -75,7 +75,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 @@ -153,9 +151,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: 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 8f19a82

Please sign in to comment.