From: Brad Smith Subject: UPDATE: mpv 0.41.0 To: ports@openbsd.org Date: Fri, 20 Feb 2026 21:29:01 -0500 Here is an update to mpv 0.41.0. Release 0.41.0 ============== We are excited to announce the release of mpv 0.41.0. Key highlights: * The libplacebo based `gpu-next` is now the default, over `gpu` * Vulkan hardware decoding is preferred over other APIs * New context_menu.lua script for right-click context menus * AAudio backend for modern, HNI-free audio output on Android * Improved default color management for gpu-next, and handling on Wayland * Color representation protocol support for Wayland * Tablet input support for Wayland * Clipboard writing support for Wayland and a clipboard backend for X11 * Ambient light support on Linux (using sysfs ALS) * Built-in helpers to register mpv as a media app on Windows # Features ## New - clipboard-wayland: support clipboard writing - wayland: add support for wp-color-representation-v1 - wayland: tablet input support - vo_gpu_next: add support for blend-subtitles=video - meson: add mpv-register and mpv-unregister helpers on Windows - context_menu.lua: add this script - select.lua: add edit-config-file and edit-input-conf - osc.lua: add indicator for buffering/loading - osdep/linux-als: support 'ambient-light' property on Linux - clipboard-x11: add x11 clipboard backend - ao/aaudio: implement native AAudio backend for Android ## Changed - vd_lavc: prefer Vulkan hwdec when available - vd_lavc: prefer non-copy hwdec before falling back to -copy variant - vo: move vo_mediacodec_embed to not be the default on Android - sub/osd_libass: don't rerender OSD if not changed - vo: prefer vo_gpu_next over vo_gpu by default - vo_gpu_next: respect ICC profile color space over any metadata - vo_gpu_next: linearize sRGB as a pure 2.2 power function - meson: warn if building with SDL2 due to known problems - osxbundle: make bundle category configurable and default to video - ao_pipewire: avoid setting any media.role by default # Options and Commands ## Added - sub: add control for libass caching options (glyph-limit, bitmap-max-size) - vo: add options to control background tile appearance (transparency) - command: add default and forced flags to the track add commands - vo_gpu_next: add options to control subtitle peak for HDR output - video/out/d3d11: add d3d11 composition mode support - vd_lavc: add --hwdec-threads - stream_bluray: add --bluray-angle - vo_gpu_next: add options to control output colorspace metadata more precisely - sub: make --sub-fix-timing configurable - vo_gpu_next: add --hdr-reference-white - audio/out: add --audio-set-media-role ## Changed - options: revert --prefetch-playlist default back to 'no' - vo_gpu_next: change --target-colorspace-hint to 'auto' by default - options: handle runtime --wid change - options: reduce swapchain-depth to 2 by default - screenshot: add osd and scaled flags to screenshot commands # Fixes and Minor Enhancements - vo_kitty: add auto-multiplexer-passthrough option - vd_lavc: enable FFv1 hwaccel by default - clipboard-wayland: prevent reading from hung up fd - demux_mkv: fix compilation after deprecated definitions removal - filters: handle flipping video if displaymatrix indicates so - player/scripting: fix race condition when destroying clients - {osd,msg}: use PU codepoints for escape codes instead of invalid UTF-8 - vo_dmabuf_wayland: only load needed hardware decoding drivers - video/image_writer: tag accurate bit depth - demux_lavf: fix unconstrained cache size with wrapped AVFrame packets - libarchive: fix reading name of certain UTF-8 files - sub/sd_lavc: fix decoding with libaribb24 - ao_avfoundation: fix memory leak - osc.lua: fix volume icon not updating while paused - context_wayland: implement target_csp for wayland - vo_gpu: fix target colorspace for redrawn frames - vo_dmabuf_wayland: don't set HDR metadata on SDR transfers - vo_gpu_next: don't do partial updates on hint luminance - sub/ass_mp: add missing padding for ass packer - stream_dvb: allow to enforce DVB-S/T for old zap format channels.conf - demux_libarchive: fix reading archives with '%' in stream URL path - vo_gpu_next: allow UINT upload if no other format is supported - ytdl_hook.lua: fix incorrect default format used with yt-dlp - vo_gpu_next: allow unsetting LUTs - stream_bluray: use bd_get_main_title() to get main title - vo_gpu_next: when tone-mapping, set better maxCLL value - stream_libarchive: seek source stream to 0 before probing - path-unix: support ~~desktop path expansion - ytdl_hook.lua: don't crash if playlist entries don't have an usable URL - mac/vulkan: fix frame not displayed when paused - mac/common: render first frame on init if possible - video/out/w32_common: support --wid=0 - demux_mkv: map and expose hearing/visual impaired flags - player/misc: show percentage progress for --stream-dump - command: fix null dereference for invalid command in input-commands - cplugin: fix missing init of pfn_mpv_get_time_ns - vo_dmabuf_wayland: actually reuse OSD buffers - mp_image: add support for AVAlphaMode - vo_gpu_next: add --border-background=blur and --background-blur-radius - demux/cue: fix crash when there are no tracks - vf_format: add some basic HDR10 metadata - vo/context_android: fix surface tearing on resize - meson: remove redundant 'sdl2' option - mac/common: fix window position on multi monitor setups - vo_gpu_next: limit min_luma to 1000:1 contrast ratio in SDR mode - ao_pipewire: fix some incorrect channel mappings - wayland: correct geometry handling for rotated outputs - demux: clear packet pool when upper memory limit is lowered - mp_image: add ycgco-{re,ro} support - wayland: convert luminance values to libplacebo space - vo: trigger manual redraws at most at slightly over display fps - osxbundle: add new macOS 26 compatible App icon - wayland: support color-management-v1 version 2 Index: Makefile =================================================================== RCS file: /cvs/ports/multimedia/mpv/Makefile,v retrieving revision 1.108 diff -u -p -u -p -r1.108 Makefile --- Makefile 26 Mar 2025 22:17:11 -0000 1.108 +++ Makefile 21 Feb 2026 01:53:21 -0000 @@ -2,7 +2,7 @@ COMMENT = movie player based on MPlayer GH_ACCOUNT = mpv-player GH_PROJECT = mpv -GH_TAGNAME = v0.40.0 +GH_TAGNAME = v0.41.0 USE_NOBTCFI = Yes SHARED_LIBS += mpv 2.0 @@ -14,8 +14,8 @@ HOMEPAGE = https://mpv.io/ # GPLv2+ PERMIT_PACKAGE = Yes -WANTLIB += ${MODLUA_WANTLIB} EGL SDL2 X11 X11-xcb Xext Xpresent Xrandr -WANTLIB += Xss Xv archive ass avcodec avdevice avfilter avformat +WANTLIB += ${MODLUA_WANTLIB} EGL X11 X11-xcb Xext Xfixes Xpresent +WANTLIB += Xrandr Xss Xv archive ass avcodec avdevice avfilter avformat WANTLIB += avutil bluray c cdio cdio_cdda cdio_paranoia display-info WANTLIB += drm dvdnav iconv jpeg lcms2 m placebo pthread sndio WANTLIB += swresample swscale va va-drm va-x11 vulkan xcb xcb-shm z @@ -37,7 +37,6 @@ LIB_DEPENDS = archivers/libarchive \ audio/libcdio \ audio/libcdio-paranoia \ converters/libiconv \ - devel/sdl2 \ graphics/ffmpeg \ graphics/jpeg \ graphics/lcms2 \ @@ -55,8 +54,10 @@ RUN_DEPENDS = devel/desktop-file-utils www/yt-dlp \ x11/gtk+4,-guic -CONFIGURE_ARGS = -Dalsa=disabled \ +CONFIGURE_ARGS = -Daaudio=disabled \ + -Dalsa=disabled \ -Dandroid-media-ndk=disabled \ + -Daudiotrack=disabled \ -Daudiounit=disabled \ -Davfoundation=disabled \ -Dcaca=disabled \ @@ -98,8 +99,6 @@ CONFIGURE_ARGS = -Dalsa=disabled \ -Dpipewire=disabled \ -Dpulse=disabled \ -Drubberband=disabled \ - -Dsdl2-audio=disabled \ - -Dsdl2=enabled \ -Dshaderc=disabled \ -Dsixel=disabled \ -Dspirv-cross=disabled \ @@ -130,7 +129,6 @@ post-install: ${INSTALL_DATA} ${WRKDIST}/TOOLS/mpv_identify.sh \ ${WRKDIST}/TOOLS/umpv ${PREFIX}/share/examples/mpv ${MODPY_BIN_ADJ} ${PREFIX}/share/examples/mpv/umpv - mv -f ${WRKINST}${SYSCONFDIR}/mpv/* ${PREFIX}/share/examples/mpv sed -Ei 's,(/dev/dvd|/dev/cdrom),/dev/rcd0c,g' ${PREFIX}/man/man1/mpv.1 .include Index: distinfo =================================================================== RCS file: /cvs/ports/multimedia/mpv/distinfo,v retrieving revision 1.38 diff -u -p -u -p -r1.38 distinfo --- distinfo 26 Mar 2025 22:17:11 -0000 1.38 +++ distinfo 21 Feb 2026 01:53:21 -0000 @@ -1,2 +1,2 @@ -SHA256 (mpv-0.40.0.tar.gz) = EKD0ZU9iFApt1NOA3PC729z25pdVaGPcSZwpYYLwgaM= -SIZE (mpv-0.40.0.tar.gz) = 3561474 +SHA256 (mpv-0.41.0.tar.gz) = 7iEJKl7kJzUzkjYJKdxkZFxUR5rv21urxc+7X61iYgk= +SIZE (mpv-0.41.0.tar.gz) = 7262018 Index: patches/patch-demux_demux_mkv_c =================================================================== RCS file: patches/patch-demux_demux_mkv_c diff -N patches/patch-demux_demux_mkv_c --- patches/patch-demux_demux_mkv_c 21 Oct 2025 13:04:43 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -Index: demux/demux_mkv.c ---- demux/demux_mkv.c.orig -+++ demux/demux_mkv.c -@@ -2200,16 +2200,16 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_ - // [0x30..0x37] are component tags utilized for - // non-mobile captioning service ("profile A"). - if (component_tag >= 0x30 && component_tag <= 0x37) -- lav->profile = FF_PROFILE_ARIB_PROFILE_A; -+ lav->profile = AV_PROFILE_ARIB_PROFILE_A; - break; - case 0x0012: - // component tag 0x87 signifies a mobile/partial reception - // (1seg) captioning service ("profile C"). - if (component_tag == 0x87) -- lav->profile = FF_PROFILE_ARIB_PROFILE_C; -+ lav->profile = AV_PROFILE_ARIB_PROFILE_C; - break; - } -- if (lav->profile == FF_PROFILE_UNKNOWN) -+ if (lav->profile == AV_PROFILE_UNKNOWN) - MP_WARN(demuxer, "ARIB caption profile %02x / %04x not supported.\n", - component_tag, data_component_id); - } Index: patches/patch-meson_build =================================================================== RCS file: /cvs/ports/multimedia/mpv/patches/patch-meson_build,v retrieving revision 1.12 diff -u -p -u -p -r1.12 patch-meson_build --- patches/patch-meson_build 26 Mar 2025 22:17:15 -0000 1.12 +++ patches/patch-meson_build 21 Feb 2026 01:53:21 -0000 @@ -5,7 +5,7 @@ Support for xcb-shm Index: meson.build --- meson.build.orig +++ meson.build -@@ -358,7 +358,19 @@ if features['libdl'] +@@ -356,7 +356,19 @@ if features['libdl'] endif # C11 atomics are mandatory but linking to the library is not always required. @@ -26,7 +26,7 @@ Index: meson.build cplugins = get_option('cplugins').require( win32 or (features['libdl'] and cc.has_link_argument('-rdynamic')), -@@ -1070,7 +1082,10 @@ x11 = { +@@ -1089,7 +1101,10 @@ x11 = { dependency('xscrnsaver', version: '>= 1.0.0', required: x11_opt), dependency('xext', version: '>= 1.0.0', required: x11_opt), dependency('xpresent', version: '>= 1.0.0', required: x11_opt),