2021-11-07 19:28:16 +00:00
|
|
|
# booleans
|
|
|
|
option('gpl', type: 'boolean', value: true, description: 'GPL (version 2 or later) build')
|
|
|
|
option('cplayer', type: 'boolean', value: true, description: 'mpv CLI player')
|
|
|
|
option('libmpv', type: 'boolean', value: false, description: 'libmpv library')
|
|
|
|
option('build-date', type: 'boolean', value: true, description: 'whether to include binary compile time')
|
2023-02-26 03:50:08 +00:00
|
|
|
option('tests', type: 'boolean', value: false, description: 'meson unit tests')
|
2021-11-07 19:28:16 +00:00
|
|
|
# Reminder: normally always built, but enabled by MPV_LEAK_REPORT.
|
|
|
|
# Building it can be disabled only by defining NDEBUG through CFLAGS.
|
|
|
|
option('ta-leak-report', type: 'boolean', value: false, description: 'enable ta leak report by default (development only)')
|
|
|
|
|
|
|
|
# misc features
|
|
|
|
option('cdda', type: 'feature', value: 'disabled', description: 'cdda support (libcdio)')
|
|
|
|
option('cplugins', type: 'feature', value: 'auto', description: 'C plugins')
|
|
|
|
option('dvbin', type: 'feature', value: 'disabled', description: 'DVB input module')
|
2022-08-14 19:50:55 +00:00
|
|
|
option('dvdnav', type: 'feature', value: 'disabled', description: 'dvdnav support')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('iconv', type: 'feature', value: 'auto', description: 'iconv')
|
|
|
|
option('javascript', type: 'feature', value: 'auto', description: 'Javascript (MuJS backend)')
|
|
|
|
option('lcms2', type: 'feature', value: 'auto', description: 'LCMS2 support')
|
|
|
|
option('libarchive', type: 'feature', value: 'auto', description: 'libarchive wrapper for reading zip files and more')
|
|
|
|
option('libavdevice', type: 'feature', value: 'auto', description: 'libavdevice')
|
|
|
|
option('libbluray', type: 'feature', value: 'auto', description: 'Bluray support')
|
|
|
|
option('lua',
|
|
|
|
type: 'combo',
|
2021-11-15 00:39:25 +00:00
|
|
|
choices: ['lua', 'lua52', 'lua5.2', 'lua-5.2', 'luajit', 'lua51',
|
2021-11-07 19:28:16 +00:00
|
|
|
'lua5.1', 'lua-5.1', 'auto', 'enabled', 'disabled'],
|
|
|
|
value: 'auto',
|
|
|
|
description: 'Lua'
|
|
|
|
)
|
|
|
|
option('pthread-debug', type: 'feature', value: 'disabled', description: 'pthread runtime debugging wrappers')
|
|
|
|
option('rubberband', type: 'feature', value: 'auto', description: 'librubberband support')
|
|
|
|
option('sdl2', type: 'feature', value: 'disabled', description: 'SDL2')
|
|
|
|
option('sdl2-gamepad', type: 'feature', value: 'auto', description: 'SDL2 gamepad input')
|
|
|
|
option('uchardet', type: 'feature', value: 'auto', description: 'uchardet support')
|
|
|
|
option('uwp', type: 'feature', value: 'disabled', description: 'Universal Windows Platform')
|
|
|
|
option('vapoursynth', type: 'feature', value: 'auto', description: 'VapourSynth filter bridge')
|
|
|
|
option('vector', type: 'feature', value: 'auto', description: 'GCC vector instructions')
|
2023-10-22 00:43:15 +00:00
|
|
|
option('win32-threads', type: 'feature', value: 'auto', description: 'win32 threads')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('zimg', type: 'feature', value: 'auto', description: 'libzimg support (high quality software scaler)')
|
|
|
|
option('zlib', type: 'feature', value: 'auto', description: 'zlib')
|
|
|
|
|
|
|
|
# audio output features
|
|
|
|
option('alsa', type: 'feature', value: 'auto', description: 'ALSA audio output')
|
|
|
|
option('audiounit', type: 'feature', value: 'auto', description: 'AudioUnit output for iOS')
|
|
|
|
option('coreaudio', type: 'feature', value: 'auto', description: 'CoreAudio audio output')
|
|
|
|
option('jack', type: 'feature', value: 'auto', description: 'JACK audio output')
|
|
|
|
option('openal', type: 'feature', value: 'disabled', description: 'OpenAL audio output')
|
|
|
|
option('opensles', type: 'feature', value: 'auto', description: 'OpenSL ES audio output')
|
|
|
|
option('oss-audio', type: 'feature', value: 'auto', description: 'OSSv4 audio output')
|
2022-01-06 20:54:21 +00:00
|
|
|
option('pipewire', type: 'feature', value: 'auto', description: 'PipeWire audio output')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('pulse', type: 'feature', value: 'auto', description: 'PulseAudio audio output')
|
|
|
|
option('sdl2-audio', type: 'feature', value: 'auto', description: 'SDL2 audio output')
|
2022-01-11 16:23:52 +00:00
|
|
|
option('sndio', type: 'feature', value: 'auto', description: 'sndio audio output')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('wasapi', type: 'feature', value: 'auto', description: 'WASAPI audio output')
|
|
|
|
|
|
|
|
# video output features
|
|
|
|
option('caca', type: 'feature', value: 'auto', description: 'CACA')
|
|
|
|
option('cocoa', type: 'feature', value: 'auto', description: 'Cocoa')
|
|
|
|
option('d3d11', type: 'feature', value: 'auto', description: 'Direct3D 11 video output')
|
|
|
|
option('direct3d', type: 'feature', value: 'auto', description: 'Direct3D support')
|
2023-07-13 01:11:32 +00:00
|
|
|
option('dmabuf-wayland', type: 'feature', value: 'auto', description: 'dmabuf-wayland video output')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('drm', type: 'feature', value: 'auto', description: 'DRM')
|
|
|
|
option('egl', type: 'feature', value: 'auto', description: 'EGL 1.4')
|
|
|
|
option('egl-android', type: 'feature', value: 'auto', description: 'Android EGL support')
|
|
|
|
option('egl-angle', type: 'feature', value: 'auto', description: 'OpenGL ANGLE headers')
|
|
|
|
option('egl-angle-lib', type: 'feature', value: 'auto', description: 'OpenGL Win32 ANGLE library')
|
|
|
|
option('egl-angle-win32', type: 'feature', value: 'auto', description: 'OpenGL Win32 ANGLE Backend')
|
|
|
|
option('egl-drm', type: 'feature', value: 'auto', description: 'OpenGL DRM EGL Backend')
|
|
|
|
option('egl-wayland', type: 'feature', value: 'auto', description: 'OpenGL Wayland Backend')
|
|
|
|
option('egl-x11', type: 'feature', value: 'auto', description: 'OpenGL X11 EGL Backend')
|
|
|
|
option('gbm', type: 'feature', value: 'auto', description: 'GBM')
|
|
|
|
option('gl', type: 'feature', value: 'enabled', description: 'OpenGL context support')
|
|
|
|
option('gl-cocoa', type: 'feature', value: 'auto', description: 'gl-cocoa')
|
|
|
|
option('gl-dxinterop', type: 'feature', value: 'auto', description: 'OpenGL/DirectX Interop Backend')
|
|
|
|
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('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')
|
|
|
|
option('sixel', type: 'feature', value:'auto', description: 'Sixel')
|
|
|
|
option('spirv-cross', type: 'feature', value: 'auto', description: 'SPIRV-Cross SPIR-V shader converter')
|
|
|
|
option('plain-gl', type: 'feature', value: 'auto', description: 'OpenGL without platform-specific code (e.g. for libmpv)')
|
|
|
|
option('vdpau', type: 'feature', value: 'auto', description: 'VDPAU acceleration')
|
2022-11-14 12:54:51 +00:00
|
|
|
option('vdpau-gl-x11', type: 'feature', value: 'auto', description: 'VDPAU with OpenGL/X11')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('vaapi', type: 'feature', value: 'auto', description: 'VAAPI acceleration')
|
2023-07-24 09:47:44 +00:00
|
|
|
option('vaapi-drm', type: 'feature', value: 'auto', description: 'VAAPI (DRM support)')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('vaapi-wayland', type: 'feature', value: 'auto', description: 'VAAPI (Wayland support)')
|
|
|
|
option('vaapi-x11', type: 'feature', value: 'auto', description: 'VAAPI (X11 support)')
|
|
|
|
option('vulkan', type: 'feature', value: 'auto', description: 'Vulkan context support')
|
|
|
|
option('wayland', type: 'feature', value: 'auto', description: 'Wayland')
|
|
|
|
option('x11', type: 'feature', value: 'auto', description: 'X11')
|
|
|
|
option('xv', type: 'feature', value: 'auto', description: 'Xv video output')
|
|
|
|
|
|
|
|
# hwaccel features
|
2021-10-18 14:50:39 +00:00
|
|
|
option('android-media-ndk', type: 'feature', value: 'auto', description: 'Android Media APIs')
|
2021-11-07 19:28:16 +00:00
|
|
|
option('cuda-hwaccel', type: 'feature', value: 'auto', description: 'CUDA acceleration')
|
|
|
|
option('cuda-interop', type: 'feature', value: 'auto', description: 'CUDA with graphics interop')
|
|
|
|
option('d3d-hwaccel', type: 'feature', value: 'auto', description: 'D3D11VA hwaccel')
|
|
|
|
option('d3d9-hwaccel', type: 'feature', value: 'auto', description: 'DXVA2 hwaccel')
|
|
|
|
option('gl-dxinterop-d3d9', type: 'feature', value: 'auto', description: 'OpenGL/DirectX Interop Backend DXVA2 interop')
|
|
|
|
option('ios-gl', type: 'feature', value: 'auto', description: 'iOS OpenGL ES hardware decoding interop support')
|
|
|
|
option('rpi-mmal', type: 'feature', value: 'auto', description: 'Raspberry Pi MMAL hwaccel')
|
|
|
|
option('videotoolbox-gl', type: 'feature', value: 'auto', description: 'Videotoolbox with OpenGL')
|
hwdec_vulkan: add Vulkan HW Interop
Vulkan Video Decoding has finally become a reality, as it's now
showing up in shipping drivers, and the ffmpeg support has been
merged.
With that in mind, this change introduces HW interop support for
ffmpeg Vulkan frames. The implementation is functionally complete - it
can display frames produced by hardware decoding, and it can work with
ffmpeg vulkan filters. There are still various caveats due to gaps and
bugs in drivers, so YMMV, as always.
Primary testing has been done on Intel, AMD, and nvidia hardware on
Linux with basic Windows testing on nvidia.
Notable caveats:
* Due to driver bugs, video decoding on nvidia does not work right now,
unless you use the Vulkan Beta driver. It can be worked around, but
requires ffmpeg changes that are not considered acceptable to merge.
* Even if those work-arounds are applied, Vulkan filters will not work
on video that was decoded by Vulkan, due to additional bugs in the
nvidia drivers. The filters do work correctly on content decoded some
other way, and then uploaded to Vulkan (eg: Decode with nvdec, upload
with --vf=format=vulkan)
* Vulkan filters can only be used with drivers that support
VK_EXT_descriptor_buffer which doesn't include Intel ANV as yet.
There is an MR outstanding for this.
* When dealing with 1080p content, there may be some visual distortion
in the bottom lines of frames due to chroma scaling incorporating the
extra hidden lines at the bottom of the frame (1080p content is
actually stored as 1088 lines), depending on the hardware/driver
combination and the scaling algorithm. This cannot be easily
addressed as the mechanical fix for it violates the Vulkan spec, and
probably requires a spec change to resolve properly.
All of these caveats will be fixed in either drivers or ffmpeg, and so
will not require mpv changes (unless something unexpected happens)
If you want to run on nvidia with the non-beta drivers, you can this
ffmpeg tree with the work-around patches:
* https://github.com/philipl/FFmpeg/tree/vulkan-nvidia-workarounds
2022-03-12 19:21:29 +00:00
|
|
|
option('vulkan-interop', type: 'feature', value: 'auto', description: 'Vulkan graphics interop')
|
2021-11-07 19:28:16 +00:00
|
|
|
|
|
|
|
# macOS features
|
|
|
|
option('macos-cocoa-cb', type: 'feature', value: 'auto', description: 'macOS libmpv backend')
|
|
|
|
option('macos-media-player', type: 'feature', value: 'auto', description: 'macOS Media Player support')
|
|
|
|
option('macos-touchbar', type: 'feature', value: 'auto', description: 'macOS Touch Bar support')
|
|
|
|
option('swift-build', type: 'feature', value: 'auto', description: 'macOS Swift build tools')
|
|
|
|
option('swift-flags', type: 'string', description: 'Optional Swift compiler flags')
|
|
|
|
|
|
|
|
# manpages
|
|
|
|
option('html-build', type: 'feature', value: 'disabled', description: 'html manual generation')
|
|
|
|
option('manpage-build', type: 'feature', value: 'auto', description: 'manpage generation')
|
|
|
|
option('pdf-build', type: 'feature', value: 'disabled', description: 'pdf manual generation')
|