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

Try DVDFab and copy all Ultra HD Blu-rays and DVDs / remove Cinavia protection! Download free trial !

Software Home »

Complete Version history / Release notes / Changelog for mpv


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.

Search   Contact us   Privacy Policy   About   Advertise   Forum   RSS Feeds   Statistics   Software   

Site layout: Default Classic Blue