summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Herkt <lachs0r@srsfckn.biz>2016-11-20 18:15:08 +0100
committerMartin Herkt <lachs0r@srsfckn.biz>2016-11-20 18:15:08 +0100
commit8700700de8a4103724796077034f7f254ad974bc (patch)
tree2fce4dee518a202c45c3f16567db36edc92ed914
parente6b85c91700bee0ddc92e98a30d5021691bd6f65 (diff)
parenteafc273d2c2ae6d247d741202e58ca23dc938cb2 (diff)
downloadmpv-8700700de8a4103724796077034f7f254ad974bc.tar.bz2
mpv-8700700de8a4103724796077034f7f254ad974bc.tar.xz
Merge branch 'master' into release/current
-rw-r--r--DOCS/client-api-changes.rst6
-rw-r--r--DOCS/compile-windows.md7
-rw-r--r--DOCS/interface-changes.rst13
-rw-r--r--DOCS/man/input.rst5
-rw-r--r--DOCS/man/mpv.rst9
-rw-r--r--DOCS/man/options.rst210
-rw-r--r--DOCS/man/osc.rst140
-rw-r--r--DOCS/man/vf.rst2
-rw-r--r--DOCS/man/vo.rst26
-rw-r--r--README.md21
-rwxr-xr-xTOOLS/appveyor-install.sh2
-rw-r--r--TOOLS/lib/Parse/Matroska/Definitions.pm27
-rwxr-xr-xTOOLS/travis-deps2
-rw-r--r--audio/decode/dec_audio.c15
-rw-r--r--audio/out/ao.c23
-rw-r--r--audio/out/ao_alsa.c71
-rw-r--r--audio/out/ao_audiounit.m201
-rw-r--r--audio/out/ao_coreaudio_chmap.c4
-rw-r--r--audio/out/ao_coreaudio_chmap.h4
-rw-r--r--audio/out/ao_coreaudio_utils.c13
-rw-r--r--audio/out/ao_coreaudio_utils.h6
-rw-r--r--common/av_common.c6
-rw-r--r--demux/demux.c31
-rw-r--r--demux/demux.h1
-rw-r--r--demux/demux_lavf.c4
-rw-r--r--demux/demux_mkv.c41
-rw-r--r--demux/demux_mkv_timeline.c31
-rw-r--r--demux/demux_timeline.c4
-rw-r--r--demux/stheader.h2
-rw-r--r--options/m_config.c30
-rw-r--r--options/options.c8
-rw-r--r--options/options.h1
-rw-r--r--osdep/compiler.h2
-rw-r--r--osdep/win32-console-wrapper.c6
-rw-r--r--player/audio.c4
-rw-r--r--player/command.c39
-rw-r--r--player/loadfile.c3
-rw-r--r--player/lua/osc.lua276
-rw-r--r--player/lua/ytdl_hook.lua2
-rw-r--r--player/playloop.c10
-rw-r--r--player/sub.c13
-rw-r--r--player/video.c6
-rw-r--r--sub/dec_sub.c9
-rw-r--r--sub/osd.c19
-rw-r--r--sub/osd.h2
-rw-r--r--sub/osd_state.h1
-rw-r--r--ta/ta.h2
-rw-r--r--video/csputils.c16
-rw-r--r--video/csputils.h3
-rw-r--r--video/decode/dec_video.c27
-rw-r--r--video/decode/dec_video.h2
-rw-r--r--video/decode/vd_lavc.c3
-rw-r--r--video/decode/vdpau.c77
-rw-r--r--video/filter/vf_vdpaurb.c3
-rw-r--r--video/hwdec.h1
-rw-r--r--video/mp_image.c8
-rw-r--r--video/mp_image.h2
-rw-r--r--video/out/cocoa_common.m11
-rw-r--r--video/out/filter_kernels.c49
-rw-r--r--video/out/filter_kernels.h1
-rw-r--r--video/out/opengl/common.h3
-rw-r--r--video/out/opengl/context.c2
-rw-r--r--video/out/opengl/context_rpi.c2
-rw-r--r--video/out/opengl/header_fixes.h17
-rw-r--r--video/out/opengl/video.c103
-rw-r--r--video/out/opengl/video.h1
-rw-r--r--video/out/vo.c5
-rw-r--r--video/out/vo.h1
-rw-r--r--video/out/vo_direct3d.c2
-rw-r--r--video/out/vo_opengl_cb.c11
-rw-r--r--video/out/vo_tct.c306
-rw-r--r--video/out/win_state.c2
-rw-r--r--waftools/dependencies.py2
-rw-r--r--waftools/fragments/audiounit.c15
-rw-r--r--wscript45
-rw-r--r--wscript_build.py4
76 files changed, 1616 insertions, 468 deletions
diff --git a/DOCS/client-api-changes.rst b/DOCS/client-api-changes.rst
index 87b1c650da..94b39bd58d 100644
--- a/DOCS/client-api-changes.rst
+++ b/DOCS/client-api-changes.rst
@@ -32,7 +32,7 @@ API changes
::
- --- mpv 0.21.0 ---
+ --- mpv 0.22.0 ---
1.23 - deprecate setting "no-" options via mpv_set_option*(). For example,
instead of "no-video=" you should set "video=no".
- do not override the SIGPIPE signal handler anymore. This was done as
@@ -49,8 +49,8 @@ API changes
will be removed, and mpv_set_option() will internally translate API
calls to mpv_set_property().
- qthelper.hpp: deprecate get_property_variant, set_property_variant,
- mpv_set_option, command_variant, and replace them with get_property,
- set_property, command.
+ set_option_variant, command_variant, and replace them with
+ get_property, set_property, command.
--- mpv 0.19.0 ---
1.22 - add stream_cb API for custom protocols
--- mpv 0.18.1 ---
diff --git a/DOCS/compile-windows.md b/DOCS/compile-windows.md
index e283460674..f0d0dca50d 100644
--- a/DOCS/compile-windows.md
+++ b/DOCS/compile-windows.md
@@ -166,11 +166,8 @@ Or, compile and install both libmpv and mpv:
./waf configure CC=gcc.exe --check-c-compiler=gcc --enable-libmpv-shared --prefix=/mingw64
./waf install
-# waf installs libmpv to the wrong directory, so fix it up
-mv -f /mingw64/bin/pkgconfig/mpv.pc /mingw64/lib/pkgconfig/
-mv -f /mingw64/bin/libmpv.dll.a /mingw64/lib/
-sed -i 's_/mingw64/bin_/mingw64/lib_' /mingw64/lib/pkgconfig/mpv.pc
-rmdir /mingw64/bin/pkgconfig
+# waf installs libmpv dll to the wrong directory, so fix it up
+mv -f /mingw64/lib/mpv-1.dll /mingw64/bin/
```
Linking libmpv with MSVC programs
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index 1e27edfe03..7868f0a8e2 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -19,9 +19,18 @@ Interface changes
::
+ --- mpv 0.22.0 ---
+ - the "audio-device-list" property now sets empty device description to the
+ device name as a fallback
+ - add --hidpi-window-scale option for macOS
+ - add audiounit audio output for iOS
+ - make --start-time work with --rebase-start-time=no
+ - add --opengl-early-flush=auto mode
+ - add --hwdec=vdpau-copy, deprecate vf_vdpaurb
+ - add tct video output for true-color and 256-color terminals
--- mpv 0.21.0 ---
- - setting certain options at runtime will now take care of updating them
- property (see for example issue #3281). On the other hand, it will also
+ - unlike in older versions, setting options at runtime will now take effect
+ immediately (see for example issue #3281). On the other hand, it will also
do runtime verification and reject option changes that do not work
(example: setting the "vf" option to a filter during playback, which fails
to initialize - the option value will remain at its old value). In general,
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index d15aa41903..508e7dd252 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -1912,8 +1912,9 @@ Property list
The ``name`` is what is to be passed to the ``--audio-device`` option (and
often a rather cryptic audio API-specific ID), while ``description`` is
- human readable free form text. The description is an empty string if none
- was received.
+ human readable free form text. The description is set to the device name
+ (minus mpv-specific ``<driver>/`` prefix) if no description is available
+ or the description would have been an empty string.
The special entry with the name set to ``auto`` selects the default audio
output driver and the default device.
diff --git a/DOCS/man/mpv.rst b/DOCS/man/mpv.rst
index f4876ac00e..4ceae1ca27 100644
--- a/DOCS/man/mpv.rst
+++ b/DOCS/man/mpv.rst
@@ -646,6 +646,15 @@ PROTOCOLS
either aliases to documented protocols, or are just redirections to
protocols implemented and documented in FFmpeg.
+``ytdl://...``
+ By default, the youtube-dl hook script (enabled by default for mpv CLI)
+ only looks at http URLs. Prefixing an URL with ``ytdl://`` forces it to
+ be always processed by the script. This can also be used to invoke special
+ youtube-dl functionality like playing a video by ID or invoking search.
+
+ Keep in mind that you can't pass youtube-dl command line options by this,
+ and you have to use ``--ytdl-raw-options`` instead.
+
``-``
Play data from stdin.
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index 374cdaf1a5..bf98370eee 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -610,6 +610,7 @@ Video
:yes: exactly the same as ``auto``
:auto-copy: enable best hw decoder with copy-back (see below)
:vdpau: requires ``--vo=vdpau`` or ``--vo=opengl`` (Linux only)
+ :vdpau-copy: copies video back into system RAM (Linux with some GPUs only)
:vaapi: requires ``--vo=opengl`` or ``--vo=vaapi`` (Linux only)
:vaapi-copy: copies video back into system RAM (Linux with Intel GPUs only)
:videotoolbox: requires ``--vo=opengl`` (OS X 10.8 and up only)
@@ -651,10 +652,10 @@ Video
primarily implemented on the CPU. Some exceptions are ``vdpaupp``,
``vdpaurb`` and ``vavpp``. See `VIDEO FILTERS`_ for more details.
- The ``vaapi-copy`` and ``dxva2-copy`` modes allow you to use hardware
+ The ``...-copy`` modes (e.g. ``dxva2-copy``) allow you to use hardware
decoding with any VO, backend or filter. Because these copy the decoded
- video back to system RAM, they're likely less efficient than the ``vaapi``
- or ``dxva2`` modes respectively.
+ video back to system RAM, they're likely less efficient than the direct
+ modes (like e.g. ``dxva2``).
.. note::
@@ -1174,9 +1175,9 @@ Audio
to use the volume controls of the audio output driver or the internal mpv
volume filter.
- The current behavior is as if this option was set to ``yes``. The other
- behaviors are not available anymore, although ``auto`` almost matches
- current behavior in most cases.
+ The current behavior is that softvol is always enabled, i.e. as if this
+ option is set to ``yes``. The other behaviors are not available anymore,
+ although ``auto`` almost matches current behavior in most cases.
The ``no`` behavior is still partially available through the ``ao-volume``
and ``ao-mute`` properties. But there are no options to reset these.
@@ -1507,7 +1508,7 @@ Subtitles
``--sub-scale-with-window=<yes|no>``
Make the subtitle font size relative to the window, instead of the video.
This is useful if you always want the same font size, even if the video
- doesn't covert the window fully, e.g. because screen aspect and window
+ doesn't cover the window fully, e.g. because screen aspect and window
aspect mismatch (and the player adds black bars).
Default: yes.
@@ -2352,6 +2353,13 @@ Window
- ``--monitoraspect=4:3`` or ``--monitoraspect=1.3333``
- ``--monitoraspect=16:9`` or ``--monitoraspect=1.7777``
+``--hidpi-window-scale``, ``--no-hidpi-window-scale``
+ (OS X only)
+ Scale the window size according to the backing scale factor (default: yes).
+ On regular HiDPI resolutions the window opens with double the size but appears
+ as having the same size as on none-HiDPI resolutions. This is the default OS X
+ behavior.
+
``--monitorpixelaspect=<ratio>``
Set the aspect of a single pixel of your monitor or TV screen (default:
1). A value of 1 means square pixels (correct for (almost?) all LCDs). See
@@ -3856,7 +3864,25 @@ The following video options are currently all specific to ``--vo=opengl`` and
mpv --scale=help
-``--scale-param1=<value>``, ``--scale-param2=<value>``
+``--cscale=<filter>``
+ As ``--scale``, but for interpolating chroma information. If the image is
+ not subsampled, this option is ignored entirely.
+
+``--dscale=<filter>``
+ Like ``--scale``, but apply these filters on downscaling instead. If this
+ option is unset, the filter implied by ``--scale`` will be applied.
+
+``--tscale=<filter>``
+ The filter used for interpolating the temporal axis (frames). This is only
+ used if ``--interpolation`` is enabled. The only valid choices for
+ ``--tscale`` are separable convolution filters (use ``--tscale=help`` to
+ get a list). The default is ``mitchell``.
+
+ Note that the maximum supported filter radius is currently 3, due to
+ limitations in the number of video textures that can be loaded
+ simultaneously.
+
+``--scale-param1=<value>``, ``--scale-param2=<value>``, ``--cscale-param1=<value>``, ``--cscale-param2=<value>``, ``--dscale-param1=<value>``, ``--dscale-param2=<value>``, ``--tscale-param1=<value>``, ``--tscale-param2=<value>``
Set filter parameters. Ignored if the filter is not tunable. Currently,
this affects the following filter parameters:
@@ -3873,14 +3899,28 @@ The following video options are currently all specific to ``--vo=opengl`` and
never interpolate, thus behaving as if the regular nearest neighbour
algorithm was used. Defaults to 0.0.
-``--scale-blur=<value>``
- Kernel scaling factor (also known as a blur factor). Decreasing this makes
- the result sharper, increasing it makes it blurrier (default 0). If set to
- 0, the kernel's preferred blur factor is used. Note that setting this too
- low (eg. 0.5) leads to bad results. It's generally recommended to stick to
- values between 0.8 and 1.2.
-
-``--scale-radius=<value>``
+``--scale-blur=<value>``, ``--scale-wblur=<value>``, ``--cscale-blur=<value>``, ``--cscale-wblur=<value>``, ``--dscale-blur=<value>``, ``--dscale-wblur=<value>``, ``--tscale-blur=<value>``, ``--tscale-wblur=<value>``
+ Kernel/window scaling factor (also known as a blur factor). Decreasing this
+ makes the result sharper, increasing it makes it blurrier (default 0). If
+ set to 0, the kernel's preferred blur factor is used. Note that setting
+ this too low (eg. 0.5) leads to bad results. It's generally recommended to
+ stick to values between 0.8 and 1.2.
+
+``--scale-clamp``, ``--cscale-clamp``, ``--dscale-clamp``, ``--tscale-clamp``
+ Clamp the filter kernel's value range to [0-1]. This is especially useful
+ for ``--tscale``, where it reduces excessive ringing artifacts in the
+ temporal domain (which typically manifest themselves as short flashes or
+ fringes of black, mostly around moving edges) in exchange for potentially
+ adding more blur.
+
+``--scale-taper=<value>``, ``--scale-wtaper=<value>``, ``--dscale-taper=<value>``, ``--dscale-wtaper=<value>``, ``--cscale-taper=<value>``, ``--cscale-wtaper=<value>``, ``--tscale-taper=<value>``, ``--tscale-wtaper=<value>``
+ Kernel/window taper factor. Increasing this flattens the filter function.
+ Value range is 0 to 1. A value of 0 (the default) means no flattening, a
+ value of 1 makes the filter completely flat (equivalent to a box function).
+ Values in between mean that some portion will be flat and the actual filter
+ function will be squeezed into the space in between.
+
+``--scale-radius=<value>``, ``--cscale-radius=<value>``, ``--dscale-radius=<value>``, ``--tscale-radius=<value>``
Set radius for tunable filters, must be a float number between 0.5 and
16.0. Defaults to the filter's preferred radius if not specified. Doesn't
work for every scaler and VO combination.
@@ -3889,7 +3929,7 @@ The following video options are currently all specific to ``--vo=opengl`` and
ratio, the radius that actually being used might be different (most likely
being increased a bit).
-``--scale-antiring=<value>``
+``--scale-antiring=<value>``, ``--cscale-antiring=<value>``, ``--dscale-antiring=<value>``, ``--tscale-antiring=<value>``
Set the antiringing strength. This tries to eliminate ringing, but can
introduce other artifacts in the process. Must be a float number between
0.0 and 1.0. The default value of 0.0 disables antiringing entirely.
@@ -3897,14 +3937,14 @@ The following video options are currently all specific to ``--vo=opengl`` and
Note that this doesn't affect the special filters ``bilinear`` and
``bicubic_fast``.
-``--scale-window=<window>``
+``--scale-window=<window>``, ``--cscale-window=<window>``, ``--dscale-window=<window>``, ``--tscale-window=<window>``
(Advanced users only) Choose a custom windowing function for the kernel.
Defaults to the filter's preferred window if unset. Use
``--scale-window=help`` to get a list of supported windowing functions.
-``--scale-wparam=<window>``
+``--scale-wparam=<window>``, ``--cscale-wparam=<window>``, ``--cscale-wparam=<window>``, ``--tscale-wparam=<window>``
(Advanced users only) Configure the parameter for the window function given
- by ``--scale-window``. Ignored if the window is not tunable. Currently,
+ by ``--scale-window`` etc. Ignored if the window is not tunable. Currently,
this affects the following window parameters:
kaiser
@@ -3929,6 +3969,50 @@ The following video options are currently all specific to ``--vo=opengl`` and
will reproduce the source image perfectly if no scaling is performed.
Enabled by default. Note that this option never affects ``--cscale``.
+``--linear-scaling``
+ Scale in linear light. It should only be used with a
+ ``--opengl-fbo-format`` that has at least 16 bit precision.
+
+``--correct-downscaling``
+ When using convolution based filters, extend the filter size when
+ downscaling. Increases quality, but reduces performance while downscaling.
+
+ This will perform slightly sub-optimally for anamorphic video (but still
+ better than without it) since it will extend the size to match only the
+ milder of the scale factors between the axes.
+
+``--interpolation``
+ Reduce stuttering caused by mismatches in the video fps and display refresh
+ rate (also known as judder).
+
+ .. warning:: This requires setting the ``--video-sync`` option to one
+ of the ``display-`` modes, or it will be silently disabled.
+ This was not required before mpv 0.14.0.
+
+ This essentially attempts to interpolate the missing frames by convoluting
+ the video along the temporal axis. The filter used can be controlled using
+ the ``--tscale`` setting.
+
+ Note that this relies on vsync to work, see ``--opengl-swapinterval`` for
+ more information.
+
+``--interpolation-threshold=<0..1,-1>``
+ Threshold below which frame ratio interpolation gets disabled (default:
+ ``0.0001``). This is calculated as ``abs(disphz/vfps - 1) < threshold``,
+ where ``vfps`` is the speed-adjusted video FPS, and ``disphz`` the
+ display refresh rate. (The speed-adjusted video FPS is roughly equal to
+ the normal video FPS, but with slowdown and speedup applied. This matters
+ if you use ``--video-sync=display-resample`` to make video run synchronously
+ to the display FPS, or if you change the ``speed`` property.)
+
+ The default is intended to almost always enable interpolation if the
+ playback rate is even slightly different from the display refresh rate. But
+ note that if you use e.g. ``--video-sync=display-vdrop``, small deviations
+ in the rate can disable interpolation and introduce a discontinuity every
+ other minute.
+
+ Set this to ``-1`` to disable this logic.
+
``--opengl-pbo``
Enable use of PBOs. On some drivers this can be faster, especially if the
source video size is huge (e.g. so called "4K" video). On other drivers it
@@ -3981,21 +4065,6 @@ The following video options are currently all specific to ``--vo=opengl`` and
debug OpenGL context (which does nothing with current graphics drivers
as of this writing).
-``--interpolation``
- Reduce stuttering caused by mismatches in the video fps and display refresh
- rate (also known as judder).
-
- .. warning:: This requires setting the ``--video-sync`` option to one
- of the ``display-`` modes, or it will be silently disabled.
- This was not required before mpv 0.14.0.
-
- This essentially attempts to interpolate the missing frames by convoluting
- the video along the temporal axis. The filter used can be controlled using
- the ``--tscale`` setting.
-
- Note that this relies on vsync to work, see ``--opengl-swapinterval`` for
- more information.
-
``--opengl-swapinterval=<n>``
Interval in displayed frames between two buffer swaps. 1 is equivalent to
enable VSYNC, 0 to disable VSYNC. Defaults to 1 if not specified.
@@ -4007,65 +4076,6 @@ The following video options are currently all specific to ``--vo=opengl`` and
results, as can missing or incorrect display FPS information (see
``--display-fps``).
-``--dscale=<filter>``
- Like ``--scale``, but apply these filters on downscaling instead. If this
- option is unset, the filter implied by ``--scale`` will be applied.
-
-``--cscale=<filter>``
- As ``--scale``, but for interpolating chroma information. If the image is
- not subsampled, this option is ignored entirely.
-
-``--tscale=<filter>``
- The filter used for interpolating the temporal axis (frames). This is only
- used if ``--interpolation`` is enabled. The only valid choices for
- ``--tscale`` are separable convolution filters (use ``--tscale=help`` to
- get a list). The default is ``mitchell``.
-
- Note that the maximum supported filter radius is currently 3, due to
- limitations in the number of video textures that can be loaded
- simultaneously.
-
-``--tscale-clamp``
- Clamp the ``--tscale`` filter kernel's value range to [0-1]. This reduces
- excessive ringing artifacts in the temporal domain (which typically
- manifest themselves as short flashes or fringes of black, mostly around
- moving edges) in exchange for potentially adding more blur.
-
-``--interpolation-threshold=<0..1,-1>``
- Threshold below which frame ratio interpolation gets disabled (default:
- ``0.0001``). This is calculated as ``abs(disphz/vfps - 1) < threshold``,
- where ``vfps`` is the speed-adjusted video FPS, and ``disphz`` the
- display refresh rate. (The speed-adjusted video FPS is roughly equal to
- the normal video FPS, but with slowdown and speedup applied.