Mpv Versions Save

🎥 Command line video player

v0.38.0

1 month ago

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

The new improved renderer (vo_gpu_next) is being worked on and not the default yet.

Features

New

  • scripting: add mp.input()
  • player: add an option to automatically turn on deinterlacing
  • mac: add more Now Playing information and functionality
  • osxbundle: automatically include MoltenVK to enable Vulkan support
  • input.conf: bind Ctrl+WHEEL_UP/DOWN to video-zoom
  • ao_avfoundation: initial support for AVFoundation audio driver (macOS)
  • vo: add context menu support on win32

Changed

  • osc: allow disabling special mouse wheel behavior
  • mac: add support for dynamic change of geometry, autofit
  • x11_common: allow DPI scale in unit of 0.5 and prefer the value from Xft.dpi
  • vo_gpu_next: save cache to separate files
  • mac: large amounts of refactoring, internal improvements and cleanups
  • builtin.conf: remove debanding from the high-quality profile

Removed

  • player: remove legacy, non-standard Raspberry Pi-specific support code

Options and Commands

Added

  • options: add secondary-sub-delay
  • options: add --osd-bar-border-size
  • filter_sdh: add --sub-filter-sdh-enclosures option
  • options: add --secondary-sub-ass-override
  • audio: add --volume-gain option to control volume in decibels
  • command: export current-gpu-context property
  • sub: add --sub-lavc-o option
  • command: add load-config-file and load-input-conf
  • input: add --input-preprocess-wheel option
  • player: add loadfile/loadlist insert-next commands
  • input: rework window dragging to be command controllable
  • options: add --deinterlace-field-parity option
  • vo: add video-target-params property
  • options: add --input-commands that runs commands at startup

Changed

  • player/command: add ability to scale overlay
  • mac: add support for window-id property and --drag-and-drop
  • command: support passing scale to keypress
  • mac: add support for --auto-window-resize, --input-cursor-passthrough options
  • win32: add support for --input-cursor-passthrough option
  • x11_common: support --title-bar
  • sub: allow setting special page numbers via --teletext_page
  • player: set --hidpi-window-scale to no by default
  • osd_libass: update the OSD bar's dent and border size
  • player: remove --alpha and rename --background to --background-color
  • options: remove --focus-on-open and add --focus-on

Removed

  • player: remove --term-remaining-playtime option

Fixes and Minor Enhancements

  • vaapi: add support for vaapi-win32
  • ao/coreaudio_exclusive: fix segfault when changing formats
  • mac: fix libmpv usage without embedding
  • build: only directly link shaderc and spirv-cross on windows
  • build: enable dvbin by default again
  • playloop: use a 16:9 ratio with --force-window
  • mac: report modifier keys on precise scrolling
  • input: fix double click handling
  • input: add missing forward media key ('GO_FORWARD')
  • sub: don't busy loop if the player is paused for cache
  • playlist: correctly populate playlist-path with the --playlist option
  • win32: opt in to the windows segment heap
  • demux_lavf: remove fix_editlists hack for mp4
  • wayland: fix key modifier handling again
  • win32: re-enable IME
  • wayland_common: guard against negative configure sizes
  • demux_lavf: detect ico as images
  • bash-completion: parse the mpv options lazily
  • f_auto_filters: use bwdif_cuda for deinterlacing with cuda hwdec
  • command: do a normal seek instead of a refresh seek when switching vo
  • ad_spdif: fix DTS 44.1khz passthrough playback
  • vo_dmabuf_wayland: scale smarter in hidpi situations
  • hwdec_drmprime: add P010 and P210 support
  • wayland: look for "default" cursor as well as "left_ptr"
  • wayland_common: properly handle high resolution scrolling
  • vo_vdpau: fix timing for nanoseconds
  • demux_mkv: add tags for A_MPEG/L1 (mp1) audio and FFV1 video
  • osdep: fix infinite loop when cancelling subprocess
  • dec_sub: expand sub packet caching
  • player/sub: avoid wasteful subtitle redraws
  • ao_pipewire: add support for SPDIF formats
  • wayland_common: implement multi-seat support
  • vo: make libmpv last in the auto-probing order for cocoa-cb only
  • player/loadfile: rewrite sub autoselection logic
  • meson: add custom target for macOS App bundling
  • image_writer: cleanup leftover files if image writing fails
  • sub: fix LRC lines with multiple timestamps
  • ao: don't clip floating point formats at non-unity gain
  • wayland: remove old sway/wlroots hack
  • hwdec/dmabuf_interop_gl: migrate to EXT_EGL_image_storage on desktop GL
  • sd_ass: don't wrongly recognize \pos as \p
  • ao_audiotrack: fix missing check for passthrough support
  • wayland_common: log if Drag-and-Drop fails
  • vo_gpu_next: render subtitles at video colorspace
  • swresample: stop using deprecated {in,out}_channel_layout options
  • path: don't load any files if --no-config is passed (incl. cache and state)
  • vo_gpu/vo_gpu_next: fix transparency with GLX
  • wayland_common: require WAYLAND_DISPLAY to be set for initialization
  • vo_drm: add support for BGR formats and YUYV
  • stream: enable caching for sockets, pipes and FIFOs
  • ao_coreaudio: stop audio unit after idle timeout
  • vo_gpu_next: add support for --dither-depth=auto
  • vo_gpu_next: don't render ASS subtitles at HDR colorspace
  • video/image_writer: attach MDVC metadata and CLLI metadata
  • win32: resolve dropped shell links (Windows shortcuts)
  • af_lavcac3enc: fix memory leak on 2ch audio
  • win32: increase hires timer resolution
  • input: raise maximum key down limit to 16
  • input: remove max active section limit
  • video/egl_helpers: fix fallback logic for EGL_KHR_create_context
  • ao_pulse: reenable latency hacks by default
  • hwdec/vulkan: enable the stable AV1 extension
  • af_scaletempo2: fix false reporting of frame availability
  • win32: fix native key repeat support
  • ao_pipewire: fix some buffer size / timing calculations
  • audio: pause handling improvements for pull-based AOs
  • ad_spdif: specify missing media type and sample rate
  • mac/vulkan: add support for frame timing via presentation feedback
  • demux_mkv: corrected direction of ProjectionPoseRoll rotation
  • demux_mkv: add support for BCP 47 language tags
  • player: avoid busy looping during subtitle track switches

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.37.0..v0.38.0 in the git repository or by visiting https://github.com/mpv-player/mpv/compare/v0.37.0...v0.38.0.

v0.37.0

5 months ago

This release requires FFmpeg 4.4 or newer and libplacebo 6.338.0 or newer.

This is the first release to unconditionally require libplacebo, but note that the new improved renderer (vo_gpu_next) is not yet the default.

Features

New

  • ao_oss: add SPDIF passthrough support
  • hwtransfer: implement support for HW->HW format conversions
  • stream/dvbin: add support for delivery system ISDB-T
  • audio/chmap: support up to 64 channels (including 22.2 layout)
  • libmpv: add mpv_time_ns()
  • vo_gpu, vo_gpu_next: add Vulkan support for macOS
  • meson: make libplacebo a required dependency
  • hwdec: support videotoolbox hwdec with libplacebo

Changed

  • msg: print warning and error messages to stderr
  • options: restore old default subtitle selection behavior
  • input.conf: swap wheel up/down with wheel left/right

Removed

  • waf: remove waf as a build system
  • osc.lua: remove toggle for forced only subpictures (appeared as [F])
  • mac: remove runtime checks and compatibility for macOS older than 10.15
  • cocoa: remove deprecated OpenGL cocoa backend

Options and Commands

Added

  • vo_gpu_next: add --hdr-peak-percentile
  • player: add --term-remaining-playtime option
  • x11: add --x11-wid-title option
  • vo_gpu_next: add --libplacebo-opts
  • player: add --subs-match-os-language option (replaces 'auto' option)
  • vo: add --video-crop
  • win32: add --window-corners, --window-affinity, --title-bar, --backdrop-type
  • sub: add --sub-stretch-durations option

Changed

  • builtin.conf: add --hdr-peak-percentile=99.995 to gpu-hq profile
  • player: add 'always' option to --subs-fallback-forced
  • demux_playlist: default to --directory-mode=lazy
  • builtin.conf: add --allow-delayed-peak-detect=no to gpu-hq profile
  • vo_gpu, vo_gpu_next: support --icc-3dlut-size=auto
  • demux: prepend some cache options with --demuxer-
  • builtin.conf: modernize internal profiles for higher quality rendering by default, rename 'gpu-hq' profile to 'high-quality', add 'fast' profile
  • vo_gpu, vo_gpu_next: default to dscale=hermite
  • builtin.conf: remove deprecated 'opengl-hq' profile
  • options: remove a bunch of old option fallbacks/deprecated ones
  • vo_gpu: allow --deband-iterations to be 0
  • stream_cdda: deprecate --cdda-toc-bias and always check for offsets
  • options: disable --allow-delayed-peak-detect by default
  • options: adjust default of --watch-later-options

Deprecated

  • command: deprecate shared-script-properties
  • demux_cue: deprecate --demuxer-cue-codepage for --metadata-codepage

Removed

  • player: remove special 'auto' option from alang/slang/vlang (previous default)
  • vo_gpu: remove --tone-mapping-mode
  • vo_gpu: remove --scale-wblur, --scale-cutoff etc.
  • vo_gpu: remove --scaler-lut-size
  • m_option: drop support for -del for list options

Fixes and Minor Enhancements

  • build: remove unneeded libdl requirement for vaapi
  • zimg: fix abort on subsampled input with odd heights
  • video_writer: fix gamma for YUV screenshots
  • player/video: fix possible crash when changing lavfi-complex
  • ad_spdif: fix segfault due to early deallocation
  • ao_pipewire: fix race conditon with setting the media role
  • draw_bmp: fix overflowing coordinates in mark_rcs
  • ao_sndio: use sio_flush() to improve controls responsiveness
  • vo_vdpau: fix hwdec for this vo
  • vo_gpu, vo_gpu_next: fix setting an empty dscale
  • vd_lavc: repeatedly attempt to fallback if hwdec fails in reinit
  • options: fix relative time parsing on negative input
  • win32: signal DPI changes correctly
  • mp_image: properly infer color levels for some pixfmts
  • vo_gpu_next: add ability to use named hook params
  • vo_gpu_next: take into account PAR when taking screenshots
  • ao_audiotrack: support more channel layouts
  • osc.lua: support speed-independent time-remaining display
  • sub: fix switching tracks while paused
  • audio: fix clipping with gapless audio enabled
  • player/video: avoid spamming logs with EOF
  • player/command: detect aspect ratio name and show it in stats.lua
  • wayland: keyboard input fixes
  • demux_playlist: remove len restriction on headerless m3u
  • win32: fix display resolution calculation on mulitple monitors
  • vo_gpu_next: multiple adjustments and fixes to interpolation
  • loadfile: avoid infinite playlist loading loops
  • context_drm_egl: don't free EGL properties if they are null
  • x11: require xrandr 1.4, remove xinerama support
  • drm_common: skip cards that don't have connected outputs
  • win32_common: fixes minimized window being focused on launch
  • ao/jack: set device_buffer to JACK buffer size
  • meson: rename all features with underscores
  • input: add new keys: Back, Tools, ZoomIn, ZoomOut
  • win32: don't ignore --screen and --fs-screen
  • input: add missing keypad key defines and Windows multimedia keys
  • player: use audio pts corresponding to playing audio on EOF
  • command: add sub-ass-extradata property
  • vo_dmabuf_wayland: unmap osd surface when not needed
  • player: always write redirect entries for resuming playback
  • stats.lua: reorganize how video params are displayed
  • stats.lua: display HDR metadata
  • osc.lua: add scrolling to the seekbar
  • demux_lavf: prefer track durations over container durations to determine total
  • vo: vulkan: allow picking devices by UUID
  • video: allow overriding container crop if it is present
  • vo_gpu, vo_gpu_next, screenshot: support applying crop for screenshots
  • sd_lavc: account for floating point inaccuracy, fix sub PTS
  • stream: accept dav:// and davs:// urls
  • filter_kernels: refine some constants
  • filter_kernels: add ewa_lanczos4sharpest
  • osc.lua: add scrolling to audio/sub buttons
  • demux_mkv: support cropping and rotation
  • vo_dmabuf_wayland: support 90 degree rotations
  • filter_kernels: add hermite filter
  • vo: avoid unnecessary redraws when the OSD shows
  • scripting: support DLL cplugins
  • af_scaletempo2: various bug fixes
  • sdl_gamepad: fix button detection on modern controllers
  • vo_dmabuf_wayland: support osd rendering when there's no video
  • demux_playlist: add --directory-mode=auto
  • vo_gpu_next: use proper color for subtitles
  • win32: add an option to change window affinity and control title bar state
  • win32: reduce top border thickness to imitate DWM invisible borders
  • wayland: remove gnome-specific idle-inhibit warning
  • win32: pass window handle to the window-id property
  • osc.lua: fix calculation for slider's min-max average
  • recorder: fix a couple of memory leaks
  • af_scaletempo2: raise max playback rate to 8.0
  • osc.lua: move the idle logo behind other overlays
  • hwdec_drmprime: add nv16 support
  • various: change internal timing code to work in nanoseconds instead of microseconds
  • vo: increase display refresh rate estimation limit from 99 Hz to 400 Hz
  • external_files: base cover-art-whitelist on cover-art-auto-exts
  • path: don't override cache and state paths with --config-dir
  • codec_tags: map some more image mimetypes
  • af/vf-command: add ability to target a specific lavfi filter
  • win32: prevent white window flash on startup
  • demux_playlist: use --metacode-codepage when parsing playlist files
  • video: revert racey change that led to stutter and deadlocking
  • console.lua: various improvements
  • command: add playlist-next-playlist and playlist-prev-playlist
  • ytdl_hook.lua: set metadata with single tracks
  • defaults.lua: add a disabled parameter to timer constructors
  • terminal-unix: race condition fixes
  • af_scaletempo2: better defaults
  • hwtransfer: handle hwcontexts that don't implement frame constraints
  • stream_cdda: remove fallback for ancient libcdio versions
  • osdep: drop support for C11 without atomics
  • dvbin: do a big cleanup on code style and functions
  • ytdl_hook.lua: parse the separate cookies field
  • sub: update subtitles if current track is an image
  • javascript: use --js-memory-report option instead of MPV_LEAK_REPORT
  • ao_coreaudio: signal buffer underruns
  • ytdl_hook.lua: support thumbnails
  • demux: make hysteresis-secs respect cache-secs
  • mp_image: pass rotation correctly to/from AVFrame correctly
  • various: add new internal mp_thread abstraction and use it
  • drm: use present_sync mechanism for presentation feedback
  • vo_gpu: apply ICC profile and dithering only to window screenshots
  • audio: introduce ao_read_data_nonblocking() and use it in relevant backends
  • wayland: obey initial size hints set by the compositor
  • command: export storage aspect ratio (sar) properties
  • vo: delay vsync samples by at least 10 refreshes to improve convergence time
  • vo_sdl: fix broken mouse wheel multiplier
  • vo_gpu_next: simplify cache code and don't re-save when unmodified

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.36.0..v0.37.0 in the git repository or by visiting https://github.com/mpv-player/mpv/compare/v0.36.0...v0.37.0.

v0.36.0

9 months ago

This release requires FFmpeg 4.4 or newer.

This is the last release to contain the waf build system. Meson is the primary and actively supported build system while waf is considered deprecated.

Features

New

  • player: add window-id property
  • vo_kitty: introduce modern sixel alternative
  • wayland: add wp-fractional-scale-v1 support
  • player/command: add user-data property (replacement for shared-script-properties)
  • vo_gpu_next: support mapping HDR10+ dynamic metadata
  • vo_gpu_next: allow screenshots in native colorspace
  • vo_gpu_next: parse Dolby Vision metadata for dynamic scene brightness
  • video: allow csp equalizer adjustments with floating point precision
  • command: add platform property
  • demux_mkv: support ARIB captions
  • hwdec_vulkan: add support for Vulkan-based hardware decoding
  • player: better handling of forced-only subtitles and a toggle in the OSC
  • vo_dmabuf_wayland: add osd support

Changed

  • TOOLS/umpv: prefer $XDG_RUNTIME_DIR
  • ffmpeg: increase minimum required version to 4.4
  • player: choose speed of smallest acceptable factor for display sync
  • player: don't force saving start in watch-later-options
  • build: officially deprecate waf
  • vf_sub: undeprecate
  • player: set playlist title to media title if not set already
  • player: use and respect XDG_STATE_HOME and XDG_CACHE_HOME by default
  • wayland: bump required version to 1.20 and wayland-protocols to 1.25
  • ao_pipewire: require at least libpipewire 0.3.48
  • vo: hwdec: prioritise drmprime over drmprime_overlay
  • vo_gpu/vo_gpu_next: enable gpu shader and icc cache by default

Removed

  • drm: remove support for legacy (non-atomic) API
  • stream/dvb: drop support for DVB API before Linux 3.7
  • hwdec_cuda: drop support for PL_HANDLE_WIN32_KMT (Windows 7 only)
  • vo_dmabuf_wayland: drop linux-dmabuf-v2 support

Options and Commands

Added

  • player: add --force-render option
  • demux: add --demuxer-hysteresis-secs option to save power with caching
  • ao_pipewire: allow usage of global volume control via --pipewire-volume-mode
  • vo_gpu_next: add --tone-mapping-visualize
  • sub: add --sub-fonts-dir and --osd-fonts-dir options
  • player: add --auto-window-resize
  • console.lua: add a script-opt for the border size
  • player: add --drag-and-drop option
  • vo_gpu_next: add --corner-rounding option
  • player: add more precise sub fallback options --subs-fallback and --subs-fallback-forced
  • player: add --input-cursor-passthrough option
  • TOOLS/lua/autoload: allow extending ext sets from script-opts
  • demux_playlist: add --directory-mode option to control recursive directory loading
  • vo_gpu_next: add --target-contrast and --hdr-contrast-recovery/smoothness

Changed

  • vd_lavc: add "auto" choice for --vd-lavc-dr and make it the default (notably this change was also backported to v0.35.1)
  • wayland: add auto choice to --wayland-configure-bounds
  • image_writer: change --screenshot-tag-colorspace default to yes
  • vo_gpu_next: expose --tone-mapping=st2094-40 and st2094-10
  • wayland: make --wayland-edge-pixels-pointer default to 16
  • options: enable scripts related opts also with cplugins
  • player/screenshot: add filename return field
  • options: set --subs-with-matching-audio to off by default
  • options: default --slang to auto, which uses the settings of the user's OS
  • vd_lavc: allow user to specify a priority list in --hwdec
  • vd_lavc: map hwdec=yes to hwdec=auto-safe and change ctrl+h to use auto-safe

Deprecated

  • drm: deprecate --drm-atomic (now always enabled)

Removed

  • vo_gpu_next: remove --tone-mapping-crosstalk

Fixes and Minor Enhancements

  • ao_pipewire: log version and other useful debug info
  • wayland: error out if essential protocol support is missing
  • wayland: add support for content-type protocol
  • wayland: also log refresh rate on surface entrance
  • vo_gpu_next: fix undefined behavior on alpha-first formats
  • meson: prepend MPV_CONFDIR path with prefix
  • meson: unbreak dl check on BSDs without libdl
  • lcms: fix crash with lcms2-related options if lcms is disabled
  • meson: fix stdatomic detection on bsd
  • osc: don't spam window-controls bindings on every render
  • wayland: check for resize/move in touch event first
  • ao_coreaudio: use device's nominal sample rate for latency properties
  • hwdec_drmprime: support yuv420p format
  • ao_pipewire: properly clean up resources
  • vo/{sixel,tct}: use the alternate buffer to restore terminal
  • vo_sixel: add option to skip clear while drawing
  • filter_kernels: fix kaiser
  • hwdec/d3d11va: fix a possible memory leak
  • external_files: set log level for potential files to trace
  • external_files: recognize webp files as cover art
  • vo_opengl: do not blindly reject all Microsoft's OpenGL implementations
  • ao_coreaudio: use AudioUnitReset as ao_driver.reset to prevent long restart
  • hwdec_drmprime: fix memory leak
  • vo: hwdec: fix libdrm-related memory leak
  • draw_bmp: ensure last slice width is less than total width
  • demux: boost read EBU R128 gain values to ReplayGain's reference level
  • version.py: bump copyright year
  • TOOLS/umpv: support shell-quotes in $MPV
  • vulkan: fix build error for 32bit builds with clang
  • TOOLS/lua/autoload: improve and optimize the natural sorting
  • vo_wlshm: properly support video panscan
  • vo_dmabuf_wayland: support panscan and panning
  • ra_d3d11: fix incorrect type
  • meson: also search for rst2html with .py extension
  • audio: fix crash during uninit with ao_lavc
  • wayland: only warn about GNOME when actually missing idle inhibit support
  • mp_image: fix XYZ primaries default
  • msg: preserve early messages when log-file is set in mpv.conf
  • x11: fix issue with xpresent timing feedback
  • meson: reuse libmpv objects for cplayer to save 50% of compile steps
  • player/client: support observing sub-properties
  • m_property: implement new deletion operation on properties
  • vo_lavc: set frame rate on encoder to fix non-conforming outputs
  • player/video: don't resync audio if video is an image
  • stream: accept webdav:// and webdavs:// urls
  • video/image_writer: avoid stripping colorspace info when writing image
  • stats.lua: display HDR peak in nits
  • image_pool: fix memory leak with frames
  • options: transition from OPT_FLAG to OPT_BOOL
  • vd_lavc: sort hwdecs without hwdevices last for autoprobing
  • ytdl_hook: don't overwrite force-media-title
  • lua: use user-data for interop between osc.lua and console.lua
  • vo: fix race condition with redraw requests
  • various: more fixes to ensure correct playback of XYZ colorspace
  • ytdl_hook: fix fragment-related issue that broke YouTube DASH playback
  • command: expose hls-bitrate and program-id as track-list subproperties
  • ao_pipewire: use realtime scheduling for data thread
  • auto_profiles: check for non-existent properties
  • d3d11: retry device creation without debug, if SDK is not available
  • win32: follow Windows settings and update dark mode state
  • ytdl_hook.lua: fix clip start and end
  • hwdec_drmprime: support custom rpi4_8 and rpi4_10 formats
  • sub: fix UPDATE_SUB_HARD for converted and external subtitles
  • charset_conv: fix memory corruption in mp_iconv_to_utf8
  • options: read config file as stream
  • wayland: improve guessing when mpv is focused
  • player: always try to detect subtitle language from file name
  • vo: fix mp_frame_perf thread safety
  • lua: read_options: find script-opts prefix at index 1 exactly
  • path: handle URLs consistently in mp_basename
  • ao_wasapi: remove infinite loop hack in AOCONTROL_UPDATE_STREAM_TITLE
  • ao_wasapi: use client name instead of hardcoded string
  • vd_lavc: fix crash if hwdec devices fail to create
  • vo_drm: fix null dereference and using closed fd
  • image_writer: respect jpeg-quality when using ffmpeg for writing
  • image_writer: add support for AVIF
  • TOOLS/lua/autoload: avoid unnecessary playlist manipulation, performance
  • various: correctly ignore cache files with --no-config
  • terminal-unix: better error detection logic
  • json: raise parse depth to 50 for the sake of utils.parse_json()
  • player: delete watch_later file only after successful load
  • wayland: fix memory leak with multiple monitors
  • vd_lavc: prefer d3d11va-copy over dxva2-copy
  • vd_lavc: fix hwdec for videos with less than less than 3 frames
  • wayland: add support for suspended toplevel state
  • draw_bmp: ensure last slice is less than total width (again)
  • console.lua: sort the output from the help command
  • vd_lavc: try other hwdecs when falling back after an hwdec failure
  • sd_ass: don't reconfigure ass on every frame (performance regression)
  • sd_ass: fix converted subtitles having too-wide borders
  • loadfile: compute audio language for sub selection when using lavfi-complex
  • wayland: fix modifier keys in certain situations
  • vd_lavc: corrections towards hwdec and swdec fallback
  • zimg: fix broken sig_peak (HDR) handling
  • screenshot: implement screenshot window in sw for most VOs
  • osc: don't add margins to osc-deadzonesize
  • vo_vaapi: fix segfault in draw_osd
  • vo_dmabuf_wayland: correctly handle force-window
  • ao_pipewire: fix error with pipewire 0.3.75 or later

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.35.0..v0.36.0 in the git repository or by visiting https://github.com/mpv-player/mpv/compare/v0.35.0...v0.36.0.

v0.35.1

1 year ago

Bug fix release for the 0.35 branch.

Fixes and Minor Enhancements

  • ao_pipewire: log version and other useful debug info
  • wayland: error out if essential protocol support is missing
  • wayland: also log refresh rate on surface entrance
  • vo_gpu_next: fix undefined behavior on alpha-first formats
  • meson: prepend MPV_CONFDIR path with prefix
  • meson: unbreak dl check on BSDs without libdl
  • lcms: fix crash with lcms2-related options if lcms is disabled
  • meson: fix stdatomic detection on bsd
  • osc: don't spam window-controls bindings on every render
  • wayland: check for resize/move in touch event first
  • ao_coreaudio: use device's nominal sample rate for latency properties
  • ao_pipewire: properly clean up resources
  • filter_kernels: fix kaiser
  • hwdec/d3d11va: fix a possible memory leak
  • external_files: set log level for potential files to trace
  • vo_opengl: do not blindly reject all Microsoft's OpenGL implementations
  • ao_coreaudio: use AudioUnitReset as ao_driver.reset to prevent long restart
  • hwdec_drmprime: fix memory leak
  • vo: hwdec: fix libdrm-related memory leak
  • draw_bmp: ensure last slice width is less than total width
  • wayland: dispatch and wait for compositor events in uninit
  • demux: boost read EBU R128 gain values to ReplayGain's reference level
  • version.py/version.sh: bump copyright year
  • vulkan: fix build error for 32bit builds with clang
  • vo_wlshm: cleanup on failure
  • ra_d3d11: fix incorrect type
  • meson: also search for rst2html with .py extension
  • audio: fix crash during uninit with ao_lavc
  • mp_image: fix XYZ primaries default
  • vd_lavc: add "auto" choice for vd-lavc-dr
  • vo: implement VO_DR_FLAG_HOST_CACHED
  • x11: fix issue with xpresent timing feedback

v0.35.0

1 year ago

This release requires FFmpeg 4.0 or newer.

For packagers: Note that mpv's build system is only supported on Python 3. If you use the bootstrap.py script it will take care of this, otherwise you need to explicitly invoke the build system using python3 waf.

This release adds the Meson build system as an alternative to waf. It is supposed to be feature-complete but please report any issues you encounter.

Features

Added

  • vo_gpu_next: add new libplacebo-based renderer
  • build: add meson build support
  • vo_gpu_next: forward Dolby Vision metadata to libplacebo
  • ao_pipewire: add PipeWire audio backend
  • ao_sndio: readd this audio output again
  • vo_gpu_next: apply film grain if such metadata is present
  • drm: context_drm_egl: add support for enabling VRR
  • demux: add support for R128 replaygain tags
  • x11: support X Present extension
  • af_rubberband: add support for new engine in rubberband 3.0.0
  • hwdec/drmprime: add drmprime hwdec-interop (commonly found on SoCs)
  • various: support binding functions keys beyond F12
  • audio: support hotplug events for multiple AOs
  • sub: use Unicode linebreaking for non-ASS subs and OSD
  • vo_gpu: hwdec: add Android hwdec utilizing AImageReader
  • vo_dmabuf_wayland: add wayland VO displaying dmabuf buffers (vaapi or drm hwdec only)
  • lua/console: add history deduplication

Changed

  • filters: re-add vavpp hardware deinterlacing auto-filter (for --deinterlace)
  • swresample: don't forcibly clip audio on every conversion
  • ytdl_hook: always set HTTP headers to fix yt-dlp on certain sites

Removed

  • libmpv: remove opengl_cb API and other deprecated symbols
  • lua: remove deprecated mp.suspend(), resume() and resume_all()
  • build: raise minimum libplacebo version requirement to v4.157.0

Options and Commands

Added

  • vo_gpu_next: add --target-colorspace-hint to facilitate HDR passthrough
  • vo_gpu_next: new tone mapping options 'auto', 'spline', 'bt.2446a' and add --tone-mapping-crosstalk, --inverse-tone-mapping
  • vo_gpu: add --gamut-mapping-mode and --tone-mapping-mode
  • options: add 'always' choice to --stop-screensaver
  • options: add --osd-playing-msg-duration
  • player: add --cover-art-whitelist option
  • x11: add --x11-present option

Changed

  • ao_openal: enable --openal-direct-channels by default
  • options: only apply --sub-visibility to primary subtitles
  • options: make --cover-art-auto=exact the default
  • vo_gpu/hwdec: rename and introduce legacy names for some interops

Deprecated

  • vo_gpu: deprecate --gamma-factor and --gamma-auto

Removed

  • vo_gpu: remove --gamut-clipping, --gamut-warning, --tone-mapping-desaturate and --tone-mapping-desaturate-exponent (replacements available)
  • vulkan: remove --vulkan-disable-events

Fixes and Minor Enhancements

  • context_drm_egl: use gbm_surface_create_with_modifiers
  • context_drm_egl: add support for BGR surface formats
  • vo_gpu: vulkan: open DRM render fd when using VK_KHR_display
  • client API: use symbol visibility attributes
  • vo_gpu: hwdec_vaapi: add dma-buf modifiers support
  • wayland: fix various issues that could lead to jitter
  • osc: fix cache displaying 60s in some cases
  • player: make --keep-open=always work with --loop-playlist
  • opengl: support driver debug message under OpenGL ES
  • vo_gpu: opengl: fixes for OpenGL ES version and extension handling
  • f_decoder_wrapper: support frame rotation metadata (used by JPEG)
  • wscript: switch shaderc checks to pkgconfig
  • vd_lavc: enable hwdec for prores by default
  • vo_gpu: add HOOKED_gather for custom shaders
  • wayland, x11: sanitize window title for valid UTF-8
  • win32: apply geometry position to content instead of window
  • filter_kernels: add cosine window
  • vo_gpu: hwdec_vaapi: don't probe formats for irrelevant endpoints
  • vo_gpu: hwdec: load hwdec interops on-demand by default
  • stats.lua: graphs: fix bad rendering due to division by 0
  • hwdec: warn on unsupported --hwdec option value
  • x11: fix --screen-name option
  • x11: avoid wasteful rendering when possible
  • video/image_writer: add JPEG XL support
  • stream_lavf: enable ipfs, ipns and rist protocol support
  • osc.lua: fix crash when calling osc-tracklist while idle
  • player: add jxl, tiff, tif to list of image extensions
  • various: switch to new AVChannelLayout structure
  • lua: command_native_async: always run callback asynchronously (edge case)
  • context_x11egl: remove supposed transparency workaround
  • vo_gpu: fix 3DLUT precision
  • drm: avoid drmModeAtomicCommit races by blocking
  • drm_common: skip cards that don't support KMS for autodetection
  • hwdec/dmabuf_interop_gl: support basic multi-plane formats
  • misc/random: switch to internal xoshiro rng implementation
  • ytdl_hook: improve track detection
  • ad_lavc: strip non-normalized floats
  • mpv.metainfo.xml: add XDG appstream metadata manifest
  • mac: avoid unnecessary unsafe conversions; fixes crash in debug builds
  • af_scaletempo2: fix crash when the number of channels increases
  • wayland: correctly handle non-CLOCK_MONOTONIC clocks
  • x11: fix --on-all-workspaces option
  • sd_ass: improve handling of subtitles with unknown duration
  • hwdec/vaapi: improve probing of supported sw formats
  • demux_mf: enable support for QOI, PHM and HDR images
  • demux_mkv: add AVS2 and AVS3 to tag list
  • TOOLS/lua/autoload: fix incorrect duplicate file loading behavior
  • demux/codec_tags: support more WAVEFORMATEXTENSIBLE tags
  • sd_ass: never mangle colours on RGB video

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.34.0..v0.35.0 in the git repository or by visiting https://github.com/mpv-player/mpv/compare/v0.34.0...v0.35.0

v0.34.1

2 years ago

Bug fix release for the 0.34 branch.

Fixes and Minor Enhancements

  • player: fix autofit/geometry related segfault
  • ao_oss: add missing PATH_DEV_MIXER define
  • egl_helpers: fix context creation if GLES 3 is not available
  • audio: stop corrupting audio on underreads
  • wayland: fix a potential segfault on surface enter
  • vo_gpu: opengl: fix wrong glMemoryBarrier call
  • vo_gpu: opengl: create context at version 4.4 again
  • af_lavcac3enc: fix memory leak on no-op
  • subprocess: unblock/reset signals before running child process
  • wayland: avoid doing unneccesary window resizes

v0.34.0

2 years ago

This release requires FFmpeg 4.0 or newer.

For packagers: Note that mpv's build system is only supported on Python 3. If you use the bootstrap.py script it will take care of this, otherwise you need to explicitly invoke the build system using python3 waf.

Features

Added

  • player: allow vo to be switched at runtime
  • input.conf syntax: support custom quotes in `XstringX` form & single quotes
  • ao_oss: readd OSSv4 audio output, default on *BSD
  • player: load cover art with the media filename
  • vo_gpu: vulkan: implement a VkDisplayKHR backed context
  • osc: seekbar hover/drag: display target chapter at the OSC title
  • stats.lua: add page 4 with a list of active key bindings
  • sub: add --sub-filter-jsre (JS regex)
  • vo_rpi: restore fullscreen handling
  • vo_tct: add resize capability
  • ytdl_hook.lua: search for yt-dlp by default (preferred over youtube-dl)

Changed

  • vo_sixel: many fixes and improvements
  • filters: switch from scaletempo to scaletempo2, used for speed option
  • audio/vo_pulse: fix various edge cases and issues
  • stats.lua: move internal performance info from page 4 to page 0
  • command: don't hardcode command lists to be repeatable

Removed

  • mac: drop build support for swift versions earlier than 4.1
  • vo_gpu: drop support for libplacebo older than v3.104.0

Options and Commands

Added

  • vo_sixel: add --vo-sixel-exit-clear
  • player: add --screen-name and --fs-screen-name
  • player/command: add albumart argument to video-add
  • command: add pid (process id), display-width and display-height properties
  • sub: add secondary-sub-text, -start, and -end properties; secondary-sub-visibility option
  • vo_gpu: add --icc-force-contrast
  • player: add append-play flag to loadlist
  • command: add support for secondary subs to sub-seek and sub-step
  • options: add watch-later-options to configure which options are saved
  • player: add track-list/N/image sub-property
  • input: add --no-input-builtin-bindings option
  • drm_common: add --drm-device option

Changed

  • vo_sixel: change default dither to "auto"
  • vd_lavc: add VP8 to the default allowed hwdec codec list
  • vo_gpu: lower default deband threshold to preserve more detail
  • vo_gpu: adjust interpolation-threshold's default
  • demux: undeprecate --cache-secs
  • options: add Uploader, Channel_URL to --display-tags defaults
  • options: --audio-display determines cover priority
  • command: make current-window-scale writeable

Deprecated

  • win32: ignore and deprecate --fit-border
  • drm_common: deprecate selecting by card number in --drm-connector

Removed

  • vo_gpu: remove --icc-contrast
  • stats.lua: remove script-opts for the main keys (i/I)
  • vo_gpu: opengl: remove --opengl-restrict

Fixes and Minor Enhancements

  • terminal: correctly process input when foregrounded
  • vo_wlshm: support presentation time
  • mac: fix a window positioning bug when exiting fullscreen
  • csputils: add mappings for DCI-P3 (ST.431-2) and P3-D65 (ST.432-1)
  • player: make resetting of track selection to "auto" work
  • stream_lavf: support rtsps
  • vo_wlshm: support big endian systems
  • demux_mf: add support for more image codecs
  • msg: fix really-quiet option to only affect terminal output
  • mac: fix traditional fullscreen on macOS 11
  • ao_pulse: fix misbehavior with PipeWire when setting volume or mute
  • stats.lua: include a filter's @‍label when displaying filters on page 1
  • wayland, win32: support the display-hidpi-scale property
  • win32: keep the window title-bar inside the screen
  • filter_kernels: fix incorrect constant for quadric window
  • command: add display-width/display-height property
  • edl: add a way to add tags
  • stream_file: disable readahead for remote files on macOS to fix stutter
  • osxbundle: fix slow and wasteful memory allocation that caused stutter
  • vo_gpu: fix extreme clipping with --gamut-clipping for HDR outputs
  • af_scaletempo2: speed up using vector calculations
  • recorder: fix muxing of certain codecs
  • win32: support the focused property
  • js: add mp.utils.append_file
  • subs: fix missing subtitles on last frame
  • stats.lua: show scaled resolution
  • osc: expose osc-visibility via shared-script-properties
  • terminal-unix: fix ^Z identification and ignore unknown CSI sequences
  • context_drm_egl: allow autoprobe selection
  • wayland: improve behavior with touch events
  • command: make current-window-scale writeable
  • vo_vdpau: don't treat preemption as an error to fix VT switching
  • wayland: read XCURSOR_THEME to get cursor theme
  • demux_playlist: extend maximum line size (again) to 2M
  • win32: call timeBeginPeriod on demand on Windows 10
  • build: allow easier selection of lua version/package
  • vo_gpu: fix distortion with certain rotated videos
  • drm_common: skip non-primary devices during automatic choosing
  • drm_common: support USB, SPI, Writeback and unknown connector types (future proofing)

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.33.0..v0.34.0 in the git repository or by visiting either https://github.com/mpv-player/mpv/compare/v0.33.0...v0.34.0 or https://git.srsfckn.biz/mpv/log/?qt=range&q=v0.33.0..v0.34.0

v0.33.1

3 years ago

Security fix release for the 0.33 branch. Users are advised to upgrade immediately.

Fixes and Minor Enhancements

  • demux_mf: improve format string processing (assigned CVE-2021-30145)

v0.33.0

3 years ago

This release requires FFmpeg 4.0 or newer.

For packagers: Note that mpv's build system is only supported on Python 3. If you use the bootstrap.py script it will take care of this, otherwise you need to explicitly invoke the build system using python3 waf.

Features

Added

  • scripting: load scripts from directories
  • mac: activate logging when started from the bundle
  • ytdl_hook.lua: delay load subtitles
  • sub: add an option to filter subtitles by regex
  • scripting: add a way to run subprocesses as "scripts"
  • command: implement asynchronous commands and support for named arguments
  • player: add optional separate video decoding thread
  • vo_gpu: d3d11: add support for exclusive fullscreen
  • w32_common: Support HiDPI on Windows
  • vo_x11: add 10 bit support
  • vo_gpu: add BT.2390 tone-mapping
  • client API: add software rendering API
  • audio: add scaletempo2 filter based on chromium
  • auto_profiles: add this script
  • stream: Implement slice:// for reading slices of streams
  • player: add automatic loading of external cover art files
  • vo_sixel: implement terminal video output using sixel

Changed

  • sws_utils: use zimg by default if available
  • build: pick up Lua 5.2 by default (preferred over 5.1)
  • build: disable RPI vendor blob auto-detection in favor of open-source stack
  • build: make C11 atomics mandatory
  • build: make libass non-optional
  • player: stricter filename matching for external subtitle auto-loading
  • lua: support Unicode paths in script loading and IO library
  • vo_direct3d: rip out texture video rendering path and dumb down OSD rendering
  • audio: rewrite internal audio handling and AO API
  • build: disable GLX by default

Removed

  • stream_libarchive: disable tar support due to bugs
  • Remove remains of Libav compatibility
  • stream_smb: remove due to lack of thread safety and the abundance of alternatives, FFmpeg still includes SMB support
  • command: remove legacy hook API (has been deprecated for a long time)
  • client API: remove deprecated qthelper.hpp header
  • removed audio outputs: sndio, rsound, oss
  • x11: remove xdg-screensaver invocations that supported dbus based idle inhibit
  • client API: deactivate the opengl_cb API
  • build system: drop Python 2 compatbility

Options and Commands

Added

  • demux: add option to disable cache "sharing" between back and forward buffers
  • player: add ab-loop-count option/property
  • ytdl_hook: add a way to use ytdl's default formats
  • ytdl_hook: add all_formats option that loads all formats that were found
  • demux_mkv: document probe-start-time option and enable it by default
  • command: extend osd-overlay command with bounds reporting
  • player: a number of new playlist contol commands/properties
  • ipc: add --input-ipc-client option
  • options: add option to control display-sync factor
  • vo_gpu: add better gamut clipping option
  • vo_gpu: vulkan: add ability to disable events
  • x11: add option to make window appear on a specific workspace
  • wayland: expose wayland-app-id as a user option
  • player: add --subs-with-matching-audio option
  • command: add read-only focused property
  • screenshot: option to use software rendering for screenshots
  • command: add delete-watch-later-config
  • command: new property mouse-pos with current position and hover state

Changed

  • options: remove deprecation warning for "-foo bar" syntax
  • player: make audio hr-seek default
  • ad_lavc: disable decoder downmix by default
  • command: support save-position-on-quit for "stop" command too
  • command: extend subprocess command
  • options: do not accept ":" as separator anymore in key/value lists

Deprecated

  • demux: deprecate --cache-secs

Removed

  • wayland: remove wayland-frame-wait-offset option
  • input: remove deprecated --input-file option
  • vo_vdpau: remove deprecated/inactive --vo-vdpau-deint option

Fixes and Minor Enhancements

  • options: stop hiding deprecated options from --help output
  • lua, js: add mp.get_script_directory() function
  • lua: fix security relevant loading order issue with scripts
  • player: make screenshot each-frame mode more accurate
  • bash completion: complete ao/af/vo/vf options
  • zimg: add alpha support
  • wayland: make resizing better
  • edl: add mechanism for delay loading streams
  • stream_file: fix caching-related performance regression on CIFS
  • cocoa-cb: fix crashes and issues with UI updates
  • sub, demux: improve behavior with negative subtitle delay/muxed subs
  • demux: make seek ranges work for static images + audio
  • cocoa-cb: support maximize/minimize on startup
  • umpv: change from legacy FIFO to socket
  • stats: move input speed to cache page, make it a graph
  • stats: add fourth page with performance graphs
  • command: print edition title to OSD when cycling
  • zimg: add support for big endian input and output
  • demux_mkv: add png intra support
  • build: detect VT_GETMODE on FreeBSD and DragonFly
  • win32: use windows 10 native virtual-terminal if available
  • vo_gpu: enable frame caching for still frames
  • command: add property to return text subtitles in ASS
  • vo_gpu: ra_pl: add timers support
  • build: allow vo_wlshm on more Wayland platforms (e.g. FreeBSD)
  • zimg: add slice threading and use it by default
  • command: add a way to access properties of a current track
  • vo_gpu: EGL: fix transparency on X11/EGL/Mesa
  • vd_lavc: add AV1 to the default allowed hwdec codec list

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.32.0..v0.33.0 in the git repository or by visiting either https://github.com/mpv-player/mpv/compare/v0.32.0...v0.33.0 or https://git.srsfckn.biz/mpv/log/?qt=range&q=v0.32.0..v0.33.0

v0.32.0

4 years ago

This release requires FFmpeg 4.0 or newer.

Features

Added

  • stream_libarchive: enable RAR5 support
  • bash completion: add initial implementation
  • cocoa-cb: add support for forcing the dedicated GPU for rendering
  • cocoa-cb: add pinch to resize window gesture
  • w32_common: support minimizing/maximizing using osc window controls

Changed

  • wayland: print warning on GNOME due to serious issues with their compositor
  • player: write watch-later config even for unseekable streams

Removed

  • vo_gpu: hwdec_vdpau: remove direct_mode
  • vo_gpu: hwdec_vaegl: remove support for old-style interop

Options and Commands

Added

  • command: add a playlist-unshuffle command
  • command: add osd-dimensions property
  • input: new PLAYONLY and PAUSEONLY keycodes

Changed

  • options: change option parsing when using a single dash This adds a warning for -o file.mkv and disallows the use of --o file.mkv (use --o=file.mkv instead).

Fixes and Minor Enhancements

  • lua: fix mp.file_info for large files
  • vo_gpu: fix crash if dither texture fails to allocate
  • wayland: unscrew up cursors, fix various issues
  • osc: usability improvements for osc window controls

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.31.0..v0.32.0 in the git repository or by visiting either https://github.com/mpv-player/mpv/compare/v0.31.0...v0.32.0 or https://git.srsfckn.biz/mpv/log/?qt=range&q=v0.31.0..v0.32.0