Help us keep the list up to date and submit new video software here.

Software Home »

Complete Version history / Release notes / Changelog / What's New for mpv


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.

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
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
player: remove legacy, non-standard Raspberry Pi-specific support code
Options and Commands
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
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
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


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.

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
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
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
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
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
command: deprecate shared-script-properties
demux_cue: deprecate --demuxer-cue-codepage for --metadata-codepage
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 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.

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
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
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
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
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
drm: deprecate --drm-atomic (now always enabled)
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 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


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 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


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 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.

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
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
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
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
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
vo_gpu: deprecate --gamma-factor and --gamma-auto
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


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


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 script it will take care of this, otherwise you need to explicitly invoke the build system using python3 waf.

player: allow vo to be switched at runtime
input.conf syntax: support custom quotes in `XstringX` form & single quotes
ao_ass: 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)
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
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
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
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
win32: ignore and deprecate --fit-border
drm_common: deprecate selecting by card number in --drm-connector
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
v0.33.0...v0.34.0 or


Security fix release for the 0.30 branch. Users are advised to upgrade immediately.
(CVE number pending)

Fixes and Minor Enhancements
demux_mf: improve format string processing


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 script it will take care of this, otherwise you need to explicitly invoke the build system using python3 waf.

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
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
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
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
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
demux: deprecate --cache-secs
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
v0.32.0...v0.33.0 or


This release requires FFmpeg 4.0 or newer.

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
wayland: print warning on GNOME due to serious issues with their compositor
player: write watch-later config even for unseekable streams
vo_gpu: hwdec_vdpau: remove direct_mode
vo_gpu: hwdec_vaegl: remove support for old-style interop
Options and Commands
command: add a playlist-unshuffle command
command: add osd-dimensions property
input: new PLAYONLY and PAUSEONLY keycodes
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
v0.31.0...v0.32.0 or


This release requires FFmpeg 4.0 or newer.

vo_gpu/d3d11: allow configurable swapchain color space for native HDR output
player: add mechanisms for better logging as preperation for console.lua
audio: add ao_audiotrack for Android
input: introduce a pseudo key name that grabs all text input
wayland: add grab zone for resizing window with mouse
osc: implement pseudo client side decorations via OSC
vf_gpu: add video filter using vo_gpu's renderer
added console.lua: interactive REPL for input commands
osc: display Santa hat for idle logo in December
vd_lavc: add option to autoselect known good hwdec implementations
mac: replace old event tap for media key support with MediaPlayer
input: disable gamepad code by default
vo_gpu: allow vdpau usage under EGL
stream, demux: redo origin policy
mac: remove Apple Remote support
client API: deprecate tick event
Options and Commands
vo_gpu/d3d11: add --d3d11-output-csp for configuring swap chain color space
command: add command-list property
command, input: add input-bindings property
command: add --window-maximized and make --window-minimized settable
command: add property returning hidpi scale
command, lua: add a way to share data between scripts
client API, lua: add new API for setting OSD overlays
add a builtin "sw-fast" profile, which restores performance settings
for software video conversion. These were switched to higher quality.
This affects video outputs like vo_x11 and vo_drm, and screenshots.
options: make --show-profile without parameters list all profiles
wayland: support for --hidpi-window-scale option
stream_lavf: set --network-timeout to 60 seconds by default
x11: scale window-scale by DPI
deprecate --input-file
deprecate --video-sync=display-adrop
deprecate all input section commands
deprecate --display-fps, replaced by --override-display-fps
remove deprecated --playlist-pos alias
Fixes and Minor Enhancements
vo_drm, vo_x11: allow use of zimg
vo_sdl: Support mouse wheel input, Improve mouse button input
video: fix track switching work for external images
vo_gpu: fix infinite scaler reinit spam
f_output_chain: fix possible crash when changing filters
vo_gpu: opengl: add hack for ancient Mesa/GLX
demux_lavf: export demuxer_id for more formats which have it
lua: make later key bindings always have higher priority
drm_common: fix display FPS estimation for interlaced modes
vo_drm: fix incorrect pixel format possibly being picked for 30-bit
zsh completion: fix pcre usage to really be optional
options: increase consistency between list options and document them
osc: reduce unnecesary CPU usage by using property notifications
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.30.0..v0.31.0
in the git repository or by visiting either


This release requires FFmpeg 4.0 or newer.
This release has replaced the internal Vulkan rendering abstraction
with libplacebo's more up-to-date implementation.

vo_gpu: vulkan: hwdec_cuda: Add support for Vulkan interop
command: support for async commands
input: support for named arguments
cocoa-cb: add support for mac 10.14 Dark mode and run time switching
vo_gpu: switch to Vulkan API implementation based on libplacebo
context_drm_egl: Add support for presentation feedback
vo_gpu: implement error diffusion for dithering
vo/gpu: hwdec_vdpau: Support direct mode for 4:4:4 content
vo_gpu: hwdec_vaapi: Add Vulkan interop
video, TOOLS: add vf_fingerprint and a skip-logo script
vo_gpu: d3d11: add support for presentation feedback
vo_drm: 30bpp support
cocoa-cb: add support for 10bit opengl rendering
video: add pure gamma TRC curves for 2.0, 2.4 and 2.6
vo_drm: Implement N-buffering and presentation feedback
Reintroduce vo_wayland as vo_wlshm
video: add zimg wrapper
wayland: add presentation time
input: add gamepad support through SDL2
cocoa-cb: use libmpv's advanced rendering control and timing
vo_gpu: improve tone mapping desaturation
vo_gpu: redesign peak detection algorithm
vo_gpu: allow boosting dark scenes when tone mapping
osc: improve look of seekranges
vo_gpu: x11: remove special vdpau probing, use EGL by default
demux: sort filenames naturally when playing a directory / archive
stream_dvb: rewrite channel switching, remove old stream control
filters: extend vf_format so that it can convert color parameters
demux, stream: rip out the classic stream cache
vo_gpu: removed internal Vulkan implementation
Remove libdvdread support in favor of libdvdnav
demux, stream: remove much of the optical disc support
Remove classic Linux analog TV support, and DVB runtime controls
demux, stream: remove old rar support in favor of libarchive
vo_gpu: remove mali-fbdev
vo_gpu: remove vdpau/GLX backend
vf_vapourynth: remove Lua backend
vo_gpu: remove hwdec_d3d11eglrgb
Options and Commands
command: add a subprocess command
vo_gpu: added --tone-mapping-max-boost, --hdr-peak-decay-rate, --hdr-scene-threshold-low/high
player: add --demuxer-cache-wait option
Implement backwards playback
demux: add a on-disk cache
demux, command: add another stream recording mechanism, dump-cache command
ao_pulse: add --pulse-allow-suspended
command: add video-add/video-remove/video-reload commands
demux_cue: added --demuxer-cue-codepage to select CUE sheet charset
input: add keybind command
command: add sub-start & sub-end properties
video/d3d11: added --d3d11-adapter to select a rendering adapter by name
vo_gpu/d3d11: added --d3d11-output-format for configuring swap chain format
vo_gpu: split --linear-scaling into --linear-upscaling and --linear-downscaling
vo_gpu: split --tone-mapping-desaturate into strength and exponent
drm: rename --drm-osd-plane-id to --drm-draw-plane, --drm-video-plane-id to --drm-drmprime-video-plane, --drm-osd-size to --drm-draw-surface-size
options: deprecate --video-aspect, replaced by --video-aspect-override
options: deprecate --record-file, --spirv-compiler
options: remove deprecated --chapter option
demux: remove "program" property
stream: remove "disc-titles", "disc-title", "disc-title-list", and "angle" properties
cocoa-cb: remove --macos-title-bar-style, replaced by --macos-title-bar-material and --macos-title-bar-appearance
spirv: remove support for --spirv-compiler=nvidia (shaderc is the only remaining option)
Fixes and Minor Enhancements
context_drm_egl: implement n-buffering
cocoa-cb: add support for custom colored title bar
vo_gpu: x11egl: support Mesa OML sync extension
demux, demux_edl: add extension for tracks sourced from separate streams
context_drm_egl: Use eglGetPlatformDisplayEXT if available
vo_gpu: vulkan: add Android context
wayland: use xdg-decoration if available
vo_gpu: glx: use GLX_OML_sync_control for better vsync reporting
demux: runtime option changing for cache and stream recording
x11: fix ICC profiling for multiple monitors
zsh completion: move generation to runtime and improve
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.29.1..v0.30.0
in the git repository or by visiting either
v0.29.1...v0.30.0 or

Release v0.29.1

Notable Changes for 2018-10-02

Fixes and Minor Enhancements
af_rubberband: Fix for A-V drift on seeking.
demux_lavf: Fix EDL playback of certain DASH streams.
demux_lavf: Mark v4l streams as not seekable.
demux_raw: Fix for gapless playback from raw audio input.
encode: Fix for crashes in case of failure to write to output.
encode: Fix for encoding when utilizing lavfi-complex.
Fix to strip HDR peak metadata if attached to SDR video (#6111)
manpage: Misc fixups.
stream_{smb,file}: Fix for partial writes to buffers.
stream_libarchive: Fix hang when an out-of-bound seek happens.
vo_gpu: Fix for corruption when multiple compute shaders override each others' block sizes (#6083).
ytdl_hook: Always load "ytdl://" URLs with ytdl_hook first.
ytdl_hook: Fix audio streams not being picked up for some sites.


This release requires FFmpeg 4.0 or newer.

ao/openal: Add better sample format and channel layout selection
ao/openal: Add support for direct channels output
cocoa-cb: initial implementation via opengl-cb API
context_drm_egl: Introduce 30bpp support (requires Mesa 18.0.0_rc4 or later)
osx: add some more menu bar items as suggested by Apples's HIG
vo_gpu: make screenshots use the GL renderer (#5498, #5240)
x11: support Shift+TAB as an input key bind (#5849)
ytdl_hook: support native dash demuxer, if present
ao_alsa, ao_pulse: reduce requested buffer size
audio: change format negotiation, remove channel remix fudging
client API: deprecate opengl-cb API and introduce a replacement API
demux: lower demuxer cache default sizes from 400MB/400MB to 50MB/150MB
osx: always deactivate the early opengl flush on macOS
scripting: change when/how player waits for scripts being loaded
vo_gpu: various improvements to HDR peak detection
vo_gpu: various improvements to HDR tone mapping
wayland_common: update to stable xdg-shell
ytdl_hook: parse youtube playlist urls to set start index if --ytdl-raw-option=yes-playlist= is specified
af_lavrresample: deprecate this filter
build: drop support for SDL1 (only applied to ao_sdl)
Options and Commands
add a number of --audio-resample-* options, which should from now on be used instead of --af-defaults=lavrresample:
ao/openal: --openal-direct-channels
command: add --osd-on-seek option defaulting to bar
command: add a change-list command (#5435)
options: add --http-proxy
options: add a builtin low-latency profile
vaapi: add option to select a non-default device path with --vaapi-device (#4320)
video: add option to reduce latency by 1 or 2 frames
vo_gpu: introduce --target-peak (#5521)
command: change cycle-value command behavior (#5772)
config: replace config dir lua-settings/ with dir script-opts/
options: --lavfi-complex now requires uniquely named filter pads.
options: --ytdl is now always enabled, even for libmpv
options: make --deinterlace=yes always deinterlace (#5219)
options: slightly improve filter help output for lavfi bridge
vo: rename --vo=opengl-cb to --vo=libmpv
encoding: deprecate a bunch of obscure options (--ovoffset, --oaoffset, --ovfirst, --oafirst)
options: deprecate --vf-defaults and --af-defaults
osx: --gpu-context=cocoa with --gpu-api=opengl is now deprecated in favour of --vo=libmpv
command: remove an old compatibility hack that allowed CLI aliases to be set as property, deprecated in 0.26.0
input: remove legacy command handling for MPlayer commands that were deprecated in 2013
options: drop --opensles-sample-rate, as --audio-samplerate should be used if desired
options: drop deprecated --videotoolbox-format, --ff-aid, --ff-vid, --ff-sid, --ad-spdif-dtshd, --softvol options
options: remove --video-stereo-mode
options: remove deprecated ao/vo auto profiles
options: remove the following encoding options: --ocopyts (now the default, old timestamp handling is gone), --oneverdrop (now default), --oharddup (you need to use --vf=fps=VALUE), --ofps, --oautofps, --omaxfps
Fixes and Minor Enhancements
HIDRemote: fix volume buttons on macOS 10.13 (#5721)
TOOLS/autoload: Fix broken "disabled" option
TOOLS/autoload: be more robust with slow directory listings (#5618)
ao_sdl: fix default buffer size
build: add static libraries to libmpv.pc
build: bump waf to 2.0.9 (fixes Python 3.7 compatibility)
build: manually add standard library search paths for linking (#5791)
common: round all integer times to milliseconds
demux, player: fix playback of sparse video streams (w/ still images)
demux: support for some kinds of timed metadata (e.g. ICY)
demux_mkv: add V_AV1 identifier for AV1
demux_mkv: support Meridian Lossless Packing in Matroska (#5923)
display additional metadata tags during video playback
drm_atomic: Fix memory leaks in drm_atomic_create
enable cache for FUSE filesystems on OpenBSD and FreeBSD
gpu: prefer 16bit floating point FBO formats to 16bit integer ones
hwdec_vaegl: Fix VAAPI EGL interop used with gpu-context=drm
input.conf: use exact value for [ binding, which does the inverse of ]
input: add a keybinding to toggle hardware decoding
input: minor additions to default key bindings (#973)
osc: fix accidentally skipping files when seeking with slider
player: fix strange behavior on edition switching
player: fix track autoselection of external files yet again
terminal-unix: stop trying to read when terminal disappears (#5842)
video: actually wait for last frame being rendered on EOF
video: fix --video-rotate in some cases
video: fix crash with vdpau when reinitializing rendering (#5447)
vo_gpu: fix anamorphic screenshots (#5619)
vo_vdpau: fix resizing and rotation problems
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.28.2..v0.29.0
in the git repository or by visiting either
v0.28.2...v0.29.0 or



Add DRM_PRIME Format Handling and Display for RockChip MPP decoders
csputils: Add support for Display P3 primaries
demux: support multiple seekable cached ranges, display cache ranges on OSC
demux_playlist: support .url files (#5107)
dvb: Add multiple frontends support (up to 8)
dvb: implement parsing of modulation for VDR-style channels config
hwdec: add mediacodec hardware decoder for IMGFMT_MEDIACODEC frames,
rename mediacodec to mediacodec-copy
lua: integrate stats.lua script (bound to i/I by default)
vd_lavc: add support for nvdec hwaccel
vo_gpu: add android opengl backend
vo_gpu: initial d3d11 support
vo_gpu: vulkan support

af: remove deprecated audio filters (channels, equalizer, pan, volume;
replacements in lavfi)
vf: remove most GPL video filters (crop, dsize, expand, flip, gradfun, mirror,
noformat, pullup, rotate, scale, stereo3d, yadif; replacements in lavfi)
vf_buffer: remove this filter
video: remove automatic stereo3d filter insertion
vo_gpu: remove hwdec_vaglx interop
vo_opengl: refactor into vo_gpu
vo_wayland: remove
Options and Commands


demux: add option to create CC tracks eagerly (--sub-create-cc-track)
options: add --start=none to reset previously set start time
options: add --vlang switch

cache: lower default size to 2*10MB
demux: bump the demuxer cache readahead duration to 10 hours
demux: use seekable cache for network by default, bump prefetch limit
msg: make --msg-level affect --log-file too
player/misc.c: allow both --length and --end to control play endpoint
player: match subtitles with language tags with --sub-auto=exact
rename --opengl-hwdec-interop to --gpu-hwdec-interop (now mostly useless)
vd_lavc: prefer nvdec over vdpau with --hwdec=auto (better codec and surface
format support)
vd_lavc: rename --hwdec=rpi to --hwdec=mmal

options: remove --heartbeat-cmd and --heartbeat-interval
(incidentally fixes #4888)
Fixes and Minor Enhancements

TOOLS/autoload.lua: add ogm, ogg and opus extensions
Use /dev/tty instead of stdin for terminal input (#4190)
audio: add audio softvol processing to AO (replaces previously GPL’d code)
audio: fix channel conversion with NA channels (e.g. with ALSA)
audio: fix missing volume update on init and reinit
csputils: Fix DCI P3 primaries white point
demux: don't allow subtitles to mess up buffered time display
demux: fix .cue files with audio files that contain attached pictures
demux: fix accounting for seekable ranges on track switches (fixes missing
audio when cycling through audio tracks with e.g. EDL, --merge-files, ordered
chapters and youtube-dl pseudo DASH)
demux: fix crash with cue/ordered chapter files (#5027)
demux: speed up cache seeking with a coarse index
demux_lavf: always give libavformat the filename when probing
(helps with mp3 files)
demux_mkv: add V_SNOW tag to mkv_video_tags
dvb: Fix long channel switching: next/prev channel
dvb: fixes for ATSC tuning
lavc_conv: clamp timestamps to positive (#5047)
macOS: fix bundle on macOS High Sierra (10.13) (#4926, #4866)
mp_image: always copy color attributes on hw download (#4804)
mp_image: select an explicit fallback for chroma location (#4804)
msg: bump log level of --log-file to -v -v
msg: reinterpret a bunch of message levels
osc: fix rare stack overflow when changing visibility mode
osdep/io: add android-related bullshit to fix files >2 GiB
player/playloop.c: respect playback start time when using --loop-file
player: allow seeking in cached parts of unseekable streams
player: make track language matching case insensitive (#5272)
player: use start timestamp for ab-looping if --ab-loop-a is absent
player: when loading external file, always add all track types (#5132)
restore-old-bindings.conf: add old macOS/Wayland AXIS bindings
screenshot: create directories from template
scripting: report dlerror() output
sd_ass: accept RFC8081 font media types
sd_ass: accept otc as fallback OpenType collection file extension
stream_libarchive: work around various types of locale braindeath
subprocess-win: don't change the mouse cursor when creating processes
video: add a hack to avoid missing subtitles with vf_sub (#5194)
video: fix alpha handling (#4983)
video: fix memory leaks (roughly 1 KB per decoded frame) with hwdec copy modes
video: fix rotation and deinterlace auto filters
video: properly pass through ICC data
vo: add support for externally driven renderloop and make wayland use it
(partially fixes display-sync under wayland; disables rendering when window
is invisible)
vo_gpu: change --tone-mapping-desaturate algorithm
vo_gpu: enable 3DLUTs in dumb mode
vo_gpu: fix gamma scale
vo_gpu: fix mobius tone mapping compatibility to GLSL 120 (#5069)
vo_gpu: fix video sometimes not being rerendered on equalizer change
vo_gpu: kill off FBOTEX_FUZZY (#1814)
vo_gpu: opengl: fix possible screenshot window crash (#4905)
vo_gpu: opengl: use GLX_MESA_swap_control where available
vo_gpu: reduce the --alpha=blend-tiles checkerboard intensity
vo_gpu: win: remove exclusive-fullscreen detection hack
vo_lavc: remove messy delayed subtitle rendering logic (#4689)
wayland_common: implement output tracking, many cleanups and bugfixes
Windows: skip window snapping if Windows handled it
Windows: add more-POSIXy versions of open() and fstat() (#4711)
ytdl_hook: don't prepend ytdl:// to non-youtube links in playlists (#5003)
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.27.0..v0.28.0
in the git repository or by visiting either
v0.27.0...v0.28.0 or


Windows: handle media keys
libmpv: options: add a thread-safe way to notify option updates
vd_lavc/vo_opengl: support embedded ICC profiles
vo: rendering API abstraction for future non-GL video outputs
vo_opengl: add a gamut warning feature to highlight out-of-gamut colors (--gamut-warning)
vo_opengl: add direct rendering support (--vd-lavc-dr)
vo_opengl: implement (faster) compute shader based EWA kernel
vo_opengl: implement HLG OOTF inverse
vo_opengl: support HDR peak detection (--hdr-compute-peak)
vo_opengl: support float input pixel formats
vo_opengl: support loading custom user textures (#4586)
vo_opengl: support user compute shaders
Remove video equalizer handling from vo_direct3d, vo_sdl, vo_vaapi, and vo_xv (GPL, not worth the effort to support legacy VOs)
Options and Commands
macOS: add --no-native-fs option to disable the native macOS fullscreen (#4014)
player: add --track-auto-selection option
input: use mnemonic names for mouse buttons, same as Qt:
options: change --loop semantics
player: make --lavfi-complex changeable at runtime
vf_eq: remove this filter (GPL; uses libavfilter’s eq filter now, with changed semantics)
video: change --deinterlace behavior
vo_opengl: generalize HDR tone mapping to gamut mapping, --hdr-tone-mapping → --tone-mapping
--field-dominance (GPL-only author, no chance of relicensing)
input: drop deprecated "osd" command
options: drop --video-aspect-method=hybrid (GPL-only)
Fixes and Minor Enhancements
TOOLS/autocrop.lua: fix cropdetect black limit for 10-bit videos
TOOLS/lua/autodeint: update to lavfi-bridge
TOOLS/lua/status-line: improve and update
af_lavrresample: don't call swr_set_compensation() unless necessary (#4716)
ao_oss: fix period_size calculation (#4642)
ao_rsound: allow setting the host
audio: fix spdif mode
filter_kernels: correct spline64 kernel
macOS: fix media keys input when other Apps steal the priority (#4834)
macOS: fix the support of multiple renderers (GPU switch) (#2371)
macOS: remove the standard "Show Tab Bar" menu item
options: fix --include (#4673)
player: fix --end with large values (#4650)
player: fix confusion in audio resync code (#4688)
player: make refresh seeks slightly more robust (#4757)
player: readd smi subtitle extension (#4626)
vd_lavc: change auto-probe order to prefer cuda over vdpau-copy
vd_lavc: fix device leak with copy-mode hwaccels (#4735)
vd_lavc: fix hwdec compatibility with yuvj420p formats
vd_lavc: fix mid-stream hwdec fallback
vf_vapoursynth: fix inverted sign and restore 10 bit support (#4720)
video: increase --monitorpixelaspect range
vo_opengl: adjust the rules for linearization (#4631)
vo_opengl: scale deband-grain to the signal range
vo_opengl: tone map on the maximum signal component
x11: fix that window could be resized when using embedding (#4784)
ytdl_hook: resolve relative paths when joining segment urls (#4827)
ytdl_hook: support fragments with relative paths, fixes segmented DASH
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.26.0..v0.27.0
in the git repository or by visiting either
v0.26.0...v0.27.0 or


VA-API/VDPAU hardware decoding now requires FFmpeg > 3.2.
DVB support is disabled by default since it does not work with some older kernels.
Built-in V4L TV support is disabled by default. av://v4l2 can be used instead.
Support for C plugins is now enabled by default (#4491).

Many more parts of the player are now licensed under LGPL, see Copyright file.
Thanks to all contributors who have agreed to relicensing of their changes!
See #2033 for details.

Universal Windows Plaform (UWP) support (libmpv only)
csputils: implement sony s-gamut
js: add javascript scripting support using MuJS
See DOCS/man/javascript.rst for more details
vo_opengl: add new HDR tone mapping algorithm (mobius, now default)
vo_opengl: hwdec_cuda: Support separate decode and display devices
vo_opengl: implement sony s-log1 and s-log2 trc
vo_opengl: implement support for OOTFs and non-display referred content
vf_dlopen: remove this filter
Options and Commands
vo_opengl: add --tone-mapping-desaturate
vo_opengl: support tone-mapping-param for clip
ytdl_hook: add option to exclude URLs from being parsed
allow setting profile option with libmpv
audio: move replaygain control to top-level options
external_files: parse ~ in --{sub,audio}-paths
options: change --sub-fix-timing default to no (#4484)
options: expose string list actions for --sub-file option
options: slight cleanup of --sub-ass-style-override
signfs → scale
--sub-ass-style-override → --sub-ass-override
renamed the HDR TRCs st2084 and std-b67 to pq and hlg respectively
replace vf_format's peak suboption by sig-peak, which is relative to the reference white level instead of in cd/m^2
the following options change to append-by-default (and possibly separator):
video: change --video-aspect-method default value to container
m_option: deprecate multiple items for -add etc.
player: deprecate "osd" command
--audio-file-paths => --audio-file-path
--sub-paths => --sub-file-path
--opengl-shaders => --opengl-shader
--sub-paths => --sub-file-paths
the following options are deprecated for setting via API:
"script" (use "scripts")
"sub-file" (use "sub-files")
"audio-file" (use "audio-files")
"external-file" (use "external-files")
(the compatibility hacks for this will be removed after this release)
chmap: remove misleading "downmix" channel layout name (#4545)
demux_lavf: remove --demuxer-lavf-cryptokey option (#4579)
input.conf: drop TV/DVB bindings
options: remove remaining deprecated audio device selection options
remove option --target-brightness
remove property "video-params/nom-peak"
Fixes and Minor Enhancements
TOOLS/lua/autoload.lua: actually sort files case insensitive (#4398)
TOOLS/lua/autoload.lua: ignores all files starting with "."
ao_openal: kill off device listing (#4311)
ao_pulse: reorder format choice to prefer float and S32 over S16 as fallback format
ao_wasapi: try correct initial format (#4582)
command: add missing change notification for playlist-shuffle (#4573)
demux_disc: fix bluray subtitle language retrieval (#4611)
demux_mkv: fix alpha with vp9 + libvpx
demux_mkv: support FFmpeg A_MS/ACM extensions
ipc-unix: don’t truncate the message on EAGAIN (#4452)
ipc: raise json nesting limit (#4394)
macOS: fix when used with csh or tcsh shell
macOS: properly unhide Dock when quitting during System fs animation
mpv_identify: replace deprecated fps property (#4550)
options/path: fallback to USERPROFILE if HOME isn't set
player: close audio device on no audio track
player: fix potential segfault when playing dvd:// with DVD disabled (#4393)
player: prevent seek position to jump around adjacent keyframes, e.g. when dragging the OSC bar on short videos (#4183)
vo_opengl: bump up SHADER_MAX_HOOKS and MAX_TEXTURE_HOOKS to 64
vo_opengl: correct off-by-one in scale=oversample
vo_opengl: do not use vaapi-over-GLX (#4555)
vo_opengl: fall back to ordered dither instead of blowing up (#4519)
vo_opengl: tone map in linear XYZ instead of RGB
x11: add 128x128 sized icon support
ytdl_hook: add a header to support geo-bypass
ytdl_hook: don't override start time set by saved state
ytdl_hook: don't override user-set start time
ytdl_hook: treat single-entry playlists as a single 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.25.0..v0.26.0
in the git repository or by visiting either
v0.25.0...v0.26.0 or


TOOLS: add acompressor.lua script for runtime acompressor ffmpeg filter control
lavfi: support hwdec filters for --lavfi-complex
osc: add volume button (mouse wheel to change volume)
sub: add SDH subtitle filter
image_writer: remove useless formats (PPM, PGM, TGA)
af_drc: remove (use --af=acompressor instead; higher quality)
Options and Commands
--sub-filter-sdh, --sub-filter-sdh-harder
add automatic libavfilter bridges to option parsing
command: add better runtime filter toggling method
command: add demux-start-time property
command: add property notifications for hwdec properties (issue #4289)
input: add "async" flag
osc: add user_opts.boxmaxchars for box layout title limit
player: add --keep-open-pause=no option
vo_opengl: --opengl-es=force2
vo_opengl: add --opengl-shader-cache-dir option for caching shaders on disk (mostly for ANGLE)
vo_opengl: angle: add --angle-flip to set the ANGLE present model
command: update sub-fps etc. options on runtime changes
options: change --audio-file-auto default to not to load any files
audio: deprecate most non-lavfi audio filters (channels, equalizer, pan, volume)
video: deprecate almost all non-lavfi video filters (buffer, crop, dlopen, dsize, eq, expand, flip, gradfun, mirror, noformat, pullup, rotate, scale, stereo3d, sub, yadif)
options: deprecate --loop semantics (planned alias to --loop-file)
Fixes and Minor Enhancements
Windows: demux_cue: fix UTF-8 paths
Windows: fix mismatched free/talloc_free (issue #4315)
Windows: fix undefined behaviour when toggling fullscreen
ao_wasapi: do not pass nonsense to drivers with double precision formats
ass_mp: reallocate cached subtitle image data on format changes (issue #4325)
demux_lavf: disable half-working mp4 edit list support in libavcodec
demux_lavf: skip avformat_find_stream_info() for some formats (hls, mp4, mkv by default)
external_files: actually try to autoload from fallback paths
external_files: enable autoloading with URLs (issue #3264)
image_writer: make it work with libavcodec's jpg encoder
osc: bottom/topbar: add fullscreen button
osc: bottom/topbar: don't clip title vertically
osc: bottom/topbar: increase timecodes width a bit (issue #3952)
osc: fix PlayResX undefined warning when aspect is 0
osc: fix window dragging with showwindowed=no (issue #1819)
osc: make title configurable and use property expansion on it (issue #4221)
osc: refactor osc message scaling (issue #4081, issue #4083, issue #4102)
player: don't block playback stop when seeking
player: enable "buffering" pausing for DASH streams too
player: fix core-idle and eof-reached update notifcations
player: make screenshot commands honor the async flag (issue #4250)
player: reduce blocking on VO when switching pause (issue #4152)
sd_ass: disable --sub-fix-timing if sub style override is fully disabled
stream/stream_dvdnav: don't ignore setting title (issue #4283)
stream_dvd: fix subs/audio detection on DVDs containing multi-PGC titles
vo_opengl: fix crash with temporal dithering in dumb mode
vo_opengl: hwdec_d3d11egl: make it work with some ANGLE DLL versions


Windows: allow snapping to screen edges (#2248)
macOS: add border cycling (#2430)
player: add experimental C plugin interface
player: add experimental stream recording feature (--record-file)
player: add prefetching of the next playlist entry (--prefetch-playlist; does NOT work with URLs resolved by youtube-dl)
stream_lavf: add support for data URIs (#4058)
vaapi: add support for 10-bit video formats (requires patched Mesa and capable hardware)
x11: pseudo HiDPI scaling
Options and Commands
sub: add --sub-justify and --sub-ass-justify options
sub: add option to force using video resolution for image subtitles (--image-subs-video-resolution)
command: rename framedrop properties
drop-frame-count → decoder-frame-drop-count
vo-drop-frame-count → frame-drop-count
input.conf: change "L" to change loop-file by default
--hwdec-preload (replaced with --opengl-hwdec-interop)
options: drop deprecated --sub-codepage syntax
options: drop deprecated --vd/--ad codecs selection features
player: remove --stream-capture option/property
Fixes and Minor Enhancements
Windows: update the fullscreen state on restoring
ad_spdif: fix obscure cases of AC3 passthrough (e.g. 44100 Hz AC3)
ao_oss: use --audio-device if --oss-device isn't set (#4122)
build: fix --disable-gl if cuda is enabled
build: rpi: rely on pkgconfig for compiler flags to ease cross compilation
charset_conv: fallback to interpreting subs as latin1 if iconv fails
charset_conv: fix "auto" fallback with uchardet not compiled (#3954)
client API: fix freeze when destroying mpv_handle before mpv_initialize
client API: fix mpv_set_property() return value before init (#3988)
command: fix potential crash for script-binding with multi-commands
command: nicer OSD formatting for loop-file
command: shorten long playlists on OSD
config: do not resolve default profile during "include" processing (#4024)
cuda: fix 10 bit decoding
cue: accept lower-case cue commands (#4057)
demux_mkv: any reference makes a frame not a keyframe (fixes seeking in WebM files with alpha channel)
lavfi: slightly better disconnected output handling (#4118)
lua: close directory after reading its entries (#4045)
macOS: consistent normalization when searching for external files (#4016)
macOS: don't change Space on quit in fullscreen (#3957)
macOS: don't constrain window frame for fullscreen (#4044)
macOS: don't init displaylink on reconfig (#4031)
macOS: fix build on OS X 10.9 (#3946)
macOS: fix color profile retrieval
macOS: fix displaylink refresh rate retrieval
macOS: fix dropping of files and URLs (#4036)
macOS: fix handling of geometry option (#3867)
macOS: fix unwanted behavior with window level other than the default (#1757, #1884)
macOS: fix window size in certain circumstances
macOS: properly recover from toggleFullscreen fail (#4035)
osc: allow playlist buttons when looping (#4092)
osc: bottom/topbar: clip title instead of stretching
osc: bottombar/topbar: make chapter markers slightly bigger
osc: box: clip with ellipsis after too much stretching
osc: fix crashes related to field eventresponder being nil (#3210)
player: add .scc subtitle extension
stream_bluray: use proper 0-based index
sub: remove .txt as text subtitle extension
tv: fix segfaults on TV input (#4096)
vaapi: set libva > 0.39.4 message callbacks to prevent it from printing messages to the terminal
vd_lavc: improved fallback behavior for --hwdec=cuda (#3914)
vdpau: reject decoding of non-4:2:0 (would decode to garbage)
vf_lavfi: don't crash with VOs without hardware decoding support (#4064)
vo_opengl, vo_opengl_cb: better hwdec interop backend selection
vo_opengl: angle: rewrite with custom swap chain (fixes problems with e.g. 24 fps video on 24 Hz monitors, avoids problems with DirectComposition, enables "screenshot window" command on Windows 8 and newer)
vo_opengl: partially fix rotation for 4:2:2 content
vo_opengl: x11egl: fix alpha mode
wayland: fix high CPU usage with mpv paused and visible
ytdl_hook, edl: implement pseudo-DASH support
ytdl_hook: add non-dash fallbacks to default formats
ytdl_hook: fix opening rtmp stream
ytdl_hook: respect --no-audio, don't force-select track
ytdl_hook: support livestream segmented DASH VODs
ytdl_hook: support segmented dash
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.23.0..v0.24.0
in the git repository or by visiting either
v0.23.0...v0.24.0 or


Now requires at least FFmpeg 3.2.2.


vo_rpi: partially undeprecate

vo_opengl: hwdec_cuda: Support P016 output surfaces

charset_conv: drop enca and libguess support in favor of uchardet
vf_vdpaurb: remove this filter in favor of --hwdec=vdpau-copy
Options and Commands


TOOLS/autoload: allow disabling through script-opts
demux, stream: add --access-references to prevent opening referenced files

options: deprecate codec family selection in --vd/--ad

macOS: remove --fs-black-out-screens
options: remove deprecated sub-option handling for --vo and --ao
Fixes and Minor Enhancements

Windows: window styles improvements (allow minimizing borderless/fullscreen window) (#2229, #2451)
ad_spdif: Fix crash when spdif muxer is not available
audio: fix --audio-stream-silence with ao_alsa
audio: fix --audio-stream-silence with ao_wasapi
build: drop build-time dependency on Perl
build: support linking ANGLE (previously loaded dynamically)
d3d11va: unconditionally load D3D DLLs (#3348)
demux_mkv: fix seeking in some broken files (#3920)
hwdec_cuda: allow building without CUDA SDK (load CUDA dynamically)
macOS: fix dropping of URLs containing query strings on the window
macOS: fullscreen refactoring (#2857, #3272, #1352, #2062, #3864)
macOS: support append file to paylist on drop (#2166)
macOS: update the menu and remove conflicting “Quit & remember position” item (#3865)
osc: don't hide playlist buttons, just disable
osc: fix possible race condition in right timecode
osc: topbar: use same styles as bottombar
player: don't print format detection error when aborting loading
vdpau: fix vaapi probing if libvdpau-va-gl1 is present
video: use demuxer-signaled duration for last video frame (#3924)
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.22.0..v0.23.0
in the git repository or by visiting either
v0.22.0...v0.23.0 or




audio/out: add AudioUnit output driver for iOS
demux_mkv: parse Matroska colorimetry metadata
filter_kernels: add ability to taper kernels/windows, add tukey window
osc: add seekbarstyle=knob (#2365)
video/out: add tct as modern caca alternative for true-color and 256-color terminals
video: add --hwdec=vdpau-copy mode

vf_vdpaurb: deprecated in favor of --hwdec=vdpau-copy
Options and Commands


--scale-taper, --scale-wtaper
macOS: --hidpi-window-scale (#3716)
osc: add script message handlers for chapter/track/playlists
Fixes and Minor Enhancements

Apply --autofit-larger after --autofit-smaller (#3753)
Set subtitle track title to indicate hearing/visual impaired tracks
ao_alsa: disable chmap API use for mono/stereo (#2905, #3045)
build: add required failure message for libavfilter check (#3692)
build: fix compilation with mingw-w64/Clang (#3800)
build: make VideoToolbox available on iOS
command: fix reset-on-next-file=all and tv-freq option (#3708)
command: if window-scale can't be set properly, set it as option (#3724)
demux_mkv: don't recursively resolve timeline for opened reference files
demux_mkv: fix ordered chapter sources with ordered editions
opengl: compile against iOS OpenGLES implementation
options: handle legacy no-* sub-options
osc: add alpha animation to tooltip (fix lingering tooltip)
osc: change default deadzonesize to 0.5
osc: don't wrap the title
osc: fix crash after reaching a certain position in limited lists (#3691)
osc: fix crash with no chapters
osc: fix crashes when dragging seekbar across file changes (#3210)
osc: fix displaying only half of the entries when at the end of a list
osc: fix missing chapter ticks with seekbarstyle=bar
osc: slimbox: fix clipping with seekbarstyle=bar (#3737)
osc: top/bottombar: also scale when min-width is reached to match box/slimbox behavior
osc: top/bottombar: dynamically size timecodes according to timems
osc: top/bottombar: rescale layout to same size with scale=1
osc: top/bottombar: scale title if too large like box
player: consistently initialize screensaver state with --force-window
player: enable no-video subtitle display on coverart too
player: make --start-time work with --rebase-start-time=no
player: make sure non-video subtitle rendering is reset if video resumes (#3770)
player: removing last playlist entry while looping should not stop (#3808)
player: show subtitles on VO if --force-window is used (#3684)
player: speed up audio/video re-sync when there is a huge delay
vdpau: fix hwdec uninit (#3788)
vo_opengl: blend against background color for --alpha=blend
vo_opengl: context_rpi: fix stdatomic usage (#3699)
vo_opengl: fix --blend-subtitles handling (#3773)
vo_opengl: fix redrawing with hardware decoding (#3773)
vo_opengl: partially re-enable glFlush() calls (#3670)
ytdl_hook: sort chapters by time
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.21.0..v0.22.0
in the git repository or by visiting either
v0.21.0...v0.22.0 or

Release 0.21.0



config: allow profile forward-references in default profile
demux_lavf: "support" mov edit lists and log errors if used (FFmpeg only)
hwdec: Add support for CUDA and cuvid/NvDecode (mostly useful on Linux where VDPAU still lacks HEVC Main 10 support; keep using DXVA2 on Windows)
osc: add right-click behavior to playlist and chapter buttons
osc: add user-alterable margin for top/bottombar
rpi: add --hwdec=rpi-copy (#3604)
sd_lavc: enable teletext
vaapi: support drm devices when running in vaapi-copy mode
vd_lavc: Add hwdec wrapper for crystalhd
vo_opengl: add hw overlay support and use it for RPI
vo_opengl: basic mali fbdev support
vo_opengl: rpi: merge vo_rpi features

vo_opengl: remove pre/post/scale-shaders in favor of user-shaders

config: deprecate ao and vo auto-profiles
vo_rpi: deprecate this VO
Options and Commands


add --teletext-page option
af_pan: add af-command support to change the matrix
af_rubberband: add af-command and option to change the pitch
command: add a load-script command
command: add a video-dec-params property
command: add an apply-profile command
command: add audio-pts property to get the audio pts
command: add options to property list
command: add sub-text property for current subtitle text
command: export profile list as a property (#977)
options: add --hwdec=yes as alias for --hwdec=auto
player: add --player-operation-mode=pseudo-gui
player: add --video-osd=no option to disable video OSD (#3387)
player: add --watch-later-directory option
stream_bluray: select title by playlist (bd://mpls/[playlist])
vo_opengl: disable glFlush() by default, and add an option to enable it for testing

af_rubberband: default to channels=together
command: allow absolute seeks relative to end of stream
command: make bitrate properties observable
command: make most options observable
msg: make --log-file and --dump-stats accept config path expansion (#3591)
options: deprecate --playlist-pos to --playlist-start
options: make input options generally runtime-settable
options: rename subtitle options (--sub-text- → --sub; --ass- → --sub-ass-)
osc: change default layout to bottombar, seekbarstyle to bar, use larger scalewindowed and scalefullscreen
player: make --terminal, --log-file, --dump-stats, --osc, --ytdl, --audio-*, --priority, --stop-screensaver (#3615) settable at runtime
vo_drm: change CLI options
Change connector selection to accept human readable names (such as eDP-1, HDMI-A-2) rather than arbitrary numbers.
Change GPU selection to accept GPU number rather than device paths.
Merge connector and GPU selection into one --drm-connector.
Add support for --drm-connector=help.
Add support for --drm-* in EGL backend.
vo_opengl: rename 3dlut-size to icc-3dlut-size

command: remove hwdec-active and hwdec-detected properties
command: remove vo-cmdline
options: drop unreferenced --bluray-angle option
vo, ao: disable positional parameter suboptions
vo_xv: replace no-colorkey with ck-method=none

all VOs and AOs: deprecate sub-options, add them as global options
command: deprecate "cache" property, replace with "cache-percent"
deprecate --vo-defaults
deprecate --vo=opengl-hq alias in favor of opengl-hq profile
options: deprecate --mute=auto
vo_direct3d: deprecate direct3d_shaders alias, use shaders by default
vo_opengl: deprecate 'drm-egl' backend and introduce 'drm' instead
Fixes and Minor Enhancements

TOOLS/ die if we can't parse main options
TOOLS/ don't filter files by extension (#2273)
ao_alsa: try to fallback to "hdmi" before "iec958" for spdif
ao_rsound: fix compilation (#3501)
aspect: use nominal width instead of actual width for video-unscaled
audio/out: prevent underruns with spdif under certain conditions
audio: fix late audio start (#3610)
audio: fix missed wakeup when changing audio output device
audio: fix segfault when yanking USB DAC
charset_conv: Use CP949 instead of EUC-KR
command: don't log "ignore" command with -v verbosity
command: try selecting the next track if track switching fails (#3446)
demux_mkv: don't crash if --ordered-chapters-files fails
displayconfig: treat a refresh rate of 1 as invalid
ipc: log when listening to IPC socket (#3598)
macOS: fix fullscreen regression on 10.11 and newer (#3364)
mp_image: fix clearing to black with p010 format
osc: Fix scaling issues when toggling fullscreen (#3429)
osc: align text vertically in top/bottombar (#2093)
osc: change seekbar background's alpha scaling
osc: fix display of chapters and playlist scaling
osc: move tooltip to inside seekbar for top/bottombar
osc: show playlist/chapter list on prev/next instead of osd
path: default ~~ paths to home directory (#3591)
player: do not let pseudo-gui override user config settings
player: enable reading from stdin after loading input.conf
player: fix instant subtitle refresh on track switches
player: make --force-window work with opengl-cb
stream_file: don't use poll() on directories (would hang on macOS; #3530, #3649)
stream_lavf: fix determining seekability (#1701)
sub: actually apply text alignment options to non-ASS subtitles
terminal-win: support modifier keys in console input (#3625)
vo_drm: fix segfault when using invalid card
vo_opengl: apply 90° rotation to chroma texture size (#3568)
vo_opengl: fix incorrect video rendering after vdpau preemption recovery
vo_opengl: partially fix dumb-mode cropping with rotation
vo_opengl: rpi: use overlay for yuv420p too
w32_common: initialize playback status as soon as possible (#3482)
wayland: reject resize events with either dimension being 0 (#3679)
x11: fix external fullscreen update (#3570)
ytdl_hook: Add title to playlist items if available
ytdl_hook: Set aspect ratio for anamorphic video
ytdl_hook: Support playlist entries without subtitles
ytdl_hook: add chapters by parsing video's description
ytdl_hook: don't add subtitles with unknown duration
ytdl_hook: temporarily force disable dash segments formats
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.20.0..v0.21.0
in the git repository or by visiting either
v0.20.0...v0.21.0 or

Release 0.20.0

Options and Commands


aspect: add --video-unscaled=downscale-big
player: add --image-display-duration option to control duration of image display (#3425)
vo_opengl: angle: new flag (dcomposition) to control DirectComposition
Fixes and Minor Enhancements

af_lavrresample: fix error if resampler could not be recreated
audio: avoid missed wakeups with ab-loops
audio: do not apply --audio-channels if spdif passthrough is in use (#3445)
cache: don't use a backbuffer if the cache is as large as the file
command: prevent O(n^2) behaviour for playlist property
demux: close underlying stream if it's fully read anyway (#3456)
demux: fix undefined behavior with ogg metadata update (#3451)
player: make looping slightly more seamless
player: refresh very low framerate video on filter changes (#3435)
stream_memory: disable stream cache
vf_rotate: allow arbitrary rotation (#3434)
vo: be more trusting to estimated display FPS (#3433)
w32_common: use hooks to detect parent window resize
x11: work around mutter fullscreen issue (#2072)
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.19.0..v0.20.0
in the git repository or by visiting either
v0.19.0...v0.20.0 or

Release 0.19.0

Build System Changes

build: add --htmldir option
build: always require atomics
wscript: add proper unversioned SONAME for Android


client API: add stream_cb API for user-defined stream implementations (bumps client API version to 1.22)
vf_d3d11vpp: add video processor selection
videotoolbox: add --hwdec=videotoolbox-copy for h/w accelerated decoding with video filters
vo_opengl: add a tscale=linear direct implementation

audio/filter: remove delay audio filter
Options and Commands


command: add filename/no-ext sub-property that returns filename without extension (#3404)
command: add properties for HDR metadata
command: add replaygain information properties to track-list
options: add vp9 to --hwdec-codecs
player: add --audio-stream-silence
player: add --audio-wait-open
player: add --no-autoload-files
videotoolbox: add yuv420p to --videotoolbox-format

options: un-restrict --audio-delay
use - as command-name separator everywhere
vo_opengl: reduce default 3dlut-size to 64x64x64 (since accuracy is improved)

deprecate "balance" option/property (no replacement)
Fixes and Minor Enhancements

Windows: don't wait for GUI thread when polling for events (#3393)
af_lavcac3enc: error out properly if encoding fails
af_volume: don't let softvol overwrite af_volume volumedb sub-option
ao_pulse: fix some volume control rounding issues
ao_wasapi: in exclusive mode, do not output multichannel by default
audio: add heuristic to move auto-downmixing before other filters
audio: show an osd bar when changing ao-volume
demux: make ALBUM replaygain tags optional (#3405)
demux_raw: fix small typo to add s16be support
demux_timeline: restore mkv edition switching
libarchive: sanitize non-UTF8 archive entries
macOS/vo_opengl: fix crash when glctx is NULL during init (#3360)
player: disable display-sync with spdif transcoding
player: do not cut off terminal status line if it contains newlines (#3340)
player: fix display-sync timing if audio resumes slowly
player: improve instant track switching (#3392)
player: improve non-hr seeking with external audio tracks
player: offset demuxer on start/seek properly with audio/sub delay
player: sync audio as well when enabling it mid-stream
stream/stream_bluray: display list of available titles in verbose mode
sub: don't potentially discard too many subtitles on seek
video: respect --deinterlace=auto
vo_direct3d: add missing header (fixes Cygwin build)
vo_opengl: angle: try D3D9 when D3D11 fails eglInitialize
vo_opengl: angle: use WARP if there are no hw adapters (makes it work on Windows 7 without hardware-accelerated graphics)
vo_opengl: increase 3DLUT accuracy at smaller LUT sizes
vo_opengl: remove the 3dlut-size npot2 restriction
vo_wayland: fix high CPU usage due to busy polling
wayland_common: clip window size to the display output size
wayland_common: fix crashes when switching to fullscreen before the video output is fully initialized
wayland_common: fix fullscreen image switching bug
wayland_common: prevent black bars on most non-native aspect ratios
wayland_common: remove untested/unusable wayland dnd code
win32: mpv.rc: re-add version info
x11: skip ICC update on every window move
ytdl: Error out with http_dash_segments (unsupported for now)
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.18.1..v0.19.0
in the git repository or by visiting either
v0.18.1...v0.19.0 or

Release 0.18.1
Note: Running mpv with different versions of the FFmpeg/Libav libraries than
it was compiled with is no longer supported. Even supposedly ABI-compatible
versions have been a source of trouble, and it creates far too much
complexity with little to no benefit, coupled with absurd and unusable FFmpeg
API artifacts.

Instead, mpv will exit with an error when such a situation is detected.
This simply means that mpv needs to be rebuilt whenever FFmpeg libraries change.



d3d: implement screenshots for --hwdec=d3d11va
vo_opengl: add output_size uniform to custom shader
vo_opengl: implement the Panasonic V-Log function (#3157)
vo_opengl: implement ARIB STD-B68 (HLG) HDR TRC
Options and Commands


command: pack sub image data in overlay-add command

options: deprecate --heartbeat-cmd
audio: deprecate --softvol

audio: drop --softvol=no and --softvol=auto (#3322)
Fixes and Minor Enhancements

video: fix deinterlace filter handling on pixel format changes
x11: silence xdg-screensaver
vo_opengl: angle: update the swapchain on resize (#3301)
vo_opengl: error out gracefully when trying to use FBOs without FBO API
vd_lavc: expose mastering display side data reference peak (improves results with HDR content)
vo_opengl: generalize HDR tone mapping mechanism (#3293)
vo_opengl: don't constantly resize the output FBO
vo_opengl: use ringbuffer of PBOs
Windows: make WM_NCHITTEST simpler and more accurate
ao_oss: do not add an entry to audio-device-list if device file missing
dec_audio: fix segment boudnary switching
ao_lavc, vo_lavc: Migrate to new FFmpeg encoding API
vo_opengl: explicitly use main framebuffer when reading window content (#3284)
vo_xv: fix behavior with odd sizes
audio: insert auto-inserted filters at end of chain
x11: add missing FocusChangeMask (disables key repeat when losing focus while a key is down)
ao_coreaudio: error out when selecting invalid device
ad_lavc: work around misbehavior of some FFmpeg decoders like wmapro (#3297)
player: cut off status line on terminal width
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.18.0..v0.18.1
in the git repository or by visiting either
v0.18.0...v0.18.1 or

Release 0.18.0
Build System Changes

build: Do not link to libGL for egl-drm
build: also use the iconv check on FreeBSD
build: don't install tests, only build them
build: re-enable encoding mode by default
vo_opengl: hwdec: remove build-dependency on dxva2 (#3150)
wscript: make at least 1 OpenGL output mandatory


csputils: add SMPTE ST2084 support
demux_mkv: support Matroska webvtt (#3247)
demux_playlist: read directories recursively
stream_memory: add hex:// protocol
vf_crop: support opaque hardware decoding formats
vf_d3d11vpp: add a D3D11 video processor filter
vo_opengl: D3D11VA + ANGLE interop
vo_opengl: add an angle-es2 backend
vo_opengl: angle: dynamically load ANGLE
vo_opengl: d3d11egl: native NV12 sampling support
vo_opengl: enable color management on GLES
vo_opengl: implement HDR (SMPTE ST2084)
vo_opengl: implement tone mapping algorithms
vo_opengl: make PBOs work on GLES 3.x
vo_opengl: support external user hooks, enhancing the flexibility of user shaders
vo_opengl: vdpau interop without RGB conversion
wayland: implement HIDPI support

vo_opengl: remove nnedi3 prescaler (replaced by user shaders)
vo_opengl: remove prescaling framework with superxbr prescaler (replaced by user shaders)
Options and Commands


Windows: make taskbar progress indication optional (#2535)
af_lavcac3enc: make encoder configurable
command: add playlist-pos-1 property (#2828)
command: introduce hwdec-current and hwdec-interop properties.
options: add --fit-border video option (currently Windows only)
video: add --hwdec=auto-copy mode
vo_opengl: always autoselect ANGLE as backend if available
vo_opengl: expose performance timers as properties
x11: add --x11-bypass-compositor=never
x11: extend --x11-bypass-compositor with fs-only option (#2582)

command: allow setting panscan etc. properties if no video is active
command: don't seek immediately when setting a-b loop while paused
command: if only ab-loop-b is set, loop from start of file
options: --geometry: center window position after applying size (#2397)
player: loop on end of file if ab-loop-b is unset
sd_add: replace --sub-ass=no with --ass-style-override=strip

vo_opengl: remove non-working rgb/rgba FBO formats
Fixes and Minor Enhancements

TOOLS/ add .f4v extension in zsh completions
TOOLS/ complete --audio-device
Windows: center window on original window center on resize to fit screen
Windows: fix size calculations for window resize (#2935)
Windows: fix wrong behavior with window-scale when window size exceeds screen size
Windows: make VOCTRL_SET_UNFS_WINDOW_SIZE resize the window around its center (#3164)
af_lavcac3enc: fix custom bitrates
ao_alsa: add more workarounds for hardware with broken drivers (e.g. ODROID-C2)
ao_opensles: remove 32-bit audio formats (not supported by Android)
cocoa: fix actual display refresh rate retrieval
cocoa: use displaylink without manually tracking the display id (#2392)
command: improve playlist* properties change notifications (#3267)
command: slightly nicer OSD list formatting
compatibility with recent FFmpeg APIs
d3d: fix hardware decoding of most MPEG2 things
d3dva: move Intel_H264_NoFGT_ClearVideo to lower priority (#3059)
demux_mkv: better resync behavior for broken google-created webms
demux_mkv: fix seeking with files that miss the first index entry
demux_playlist: recognize m3u8 as playlist extension (#3154)
input: fix parsing multiple input command prefixes
lcms: don't warn/error on 3dlut cache misses
lcms: improve black point handling (especially BT.1886)
macOS: handle multiple dropped files on the window (#3076)
player: always show the first frame in DS mode
player: assume video forwards timestamps jumps only with some formats (#3027)
player: do not update OSD all the time when paused
player: eagerly redraw OSD when seeking with coverart
player: fix use-after-free with --screenshot-directory (#3049)
player: force VO reconfig when unselecting video track
player: really start audio only once video is ready
sd_lavc: work around bug in older FFmpeg releases (#3109)
stream_cdda: enable cache by default
sub: fix --sub-gauss
vd_lavc: better hwdec wrapper decoder selection
vo_opengl: EGL: fix hwdec probing
vo_opengl: angle: avoid fullscreen FBO copy for flipping
vo_opengl: angle: enable DirectComposition (lowers vsync jitter)
vo_opengl: angle: prevent DXGI hooking Alt+Enter
vo_opengl: avoid outputting ultra-wide-gamut by default
vo_opengl: correctly disable interpolation if tscale can't be used
vo_opengl: fix bicubic_fast in ES mode
vo_opengl: fix d3d11 hardware decoding probing on Windows 7
vo_opengl: improve scale=oversample performance
vo_opengl: make the screen blue on shader errors
vo_opengl: partially fix 0bgr format support
vo_opengl: possibly update icc profile after changing options
vo_opengl: request core profile on X11/EGL too
vo_opengl: require at least ES 3.0 for float textures
vo_opengl: vdpau: fix certain cases of preemption recovery failures
vo_rpi: attempt to survive display mode changes
vo_rpi: fix destroying overlays (#3100)
vo_rpi: wait for vsync with a timeout
vo_sdl: fix pixel formats.
vo_xv: Handle incorrect size returned by Xv(Shm)CreateImage (#320)
wayland: correctly report display refresh rate
wayland: use the advertised size in fullscreen (#3021, #2657)
x11: tell GNOME to use dark window decorations
ytdl_hook: fix brightcove urls
ytdl_hook: just check if protocol is rtmp (#3090)
ytdl_hook: support multi-arc subtitles

Release 0.17.0
Note: The client API examples have moved to

Build System Changes

install symbolic SVG icon
build: allow plain-gl build on OSX (#2980)
build: disable encoding mode by default (uses deprecated FFmpeg APIs)


csputils: add DCI-P3 colorspace
d3d11va hwdec
demux: add null demuxer
ipc: add Windows implementation with named pipes
mediacodec decoder hwdec wrapper
vo_opengl: add dxva2 interop to angle backend
vo_opengl: generate 3DLUT against source and use full BT.1886 (#2815)
Options and Commands


command: add cache-speed property
command: add keepaspect property
command: add video-stereo-mode property (#2994)
command: export canonical ffmpeg version identifier (ffmpeg-version)
command: export lists of all codecs (decoder-list and encoder-list)
osd: add italic font for osd (#3031)

aspect: make video-zoom logarithmic (#3004)
command: export more information under track-list
ipc: rename --input-unix-socket to --input-ipc-server
vo_opengl: decrease default superxbr-edge-strength
vo_opengl: rename prescale to prescale-luma
Fixes and Minor Enhancements

TOOLS/ don't complete URLs by default unless no files match (#2892)
ad_lavc, vd_lavc: support new Libav decoding API
cache: disable useless "Cache is not responding" warning (#3019)
demux: delay bitrate calculation on packets with unknown timestamps (#2903)
demux_timeline: set correct seekable flags (#2898)
input: accept plain text for drag and drop (#2945)
input: do not force double-click emulation for artificial commands (#2899)
lavc_conv: fix Libav srt subtitles (#2888)
player: add missing audio reconfig events (#2929, #2920)
player: add wv to list of external audio file extensions
player: fix --stream-dump exit code (#2848)
player: fix breakage when combining 3D and rotate auto-filters
playlist: improve shuffle algorithm (better uniformity)
sub: interpret "text" subtitles as srt
vo_opengl, osd: allow osc.lua to react faster on resizes
vo_opengl: GLX: try to create 3.3 core profile context (#2938)
vo_opengl: draw transparency checkerboard after upscaling
vo_opengl: fix operation without GL_ARB_texture_rg
vo_opengl: improve superxbr algorithm
vo_opengl: only open one OpenGL/DX interop handle when using dxva2 (fixes interop with AMD drivers)
wayland: don't set fs mode on every configure (#2817)
x11: do not set _NET_WM_BYPASS_COMPOSITOR by default (#2997)
ytdl_hook: handle optional format_note
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.16.0..v0.17.0
in the git repository or by visiting either
v0.16.0...v0.17.0 or

Notable Changes for 2016-02-29
Windows Build Changes
Disabled ANGLE. Too broken. Can’t be assed to fix Google’s crap.
dxva2: support HEVC Main 10
osc: add always-on mode and unify visibility mode (always/never/auto)
player: add complex filter graph support
vo_opengl: dxinterop: add dxva2 passthrough
Options and Commands
--lavfi-complex option for complex filter graphs
audio: change downmix behavior, add --audio-normalize-downmix
command: add vf-command and af-command commands
player: add --external-file option
vo_opengl: add interpolation-threshold sub-option
audio: change --audio-channels default back to stereo
audio: remove default preference for libdcadec (decoder was merged with FFmpeg)
command: always allow setting volume/mute properties
command: show original aspect in video-aspect property too
input: ignore --input-cursor for events injected by input commands (issue #2750)
options: set fs=yes by default on RPI, and change RPI defaults handling
sub: implement "sub-seek 0" (issue #2791)
vo_opengl: default scaler-resizes-only sub-option to yes
Fixes and Minor Enhancements
Windows: fix dropping URIs (issue #2782)
af_lavrresample: prevent channels from being dropped, e.g. when going 7.1 -> 7.1(wide) and similar cases
ao_wasapi: avoid under-run cascade in exclusive mode
ao_wasapi: set buffer size to device period in exclusive mode
audio: fix spdif PCM fallback
command: fix NULL pointer deref in "video-codec" property (issue #2729)
command: fix track cycling logic (issue #2784)
demux: disable stream cache if no tracks are selected (issue #2692)
demux_mkv: add hack to fix opus gapless behavior
demux_mkv: support channel layout in VfW muxed PCM (issue #2820)
osc: fix runtime enable_osc(true/false)
player: fix initial audio sync in certain cases (issue #2770)
player: honor --force-window if video is selected, but inactive
player: never show "DS: (unavailable)"
player: restore old/correct --force-window behavior (issue #2825)
player: rewrite timeline/ordered chapter support
video: don't wait for last video frame in the normal case (issue #2745)
video: fix coverart switching
video: slightly improve video stream switching
vo_opengl: dxinterop: fix compatibility issue with Vista
vo_opengl: rename custom shader entrypoint from sample to sample_pixel (issue #2733)

Notable Changes for 2016-01-18
Before you ask: This build contains a fix for CVE-2016-1897.

Build Changes
add the ANGLE backend for vo_opengl (used by default except for hq preset; attempts to work around terrible drivers). Needs d3dcompiler_43.dll, which is why that’s now part of the distribution.
remove FDK AAC encoder (FFmpeg’s built-in AAC encoder is now on par with it, if not slightly better)
remove OpenCORE AMR encoders (useless crap)
remove Theora encoder (useless crap)
use Microsoft’s Secure Channel API for encrypted connections (instead of LibreSSL), now that Windows XP with its poor cipher suite support is no longer relevant
vo_opengl: use a checkerboard pattern as background for transparent video by default
Options and Commands
add --audio-file-paths (issue #2632)
vf_stereo3d: add alternating modes
vo_opengl: disable pbo by default for opengl-hq due to driver problems
vf_yadif: change defaults (issue #2539)
command: change heuristic for files with 1 chapter (issue #2550)
demux_mkv: adjust subtitle preroll defaults
exclude 360 from --video-rotate range (issue #2647)
osd: make osd-width/height properties watchable
Fixes and Minor Enhancements
ao_wasapi: remove volume "restore" on exit
demux_cue: better error resilience
mixer: fix volume initialization with --af=volume
player: detect audio PTS jumps, make video PTS heuristic less aggressive
player: make watch later/resume work when "playing" directories
player: reset playback abort when reloading a file (issue #2568)
recognize frame sequenced 3D Matroska video
vo_opengl: dxinterop: prevent crash after lost device
vo_opengl: enable brightness/contrast controls for RGB
vo_opengl: fix operation on GLES 2.0
vo_opengl: fix operation on GLSL versions earlier than 1.30
vo_opengl: flip screenshot image if backend uses flipped rendering (issue #2635)
vo_opengl: reset nnedi3 weights properly (issue #2661)
windows: fix fd://
ytdl: Include Referer header as well

Notable Changes for 2015-12-11
Executables are now signed with a code signing certificate
Completely remove fontconfig (since Windows XP support is dropped)
Switch to FFmpeg’s RTMP implementation
Add DXVA2 support for HEVC (MinGW does not have this by default)
Switch libjpeg back to libjpeg-turbo since mozjpeg isn’t the magic sauce its developers make it out to be (too slow to be worth marginal gains)
vo_opengl: add experimental dxinterop backend (renders with OpenGL, displays through Direct3D; broken with Intel drivers)
vo_opengl: add initial ANGLE support (not enabled for these builds)
windows: implement icc-profile-auto
windows: support taskbar button progress indicator (issue #2399)
Windows XP support
demux_libass: remove this demuxer (libavformat takes its place)
Options and Commands
command, vo: add estimated-display-fps property
command: add vsync-ratio property
command: export some per-video-frame information (issue #2444)
vo_opengl: make LOOKUP_TEXTURE_SIZE configurable
windows: add option to set VO MMCSS profile
--sub-fix-timing now applies to ASS subtitles as well
command: rename vo-missed-frame-count property to vo-delayed-frame-count
input.conf: add default bindings for changing window scale (issue #2500)
vo_opengl: disable interpolation without display-sync
vo_opengl: make tscale=mitchell:tscale-clamp the default
Fixes and Minor Enhancements
af_lavrresample: clamp float output to range
ao: disambiguate default device list entries
ao_wasapi: only report per-app volume in shared mode
ao_wasapi: work around DTS passthrough failure
demux: fix seeking in .ts
demux_lavf: mark ASS tracks as always UTF-8
demux_mkv: fix incremental indexing with single-keyframe files (issue #2498)
dxva2: reject 10 bit HEVC (issue #2516)
player: replace mistimed-frame-count with vsync-ratio on status line
sd_ass: fix secondary subtitle mode
various display-sync improvements
vo_opengl: enable NNEDI3 prescaler on OpenGL ES 3.0
vo_opengl: enable colormatrix even for RGB input
vo_opengl: fix backend autoprobing, attempt to improve GLX vs. EGL backend detection
vo_opengl: fix backend=x11 on Intel
vo_opengl: fix issues with some obscure pixel formats (e.g. rgb555)
vo_opengl: fix precision loss of fruit dithering matrix
vo_opengl: force dumb mode if RG textures are not available
vo_opengl: improve boundary check for polar filters
vo_opengl: various GLES compatibility improvements
vo_opengl: win32: test for exclusive mode
vo_opengl_cb: do not block on flipping when redrawing
win32: fix console output with raw stdio functions
windows: try to avoid detection as exclusive fullscreen window (issue #2177)

Notable Changes for 2015-11-10
Fixed some crashes caused by libass
SVG version of the icon (with symbolic counterpart)
stream_libarchive: add multivolume support
vo_opengl: add prescaling framework along with Super-xBR and NNEDI3 (currently very slow) prescalers (issue #2230)
Options and Commands
command: add mistimed-frame-count property
vo_opengl: add vsync-fences option
command: make display-fps property writable
options: enable mpeg2 hw decoding by default if hw decoding is requested
vo_opengl: rename fancy-downscaling to correct-downscaling
vo_opengl: correct-downscaling: enable also for anamorphic clips
vo_opengl: rename "drm_egl" to "drm-egl"
vo_opengl: disable drm-egl autopickup
vo_opengl: never load vaapi GLX interop by default
Fixes and Minor Enhancements
ao_alsa: fix 7.1 over HDMI
audio: do not require full audio chain reinit for speed changes
rpi: add support for codecs other than h264 (mpeg2 for now)
vd_lavc: make hwdec fallback more tolerant
video: fix playback of pal8
video: multiple display-sync fixes
vo: fix no-audio mode with interpolation enabled/display-sync disabled
vo_direct3d: fix operation (issue #2434)
vo_drm: handle possible errors from sigaction
vo_drm: show osd in audio only mode
vo_opengl: do not attempt to cache frames in FBO in dumb-mode (issue #2432)
vo_opengl: win32: always request MMCSS for DWM
vo_opengl: win32: try to enable DwmFlush by default
vo_vdpau: check VDP_RGBA_FORMAT_A8 support
win32: request MMCSS "Playback" profile

Notable Changes for 2015-10-29
vo_opengl: support all kinds of GBRP formats
ytdl: don't override user-set format in no-video mode
sub: adjust behavior on mismatching video/subtitle aspect ratio
Options and Commands
audio: add option for falling back to ao_null
options: add support for client certificate authentication
input: add key name for U+3000 IDEOGRAPHIC SPACE
player: add audio drop/duplicate mode to video-sync
vo_opengl: remove sharpen scalers, add sharpen sub-option
vo_opengl: make sw suboption work without explicit backend selection
command: make time properties unavailable if timestamp is unknown
command: do not return 0 for bitrate if unknown (make property unavailable instead)
vo_opengl: make the default debanding settings less excessive
ytdl: disable --all-subs if "sub-lang" is in raw-options
video: remove user-controllable PTS sorting (--pts-association-mode)
Fixes and Minor Enhancements
player: fix another --force-window bug
player: add wav to list of external audio file extensions
player: make stop command actually stop in all cases
audio: various fixes related to audio device hotplugging
ytdl: Remove DASH hacks, use DASH by default
player: be slightly less prone to framedrop in display sync mode
sd_lavc: extend subtitle resolution if images go outside video frame
player: offset chapter display by start time
command: make bitrate properties work correctly for external tracks
w32_common: disable IME
player: fix display-sync A/V calculation on high playback speeds
player: fix display sync A/V difference estimation on drops
player: raise display sync desync tolerance

Notable Changes for 2015-09-23
vo_opengl: implement debanding
audio/filter: remove center, extrastereo, karaoke, sinesuppress, sub, surround, sweep, ladspa, hrtf, export and bs2b filters (these are either considered useless or have replacements in lavfi)
video/filter: remove lavfi wrappers for noise, hqdn3d, unsharp and delogo (these filters remain usable through lavfi)
vo_opengl: require FBOs by default (use dumb-mode suboption for old hardware and broken drivers)
vo_opengl: enable debanding by default for the opengl-hq preset
audio/out: use new sample format determination code
player: prefer logical current directory path (affects logic for resuming playback)
vf_vdpaurb: Pass through non-hardware-decoded content
player: make force-window=immediate work in auto-profiles
Options and Commands
af_lavrresample: add normalize suboption
vo_opengl: add deband, deband-iterations, deband-threshold, deband-range and deband-grain suboptions
af_lavfi: implement af-metadata property (like vf-metadata)
command: make "add <property> 0" not change the value
vo_opengl: remove source-shader suboption
Fixes and Minor Enhancements
options: fix --no-config
cache: do not include backbuffer size in total stream cache size
audio/format: actually prefer float over double sample format for int->float conversions
audio/format: fix interlaved vs. non-interleaved conversions
audio/format: revise format conversion scoring
video: make --field-dominance set interlaced flag
vf: vf_stereo3d compilation depends on libavfilter
vf_yadif: add hack for Libav compatibility
player: add opus to list of external audio file extensions
build: allow disabling vapoursynth completely
libmpv/win32: allow multiple windows at the same time

Notable Changes for 2015-08-27
mpv: build with libarchive support
See below. Might break a few things, please report if it causes problems. If necessary, I’ll disable it until these are fixed.

Replace OpenSSL with LibreSSL
Due to some difficulties with updating OpenSSL’s dependencies, libgcrypt and libgpg_error, I’ve switched to LibreSSL, which does not depend on these libs. This should not cause any problems, but please report any HTTPS/RTMPE breakage.

libass: check fontprovider constructors for failure
This should fix font selection (and the broken OSC) on Windows XP.

disable interpolation during framestepping
It just causes annoying artifacts.

Interestingly, this means keeping down the frame stepping key (".") will play video with interpolation disabled.

vo_opengl: force redraw when framestepping with interpolation
This might fix some problems when framestepping with interpolation enabled. The problem here is that we want to show the non-interpolated frame while paused. Framestepping is like unpausing the video for a frame, and then pausing again. This draws an interpolated frame, and redrawing on pausing is supposed to take care of this.

vo_opengl: add tscale-clamp option
This significantly reduces the amount of noticeable flashing when using tscale kernels with negative lobes, by cutting them off completely.

I'm not sure if this has any negative effects. It needs a bit of subjective testing over a period of time, so I just made it an option.

Fixes #2155.

player: add --playlist-pos option
Oddly often requested.

stream: libarchive wrapper for reading compressed archives
This works similar to the existing .rar support, but uses libarchive. libarchive supports a number of formats, including zip and (most of) rar.

Unfortunately, seeking does not work too well. Most libarchive readers do not support seeking, so it's emulated by skipping data until the target position. On backwards seek, the file is reopened. This works fine on a local machine (and if the file is not too large), but will perform not so well over network connection.

Note: This breaks multi-volume RAR support and does not work well if the archive contains file names that cannot be expressed in the local codepage. Yes, legacy codepage crap, because Windows is terrible and libarchive literally goes out of its way to convert everything, even UTF-8.

player: add display sync mode
If this mode is enabled, the player tries to strictly synchronize video to display refresh. It will adjust playback speed to match the display, so if you play 23.976 fps video on a 24 Hz screen, playback speed is increased by approximately 1/1000. Audio wll be resampled to keep up with playback.

This is different from the default sync mode, which will sync video to audio, with the consequence that video might skip or repeat a frame once in a while to make video keep up with audio.

This is still unpolished. There are some major problems as well; in particular, mkv VFR files won't work well. The reason is that Matroska is terrible and rounds timestamps to milliseconds. This makes it rather hard to guess the framerate of a section of video that is playing. We could probably fix this by just accepting jittery timestamps (instead of explicitly disabling the sync code in this case), but I'm not ready to accept such a solution yet.

Another issue is that we are extremely reliant on OS video and audio APIs working in an expected manner, which of course is not too often the case. Consequently, the new sync mode is a bit fragile.

ytdl: catch bogous extractor info
Some extractors may claim to have extracted subtitles, but then set the relevant fields to null. Try to catch those cases.

Notable Changes for 2015-08-03
build: remove enca, add uchardet
Since mpv supports uchardet now, enca has been removed from my build configuration. This is because enca does not actually support cross compilation (needs wine to achieve this, and even then it is broken due to iconv implementation differences between build host and target) and because enca’s detection algorithm almost never works right for many of our users.

The algorithm used by uchardet is the same as in web browsers like Firefox, so it should be fairly reliable.

The catch is that you have to enable uchardet manually for now (see below).

video: unbreak EOF with video-only files that have timestamp resets
Normally when there's a timestamp reset, we make audio resync to make sure audio and video line up (again). But in video-only mode, just setting audio to resyncing breaks EOF detection, because there's no code which would get audio_status out of this bogus state.

vo: fix inverted condition
When full_redraw is set, we always need to take the draw_image path. If it's not set, we can try VOCTRL_REDRAW_FRAME (and fallback to draw_image if that fails).

Fixes #2184.

vo: correctly account for dropped frames
If the framedrop count happens to be incremented with vo_increment_drop_count() during rendering, these increments were counted twice, because these events also set in->dropped_frame.

audio: fix --end handling (again) Commit c5818046 fixed one case of audio EOF handling, and caused a new one. This time, the ao_buffer doesn't actually contain everyting that should be played - because if --end is used, only a part of it is played. Of course this is stupid, and it will be changed later. For now, this smaller change fixes the bug.

Fixes #2189.

audio: remove af_dummy
Was used internally once; has no function anymore.

image_writer: don't use jpeg baseline, and remove useless jpeg options
The jpeg-optimize and jpeg-baseline options were undocumented, and they're also pretty useless. There's no reason to ever change them.

Also, don't write jpeg baseline images. This just makes compression worse for the sake of rather questionable compatibility with ancient decoders.

charset_conv: add uchardet support
For now, it needs to be explicitly selected. ENCA is still the default.

This assumes uchardet returns iconv names. This doesn't seem to be always the case, and the result are lots of iconv errors. So explicitly check for this situation, and print a warning if it occurs. It's entirely possible that uchardet support is actually useless, because names are not necessarily iconv-compatible (but uchardet doesn't seem to document whether it attempts to return iconv-compatible names if possible).

Notable Changes for 2015-07-30
libass: use DirectWrite for font selection
Rejoice! It’s the end of the fontconfig issues. Consequently, 64-bit builds are no longer compiled with fontconfig support and do not ship additional fonts anymore.

32-bit builds will continue to support fontconfig in order to maintain compatibility with very old versions of Windows, but will also pick DirectWrite if available.

add portable config mode
See manpage additions.

The main reason for adding this is that we can't guess whether the user wants his config in his Windows profile or not. The user basically has to tell mpv what should be done, and the "portable_config" directory does this implicitly.

Fixes #2042 (approximately).

build: use mozjpeg instead of libjpeg-turbo
This improves the quality/compression ratio of JPEG screenshots, so you can bump --screenshot-jpeg-quality without bloating the files too much.

vo_direct3d: create multithreaded IDirect3DDevice9
A user complains that it leads to the dxva driver failing, leading to messages like this:

[ffmpeg/video] h264: Failed to execute: 0x8007000e [ffmpeg/video] h264: hardware accelerator failed to decode picture

Reportedly, this happens only with vo_direct3d, not with vo_opengl. The only difference is that vo_direct3d attempts to share the D3D device with the decoder. Possibly the error is that the device in the VO is not created with D3DCREATE_MULTITHREADED. Change this.

Probably fixes #2178.

fix restoring volume
Was broken by 68bbab0e42e141896545f1f6e9699bcad2d685f8, which changed the number of fields to scan, but not the expected return value.

Visit our sponsors! Try DVDFab and backup Blu-rays!
Search   Contact us   Privacy Policy   About   Advertise   Forum   RSS Feeds   Statistics   Software   

Site layout: Default Classic Blue