github mpv-player/mpv v0.41.0

14 hours ago

We are excited to announce the release of mpv 0.41.0.

Key highlights:

  • The libplacebo based gpu-next is now the default, instead of gpu
  • Vulkan hardware decoding is preferred over other APIs
  • New context_menu.lua script for right-click context menus
  • AAudio backend for modern, JNI-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

This release requires FFmpeg 6.1 or newer and libplacebo 6.338.2 or newer.

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

This listing is not complete. Check DOCS/client-api-changes.rst for a history of changes to the client API, and DOCS/interface-changes.rst for a history of changes to other user-visible interfaces.

A complete changelog can be seen by running git log v0.40.0..v0.41.0 in the git repository or by visiting v0.40.0...v0.41.0.

Don't miss a new mpv release

NewReleases is sending notifications on new releases.