diff options
| author | Michael Forney <mforney@mforney.org> | 2016-10-20 23:05:25 -0700 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2016-10-20 23:05:25 -0700 |
| commit | b32996fbb81b01f6dde6dc8fff6c7fbafd53dde8 (patch) | |
| tree | 97a43888f353d87e7a9bce6b799a185892f49ee8 | |
| parent | 94a6169e6046b880f59dfc39023fe07cae92933d (diff) | |
mpv: Update to 0.21.0
| -rw-r--r-- | media/mpv/config.h | 3 | ||||
| -rw-r--r-- | media/mpv/gen.rc | 1 | ||||
| -rw-r--r-- | media/mpv/patch/0001-Include-poll.h-instead-of-sys-poll.h.patch | 13 | ||||
| -rw-r--r-- | media/mpv/patch/0003-Add-generated-man-page.patch | 3729 | ||||
| -rw-r--r-- | media/mpv/rev | 2 | ||||
| -rw-r--r-- | media/mpv/sources.txt | 7 | ||||
| m--------- | media/mpv/src | 0 |
7 files changed, 1943 insertions, 1812 deletions
diff --git a/media/mpv/config.h b/media/mpv/config.h index ee31ed7b..af99eafd 100644 --- a/media/mpv/config.h +++ b/media/mpv/config.h @@ -28,6 +28,7 @@ #define HAVE_WIN32 0 #define HAVE_WIN32_INTERNAL_PTHREADS 0 #define HAVE_PTHREADS 1 +#define HAVE_GNUC 1 #define HAVE_STDATOMIC 1 #define HAVE_ATOMIC_BUILTINS 0 #define HAVE_SYNC_BUILTINS 0 @@ -125,6 +126,7 @@ #define HAVE_ANDROID_GL 0 #define HAVE_ANY_GL 0 #define HAVE_PLAIN_GL 0 +#define HAVE_MALI_FBDEV 0 #define HAVE_GL 0 #define HAVE_EGL_HELPERS 0 #define HAVE_LIBAV 1 @@ -154,6 +156,7 @@ #define HAVE_VIDEOTOOLBOX_GL 0 #define HAVE_VDPAU_HWACCEL 0 #define HAVE_D3D_HWACCEL 0 +#define HAVE_CUDA_HWACCEL 0 #define HAVE_SSE4_INTRINSICS 0 #define HAVE_TV 0 #define HAVE_SYS_VIDEOIO_H 0 diff --git a/media/mpv/gen.rc b/media/mpv/gen.rc index 29be7262..0889d3b8 100644 --- a/media/mpv/gen.rc +++ b/media/mpv/gen.rc @@ -52,6 +52,7 @@ fn file2string { } file2string input/input_conf.h etc/input.conf +file2string player/builtin_conf.inc etc/builtin.conf file2string sub/osd_font.h sub/osd_font.otf for(f in assdraw defaults options osc ytdl_hook) file2string player/lua/$f.inc player/lua/$f.lua diff --git a/media/mpv/patch/0001-Include-poll.h-instead-of-sys-poll.h.patch b/media/mpv/patch/0001-Include-poll.h-instead-of-sys-poll.h.patch index 0165fc3c..11c39cfc 100644 --- a/media/mpv/patch/0001-Include-poll.h-instead-of-sys-poll.h.patch +++ b/media/mpv/patch/0001-Include-poll.h-instead-of-sys-poll.h.patch @@ -1,4 +1,4 @@ -From fc515d93b4f4da13ac06248a59a2d6954953877c Mon Sep 17 00:00:00 2001 +From 38c6d6ee98b8a8eaafc71c6ca4e13f52152a40fa Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Sat, 2 Jul 2016 17:11:20 -0700 Subject: [PATCH] Include poll.h instead of sys/poll.h @@ -9,22 +9,23 @@ Subject: [PATCH] Include poll.h instead of sys/poll.h 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/video/out/drm_common.c b/video/out/drm_common.c -index a39db93..4ec2edc 100644 +index 44e017e..3a9b2a4 100644 --- a/video/out/drm_common.c +++ b/video/out/drm_common.c -@@ -16,9 +16,9 @@ +@@ -16,10 +16,10 @@ */ #include <errno.h> +#include <poll.h> + #include <string.h> #include <signal.h> #include <sys/ioctl.h> -#include <sys/poll.h> + #include <sys/stat.h> #include <sys/vt.h> #include <unistd.h> - diff --git a/video/out/vo_drm.c b/video/out/vo_drm.c -index f03f503..12426e4 100644 +index 7e642e3..726d820 100644 --- a/video/out/vo_drm.c +++ b/video/out/vo_drm.c @@ -18,9 +18,9 @@ @@ -39,5 +40,5 @@ index f03f503..12426e4 100644 #include <libswscale/swscale.h> -- -2.9.2 +2.10.1 diff --git a/media/mpv/patch/0003-Add-generated-man-page.patch b/media/mpv/patch/0003-Add-generated-man-page.patch index 0d60d0b4..ff4b62a8 100644 --- a/media/mpv/patch/0003-Add-generated-man-page.patch +++ b/media/mpv/patch/0003-Add-generated-man-page.patch @@ -1,4 +1,4 @@ -From cbe80107418bb7a76634b8f13d3cdafbb1564f53 Mon Sep 17 00:00:00 2001 +From 6f17a08a04b52c5fab494b72f77bba0d91042f65 Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Sat, 2 Jul 2016 21:08:15 -0700 Subject: [PATCH] Add generated man page @@ -7,16 +7,16 @@ This requires python and rst2man to generate. $ rst2man.py DOCS/man/mpv.rst DOCS/man/mpv.1 --- - DOCS/man/mpv.1 | 13993 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 13993 insertions(+) + DOCS/man/mpv.1 | 14114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 14114 insertions(+) create mode 100644 DOCS/man/mpv.1 diff --git a/DOCS/man/mpv.1 b/DOCS/man/mpv.1 new file mode 100644 -index 0000000..fadcd48 +index 0000000..4ae65ee --- /dev/null +++ b/DOCS/man/mpv.1 -@@ -0,0 +1,13993 @@ +@@ -0,0 +1,14114 @@ +.\" Man page generated from reStructuredText. +. +.TH MPV 1 "" "" "multimedia" @@ -180,11 +180,11 @@ index 0000000..fadcd48 +.B u +Switch between applying no style overrides to SSA/ASS subtitles, and +overriding them almost completely with the normal subtitle style. See -+\fB\-\-ass\-style\-override\fP for more info. ++\fB\-\-sub\-ass\-style\-override\fP for more info. +.TP +.B V +Toggle subtitle VSFilter aspect compatibility mode. See -+\fB\-\-ass\-vsfilter\-aspect\-compat\fP for more info. ++\fB\-\-sub\-ass\-vsfilter\-aspect\-compat\fP for more info. +.TP +.B r and t +Move subtitles up/down. @@ -310,19 +310,20 @@ index 0000000..fadcd48 +The suboption parser can quote strings with \fB"\fP and \fB[...]\fP\&. +Additionally, there is a special form of quoting with \fB%n%\fP described below. +.sp -+For example, the \fBopengl\fP VO can take multiple options: ++For example, assume the hypothetical \fBfoo\fP filter can take multiple options: +.INDENT 0.0 +.INDENT 3.5 -+\fBmpv test.mkv \-\-vo=opengl:scale=lanczos:icc\-profile=file.icc,xv\fP ++\fBmpv test.mkv \-\-vf=foo:option1=value1:option2:option3=value3,bar\fP +.UNINDENT +.UNINDENT +.sp -+This passes \fBscale=lanczos\fP and \fBicc\-profile=file.icc\fP to \fBopengl\fP, -+and also specifies \fBxv\fP as fallback VO. If the icc\-profile path contains -+spaces or characters like \fB,\fP or \fB:\fP, you need to quote them: ++This passes \fBoption1\fP and \fBoption3\fP to the \fBfoo\fP filter, with \fBoption2\fP ++as flag (implicitly \fBoption2=yes\fP), and adds a \fBbar\fP filter after that. If ++an option contains spaces or characters like \fB,\fP or \fB:\fP, you need to quote ++them: +.INDENT 0.0 +.INDENT 3.5 -+\fBmpv \(aq\-\-vo=opengl:icc\-profile="file with spaces.icc",xv\(aq\fP ++\fBmpv \(aq\-\-vf=foo:option1="option value with spaces",bar\(aq\fP +.UNINDENT +.UNINDENT +.sp @@ -354,11 +355,11 @@ index 0000000..fadcd48 +.INDENT 3.5 +.IP "Examples" +.sp -+\fBmpv \-\-ao=pcm:file=%10%C:test.wav test.avi\fP ++\fBmpv \(aq\-\-vf=foo:option1=%11%quoted text\(aq test.avi\fP +.sp +Or in a script: +.sp -+\fBmpv \-\-ao=pcm:file=%\(gaexpr length "$NAME"\(ga%"$NAME" test.avi\fP ++\fBmpv \-\-vf=foo:option1=%\(gaexpr length "$NAME"\(ga%"$NAME" test.avi\fP +.UNINDENT +.UNINDENT +.sp @@ -368,8 +369,7 @@ index 0000000..fadcd48 +support passing values in a more structured way instead of flat strings, and +can avoid the suboption parsing mess. For example, \fB\-\-vf\fP supports +\fBMPV_FORMAT_NODE\fP, which lets you pass suboptions as a nested data structure -+of maps and arrays. (\fB\-\-vo\fP supports this in the same way, although this -+fact is undocumented.) ++of maps and arrays. +.SS Paths +.sp +Some care must be taken when passing arbitrary paths and filenames to mpv. For @@ -690,7 +690,8 @@ index 0000000..fadcd48 + +[slow] +profile\-desc="some profile name" -+vo=opengl:scale=ewa_lanczos:scale\-radius=16 ++# reference a builtin profile ++profile=opengl\-hq + +[fast] +vo=vdpau @@ -717,10 +718,6 @@ index 0000000..fadcd48 +.sp +.nf +.ft C -+[vo.vdpau] -+# Use hardware decoding -+hwdec=vdpau -+ +[protocol.dvd] +profile\-desc="profile for dvd:// streams" +alang=en @@ -728,9 +725,6 @@ index 0000000..fadcd48 +[extension.flv] +profile\-desc="profile for .flv files" +vf=flip -+ -+[ao.alsa] -+device=spdif +.ft P +.fi +.UNINDENT @@ -738,8 +732,7 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.sp -+The profile name follows the schema \fBtype.name\fP, where type can be \fBvo\fP -+to match the value the \fB\-\-vo\fP option is set to, \fBao\fP for \fB\-\-ao\fP, ++The profile name follows the schema \fBtype.name\fP, where type can be +\fBprotocol\fP for the input/output protocol in use (see \fB\-\-list\-protocols\fP), +and \fBextension\fP for the extension of the path of the currently played file +(\fInot\fP the file format). @@ -871,7 +864,7 @@ index 0000000..fadcd48 +.B \fBmf://[filemask|@listfile]\fP \fB\-\-mf\-...\fP +Play a series of images as video. +.TP -+.B \fBcdda://track[\-endtrack][:speed][/device]\fP \fB\-\-cdrom\-device=PATH\fP \fB\-\-cdda\-...\fP ++.B \fBcdda://[device]\fP \fB\-\-cdrom\-device=PATH\fP \fB\-\-cdda\-...\fP +Play CD. +.TP +.B \fBlavf://...\fP @@ -928,31 +921,43 @@ index 0000000..fadcd48 +if started from explorer.exe on Windows (technically, if it was started on +Windows, and all of the stdout/stderr/stdin handles are unset) +.IP \(bu 2 -+manually adding \fB\-\-profile=pseudo\-gui\fP to the command line ++started out of the bundle on OSX ++.IP \(bu 2 ++if you manually use \fB\-\-player\-operation\-mode=pseudo\-gui\fP on the command line +.UNINDENT +.sp -+This mode implicitly adds \fB\-\-profile=pseudo\-gui\fP to the command line, with -+the \fBpseudo\-gui\fP profile being predefined with the following contents: ++This mode applies options from the builtin profile \fBbuiltin\-pseudo\-gui\fP, but ++only if these haven\(aqt been set in the user\(aqs config file or on the command line. ++Also, for compatibility with the old pseudo\-gui behavior, the options in the ++\fBpseudo\-gui\fP profile are applied unconditionally. In addition, the profile ++makes sure to enable the pseudo\-GUI mode, so that \fB\-\-profile=pseudo\-gui\fP ++works like in older mpv releases. The profiles are currently defined as follows: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C -+[pseudo\-gui] ++[builtin\-pseudo\-gui] +terminal=no +force\-window=yes +idle=once +screenshot\-directory=~~desktop/ ++[pseudo\-gui] ++player\-operation\-mode=pseudo\-gui +.ft P +.fi +.UNINDENT +.UNINDENT +.sp -+This follows the mpv config file format. To customize pseudo\-GUI mode, you can -+put your own \fBpseudo\-gui\fP profile into your \fBmpv.conf\fP\&. This profile will -+enhance the default profile, rather than overwrite it. -+.sp -+The profile always overrides other settings in \fBmpv.conf\fP\&. ++\fBWARNING:\fP ++.INDENT 0.0 ++.INDENT 3.5 ++Currently, you can extend the \fBpseudo\-gui\fP profile in the config file the ++normal way. This is deprecated. In future mpv releases, the behavior might ++change, and not apply your additional settings, and/or use a different ++profile name. ++.UNINDENT ++.UNINDENT +.SH OPTIONS +.SS Track Selection +.INDENT 0.0 @@ -1000,15 +1005,32 @@ index 0000000..fadcd48 +Select audio track. \fBauto\fP selects the default, \fBno\fP disables audio. +See also \fB\-\-alang\fP\&. mpv normally prints available audio tracks on the +terminal when starting playback of a file. ++.sp ++\fB\-\-audio\fP is an alias for \fB\-\-aid\fP\&. ++.sp ++\fB\-\-aid=no\fP or \fB\-\-audio=no\fP or \fB\-\-no\-audio\fP disables audio playback. ++(The latter variant does not work with the client API.) +.TP +.B \fB\-\-sid=<ID|auto|no>\fP +Display the subtitle stream specified by \fB<ID>\fP\&. \fBauto\fP selects +the default, \fBno\fP disables subtitles. +.sp -+See also \fB\-\-slang\fP, \fB\-\-no\-sub\fP\&. ++\fB\-\-sub\fP is an alias for \fB\-\-sid\fP\&. ++.sp ++\fB\-\-sid=no\fP or \fB\-\-sub=no\fP or \fB\-\-no\-sub\fP disables subtitle decoding. ++(The latter variant does not work with the client API.) +.TP +.B \fB\-\-vid=<ID|auto|no>\fP +Select video channel. \fBauto\fP selects the default, \fBno\fP disables video. ++.sp ++\fB\-\-video\fP is an alias for \fB\-\-vid\fP\&. ++.sp ++\fB\-\-vid=no\fP or \fB\-\-video=no\fP or \fB\-\-no\-video\fP disables video playback. ++(The latter variant does not work with the client API.) ++.sp ++If video is disabled, mpv will try to download the audio only if media is ++streamed with youtube\-dl, because it saves bandwidth. This is done by ++setting the ytdl_format to "bestaudio/best" in the ytdl_hook.lua script. +.TP +.B \fB\-\-ff\-aid=<ID|auto|no>\fP, \fB\-\-ff\-sid=<ID|auto|no>\fP, \fB\-\-ff\-vid=<ID|auto|no>\fP +Select audio/subtitle/video streams by the FFmpeg stream index. The FFmpeg @@ -1115,16 +1137,18 @@ index 0000000..fadcd48 +.sp +See also: \fB\-\-start\fP\&. +.TP -+.B \fB\-\-playlist\-pos=<no|index>\fP ++.B \fB\-\-playlist\-start=<auto|index>\fP +Set which file on the internal playlist to start playback with. The index -+is an integer, with 0 meaning the first file. The value \fBno\fP means that ++is an integer, with 0 meaning the first file. The value \fBauto\fP means that +the selection of the entry to play is left to the playback resume mechanism +(default). If an entry with the given index doesn\(aqt exist, the behavior is +unspecified and might change in future mpv versions. The same applies if +the playlist contains further playlists (don\(aqt expect any reasonable +behavior). Passing a playlist file to mpv should work with this option, -+though. E.g. \fBmpv playlist.m3u \-\-playlist\-pos=123\fP will work as expected, ++though. E.g. \fBmpv playlist.m3u \-\-playlist\-start=123\fP will work as expected, +as long as \fBplaylist.m3u\fP does not link to further playlists. ++.sp ++The value \fBno\fP is a deprecated alias for \fBauto\fP\&. +.TP +.B \fB\-\-playlist=<filename>\fP +Play files according to a playlist file (Supports some common formats. If @@ -1306,8 +1330,12 @@ index 0000000..fadcd48 +.SS Program Behavior +.INDENT 0.0 +.TP -+.B \fB\-\-help\fP ++.B \fB\-\-help\fP, \fB\-\-h\fP +Show short summary of options. ++.sp ++You can also pass a shell pattern to this option, which will list all ++matching top\-level options, e.g. \fB\-\-h=*scale*\fP for all options that ++contain the word "scale". +.TP +.B \fB\-v\fP +Increment verbosity level, one level for each \fB\-v\fP found on the command @@ -1364,6 +1392,18 @@ index 0000000..fadcd48 +.sp +This behavior is disabled by default, but is always available when quitting +the player with Shift+Q. ++.UNINDENT ++.sp ++\fB\-\-watch\-later\-directory=<path>\fP ++.INDENT 0.0 ++.INDENT 3.5 ++The directory in which to store the "watch later" temporary files. ++.sp ++The default is a subdirectory named "watch_later" underneath the ++config directory (usually \fB~/.config/mpv/\fP). ++.UNINDENT ++.UNINDENT ++.INDENT 0.0 +.TP +.B \fB\-\-dump\-stats=<filename>\fP +Write certain statistics to the given file. The file is truncated on @@ -1507,15 +1547,19 @@ index 0000000..fadcd48 +\fB\-\-ytdl\-raw\-options=force\-ipv6=\fP +.UNINDENT +.UNINDENT ++.TP ++.B \fB\-\-player\-operation\-mode=<cplayer|pseudo\-gui>\fP ++For enabling "pseudo GUI mode", which means that the defaults for some ++options are changed. This option should not normally be used directly, but ++only by mpv internally, or mpv\-provided scripts, config files, or .desktop ++files. +.UNINDENT +.SS Video +.INDENT 0.0 +.TP -+.B \fB\-\-vo=<driver1[:suboption1[=value]:...],driver2,...[,]>\fP -+Specify a priority list of video output drivers to be used. For -+interactive use, one would normally specify a single one to use, but in -+configuration files, specifying a list of fallbacks may make sense. See -+\fI\%VIDEO OUTPUT DRIVERS\fP for details and descriptions of available drivers. ++.B \fB\-\-vo=<driver>\fP ++Specify the video output backend to be used. See \fI\%VIDEO OUTPUT DRIVERS\fP for ++details and descriptions of available drivers. +.TP +.B \fB\-\-vd=<[+|\-]family1:(*|decoder1),[+|\-]family2:(*|decoder2),...[\-]>\fP +Specify a priority list of video decoders to be used, according to their @@ -1537,14 +1581,6 @@ index 0000000..fadcd48 +\fB\-\-vf\-clr\fP exist to modify a previously specified list, but you +should not need these for typical use. +.TP -+.B \fB\-\-no\-video\fP -+Do not play video. With some demuxers this may not work. In those cases -+you can try \fB\-\-vo=null\fP instead. -+.sp -+mpv will try to download the audio only if media is streamed with -+youtube\-dl, because it saves bandwidth. This is done by setting the ytdl_format -+to "bestaudio/best" in the ytdl_hook.lua script. -+.TP +.B \fB\-\-untimed\fP +Do not sleep when outputting video frames. Useful for benchmarks when used +with \fB\-\-no\-audio.\fP @@ -1612,10 +1648,13 @@ index 0000000..fadcd48 +always use software decoding (default) +.TP +.B auto -+see below ++enable best hw decoder (see below) ++.TP ++.B yes ++exactly the same as \fBauto\fP +.TP +.B auto\-copy -+see below ++enable best hw decoder with copy\-back (see below) +.TP +.B vdpau +requires \fB\-\-vo=vdpau\fP or \fB\-\-vo=opengl\fP (Linux only) @@ -1633,15 +1672,15 @@ index 0000000..fadcd48 +copies video back into system RAM (OS X 10.8 and up only) +.TP +.B dxva2 -+requires \fB\-\-vo=opengl:backend=angle\fP or -+.sp -+\fB\-\-vo=opengl:backend=dxinterop\fP (Windows only) ++requires \fB\-\-vo=opengl\fP with \fB\-\-opengl\-backend=angle\fP or ++\fB\-\-opengl\-backend=dxinterop\fP (Windows only) +.TP +.B dxva2\-copy +copies video back to system RAM (Windows only) +.TP +.B d3d11va -+requires \fB\-\-vo=opengl:backend=angle\fP (Windows only) ++requires \fB\-\-vo=opengl\fP with \fB\-\-opengl\-backend=angle\fP ++(Windows only) +.TP +.B d3d11va\-copy +copies video back to system RAM (Windows only) @@ -1650,7 +1689,19 @@ index 0000000..fadcd48 +copies video back to system RAM (Android only) +.TP +.B rpi -+requires \fB\-\-vo=rpi\fP (Raspberry Pi only \- default if available) ++requires \fB\-\-vo=opengl\fP (Raspberry Pi only \- default if available) ++.TP ++.B rpi\-copy ++copies video back to system RAM (Raspberry Pi only) ++.TP ++.B cuda ++requires \fB\-\-vo=opengl\fP (Any platform CUDA is available) ++.TP ++.B cuda\-copy ++copies video back to system RAM (Any platform CUDA is available) ++.TP ++.B crystalhd ++copies video back to system RAM (Any platform supported by hardware) +.UNINDENT +.sp +\fBauto\fP tries to automatically enable hardware decoding using the first @@ -1670,7 +1721,7 @@ index 0000000..fadcd48 +The \fBvaapi\fP mode, if used with \fB\-\-vo=opengl\fP, requires Mesa 11 and most +likely works with Intel GPUs only. It also requires the opengl EGL backend +(automatically used if available). You can also try the old GLX backend by -+forcing it with \fB\-\-vo=opengl:backend=x11\fP, but the vaapi/GLX interop is ++forcing it with \fB\-\-opengl\-backend=x11\fP, but the vaapi/GLX interop is +said to be slower than \fBvaapi\-copy\fP\&. +.sp +Most video filters will not work with hardware decoding as they are @@ -1727,9 +1778,31 @@ index 0000000..fadcd48 +affect this additionally. This can give incorrect results even with +completely ordinary video sources. +.sp ++\fBcuda\fP is usually safe. Interlaced content can be deinterlaced by ++the decoder, which is useful as there is no other deinterlacing ++mechanism in the opengl output path. To use this deinterlacing you ++must pass the option: \fBvd\-lavc\-o=deint=[weave|bob|adaptive]\fP\&. Pass ++\fBweave\fP to not attempt any deinterlacing. ++10bit HEVC is available if the hardware supports it but it will be ++rounded down to 8 bits. ++.sp ++\fBcuda\-copy\fP has the same behaviour as \fBcuda\fP \- including the ability ++to deinterlace inside the decoder. However, traditional deinterlacing ++filters can be used in this case. ++.sp ++\fBrpi\fP always uses the hardware overlay renderer, even with ++\fB\-\-vo=opengl\fP\&. ++.sp ++\fBcrystalhd\fP is not safe. It always converts to 4:2:2 YUV, which ++may be lossy, depending on how chroma sub\-sampling is done during ++conversion. It also discards the top left pixel of each frame for ++some reason. ++.sp +All other methods, in particular the copy\-back methods (like +\fBdxva2\-copy\fP etc.) are either fully safe, or not worse than software -+decoding. In particular, \fBauto\-copy\fP will only select safe modes ++decoding. ++.sp ++In particular, \fBauto\-copy\fP will only select safe modes +(although potentially slower than other methods). +.UNINDENT +.UNINDENT @@ -1766,16 +1839,19 @@ index 0000000..fadcd48 +.sp +This option has no effect if \fB\-\-video\-unscaled\fP option is used. +.TP -+.B \fB\-\-video\-aspect=<ratio>\fP ++.B \fB\-\-video\-aspect=<ratio|no>\fP +Override video aspect ratio, in case aspect information is incorrect or +missing in the file being played. See also \fB\-\-no\-video\-aspect\fP\&. +.sp -+Two values have special meaning: ++These values have special meaning: +.INDENT 7.0 +.TP +.B 0 +disable aspect ratio handling, pretend the video has square pixels +.TP ++.B no ++same as \fB0\fP ++.TP +.B \-1 +use the video stream or container aspect (default) +.UNINDENT @@ -1789,14 +1865,12 @@ index 0000000..fadcd48 +\fB\-\-video\-aspect=4:3\fP or \fB\-\-video\-aspect=1.3333\fP +.IP \(bu 2 +\fB\-\-video\-aspect=16:9\fP or \fB\-\-video\-aspect=1.7777\fP ++.IP \(bu 2 ++\fB\-\-no\-video\-aspect\fP or \fB\-\-video\-aspect=no\fP +.UNINDENT +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-no\-video\-aspect\fP -+Ignore aspect ratio information from video file and assume the video has -+square pixels. See also \fB\-\-video\-aspect\fP\&. -+.TP +.B \fB\-\-video\-aspect\-method=<hybrid|bitstream|container>\fP +This sets the default video aspect determination method (if the aspect is +_not_ overridden by the user with \fB\-\-video\-aspect\fP or others). @@ -1924,8 +1998,7 @@ index 0000000..fadcd48 +disable deinterlacing just because the \fB\-\-deinterlace\fP was not set. +.TP +.B \fB\-\-field\-dominance=<auto|top|bottom>\fP -+Set first field for interlaced content. Useful for deinterlacers that -+double the framerate: \fB\-\-vf=yadif=field\fP and \fB\-\-vo=vdpau:deint\fP\&. ++Set first field for interlaced content. +.INDENT 7.0 +.TP +.B auto @@ -2111,21 +2184,48 @@ index 0000000..fadcd48 +.B \fB\-\-audio\-device=<name>\fP +Use the given audio device. This consists of the audio output name, e.g. +\fBalsa\fP, followed by \fB/\fP, followed by the audio output specific device -+name. ++name. The default value for this option is \fBauto\fP, which tries every audio ++output in preference order with the default device. +.sp +You can list audio devices with \fB\-\-audio\-device=help\fP\&. This outputs the +device name in quotes, followed by a description. The device name is what -+you have to pass to the \fB\-\-audio\-device\fP option. ++you have to pass to the \fB\-\-audio\-device\fP option. The list of audio devices ++can be retrieved by API by using the \fBaudio\-device\-list\fP property. +.sp -+The default value for this option is \fBauto\fP, which tries every audio -+output in preference order with the default device. ++While the option normally takes one of the strings as indicated by the ++methods above, you can also force the device for most AOs by building it ++manually. For example \fBname/foobar\fP forces the AO \fBname\fP to use the ++device \fBfoobar\fP\&. ++.INDENT 7.0 ++.INDENT 3.5 ++.IP "Example for ALSA" ++.sp ++MPlayer and mplayer2 required you to replace any \(aq,\(aq with \(aq.\(aq and ++any \(aq:\(aq with \(aq=\(aq in the ALSA device name. For example, to use the ++device named \fBdmix:default\fP, you had to do: ++.INDENT 0.0 ++.INDENT 3.5 ++\fB\-ao alsa:device=dmix=default\fP ++.UNINDENT ++.UNINDENT +.sp -+Note that many AOs have a \fBdevice\fP sub\-option, which overrides the -+device selection of this option (but not the audio output selection). -+Likewise, forcing an AO with \fB\-\-ao\fP will override the audio output -+selection of \fB\-\-audio\-device\fP (but not the device selection). ++In mpv you could instead use: ++.INDENT 0.0 ++.INDENT 3.5 ++\fB\-\-audio\-device=alsa/dmix:default\fP ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-audio\-exclusive=<yes|no>\fP ++Enable exclusive output mode. In this mode, the system is usually locked ++out, and only mpv will be able to output audio. +.sp -+Currently not implemented for most AOs. ++This only works for some audio outputs, such as \fBwasapi\fP and ++\fBcoreaudio\fP\&. Other audio outputs silently ignore this options. They either ++have no concept of exclusive mode, or the mpv side of the implementation is ++missing. +.TP +.B \fB\-\-audio\-fallback\-to\-null=<yes|no>\fP +If no audio device can be opened, behave as if \fB\-\-ao=null\fP was given. This @@ -2135,11 +2235,9 @@ index 0000000..fadcd48 +\fBcurrent\-ao\fP and \fBaudio\-device\-list\fP properties to make high\-level +decisions about how to continue. +.TP -+.B \fB\-\-ao=<driver1[:suboption1[=value]:...],driver2,...[,]>\fP -+Specify a priority list of audio output drivers to be used. For -+interactive use one would normally specify a single one to use, but in -+configuration files specifying a list of fallbacks may make sense. See -+\fI\%AUDIO OUTPUT DRIVERS\fP for details and descriptions of available drivers. ++.B \fB\-\-ao=<driver>\fP ++Specify the audio output drivers to be used. See \fI\%AUDIO OUTPUT DRIVERS\fP for ++details and descriptions of available drivers. +.TP +.B \fB\-\-af=<filter1[=parameter1:parameter2:...],filter2,...>\fP +Specify a list of audio filters to apply to the audio stream. See @@ -2218,7 +2316,10 @@ index 0000000..fadcd48 +Since mpv 0.18.1, this always controls the internal mixer (aka "softvol"). +.TP +.B \fB\-\-balance=<value>\fP -+How much left/right channels contribute to the audio. ++How much left/right channels contribute to the audio. (The implementation ++of this feature is rather odd. It doesn\(aqt change the volumes of each ++channel, but instead sets up a pan matrix to mix the left and right ++channels.) +.sp +Deprecated. +.TP @@ -2226,12 +2327,10 @@ index 0000000..fadcd48 +Audio delay in seconds (positive or negative float value). Positive values +delay the audio, and negative values delay the video. +.TP -+.B \fB\-\-no\-audio\fP -+Do not play sound. -+.TP -+.B \fB\-\-mute=<auto|yes|no>\fP -+Set startup audio mute status. \fBauto\fP (default) will not change the mute -+status. ++.B \fB\-\-mute=<yes|no|auto>\fP ++Set startup audio mute status (default: no). ++.sp ++\fBauto\fP is a deprecated possible value that is equivalent to \fBno\fP\&. +.sp +See also: \fB\-\-volume\fP\&. +.TP @@ -2548,14 +2647,16 @@ index 0000000..fadcd48 +Changing styling and position does not work with all subtitles. Image\-based +subtitles (DVD, Bluray/PGS, DVB) cannot changed for fundamental reasons. +Subtitles in ASS format are normally not changed intentionally, but -+overriding them can be controlled with \fB\-\-ass\-style\-override\fP\&. ++overriding them can be controlled with \fB\-\-sub\-ass\-style\-override\fP\&. ++.sp ++Previously some options working on text subtitles were called ++\fB\-\-sub\-text\-*\fP, they are now named \fB\-\-sub\-*\fP, and those specifically ++for ASS have been renamed from \fB\-\-ass\-*\fP to \fB\-\-sub\-ass\-*\fP\&. ++They are now all in this section. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP -+.B \fB\-\-no\-sub\fP -+Do not select any subtitle when the file is loaded. -+.TP +.B \fB\-\-sub\-demuxer=<[+]name>\fP +Force subtitle demuxer type for \fB\-\-sub\-file\fP\&. Give the demuxer name as +printed by \fB\-\-sub\-demuxer=help\fP\&. @@ -2612,7 +2713,7 @@ index 0000000..fadcd48 +.INDENT 7.0 +.INDENT 3.5 +This affects ASS subtitles as well, and may lead to incorrect subtitle -+rendering. Use with care, or use \fB\-\-sub\-text\-font\-size\fP instead. ++rendering. Use with care, or use \fB\-\-sub\-font\-size\fP instead. +.UNINDENT +.UNINDENT +.TP @@ -2635,10 +2736,10 @@ index 0000000..fadcd48 +scales with the approximate window size, while the other option disables +this scaling. +.sp -+Affects plain text subtitles only (or ASS if \fB\-\-ass\-style\-override\fP is ++Affects plain text subtitles only (or ASS if \fB\-\-sub\-ass\-style\-override\fP is +set high enough). +.TP -+.B \fB\-\-ass\-scale\-with\-window=<yes|no>\fP ++.B \fB\-\-sub\-ass\-scale\-with\-window=<yes|no>\fP +Like \fB\-\-sub\-scale\-with\-window\fP, but affects subtitles in ASS format only. +Like \fB\-\-sub\-scale\fP, this can break ASS subtitles. +.sp @@ -2656,7 +2757,7 @@ index 0000000..fadcd48 +.INDENT 7.0 +.INDENT 3.5 +This affects ASS subtitles as well, and may lead to incorrect subtitle -+rendering. Use with care, or use \fB\-\-sub\-text\-margin\-y\fP instead. ++rendering. Use with care, or use \fB\-\-sub\-margin\-y\fP instead. +.UNINDENT +.UNINDENT +.TP @@ -2673,16 +2774,16 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-ass\-force\-style=<[Style.]Param=Value[,...]>\fP ++.B \fB\-\-sub\-ass\-force\-style=<[Style.]Param=Value[,...]>\fP +Override some style or script info parameters. +.INDENT 7.0 +.INDENT 3.5 +.IP "Examples" +.INDENT 0.0 +.IP \(bu 2 -+\fB\-\-ass\-force\-style=FontName=Arial,Default.Bold=1\fP ++\fB\-\-sub\-ass\-force\-style=FontName=Arial,Default.Bold=1\fP +.IP \(bu 2 -+\fB\-\-ass\-force\-style=PlayResY=768\fP ++\fB\-\-sub\-ass\-force\-style=PlayResY=768\fP +.UNINDENT +.UNINDENT +.UNINDENT @@ -2694,7 +2795,7 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-ass\-hinting=<none|light|normal|native>\fP ++.B \fB\-\-sub\-ass\-hinting=<none|light|normal|native>\fP +Set font hinting type. <type> can be: +.INDENT 7.0 +.TP @@ -2721,10 +2822,10 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-ass\-line\-spacing=<value>\fP ++.B \fB\-\-sub\-ass\-line\-spacing=<value>\fP +Set line spacing value for SSA/ASS renderer. +.TP -+.B \fB\-\-ass\-shaper=<simple|complex>\fP ++.B \fB\-\-sub\-ass\-shaper=<simple|complex>\fP +Set the text layout engine used by libass. +.INDENT 7.0 +.TP @@ -2738,7 +2839,7 @@ index 0000000..fadcd48 +\fBcomplex\fP is the default. If libass hasn\(aqt been compiled against HarfBuzz, +libass silently reverts to \fBsimple\fP\&. +.TP -+.B \fB\-\-ass\-styles=<filename>\fP ++.B \fB\-\-sub\-ass\-styles=<filename>\fP +Load all SSA/ASS styles found in the specified file and use them for +rendering text subtitles. The syntax of the file is exactly like the \fB[V4 +Styles]\fP / \fB[V4+ Styles]\fP section of SSA/ASS. @@ -2750,12 +2851,12 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-ass\-style\-override=<yes|no|force|signfs|strip>\fP ++.B \fB\-\-sub\-ass\-style\-override=<yes|no|force|signfs|strip>\fP +Control whether user style overrides should be applied. +.INDENT 7.0 +.TP +.B yes -+Apply all the \fB\-\-ass\-*\fP style override options. Changing the default ++Apply all the \fB\-\-sub\-ass\-*\fP style override options. Changing the default +for any of these options can lead to incorrect subtitle rendering +(default). +.TP @@ -2766,7 +2867,7 @@ index 0000000..fadcd48 +Render subtitles as forced by subtitle scripts. +.TP +.B force -+Try to force the font style as defined by the \fB\-\-sub\-text\-*\fP ++Try to force the font style as defined by the \fB\-\-sub\-*\fP +options. Can break rendering easily. +.TP +.B strip @@ -2774,7 +2875,7 @@ index 0000000..fadcd48 +is equivalent to the old \fB\-\-no\-ass\fP / \fB\-\-no\-sub\-ass\fP options. +.UNINDENT +.TP -+.B \fB\-\-ass\-force\-margins\fP ++.B \fB\-\-sub\-ass\-force\-margins\fP +Enables placing toptitles and subtitles in black borders when they are +available, if the subtitles are in the ASS format. +.sp @@ -2783,14 +2884,14 @@ index 0000000..fadcd48 +.B \fB\-\-sub\-use\-margins\fP +Enables placing toptitles and subtitles in black borders when they are +available, if the subtitles are in a plain text format (or ASS if -+\fB\-\-ass\-style\-override\fP is set high enough). ++\fB\-\-sub\-ass\-style\-override\fP is set high enough). +.sp +Default: yes. +.sp -+Renamed from \fB\-\-ass\-use\-margins\fP\&. To place ASS subtitles in the borders -+too (like the old option did), also add \fB\-\-ass\-force\-margins\fP\&. ++Renamed from \fB\-\-sub\-ass\-use\-margins\fP\&. To place ASS subtitles in the borders ++too (like the old option did), also add \fB\-\-sub\-ass\-force\-margins\fP\&. +.TP -+.B \fB\-\-ass\-vsfilter\-aspect\-compat=<yes|no>\fP ++.B \fB\-\-sub\-ass\-vsfilter\-aspect\-compat=<yes|no>\fP +Stretch SSA/ASS subtitles when playing anamorphic videos for compatibility +with traditional VSFilter behavior. This switch has no effect when the +video is stored with square pixels. @@ -2807,7 +2908,7 @@ index 0000000..fadcd48 +.sp +Enabled by default. +.TP -+.B \fB\-\-ass\-vsfilter\-blur\-compat=<yes|no>\fP ++.B \fB\-\-sub\-ass\-vsfilter\-blur\-compat=<yes|no>\fP +Scale \fB\eblur\fP tags by video resolution instead of script resolution +(enabled by default). This is bug in VSFilter, which according to some, +can\(aqt be fixed anymore in the name of compatibility. @@ -2816,7 +2917,7 @@ index 0000000..fadcd48 +offset scale factor, not what the video filter chain or the video output +use. +.TP -+.B \fB\-\-ass\-vsfilter\-color\-compat=<basic|full|force\-601|no>\fP ++.B \fB\-\-sub\-ass\-vsfilter\-color\-compat=<basic|full|force\-601|no>\fP +Mangle colors like (xy\-)vsfilter do (default: basic). Historically, VSFilter +was not color space aware. This was no problem as long as the color space +used for SD video (BT.601) was used. But when everything switched to HD @@ -2847,7 +2948,7 @@ index 0000000..fadcd48 +.sp +Choosing anything other than \fBno\fP will make the subtitle color depend on +the video color space, and it\(aqs for example in theory not possible to reuse -+a subtitle script with another video file. The \fB\-\-ass\-style\-override\fP ++a subtitle script with another video file. The \fB\-\-sub\-ass\-style\-override\fP +option doesn\(aqt affect how this option is interpreted. +.TP +.B \fB\-\-stretch\-dvd\-subs=<yes|no>\fP @@ -2881,16 +2982,16 @@ index 0000000..fadcd48 +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 -+This has been deprecated by \fB\-\-ass\-style\-override=strip\fP\&. You also ++This has been deprecated by \fB\-\-sub\-ass\-style\-override=strip\fP\&. You also +may need \fB\-\-embeddedfonts=no\fP to get the same behavior. Also, -+using \fB\-\-ass\-style\-override=force\fP should give better results ++using \fB\-\-sub\-ass\-style\-override=force\fP should give better results +without breaking subtitles too much. +.UNINDENT +.UNINDENT +.sp +If \fB\-\-no\-sub\-ass\fP is specified, all tags and style declarations are +stripped and ignored on display. The subtitle renderer uses the font style -+as specified by the \fB\-\-sub\-text\-\fP options instead. ++as specified by the \fB\-\-sub\-\fP options instead. +.sp +\fBNOTE:\fP +.INDENT 7.0 @@ -3082,6 +3183,161 @@ index 0000000..fadcd48 +uses it for fast elimination of duplicates. This option disables caching +of subtitles across seeks, so after a seek libass can\(aqt eliminate subtitle +packets with the same ReadOrder as earlier packets. ++.TP ++.B \fB\-\-teletext\-page=<1\-999>\fP ++This works for \fBdvb_teletext\fP subtitle streams, and if FFmpeg has been ++compiled with support for it. ++.TP ++.B \fB\-\-sub\-font=<name>\fP ++Specify font to use for subtitles that do not themselves ++specify a particular font. The default is \fBsans\-serif\fP\&. ++.INDENT 7.0 ++.INDENT 3.5 ++.IP "Examples" ++.INDENT 0.0 ++.IP \(bu 2 ++\fB\-\-sub\-font=\(aqBitstream Vera Sans\(aq\fP ++.IP \(bu 2 ++\fB\-\-sub\-font=\(aqMS Comic Sans\(aq\fP ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.sp ++\fBNOTE:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++The \fB\-\-sub\-font\fP option (and many other style related \fB\-\-sub\-\fP ++options) are ignored when ASS\-subtitles are rendered, unless the ++\fB\-\-no\-sub\-ass\fP option is specified. ++.sp ++This used to support fontconfig patterns. Starting with libass 0.13.0, ++this stopped working. ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-sub\-font\-size=<size>\fP ++Specify the sub font size. The unit is the size in scaled pixels at a ++window height of 720. The actual pixel size is scaled with the window ++height: if the window height is larger or smaller than 720, the actual size ++of the text increases or decreases as well. ++.sp ++Default: 55. ++.TP ++.B \fB\-\-sub\-back\-color=<color>\fP ++See \fB\-\-sub\-color\fP\&. Color used for sub text background. ++.TP ++.B \fB\-\-sub\-blur=<0..20.0>\fP ++Gaussian blur factor. 0 means no blur applied (default). ++.TP ++.B \fB\-\-sub\-bold=<yes|no>\fP ++Format text on bold. ++.TP ++.B \fB\-\-sub\-italic=<yes|no>\fP ++Format text on italic. ++.TP ++.B \fB\-\-sub\-border\-color=<color>\fP ++See \fB\-\-sub\-color\fP\&. Color used for the sub font border. ++.sp ++\fBNOTE:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++ignored when \fB\-\-sub\-back\-color\fP is ++specified (or more exactly: when that option is not set to completely ++transparent). ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-sub\-border\-size=<size>\fP ++Size of the sub font border in scaled pixels (see \fB\-\-sub\-font\-size\fP ++for details). A value of 0 disables borders. ++.sp ++Default: 3. ++.TP ++.B \fB\-\-sub\-color=<color>\fP ++Specify the color used for unstyled text subtitles. ++.sp ++The color is specified in the form \fBr/g/b\fP, where each color component ++is specified as number in the range 0.0 to 1.0. It\(aqs also possible to ++specify the transparency by using \fBr/g/b/a\fP, where the alpha value 0 ++means fully transparent, and 1.0 means opaque. If the alpha component is ++not given, the color is 100% opaque. ++.sp ++Passing a single number to the option sets the sub to gray, and the form ++\fBgray/a\fP lets you specify alpha additionally. ++.INDENT 7.0 ++.INDENT 3.5 ++.IP "Examples" ++.INDENT 0.0 ++.IP \(bu 2 ++\fB\-\-sub\-color=1.0/0.0/0.0\fP set sub to opaque red ++.IP \(bu 2 ++\fB\-\-sub\-color=1.0/0.0/0.0/0.75\fP set sub to opaque red with 75% alpha ++.IP \(bu 2 ++\fB\-\-sub\-color=0.5/0.75\fP set sub to 50% gray with 75% alpha ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.sp ++Alternatively, the color can be specified as a RGB hex triplet in the form ++\fB#RRGGBB\fP, where each 2\-digit group expresses a color value in the ++range 0 (\fB00\fP) to 255 (\fBFF\fP). For example, \fB#FF0000\fP is red. ++This is similar to web colors. Alpha is given with \fB#AARRGGBB\fP\&. ++.INDENT 7.0 ++.INDENT 3.5 ++.IP "Examples" ++.INDENT 0.0 ++.IP \(bu 2 ++\fB\-\-sub\-color=\(aq#FF0000\(aq\fP set sub to opaque red ++.IP \(bu 2 ++\fB\-\-sub\-color=\(aq#C0808080\(aq\fP set sub to 50% gray with 75% alpha ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-sub\-margin\-x=<size>\fP ++Left and right screen margin for the subs in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). ++.sp ++This option specifies the distance of the sub to the left, as well as at ++which distance from the right border long sub text will be broken. ++.sp ++Default: 25. ++.TP ++.B \fB\-\-sub\-margin\-y=<size>\fP ++Top and bottom screen margin for the subs in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). ++.sp ++This option specifies the vertical margins of unstyled text subtitles. ++If you just want to raise the vertical subtitle position, use \fB\-\-sub\-pos\fP\&. ++.sp ++Default: 22. ++.TP ++.B \fB\-\-sub\-align\-x=<left|center|right>\fP ++Control to which corner of the screen text subtitles should be ++aligned to (default: \fBcenter\fP). ++.sp ++Never applied to ASS subtitles, except in \fB\-\-no\-sub\-ass\fP mode. Likewise, ++this does not apply to image subtitles. ++.TP ++.B \fB\-\-sub\-align\-y=<top|center|bottom>\fP ++Vertical position (default: \fBbottom\fP). ++Details see \fB\-\-sub\-align\-x\fP\&. ++.TP ++.B \fB\-\-sub\-shadow\-color=<color>\fP ++See \fB\-\-sub\-color\fP\&. Color used for sub text shadow. ++.TP ++.B \fB\-\-sub\-shadow\-offset=<size>\fP ++Displacement of the sub text shadow in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). A value of 0 disables shadows. ++.sp ++Default: 0. ++.TP ++.B \fB\-\-sub\-spacing=<size>\fP ++Horizontal sub font spacing in scaled pixels (see \fB\-\-sub\-font\-size\fP ++for details). This value is added to the normal letter spacing. Negative ++values are allowed. ++.sp ++Default: 0. +.UNINDENT +.SS Window +.INDENT 0.0 @@ -3640,10 +3896,6 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-bluray\-angle=<ID>\fP -+Some Blu\-ray discs contain scenes that can be viewed from multiple angles. -+This option tells mpv which angle to use (default: 1). -+.TP +.B \fB\-\-cdda\-...\fP +These options can be used to tune the CD Audio reading feature of mpv. +.TP @@ -4102,9 +4354,8 @@ index 0000000..fadcd48 +.B \fB\-\-osd\-duration=<time>\fP +Set the duration of the OSD messages in ms (default: 1000). +.TP -+.B \fB\-\-osd\-font=<name>\fP, \fB\-\-sub\-text\-font=<name>\fP -+Specify font to use for OSD and for subtitles that do not themselves -+specify a particular font. The default is \fBsans\-serif\fP\&. ++.B \fB\-\-osd\-font=<name>\fP ++Specify font to use for OSD. The default is \fBsans\-serif\fP\&. +.INDENT 7.0 +.INDENT 3.5 +.IP "Examples" @@ -4116,24 +4367,9 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.UNINDENT -+.sp -+\fBNOTE:\fP -+.INDENT 7.0 -+.INDENT 3.5 -+The \fB\-\-sub\-text\-font\fP option (and most other \fB\-\-sub\-text\-\fP -+options) are ignored when ASS\-subtitles are rendered, unless the -+\fB\-\-no\-sub\-ass\fP option is specified. -+.sp -+This used to support fontconfig patterns. Starting with libass 0.13.0, -+this stopped working. -+.UNINDENT -+.UNINDENT +.TP -+.B \fB\-\-osd\-font\-size=<size>\fP, \fB\-\-sub\-text\-font\-size=<size>\fP -+Specify the OSD/sub font size. The unit is the size in scaled pixels at a -+window height of 720. The actual pixel size is scaled with the window -+height: if the window height is larger or smaller than 720, the actual size -+of the text increases or decreases as well. ++.B \fB\-\-osd\-font\-size=<size>\fP ++Specify the OSD font size. See \fB\-\-sub\-font\-size\fP for details. +.sp +Default: 55. +.TP @@ -4190,76 +4426,39 @@ index 0000000..fadcd48 +.B \fB\-\-osd\-bar\-h=<0.1\-50>\fP +Height of the OSD bar, in percentage of the screen height (default: 3.125). +.TP -+.B \fB\-\-osd\-back\-color=<color>\fP, \fB\-\-sub\-text\-back\-color=<color>\fP -+See \fB\-\-osd\-color\fP\&. Color used for OSD/sub text background. ++.B \fB\-\-osd\-back\-color=<color>\fP ++See \fB\-\-osd\-color\fP\&. Color used for OSD text background. +.TP -+.B \fB\-\-osd\-blur=<0..20.0>\fP, \fB\-\-sub\-text\-blur=<0..20.0>\fP ++.B \fB\-\-osd\-blur=<0..20.0>\fP +Gaussian blur factor. 0 means no blur applied (default). +.TP -+.B \fB\-\-osd\-bold=<yes|no>\fP, \fB\-\-sub\-text\-bold=<yes|no>\fP ++.B \fB\-\-osd\-bold=<yes|no>\fP +Format text on bold. +.TP -+.B \fB\-\-osd\-italic=<yes|no>\fP, \fB\-\-sub\-text\-italic=<yes|no>\fP ++.B \fB\-\-osd\-italic=<yes|no>\fP +Format text on italic. +.TP -+.B \fB\-\-osd\-border\-color=<color>\fP, \fB\-\-sub\-text\-border\-color=<color>\fP -+See \fB\-\-osd\-color\fP\&. Color used for the OSD/sub font border. ++.B \fB\-\-osd\-border\-color=<color>\fP ++See \fB\-\-osd\-color\fP\&. Color used for the OSD font border. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 -+ignored when \fB\-\-osd\-back\-color\fP/\fB\-\-sub\-text\-back\-color\fP is ++ignored when \fB\-\-osd\-back\-color\fP is +specified (or more exactly: when that option is not set to completely +transparent). +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-osd\-border\-size=<size>\fP, \fB\-\-sub\-text\-border\-size=<size>\fP -+Size of the OSD/sub font border in scaled pixels (see \fB\-\-osd\-font\-size\fP ++.B \fB\-\-osd\-border\-size=<size>\fP ++Size of the OSD font border in scaled pixels (see \fB\-\-sub\-font\-size\fP +for details). A value of 0 disables borders. +.sp +Default: 3. +.TP -+.B \fB\-\-osd\-color=<color>\fP, \fB\-\-sub\-text\-color=<color>\fP -+Specify the color used for OSD/unstyled text subtitles. -+.sp -+The color is specified in the form \fBr/g/b\fP, where each color component -+is specified as number in the range 0.0 to 1.0. It\(aqs also possible to -+specify the transparency by using \fBr/g/b/a\fP, where the alpha value 0 -+means fully transparent, and 1.0 means opaque. If the alpha component is -+not given, the color is 100% opaque. -+.sp -+Passing a single number to the option sets the OSD to gray, and the form -+\fBgray/a\fP lets you specify alpha additionally. -+.INDENT 7.0 -+.INDENT 3.5 -+.IP "Examples" -+.INDENT 0.0 -+.IP \(bu 2 -+\fB\-\-osd\-color=1.0/0.0/0.0\fP set OSD to opaque red -+.IP \(bu 2 -+\fB\-\-osd\-color=1.0/0.0/0.0/0.75\fP set OSD to opaque red with 75% alpha -+.IP \(bu 2 -+\fB\-\-osd\-color=0.5/0.75\fP set OSD to 50% gray with 75% alpha -+.UNINDENT -+.UNINDENT -+.UNINDENT -+.sp -+Alternatively, the color can be specified as a RGB hex triplet in the form -+\fB#RRGGBB\fP, where each 2\-digit group expresses a color value in the -+range 0 (\fB00\fP) to 255 (\fBFF\fP). For example, \fB#FF0000\fP is red. -+This is similar to web colors. Alpha is given with \fB#AARRGGBB\fP\&. -+.INDENT 7.0 -+.INDENT 3.5 -+.IP "Examples" -+.INDENT 0.0 -+.IP \(bu 2 -+\fB\-\-osd\-color=\(aq#FF0000\(aq\fP set OSD to opaque red -+.IP \(bu 2 -+\fB\-\-osd\-color=\(aq#C0808080\(aq\fP set OSD to 50% gray with 75% alpha -+.UNINDENT -+.UNINDENT -+.UNINDENT ++.B \fB\-\-osd\-color=<color>\fP ++Specify the color used for OSD. ++See \fB\-\-sub\-color\fP for details. +.TP +.B \fB\-\-osd\-fractions\fP +Show OSD times with fractions of seconds (in millisecond precision). Useful @@ -4282,34 +4481,29 @@ index 0000000..fadcd48 +enabled + \fB\-\-osd\-status\-msg\fP (current time and status by default) +.UNINDENT +.TP -+.B \fB\-\-osd\-margin\-x=<size>, \-\-sub\-text\-margin\-x=<size>\fP -+Left and right screen margin for the OSD/subs in scaled pixels (see -+\fB\-\-osd\-font\-size\fP for details). ++.B \fB\-\-osd\-margin\-x=<size>\fP ++Left and right screen margin for the OSD in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). +.sp +This option specifies the distance of the OSD to the left, as well as at +which distance from the right border long OSD text will be broken. +.sp +Default: 25. +.TP -+.B \fB\-\-osd\-margin\-y=<size>, \-\-sub\-text\-margin\-y=<size>\fP -+Top and bottom screen margin for the OSD/subs in scaled pixels (see -+\fB\-\-osd\-font\-size\fP for details). ++.B \fB\-\-osd\-margin\-y=<size>\fP ++Top and bottom screen margin for the OSD in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). +.sp -+This option specifies the vertical margins of the OSD. This is also used -+for unstyled text subtitles. If you just want to raise the vertical -+subtitle position, use \fB\-\-sub\-pos\fP\&. ++This option specifies the vertical margins of the OSD. +.sp +Default: 22. +.TP -+.B \fB\-\-osd\-align\-x=<left|center|right>\fP, \fB\-\-sub\-text\-align\-x=...\fP -+Control to which corner of the screen OSD or text subtitles should be -+aligned to (default: \fBcenter\fP for subs, \fBleft\fP for OSD). -+.sp -+Never applied to ASS subtitles, except in \fB\-\-no\-sub\-ass\fP mode. Likewise, -+this does not apply to image subtitles. ++.B \fB\-\-osd\-align\-x=<left|center|right>\fP ++Control to which corner of the screen OSD should be ++aligned to (default: \fBleft\fP). +.TP -+.B \fB\-\-osd\-align\-y=<top|center|bottom>\fP \fB\-\-sub\-text\-align\-y=...\fP -+Vertical position (default: \fBbottom\fP for subs, \fBtop\fP for OSD). ++.B \fB\-\-osd\-align\-y=<top|center|bottom>\fP ++Vertical position (default: \fBtop\fP). +Details see \fB\-\-osd\-align\-x\fP\&. +.TP +.B \fB\-\-osd\-scale=<factor>\fP @@ -4321,21 +4515,32 @@ index 0000000..fadcd48 +are always in actual pixels. The effect is that changing the window size +won\(aqt change the OSD font size. +.TP -+.B \fB\-\-osd\-shadow\-color=<color>, \-\-sub\-text\-shadow\-color=<color>\fP -+See \fB\-\-osd\-color\fP\&. Color used for OSD/sub text shadow. ++.B \fB\-\-osd\-shadow\-color=<color>\fP ++See \fB\-\-sub\-color\fP\&. Color used for OSD shadow. +.TP -+.B \fB\-\-osd\-shadow\-offset=<size>, \-\-sub\-text\-shadow\-offset=<size>\fP -+Displacement of the OSD/sub text shadow in scaled pixels (see -+\fB\-\-osd\-font\-size\fP for details). A value of 0 disables shadows. ++.B \fB\-\-osd\-shadow\-offset=<size>\fP ++Displacement of the OSD shadow in scaled pixels (see ++\fB\-\-sub\-font\-size\fP for details). A value of 0 disables shadows. +.sp +Default: 0. +.TP -+.B \fB\-\-osd\-spacing=<size>, \-\-sub\-text\-spacing=<size>\fP -+Horizontal OSD/sub font spacing in scaled pixels (see \fB\-\-osd\-font\-size\fP ++.B \fB\-\-osd\-spacing=<size>\fP ++Horizontal OSD/sub font spacing in scaled pixels (see \fB\-\-sub\-font\-size\fP +for details). This value is added to the normal letter spacing. Negative +values are allowed. +.sp +Default: 0. ++.TP ++.B \fB\-\-video\-osd=<yes|no>\fP ++Enabled OSD rendering on the video window (default: yes). This can be used ++in situations where terminal OSD is preferred. If you just want to disable ++all OSD rendering, use \fB\-\-osd\-level=0\fP\&. ++.sp ++It does not affect subtitles or overlays created by scripts (in particular, ++the OSC needs to be disabled with \fB\-\-no\-osc\fP). ++.sp ++This option is somewhat experimental and could be replaced by another ++mechanism in the future. +.UNINDENT +.SS Screenshot +.INDENT 0.0 @@ -4663,11 +4868,22 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fB\-\-term\-osd, \-\-no\-term\-osd\fP, \fB\-\-term\-osd=force\fP -+Display OSD messages on the console when no video output is available. -+Enabled by default. ++.B \fB\-\-term\-osd=<auto|no|force>\fP ++Control whether OSD messages are shown on the console when no video output ++is available (default: auto). ++.INDENT 7.0 ++.TP ++.B auto ++use terminal OSD if no video output active ++.TP ++.B no ++disable terminal OSD ++.TP ++.B force ++use terminal OSD even if video output active ++.UNINDENT +.sp -+\fBforce\fP enables terminal OSD even if a video window is created. ++The \fBauto\fP mode also enables terminal OSD if \fB\-\-video\-osd=no\fP was set. +.TP +.B \fB\-\-term\-osd\-bar\fP, \fB\-\-no\-term\-osd\-bar\fP +Enable printing a progress bar under the status line on the terminal. @@ -5166,6 +5382,990 @@ index 0000000..fadcd48 +.sp +Default: \fBno\fP +.UNINDENT ++.SS ALSA audio output options ++.INDENT 0.0 ++.TP ++.B \fB\-\-alsa\-device=<device>\fP ++Deprecated, use \fB\-\-audio\-device\fP (requires \fBalsa/\fP prefix). ++.TP ++.B \fB\-\-alsa\-resample=yes\fP ++Enable ALSA resampling plugin. (This is disabled by default, because ++some drivers report incorrect audio delay in some cases.) ++.TP ++.B \fB\-\-alsa\-mixer\-device=<device>\fP ++Set the mixer device used with \fBao\-volume\fP (default: \fBdefault\fP). ++.TP ++.B \fB\-\-alsa\-mixer\-name=<name>\fP ++Set the name of the mixer element (default: \fBMaster\fP). This is for ++example \fBPCM\fP or \fBMaster\fP\&. ++.TP ++.B \fB\-\-alsa\-mixer\-index=<number>\fP ++Set the index of the mixer channel (default: 0). Consider the output of ++"\fBamixer scontrols\fP", then the index is the number that follows the ++name of the element. ++.TP ++.B \fB\-\-alsa\-non\-interleaved\fP ++Allow output of non\-interleaved formats (if the audio decoder uses ++this format). Currently disabled by default, because some popular ++ALSA plugins are utterly broken with non\-interleaved formats. ++.TP ++.B \fB\-\-alsa\-ignore\-chmap\fP ++Don\(aqt read or set the channel map of the ALSA device \- only request the ++required number of channels, and then pass the audio as\-is to it. This ++option most likely should not be used. It can be useful for debugging, ++or for static setups with a specially engineered ALSA configuration (in ++this case you should always force the same layout with \fB\-\-audio\-channels\fP, ++or it will work only for files which use the layout implicit to your ++ALSA device). ++.UNINDENT ++.SS OpenGL renderer options ++.sp ++The following video options are currently all specific to \fB\-\-vo=opengl\fP and ++\fB\-vo=opengl\-cb\fP only, which are the only VOs that implement them. ++.INDENT 0.0 ++.TP ++.B \fB\-\-opengl\-dumb\-mode=<yes|no>\fP ++This mode is extremely restricted, and will disable most extended OpenGL ++features. This includes high quality scalers and custom shaders! ++.sp ++It is intended for hardware that does not support FBOs (including GLES, ++which supports it insufficiently), or to get some more performance out of ++bad or old hardware. ++.sp ++This mode is forced automatically if needed, and this option is mostly ++useful for debugging. It\(aqs also enabled automatically if nothing uses ++features which require FBOs. ++.sp ++This option might be silently removed in the future. ++.UNINDENT ++.sp ++\fB\-\-scale=<filter>\fP ++.INDENT 0.0 ++.INDENT 3.5 ++.INDENT 0.0 ++.TP ++.B \fBbilinear\fP ++Bilinear hardware texture filtering (fastest, very low quality). This ++is the default for compatibility reasons. ++.TP ++.B \fBspline36\fP ++Mid quality and speed. This is the default when using \fBopengl\-hq\fP\&. ++.TP ++.B \fBlanczos\fP ++Lanczos scaling. Provides mid quality and speed. Generally worse than ++\fBspline36\fP, but it results in a slightly sharper image which is good ++for some content types. The number of taps can be controlled with ++\fBscale\-radius\fP, but is best left unchanged. ++.sp ++(This filter is an alias for \fBsinc\fP\-windowed \fBsinc\fP) ++.TP ++.B \fBewa_lanczos\fP ++Elliptic weighted average Lanczos scaling. Also known as Jinc. ++Relatively slow, but very good quality. The radius can be controlled ++with \fBscale\-radius\fP\&. Increasing the radius makes the filter sharper ++but adds more ringing. ++.sp ++(This filter is an alias for \fBjinc\fP\-windowed \fBjinc\fP) ++.TP ++.B \fBewa_lanczossharp\fP ++A slightly sharpened version of ewa_lanczos, preconfigured to use an ++ideal radius and parameter. If your hardware can run it, this is ++probably what you should use by default. ++.TP ++.B \fBmitchell\fP ++Mitchell\-Netravali. The \fBB\fP and \fBC\fP parameters can be set with ++\fB\-\-scale\-param1\fP and \fB\-\-scale\-param2\fP\&. This filter is very good at ++downscaling (see \fB\-\-dscale\fP). ++.TP ++.B \fBoversample\fP ++A version of nearest neighbour that (naively) oversamples pixels, so ++that pixels overlapping edges get linearly interpolated instead of ++rounded. This essentially removes the small imperfections and judder ++artifacts caused by nearest\-neighbour interpolation, in exchange for ++adding some blur. This filter is good at temporal interpolation, and ++also known as "smoothmotion" (see \fB\-\-tscale\fP). ++.TP ++.B \fBlinear\fP ++A \fB\-\-tscale\fP filter. ++.UNINDENT ++.sp ++There are some more filters, but most are not as useful. For a complete ++list, pass \fBhelp\fP as value, e.g.: ++.INDENT 0.0 ++.INDENT 3.5 ++.sp ++.nf ++.ft C ++mpv \-\-scale=help ++.ft P ++.fi ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.INDENT 0.0 ++.TP ++.B \fB\-\-scale\-param1=<value>\fP, \fB\-\-scale\-param2=<value>\fP ++Set filter parameters. Ignored if the filter is not tunable. Currently, ++this affects the following filter parameters: ++.INDENT 7.0 ++.TP ++.B bcspline ++Spline parameters (\fBB\fP and \fBC\fP). Defaults to 0.5 for both. ++.TP ++.B gaussian ++Scale parameter (\fBt\fP). Increasing this makes the result blurrier. ++Defaults to 1. ++.TP ++.B oversample ++Minimum distance to an edge before interpolation is used. Setting this ++to 0 will always interpolate edges, whereas setting it to 0.5 will ++never interpolate, thus behaving as if the regular nearest neighbour ++algorithm was used. Defaults to 0.0. ++.UNINDENT ++.TP ++.B \fB\-\-scale\-blur=<value>\fP ++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\(aqs preferred blur factor is used. Note that setting this too ++low (eg. 0.5) leads to bad results. It\(aqs generally recommended to stick to ++values between 0.8 and 1.2. ++.TP ++.B \fB\-\-scale\-radius=<value>\fP ++Set radius for tunable filters, must be a float number between 0.5 and ++16.0. Defaults to the filter\(aqs preferred radius if not specified. Doesn\(aqt ++work for every scaler and VO combination. ++.sp ++Note that depending on filter implementation details and video scaling ++ratio, the radius that actually being used might be different (most likely ++being increased a bit). ++.TP ++.B \fB\-\-scale\-antiring=<value>\fP ++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. ++.sp ++Note that this doesn\(aqt affect the special filters \fBbilinear\fP and ++\fBbicubic_fast\fP\&. ++.TP ++.B \fB\-\-scale\-window=<window>\fP ++(Advanced users only) Choose a custom windowing function for the kernel. ++Defaults to the filter\(aqs preferred window if unset. Use ++\fB\-\-scale\-window=help\fP to get a list of supported windowing functions. ++.TP ++.B \fB\-\-scale\-wparam=<window>\fP ++(Advanced users only) Configure the parameter for the window function given ++by \fB\-\-scale\-window\fP\&. Ignored if the window is not tunable. Currently, ++this affects the following window parameters: ++.INDENT 7.0 ++.TP ++.B kaiser ++Window parameter (alpha). Defaults to 6.33. ++.TP ++.B blackman ++Window parameter (alpha). Defaults to 0.16. ++.TP ++.B gaussian ++Scale parameter (t). Increasing this makes the window wider. Defaults ++to 1. ++.UNINDENT ++.TP ++.B \fB\-\-scaler\-lut\-size=<4..10>\fP ++Set the size of the lookup texture for scaler kernels (default: 6). The ++actual size of the texture is \fB2^N\fP for an option value of \fBN\fP\&. So the ++lookup texture with the default setting uses 64 samples. ++.sp ++All weights are linearly interpolated from those samples, so increasing ++the size of lookup table might improve the accuracy of scaler. ++.TP ++.B \fB\-\-scaler\-resizes\-only\fP ++Disable the scaler if the video image is not resized. In that case, ++\fBbilinear\fP is used instead of whatever is set with \fB\-\-scale\fP\&. Bilinear ++will reproduce the source image perfectly if no scaling is performed. ++Enabled by default. Note that this option never affects \fB\-\-cscale\fP\&. ++.TP ++.B \fB\-\-opengl\-pbo\fP ++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 ++might be slower or cause latency issues. ++.sp ++In theory, this can sometimes lead to sporadic and temporary image ++corruption (because reupload is not retried when it fails). ++.TP ++.B \fB\-\-dither\-depth=<N|no|auto>\fP ++Set dither target depth to N. Default: no. ++.INDENT 7.0 ++.TP ++.B no ++Disable any dithering done by mpv. ++.TP ++.B auto ++Automatic selection. If output bit depth cannot be detected, 8 bits per ++component are assumed. ++.TP ++.B 8 ++Dither to 8 bit output. ++.UNINDENT ++.sp ++Note that the depth of the connected video display device cannot be ++detected. Often, LCD panels will do dithering on their own, which conflicts ++with this option and leads to ugly output. ++.TP ++.B \fB\-\-dither\-size\-fruit=<2\-8>\fP ++Set the size of the dither matrix (default: 6). The actual size of the ++matrix is \fB(2^N) x (2^N)\fP for an option value of \fBN\fP, so a value of 6 ++gives a size of 64x64. The matrix is generated at startup time, and a large ++matrix can take rather long to compute (seconds). ++.sp ++Used in \fB\-\-dither=fruit\fP mode only. ++.TP ++.B \fB\-\-dither=<fruit|ordered|no>\fP ++Select dithering algorithm (default: fruit). (Normally, the ++\fB\-\-dither\-depth\fP option controls whether dithering is enabled.) ++.TP ++.B \fB\-\-temporal\-dither\fP ++Enable temporal dithering. (Only active if dithering is enabled in ++general.) This changes between 8 different dithering patterns on each frame ++by changing the orientation of the tiled dithering matrix. Unfortunately, ++this can lead to flicker on LCD displays, since these have a high reaction ++time. ++.TP ++.B \fB\-\-temporal\-dither\-period=<1\-128>\fP ++Determines how often the dithering pattern is updated when ++\fB\-\-temporal\-dither\fP is in use. 1 (the default) will update on every video ++frame, 2 on every other frame, etc. ++.TP ++.B \fB\-\-opengl\-debug\fP ++Check for OpenGL errors, i.e. call \fBglGetError()\fP\&. Also, request a ++debug OpenGL context (which does nothing with current graphics drivers ++as of this writing). ++.TP ++.B \fB\-\-interpolation\fP ++Reduce stuttering caused by mismatches in the video fps and display refresh ++rate (also known as judder). ++.sp ++\fBWARNING:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++This requires setting the \fB\-\-video\-sync\fP option to one ++of the \fBdisplay\-\fP modes, or it will be silently disabled. ++This was not required before mpv 0.14.0. ++.UNINDENT ++.UNINDENT ++.sp ++This essentially attempts to interpolate the missing frames by convoluting ++the video along the temporal axis. The filter used can be controlled using ++the \fB\-\-tscale\fP setting. ++.sp ++Note that this relies on vsync to work, see \fB\-\-opengl\-swapinterval\fP for ++more information. ++.TP ++.B \fB\-\-opengl\-swapinterval=<n>\fP ++Interval in displayed frames between two buffer swaps. 1 is equivalent to ++enable VSYNC, 0 to disable VSYNC. Defaults to 1 if not specified. ++.sp ++Note that this depends on proper OpenGL vsync support. On some platforms ++and drivers, this only works reliably when in fullscreen mode. It may also ++require driver\-specific hacks if using multiple monitors, to ensure mpv ++syncs to the right one. Compositing window managers can also lead to bad ++results, as can missing or incorrect display FPS information (see ++\fB\-\-display\-fps\fP). ++.TP ++.B \fB\-\-dscale=<filter>\fP ++Like \fB\-\-scale\fP, but apply these filters on downscaling instead. If this ++option is unset, the filter implied by \fB\-\-scale\fP will be applied. ++.TP ++.B \fB\-\-cscale=<filter>\fP ++As \fB\-\-scale\fP, but for interpolating chroma information. If the image is ++not subsampled, this option is ignored entirely. ++.TP ++.B \fB\-\-tscale=<filter>\fP ++The filter used for interpolating the temporal axis (frames). This is only ++used if \fB\-\-interpolation\fP is enabled. The only valid choices for ++\fB\-\-tscale\fP are separable convolution filters (use \fB\-\-tscale=help\fP to ++get a list). The default is \fBmitchell\fP\&. ++.sp ++Note that the maximum supported filter radius is currently 3, due to ++limitations in the number of video textures that can be loaded ++simultaneously. ++.TP ++.B \fB\-\-tscale\-clamp\fP ++Clamp the \fB\-\-tscale\fP filter kernel\(aqs 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. ++.TP ++.B \fB\-\-interpolation\-threshold=<0..1,\-1>\fP ++Threshold below which frame ratio interpolation gets disabled (default: ++\fB0.0001\fP). This is calculated as \fBabs(disphz/vfps \- 1) < threshold\fP, ++where \fBvfps\fP is the speed\-adjusted video FPS, and \fBdisphz\fP 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 \fB\-\-video\-sync=display\-resample\fP to make video run synchronously ++to the display FPS, or if you change the \fBspeed\fP property.) ++.sp ++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. \fB\-\-video\-sync=display\-vdrop\fP, small deviations ++in the rate can disable interpolation and introduce a discontinuity every ++other minute. ++.sp ++Set this to \fB\-1\fP to disable this logic. ++.TP ++.B \fB\-\-dscale\-radius\fP, \fB\-\-cscale\-radius\fP, \fB\-\-tscale\-radius\fP, etc. ++Set filter parameters for \fB\-\-dscale\fP, \fB\-\-cscale\fP and \fB\-\-tscale\fP, ++respectively. ++.sp ++See the corresponding options for \fB\-\-scale\fP\&. ++.TP ++.B \fB\-\-linear\-scaling\fP ++Scale in linear light. It should only be used with a ++\fB\-\-opengl\-fbo\-format\fP that has at least 16 bit precision. ++.TP ++.B \fB\-\-correct\-downscaling\fP ++When using convolution based filters, extend the filter size when ++downscaling. Increases quality, but reduces performance while downscaling. ++.sp ++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. ++.TP ++.B \fB\-\-opengl\-shaders=<files>\fP ++Custom GLSL hooks. These are a flexible way to add custom fragment shaders, ++which can be injected at almost arbitrary points in the rendering pipeline, ++and access all previous intermediate textures. ++.INDENT 7.0 ++.INDENT 3.5 ++.IP "Warning" ++.sp ++The syntax is not stable yet and may change any time. ++.UNINDENT ++.UNINDENT ++.sp ++The general syntax of a user shader looks like this: ++.INDENT 7.0 ++.INDENT 3.5 ++.sp ++.nf ++.ft C ++//!METADATA ARGS... ++//!METADATA ARGS... ++ ++vec4 hook() { ++ ... ++ return something; ++} ++ ++//!METADATA ARGS... ++//!METADATA ARGS... ++ ++\&... ++.ft P ++.fi ++.UNINDENT ++.UNINDENT ++.sp ++Each block of metadata, along with the non\-metadata lines after it, defines ++a single pass. Each pass can set the following metadata: ++.INDENT 7.0 ++.TP ++.B HOOK <name> (required) ++The texture which to hook into. May occur multiple times within a ++metadata block, up to a predetermined limit. See below for a list of ++hookable textures. ++.TP ++.B BIND <name> ++Loads a texture and makes it available to the pass, and sets up macros ++to enable accessing it. See below for a list of set macros. By default, ++no textures are bound. The special name HOOKED can be used to refer to ++the texture that triggered this pass. ++.TP ++.B SAVE <name> ++Gives the name of the texture to save the result of this pass into. By ++default, this is set to the special name HOOKED which has the effect of ++overwriting the hooked texture. ++.TP ++.B WIDTH <szexpr>, HEIGHT <szexpr> ++Specifies the size of the resulting texture for this pass. \fBszexpr\fP ++refers to an expression in RPN (reverse polish notation), using the ++operators + \- * / > < !, floating point literals, and references to ++sizes of existing texture and OUTPUT (such as MAIN.width or ++CHROMA.height). By default, these are set to HOOKED.w and HOOKED.h, ++respectively. ++.TP ++.B WHEN <szexpr> ++Specifies a condition that needs to be true (non\-zero) for the shader ++stage to be evaluated. If it fails, it will silently be omitted. (Note ++that a shader stage like this which has a dependency on an optional ++hook point can still cause that hook point to be saved, which has some ++minor overhead) ++.TP ++.B OFFSET ox oy ++Indicates a pixel shift (offset) introduced by this pass. These pixel ++offsets will be accumulated and corrected during the next scaling pass ++(\fBcscale\fP or \fBscale\fP). The default values are 0 0 which correspond ++to no shift. Note that offsets are ignored when not overwriting the ++hooked texture. ++.TP ++.B COMPONENTS n ++Specifies how many components of this pass\(aqs output are relevant and ++should be stored in the texture, up to 4 (rgba). By default, this value ++is equal to the number of components in HOOKED. ++.UNINDENT ++.sp ++Each bound texture (via \fBBIND\fP) will make available the following ++definitions to that shader pass, where NAME is the name of the bound ++texture: ++.INDENT 7.0 ++.TP ++.B vec4 NAME_tex(vec2 pos) ++The sampling function to use to access the texture at a certain spot ++(in texture coordinate space, range [0,1]). This takes care of any ++necessary normalization conversions. ++.TP ++.B vec4 NAME_texOff(vec2 offset) ++Sample the texture at a certain offset in pixels. This works like ++NAME_tex but additionally takes care of necessary rotations, so that ++sampling at e.g. vec2(\-1,0) is always one pixel to the left. ++.TP ++.B vec2 NAME_pos ++The local texture coordinate of that texture, range [0,1]. ++.TP ++.B vec2 NAME_size ++The (rotated) size in pixels of the texture. ++.TP ++.B mat2 NAME_rot ++The rotation matrix associated with this texture. (Rotates pixel space ++to texture coordinates) ++.TP ++.B vec2 NAME_pt ++The (unrotated) size of a single pixel, range [0,1]. ++.TP ++.B sampler NAME_raw ++The raw bound texture itself. The use of this should be avoided unless ++absolutely necessary. ++.UNINDENT ++.sp ++In addition to these parameters, the following uniforms are also globally ++available: ++.INDENT 7.0 ++.TP ++.B float random ++A random number in the range [0\-1], different per frame. ++.TP ++.B int frame ++A simple count of frames rendered, increases by one per frame and never ++resets (regardless of seeks). ++.TP ++.B vec2 image_size ++The size in pixels of the input image. ++.TP ++.B vec2 target_size ++The size in pixels of the visible part of the scaled (and possibly ++cropped) image. ++.UNINDENT ++.sp ++Internally, vo_opengl may generate any number of the following textures. ++Whenever a texture is rendered and saved by vo_opengl, all of the passes ++that have hooked into it will run, in the order they were added by the ++user. This is a list of the legal hook points: ++.INDENT 7.0 ++.TP ++.B RGB, LUMA, CHROMA, ALPHA, XYZ (resizable) ++Source planes (raw). Which of these fire depends on the image format of ++the source. ++.TP ++.B CHROMA_SCALED, ALPHA_SCALED (fixed) ++Source planes (upscaled). These only fire on subsampled content. ++.TP ++.B NATIVE (resizable) ++The combined image, in the source colorspace, before conversion to RGB. ++.TP ++.B MAINPRESUB (resizable) ++The image, after conversion to RGB, but before ++\fB\-\-blend\-subtitles=video\fP is applied. ++.TP ++.B MAIN (resizable) ++The main image, after conversion to RGB but before upscaling. ++.TP ++.B LINEAR (fixed) ++Linear light image, before scaling. This only fires when ++\fB\-\-linear\-scaling\fP is in effect. ++.TP ++.B SIGMOID (fixed) ++Sigmoidized light, before scaling. This only fires when ++\fB\-\-sigmoid\-upscaling\fP is in effect. ++.TP ++.B PREKERNEL (fixed) ++The image immediately before the scaler kernel runs. ++.TP ++.B POSTKERNEL (fixed) ++The image immediately after the scaler kernel runs. ++.TP ++.B SCALED (fixed) ++The final upscaled image, before color management. ++.TP ++.B OUTPUT (fixed) ++The final output image, after color management but before dithering and ++drawing to screen. ++.UNINDENT ++.sp ++Only the textures labelled with \fBresizable\fP may be transformed by the ++pass. When overwriting a texture marked \fBfixed\fP, the WIDTH, HEIGHT and ++OFFSET must be left at their default values. ++.TP ++.B \fB\-\-deband\fP ++Enable the debanding algorithm. This greatly reduces the amount of visible ++banding, blocking and other quantization artifacts, at the expensive of ++very slightly blurring some of the finest details. In practice, it\(aqs ++virtually always an improvement \- the only reason to disable it would be ++for performance. ++.TP ++.B \fB\-\-deband\-iterations=<1..16>\fP ++The number of debanding steps to perform per sample. Each step reduces a ++bit more banding, but takes time to compute. Note that the strength of each ++step falls off very quickly, so high numbers (>4) are practically useless. ++(Default 1) ++.TP ++.B \fB\-\-deband\-threshold=<0..4096>\fP ++The debanding filter\(aqs cut\-off threshold. Higher numbers increase the ++debanding strength dramatically but progressively diminish image details. ++(Default 64) ++.TP ++.B \fB\-\-deband\-range=<1..64>\fP ++The debanding filter\(aqs initial radius. The radius increases linearly for ++each iteration. A higher radius will find more gradients, but a lower ++radius will smooth more aggressively. (Default 16) ++.sp ++If you increase the \fB\-\-deband\-iterations\fP, you should probably decrease ++this to compensate. ++.TP ++.B \fB\-\-deband\-grain=<0..4096>\fP ++Add some extra noise to the image. This significantly helps cover up ++remaining quantization artifacts. Higher numbers add more noise. (Default ++48) ++.TP ++.B \fB\-\-sigmoid\-upscaling\fP ++When upscaling, use a sigmoidal color transform to avoid emphasizing ++ringing artifacts. This also implies \fB\-\-linear\-scaling\fP\&. ++.TP ++.B \fB\-\-sigmoid\-center\fP ++The center of the sigmoid curve used for \fB\-\-sigmoid\-upscaling\fP, must be a ++float between 0.0 and 1.0. Defaults to 0.75 if not specified. ++.TP ++.B \fB\-\-sigmoid\-slope\fP ++The slope of the sigmoid curve used for \fB\-\-sigmoid\-upscaling\fP, must be a ++float between 1.0 and 20.0. Defaults to 6.5 if not specified. ++.TP ++.B \fB\-\-sharpen=<value>\fP ++If set to a value other than 0, enable an unsharp masking filter. Positive ++values will sharpen the image (but add more ringing and aliasing). Negative ++values will blur the image. If your GPU is powerful enough, consider ++alternatives like the \fBewa_lanczossharp\fP scale filter, or the ++\fB\-\-scale\-blur\fP option. ++.TP ++.B \fB\-\-opengl\-glfinish\fP ++Call \fBglFinish()\fP before and after swapping buffers (default: disabled). ++Slower, but might improve results when doing framedropping. Can completely ++ruin performance. The details depend entirely on the OpenGL driver. ++.TP ++.B \fB\-\-opengl\-waitvsync\fP ++Call \fBglXWaitVideoSyncSGI\fP after each buffer swap (default: disabled). ++This may or may not help with video timing accuracy and frame drop. It\(aqs ++possible that this makes video output slower, or has no effect at all. ++.sp ++X11/GLX only. ++.TP ++.B \fB\-\-opengl\-vsync\-fences=<N>\fP ++Synchronize the CPU to the Nth past frame using the \fBGL_ARB_sync\fP ++extension. A value of 0 disables this behavior (default). A value of 1 ++means it will synchronize to the current frame after rendering it. Like ++\fB\-\-glfinish\fP and \fB\-\-waitvsync\fP, this can lower or ruin performance. Its ++advantage is that it can span multiple frames, and effectively limit the ++number of frames the GPU queues ahead (which also has an influence on ++vsync). ++.TP ++.B \fB\-\-opengl\-dwmflush=<no|windowed|yes|auto>\fP ++Calls \fBDwmFlush\fP after swapping buffers on Windows (default: auto). It ++also sets \fBSwapInterval(0)\fP to ignore the OpenGL timing. Values are: no ++(disabled), windowed (only in windowed mode), yes (also in full screen). ++.sp ++The value \fBauto\fP will try to determine whether the compositor is active, ++and calls \fBDwmFlush\fP only if it seems to be. ++.sp ++This may help to get more consistent frame intervals, especially with ++high\-fps clips \- which might also reduce dropped frames. Typically, a value ++of \fBwindowed\fP should be enough, since full screen may bypass the DWM. ++.sp ++Windows only. ++.TP ++.B \fB\-\-opengl\-dcomposition=<yes|no>\fP ++Allows DirectComposition when using the ANGLE backend (default: yes). ++DirectComposition implies flip\-model presentation, which can improve ++rendering efficiency on Windows 8+ by avoiding a copy of the video frame. ++mpv uses it by default where possible, but it can cause poor behaviour with ++some drivers, such as a black screen or graphical corruption when leaving ++full\-screen mode. Use "no" to disable it. ++.sp ++Windows with ANGLE only. ++.TP ++.B \fB\-\-opengl\-sw\fP ++Continue even if a software renderer is detected. ++.TP ++.B \fB\-\-opengl\-backend=<sys>\fP ++The value \fBauto\fP (the default) selects the windowing backend. You can ++also pass \fBhelp\fP to get a complete list of compiled in backends (sorted ++by autoprobe order). ++.INDENT 7.0 ++.TP ++.B auto ++auto\-select (default) ++.TP ++.B cocoa ++Cocoa/OS X ++.TP ++.B win ++Win32/WGL ++.TP ++.B angle ++Direct3D11 through the OpenGL ES translation layer ANGLE. This supports ++almost everything the \fBwin\fP backend does (if the ANGLE build is new ++enough). ++.TP ++.B dxinterop (experimental) ++Win32, using WGL for rendering and Direct3D 9Ex for presentation. Works ++on Nvidia and AMD. Newer Intel chips with the latest drivers may also ++work. ++.TP ++.B x11 ++X11/GLX ++.TP ++.B wayland ++Wayland/EGL ++.TP ++.B drm ++DRM/EGL (\fBdrm\-egl\fP is a deprecated alias) ++.TP ++.B x11egl ++X11/EGL ++.TP ++.B mali\-fbdev ++Direct fbdev/EGL support on some ARM/MALI devices. ++.UNINDENT ++.TP ++.B \fB\-\-opengl\-es=<mode>\fP ++Select whether to use GLES: ++.INDENT 7.0 ++.TP ++.B yes ++Try to prefer ES over Desktop GL ++.TP ++.B no ++Try to prefer desktop GL over ES ++.TP ++.B auto ++Use the default for each backend (default) ++.UNINDENT ++.TP ++.B \fB\-\-opengl\-fbo\-format=<fmt>\fP ++Selects the internal format of textures used for FBOs. The format can ++influence performance and quality of the video output. \fBfmt\fP can be one ++of: rgb8, rgb10, rgb10_a2, rgb16, rgb16f, rgb32f, rgba12, rgba16, rgba16f, ++rgba32f. Default: \fBauto\fP, which maps to rgba16 on desktop GL, and rgba16f ++or rgb10_a2 on GLES (e.g. ANGLE), unless GL_EXT_texture_norm16 is ++available. ++.TP ++.B \fB\-\-opengl\-gamma=<0.1..2.0>\fP ++Set a gamma value (default: 1.0). If gamma is adjusted in other ways (like ++with the \fB\-\-gamma\fP option or key bindings and the \fBgamma\fP property), ++the value is multiplied with the other gamma value. ++.sp ++Recommended values based on the environmental brightness: ++.INDENT 7.0 ++.TP ++.B 1.0 ++Brightly illuminated (default) ++.TP ++.B 0.9 ++Slightly dim ++.TP ++.B 0.8 ++Pitch black room ++.UNINDENT ++.sp ++NOTE: Typical movie content (Blu\-ray etc.) already contains a gamma drop of ++about 0.8, so specifying it here as well will result in even darker ++image than intended! ++.TP ++.B \fB\-\-gamma\-auto\fP ++Automatically corrects the gamma value depending on ambient lighting ++conditions (adding a gamma boost for dark rooms). ++.sp ++With ambient illuminance of 64lux, mpv will pick the 1.0 gamma value (no ++boost), and slightly increase the boost up until 0.8 for 16lux. ++.sp ++NOTE: Only implemented on OS X. ++.TP ++.B \fB\-\-target\-prim=<value>\fP ++Specifies the primaries of the display. Video colors will be adapted to ++this colorspace when ICC color management is not being used. Valid values ++are: ++.INDENT 7.0 ++.TP ++.B auto ++Disable any adaptation (default) ++.TP ++.B bt.470m ++ITU\-R BT.470 M ++.TP ++.B bt.601\-525 ++ITU\-R BT.601 (525\-line SD systems, eg. NTSC), SMPTE 170M/240M ++.TP ++.B bt.601\-625 ++ITU\-R BT.601 (625\-line SD systems, eg. PAL/SECAM), ITU\-R BT.470 B/G ++.TP ++.B bt.709 ++ITU\-R BT.709 (HD), IEC 61966\-2\-4 (sRGB), SMPTE RP177 Annex B ++.TP ++.B bt.2020 ++ITU\-R BT.2020 (UHD) ++.TP ++.B apple ++Apple RGB ++.TP ++.B adobe ++Adobe RGB (1998) ++.TP ++.B prophoto ++ProPhoto RGB (ROMM) ++.TP ++.B cie1931 ++CIE 1931 RGB (not to be confused with CIE XYZ) ++.TP ++.B dci\-p3 ++DCI\-P3 (Digital Cinema Colorspace), SMPTE RP431\-2 ++.TP ++.B v\-gamut ++Panasonic V\-Gamut (VARICAM) primaries ++.UNINDENT ++.TP ++.B \fB\-\-target\-trc=<value>\fP ++Specifies the transfer characteristics (gamma) of the display. Video colors ++will be adjusted to this curve when ICC color management is not being used. ++Valid values are: ++.INDENT 7.0 ++.TP ++.B auto ++Disable any adaptation (default) ++.TP ++.B bt.1886 ++ITU\-R BT.1886 curve (assuming infinite contrast) ++.TP ++.B srgb ++IEC 61966\-2\-4 (sRGB) ++.TP ++.B linear ++Linear light output ++.TP ++.B gamma1.8 ++Pure power curve (gamma 1.8), also used for Apple RGB ++.TP ++.B gamma2.2 ++Pure power curve (gamma 2.2) ++.TP ++.B gamma2.8 ++Pure power curve (gamma 2.8), also used for BT.470\-BG ++.TP ++.B prophoto ++ProPhoto RGB (ROMM) ++.TP ++.B st2084 ++SMPTE ST2084 (HDR) curve, PQ OETF ++.TP ++.B std\-b67 ++ARIB STD\-B67 (Hybrid Log\-gamma) curve, also known as BBC/NHK HDR ++.TP ++.B v\-log ++Panasonic V\-Log (VARICAM) curve ++.UNINDENT ++.sp ++\fBNOTE:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++When using HDR output formats, mpv will encode to the specified ++curve but it will not set any HDMI flags or other signalling that might ++be required for the target device to correctly display the HDR signal. ++The user should independently guarantee this before using these signal ++formats for display. ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-target\-brightness=<1..100000>\fP ++Specifies the display\(aqs approximate brightness in cd/m^2. When playing HDR ++content on a SDR display (or SDR content on an HDR display), video colors ++will be tone mapped to this target brightness using the algorithm specified ++by \fB\-\-hdr\-tone\-mapping\fP\&. The default of 250 cd/m^2 corresponds to a ++typical consumer display. ++.TP ++.B \fB\-\-hdr\-tone\-mapping=<value>\fP ++Specifies the algorithm used for tone\-mapping HDR images onto the target ++display. Valid values are: ++.INDENT 7.0 ++.TP ++.B clip ++Hard\-clip any out\-of\-range values. ++.TP ++.B reinhard ++Reinhard tone mapping algorithm. Very simple continuous curve. ++Preserves dynamic range and peak but uses nonlinear contrast. ++.TP ++.B hable ++Similar to \fBreinhard\fP but preserves dark contrast better (slightly ++sigmoidal). Developed by John Hable for use in video games. (default) ++.TP ++.B gamma ++Fits a logarithmic transfer between the tone curves. ++.TP ++.B linear ++Linearly stretches the entire reference gamut to (a linear multiple of) ++the display. ++.UNINDENT ++.TP ++.B \fB\-\-tone\-mapping\-param=<value>\fP ++Set tone mapping parameters. Ignored if the tone mapping algorithm is not ++tunable. This affects the following tone mapping algorithms: ++.INDENT 7.0 ++.TP ++.B reinhard ++Specifies the local contrast coefficient at the display peak. Defaults ++to 0.5, which means that in\-gamut values will be about half as bright ++as when clipping. ++.TP ++.B gamma ++Specifies the exponent of the function. Defaults to 1.8. ++.TP ++.B linear ++Specifies the scale factor to use while stretching. Defaults to 1.0. ++.UNINDENT ++.TP ++.B \fB\-\-icc\-profile=<file>\fP ++Load an ICC profile and use it to transform video RGB to screen output. ++Needs LittleCMS 2 support compiled in. This option overrides the ++\fB\-\-target\-prim\fP, \fB\-\-target\-trc\fP and \fB\-\-icc\-profile\-auto\fP options. ++.TP ++.B \fB\-\-icc\-profile\-auto\fP ++Automatically select the ICC display profile currently specified by the ++display settings of the operating system. ++.sp ++NOTE: On Windows, the default profile must be an ICC profile. WCS profiles ++are not supported. ++.TP ++.B \fB\-\-icc\-cache\-dir=<dirname>\fP ++Store and load the 3D LUTs created from the ICC profile in this directory. ++This can be used to speed up loading, since LittleCMS 2 can take a while to ++create a 3D LUT. Note that these files contain uncompressed LUTs. Their ++size depends on the \fB\-\-icc\-3dlut\-size\fP, and can be very big. ++.sp ++NOTE: This is not cleaned automatically, so old, unused cache files may ++stick around indefinitely. ++.TP ++.B \fB\-\-icc\-intent=<value>\fP ++Specifies the ICC intent used for the color transformation (when using ++\fB\-\-icc\-profile\fP). ++.INDENT 7.0 ++.TP ++.B 0 ++perceptual ++.TP ++.B 1 ++relative colorimetric (default) ++.TP ++.B 2 ++saturation ++.TP ++.B 3 ++absolute colorimetric ++.UNINDENT ++.TP ++.B \fB\-\-icc\-3dlut\-size=<r>x<g>x<b>\fP ++Size of the 3D LUT generated from the ICC profile in each dimension. ++Default is 64x64x64. Sizes may range from 2 to 512. ++.TP ++.B \fB\-\-icc\-contrast=<0\-100000>\fP ++Specifies an upper limit on the target device\(aqs contrast ratio. This is ++detected automatically from the profile if possible, but for some profiles ++it might be missing, causing the contrast to be assumed as infinite. As a ++result, video may appear darker than intended. This only affects BT.1886 ++content. The default of 0 means no limit. ++.TP ++.B \fB\-\-blend\-subtitles=<yes|video|no>\fP ++Blend subtitles directly onto upscaled video frames, before interpolation ++and/or color management (default: no). Enabling this causes subtitles to be ++affected by \fB\-\-icc\-profile\fP, \fB\-\-target\-prim\fP, \fB\-\-target\-trc\fP, ++\fB\-\-interpolation\fP, \fB\-\-opengl\-gamma\fP and \fB\-\-post\-shader\fP\&. It also ++increases subtitle performance when using \fB\-\-interpolation\fP\&. ++.sp ++The downside of enabling this is that it restricts subtitles to the visible ++portion of the video, so you can\(aqt have subtitles exist in the black ++margins below a video (for example). ++.sp ++If \fBvideo\fP is selected, the behavior is similar to \fByes\fP, but subs are ++drawn at the video\(aqs native resolution, and scaled along with the video. ++.sp ++\fBWARNING:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++This changes the way subtitle colors are handled. Normally, ++subtitle colors are assumed to be in sRGB and color managed as ++such. Enabling this makes them treated as being in the video\(aqs ++color space instead. This is good if you want things like ++softsubbed ASS signs to match the video colors, but may cause ++SRT subtitles or similar to look slightly off. ++.UNINDENT ++.UNINDENT ++.TP ++.B \fB\-\-alpha=<blend\-tiles|blend|yes|no>\fP ++Decides what to do if the input has an alpha component. ++.INDENT 7.0 ++.TP ++.B blend\-tiles ++Blend the frame against a 16x16 gray/white tiles background (default). ++.TP ++.B blend ++Blend the frame against a black background. ++.TP ++.B yes ++Try to create a framebuffer with alpha component. This only makes sense ++if the video contains alpha information (which is extremely rare). May ++not be supported on all platforms. If alpha framebuffers are ++unavailable, it silently falls back on a normal framebuffer. Note that ++if you set the \fB\-\-opengl\-fbo\-format\fP option to a non\-default value, a ++format with alpha must be specified, or this won\(aqt work. ++.TP ++.B no ++Ignore alpha component. ++.UNINDENT ++.TP ++.B \fB\-\-opengl\-rectangle\-textures\fP ++Force use of rectangle textures (default: no). Normally this shouldn\(aqt have ++any advantages over normal textures. Note that hardware decoding overrides ++this flag. Could be removed any time. ++.TP ++.B \fB\-\-background=<color>\fP ++Color used to draw parts of the mpv window not covered by video. See ++\fB\-\-osd\-color\fP option how colors are defined. ++.TP ++.B \fB\-\-opengl\-tex\-pad\-x\fP, \fB\-\-opengl\-tex\-pad\-y\fP ++Enlarge the video source textures by this many pixels. For debugging only ++(normally textures are sized exactly, but due to hardware decoding interop ++we may have to deal with additional padding, which can be tested with these ++options). Could be removed any time. ++.TP ++.B \fB\-\-opengl\-early\-flush=<yes|no>\fP ++Call \fBglFlush()\fP after rendering a frame and before attempting to display ++it (default: no). Can fix stuttering in some cases, in other cases probably ++causes it. For testing \- could be removed any time. ++.UNINDENT +.SS Miscellaneous +.INDENT 0.0 +.TP @@ -5432,19 +6632,18 @@ index 0000000..fadcd48 +syntax is: +.INDENT 0.0 +.TP -+.B \fB\-\-ao=<driver1[:suboption1[=value]:...],driver2,...[,]>\fP ++.B \fB\-\-ao=<driver1,driver2,...[,]>\fP +Specify a priority list of audio output drivers to be used. +.UNINDENT +.sp +If the list has a trailing \(aq,\(aq, mpv will fall back on drivers not contained -+in the list. Suboptions are optional and can mostly be omitted. -+.sp -+You can also set defaults for each driver. The defaults are applied before the -+normal driver parameters. ++in the list. +.INDENT 0.0 +.TP +.B \fB\-\-ao\-defaults=<driver1[:parameter1:parameter2:...],driver2,...>\fP +Set defaults for each driver. ++.sp ++Deprecated. No replacement. +.UNINDENT +.sp +\fBNOTE:\fP @@ -5456,110 +6655,22 @@ index 0000000..fadcd48 +may work (the latter being experimental). +.UNINDENT +.UNINDENT -+.INDENT 0.0 -+.INDENT 3.5 -+.IP "Examples" -+.INDENT 0.0 -+.IP \(bu 2 -+\fB\-\-ao=alsa,oss,\fP Try the ALSA driver, then the OSS driver, then others. -+.IP \(bu 2 -+\fB\-\-ao=alsa:resample=yes:device=[plughw:0,3]\fP Lets ALSA resample and -+sets the device\-name as first card, fourth device. -+.UNINDENT -+.UNINDENT -+.UNINDENT +.sp +Available audio output drivers are: +.INDENT 0.0 +.TP +.B \fBalsa\fP (Linux only) +ALSA audio output driver -+.INDENT 7.0 -+.TP -+.B \fBdevice=<device>\fP -+Sets the device name. For ac3 output via S/PDIF, use an "iec958" or -+"spdif" device, unless you really know how to set it correctly. -+.TP -+.B \fBresample=yes\fP -+Enable ALSA resampling plugin. (This is disabled by default, because -+some drivers report incorrect audio delay in some cases.) -+.TP -+.B \fBmixer\-device=<device>\fP -+Set the mixer device used with \fB\-\-no\-softvol\fP (default: \fBdefault\fP). -+.TP -+.B \fBmixer\-name=<name>\fP -+Set the name of the mixer element (default: \fBMaster\fP). This is for -+example \fBPCM\fP or \fBMaster\fP\&. -+.TP -+.B \fBmixer\-index=<number>\fP -+Set the index of the mixer channel (default: 0). Consider the output of -+"\fBamixer scontrols\fP", then the index is the number that follows the -+name of the element. -+.TP -+.B \fBnon\-interleaved\fP -+Allow output of non\-interleaved formats (if the audio decoder uses -+this format). Currently disabled by default, because some popular -+ALSA plugins are utterly broken with non\-interleaved formats. -+.TP -+.B \fBignore\-chmap\fP -+Don\(aqt read or set the channel map of the ALSA device \- only request the -+required number of channels, and then pass the audio as\-is to it. This -+option most likely should not be used. It can be useful for debugging, -+or for static setups with a specially engineered ALSA configuration (in -+this case you should always force the same layout with \fB\-\-audio\-channels\fP, -+or it will work only for files which use the layout implicit to your -+ALSA device). -+.UNINDENT -+.sp -+\fBNOTE:\fP -+.INDENT 7.0 -+.INDENT 3.5 -+MPlayer and mplayer2 required you to replace any \(aq,\(aq with \(aq.\(aq and -+any \(aq:\(aq with \(aq=\(aq in the ALSA device name. mpv does not do this anymore. -+Instead, quote the device name: -+.INDENT 0.0 -+.INDENT 3.5 -+\fB\-\-ao=alsa:device=[plug:surround50]\fP -+.UNINDENT -+.UNINDENT +.sp -+Note that the \fB[\fP and \fB]\fP simply quote the device name. With some -+shells (like zsh), you have to quote the option string to prevent the -+shell from interpreting the brackets instead of passing them to mpv. -+.sp -+Actually, you should use the \fB\-\-audio\-device\fP option, instead of -+setting the device directly. -+.UNINDENT -+.UNINDENT ++See \fI\%ALSA audio output options\fP for options specific to this AO. +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 -+Handling of multichannel/surround audio changed in mpv 0.8.0 from the -+behavior in MPlayer/mplayer2 and older versions of mpv. -+.sp -+The old behavior is that the player always downmixed to stereo by -+default. The \fB\-\-audio\-channels\fP (or \fB\-\-channels\fP before that) option -+had to be set to get multichannel audio. Then playing stereo would -+use the \fBdefault\fP device (which typically allows multiple programs -+to play audio at the same time via dmix), while playing anything with -+more channels would open one of the hardware devices, e.g. via the -+\fBsurround51\fP alias (typically with exclusive access). Whether the -+player would use exclusive access or not would depend on the file -+being played. -+.sp -+The new behavior since mpv 0.8.0 always enables multichannel audio, -+i.e. \fB\-\-audio\-channels=auto\fP is the default. However, since ALSA -+provides no good way to play multichannel audio in a non\-exclusive -+way (without blocking other applications from using audio), the player -+is restricted to the capabilities of the \fBdefault\fP device by default, -+which means it supports only stereo and mono (at least with current -+typical ALSA configurations). But if a hardware device is selected, -+then multichannel audio will typically work. -+.sp -+The short story is: if you want multichannel audio with ALSA, use -+\fB\-\-audio\-device\fP to select the device (use \fB\-\-audio\-device=help\fP -+to get a list of all devices and their mpv name). ++To get multichannel/surround audio, use \fB\-\-audio\-channels=auto\fP\&. The ++default for this option is \fBauto\-safe\fP, which makes this audio otuput ++explicitly reject multichannel output, as there is no way to detect ++whether a certain channel layout is actually supported. +.sp +You can also try \fI\%using the upmix plugin\fP\&. +This setup enables multichannel audio on the \fBdefault\fP device @@ -5570,41 +6681,46 @@ index 0000000..fadcd48 +.TP +.B \fBoss\fP +OSS audio output driver ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fB<dsp\-device>\fP ++.B \fB\-\-oss\-device\fP +Sets the audio output device (default: \fB/dev/dsp\fP). ++Deprecated, use \fB\-\-audio\-device\fP\&. +.TP -+.B \fB<mixer\-device>\fP ++.B \fB\-\-oss\-mixer\-device\fP +Sets the audio mixer device (default: \fB/dev/mixer\fP). +.TP -+.B \fB<mixer\-channel>\fP ++.B \fB\-\-oss\-mixer\-channel\fP +Sets the audio mixer channel (default: \fBpcm\fP). Other valid values +include \fBvol, pcm, line\fP\&. For a complete list of options look for +\fBSOUND_DEVICE_NAMES\fP in \fB/usr/include/linux/soundcard.h\fP\&. +.UNINDENT +.TP +.B \fBjack\fP -+JACK (Jack Audio Connection Kit) audio output driver ++JACK (Jack Audio Connection Kit) audio output driver. ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBport=<name>\fP ++.B \fB\-\-jack\-port=<name>\fP +Connects to the ports with the given name (default: physical ports). +.TP -+.B \fBname=<client>\fP ++.B \fB\-\-jack\-name=<client>\fP +Client name that is passed to JACK (default: \fBmpv\fP). Useful +if you want to have certain connections established automatically. +.TP -+.B \fB(no\-)autostart\fP ++.B \fB\-\-jack\-autostart=<yes|no>\fP +Automatically start jackd if necessary (default: disabled). Note that +this tends to be unreliable and will flood stdout with server messages. +.TP -+.B \fB(no\-)connect\fP ++.B \fB\-\-jack\-connect=<yes|no>\fP +Automatically create connections to output ports (default: enabled). +When enabled, the maximum number of output channels will be limited to +the number of available output ports. +.TP -+.B \fBstd\-channel\-layout=waveext|any\fP ++.B \fB\-\-jack\-std\-channel\-layout=<waveext|any>\fP +Select the standard channel layout (default: waveext). JACK itself has no +notion of channel layouts (i.e. assigning which speaker a given +channel is supposed to map to) \- it just takes whatever the application @@ -5624,9 +6740,11 @@ index 0000000..fadcd48 +.sp +Automatically redirects to \fBcoreaudio_exclusive\fP when playing compressed +formats. ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBchange\-physical\-format=<yes|no>\fP ++.B \fB\-\-coreaudio\-change\-physical\-format=<yes|no>\fP +Change the physical format to one similar to the requested audio format +(default: no). This has the advantage that multichannel audio output +will actually work. The disadvantage is that it will change the @@ -5634,7 +6752,8 @@ index 0000000..fadcd48 +setting in the \fBAudio Devices\fP dialog in the \fBAudio MIDI Setup\fP +utility. Note that this does not affect the selected speaker setup. +.TP -+.B \fBexclusive\fP ++.B \fB\-\-coreaudio\-exclusive\fP ++Deprecated, use \fB\-\-audio\-exclusive\fP\&. +Use exclusive mode access. This merely redirects to +\fBcoreaudio_exclusive\fP, but should be preferred over using that AO +directly. @@ -5657,20 +6776,23 @@ index 0000000..fadcd48 +.TP +.B \fBpulse\fP +PulseAudio audio output driver ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fB[<host>][:<output sink>]\fP ++.B \fB\-\-pulse\-host=<host>\fP, \fB\-\-pulse\-sink=<sink>\fP +Specify the host and optionally output sink to use. An empty <host> +string uses a local connection, "localhost" uses network transfer +(most likely not what you want). ++Deprecated, use \fB\-\-audio\-device\fP\&. +.TP -+.B \fBbuffer=<1\-2000|native>\fP ++.B \fB\-\-pulse\-buffer=<1\-2000|native>\fP +Set the audio buffer size in milliseconds. A higher value buffers +more data, and has a lower probability of buffer underruns. A smaller +value makes the audio stream react faster, e.g. to playback speed +changes. Default: 250. +.TP -+.B \fBlatency\-hacks=<yes|no>\fP ++.B \fB\-\-pulse\-latency\-hacks=<yes|no>\fP +Enable hacks to workaround PulseAudio timing bugs (default: no). If +enabled, mpv will do elaborate latency calculations on its own. If +disabled, it will use PulseAudio automatically updated timing @@ -5695,69 +6817,75 @@ index 0000000..fadcd48 +are available. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBbuflen=<length>\fP ++.B \fB\-\-sdl\-buflen=<length>\fP +Sets the audio buffer length in seconds. Is used only as a hint by the +sound system. Playing a file with \fB\-v\fP will show the requested and +obtained exact buffer size. A value of 0 selects the sound system +default. +.TP -+.B \fBbufcnt=<count>\fP ++.B \fB\-\-sdl\-bufcnt=<count>\fP +Sets the number of extra audio buffers in mpv. Usually needs not be +changed. +.UNINDENT +.TP +.B \fBnull\fP -+Produces no audio output but maintains video playback speed. Use -+\fB\-\-ao=null:untimed\fP for benchmarking. ++Produces no audio output but maintains video playback speed. You can use ++\fB\-\-ao=null \-\-ao\-null\-untimed\fP for benchmarking. ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBuntimed\fP ++.B \fB\-\-ao\-null\-untimed\fP +Do not simulate timing of a perfect audio device. This means audio +decoding will go as fast as possible, instead of timing it to the +system clock. +.TP -+.B \fBbuffer\fP ++.B \fB\-\-ao\-null\-buffer\fP +Simulated buffer length in seconds. +.TP -+.B \fBoutburst\fP ++.B \fB\-\-ao\-null\-outburst\fP +Simulated chunk size in samples. +.TP -+.B \fBspeed\fP ++.B \fB\-\-ao\-null\-speed\fP +Simulated audio playback speed as a multiplier. Usually, a real audio +device will not go exactly as fast as the system clock. It will deviate +just a little, and this option helps to simulate this. +.TP -+.B \fBlatency\fP ++.B \fB\-\-ao\-null\-latency\fP +Simulated device latency. This is additional to EOF. +.TP -+.B \fBbroken\-eof\fP ++.B \fB\-\-ao\-null\-broken\-eof\fP +Simulate broken audio drivers, which always add the fixed device +latency to the reported audio playback position. +.TP -+.B \fBbroken\-delay\fP ++.B \fB\-\-ao\-null\-broken\-delay\fP +Simulate broken audio drivers, which don\(aqt report latency correctly. +.TP -+.B \fBchannel\-layouts\fP ++.B \fB\-\-ao\-null\-channel\-layouts\fP +If not empty, this is a \fB,\fP separated list of channel layouts the +AO allows. This can be used to test channel layout selection. +.UNINDENT +.TP +.B \fBpcm\fP +Raw PCM/WAVE file writer audio output ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fB(no\-)waveheader\fP ++.B \fB\-\-ao\-pcm\-waveheader=<yes|no>\fP +Include or do not include the WAVE header (default: included). When +not included, raw PCM will be generated. +.TP -+.B \fBfile=<filename>\fP ++.B \fB\-\-ao\-pcm\-file=<filename>\fP +Write the sound to \fB<filename>\fP instead of the default +\fBaudiodump.wav\fP\&. If \fBno\-waveheader\fP is specified, the default is +\fBaudiodump.pcm\fP\&. +.TP -+.B \fB(no\-)append\fP ++.B \fB\-\-ao\-pcm\-append=<yes|no>\fP +Append to the file, instead of overwriting it. Always use this with the +\fBno\-waveheader\fP option \- with \fBwaveheader\fP it\(aqs broken, because +it will write a WAVE header every time the file is opened. @@ -5774,17 +6902,22 @@ index 0000000..fadcd48 +different. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBhost=<name/path>\fP ++.B \fB\-\-rsound\-host=<name/path>\fP +Set the address of the server (default: localhost). Can be either a +network hostname for TCP connections or a Unix domain socket path +starting with \(aq/\(aq. +.TP -+.B \fBport=<number>\fP ++.B \fB\-\-rsound\-port=<number>\fP +Set the TCP port used for connecting to the server (default: 12345). +Not used if connecting to a Unix domain socket. +.UNINDENT ++.sp ++These options are deprecated. If anyone cares enough, their functionality ++can be added back using \fB\-\-audio\-device\fP\&. +.TP +.B \fBsndio\fP +Audio output to the OpenBSD sndio sound system @@ -5798,21 +6931,29 @@ index 0000000..fadcd48 +.sp +(Note: only supports mono, stereo, 4.0, 5.1 and 7.1 channel +layouts.) ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBdevice=<device>\fP ++.B \fB\-\-ao\-sndio\-device=<device>\fP +sndio device to use (default: \fB$AUDIODEVICE\fP, resp. \fBsnd0\fP). ++Deprecated, use \fB\-\-audio\-device\fP\&. +.UNINDENT +.TP +.B \fBwasapi\fP +Audio output to the Windows Audio Session API. ++.sp ++The following global options are supported by this audio output: +.INDENT 7.0 +.TP -+.B \fBexclusive\fP ++.B \fB\-\-ao\-wasapi\-exclusive\fP ++Deprecated, use \fB\-\-audio\-exclusive\fP\&. +Requests exclusive, direct hardware access. By definition prevents +sound playback of any other program until mpv exits. +.TP -+.B \fBdevice=<id>\fP ++.B \fB\-\-ao\-wasapi\-device=<id>\fP ++Deprecated, use \fB\-\-audio\-device\fP\&. ++.sp +Uses the requested endpoint instead of the system\(aqs default audio +endpoint. Both an ordinal number (0,1,2,...) and the GUID +String are valid; the GUID string is guaranteed to not change @@ -5820,11 +6961,6 @@ index 0000000..fadcd48 +.sp +Also supports searching active devices by human\-readable name. If more +than one device matches the name, refuses loading it. -+.sp -+This option is mostly deprecated in favour of the more general -+\fB\-\-audio\-device\fP option. That said, \fB\-\-audio\-device=help\fP will give -+a list of valid device GUIDs (prefixed with \fBwasapi/\fP), as well as -+their human readable names, which should work here. +.UNINDENT +.UNINDENT +.SH VIDEO OUTPUT DRIVERS @@ -5833,19 +6969,18 @@ index 0000000..fadcd48 +syntax is: +.INDENT 0.0 +.TP -+.B \fB\-\-vo=<driver1[:suboption1[=value]:...],driver2,...[,]>\fP ++.B \fB\-\-vo=<driver1,driver2,...[,]>\fP +Specify a priority list of video output drivers to be used. +.UNINDENT +.sp -+If the list has a trailing \(aq,\(aq, mpv will fall back on drivers not contained -+in the list. Suboptions are optional and can mostly be omitted. -+.sp -+You can also set defaults for each driver. The defaults are applied before the -+normal driver parameters. ++If the list has a trailing \fB,\fP, mpv will fall back on drivers not contained ++in the list. +.INDENT 0.0 +.TP +.B \fB\-\-vo\-defaults=<driver1[:parameter1:parameter2:...],driver2,...>\fP +Set defaults for each driver. ++.sp ++Deprecated. No replacement. +.UNINDENT +.sp +\fBNOTE:\fP @@ -5853,10 +6988,10 @@ index 0000000..fadcd48 +.INDENT 3.5 +See \fB\-\-vo=help\fP for a list of compiled\-in video output drivers. +.sp -+The recommended output driver is \fB\-\-vo=opengl\-hq\fP\&. All other drivers are -+for compatibility or special purposes. By default, \fB\-\-vo=opengl\fP is used, -+but if that appears not to work, it fallback to other drivers (in the same -+order as listed by \fB\-\-vo=help\fP). ++The recommended output driver is \fB\-\-vo=opengl\fP, which is the default. All ++other drivers are for compatibility or special purposes. If the default ++does not work, it will fallback to other drivers (in the same order as ++listed by \fB\-\-vo=help\fP). +.UNINDENT +.UNINDENT +.sp @@ -5874,15 +7009,17 @@ index 0000000..fadcd48 +This driver is for compatibility with old systems. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBadaptor=<number>\fP ++.B \fB\-\-xv\-adaptor=<number>\fP +Select a specific XVideo adapter (check xvinfo results). +.TP -+.B \fBport=<number>\fP ++.B \fB\-\-xv\-port=<number>\fP +Select a specific XVideo port. +.TP -+.B \fBck=<cur|use|set>\fP ++.B \fB\-\-xv\-ck=<cur|use|set>\fP +Select the source from which the color key is taken (default: cur). +.INDENT 7.0 +.TP @@ -5897,10 +7034,13 @@ index 0000000..fadcd48 +Same as use but also sets the supplied color key. +.UNINDENT +.TP -+.B \fBck\-method=<man|bg|auto>\fP ++.B \fB\-\-xv\-ck\-method=<none|man|bg|auto>\fP +Sets the color key drawing method (default: man). +.INDENT 7.0 +.TP ++.B none ++Disables color\-keying. ++.TP +.B man +Draw the color key manually (reduces flicker in some cases). +.TP @@ -5911,14 +7051,11 @@ index 0000000..fadcd48 +Let Xv draw the color key. +.UNINDENT +.TP -+.B \fBcolorkey=<number>\fP ++.B \fB\-\-xv\-colorkey=<number>\fP +Changes the color key to an RGB value of your choice. \fB0x000000\fP is +black and \fB0xffffff\fP is white. +.TP -+.B \fBno\-colorkey\fP -+Disables color\-keying. -+.TP -+.B \fBbuffers=<number>\fP ++.B \fB\-\-xv\-buffers=<number>\fP +Number of image buffers to use for the internal ringbuffer (default: 2). +Increasing this will use more memory, but might help with the X server +not responding quickly enough if video FPS is close to or higher than @@ -5949,21 +7086,23 @@ index 0000000..fadcd48 +deprecated, and you should use the \fBvdpaupp\fP video filter instead. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBsharpen=<\-1\-1>\fP ++.B \fB\-\-vo\-vdpau\-sharpen=<\-1\-1>\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.sp +For positive values, apply a sharpening algorithm to the video, for +negative values a blurring algorithm (default: 0). +.TP -+.B \fBdenoise=<0\-1>\fP ++.B \fB\-\-vo\-vdpau\-denoise=<0\-1>\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.sp +Apply a noise reduction algorithm to the video (default: 0; no noise +reduction). +.TP -+.B \fBdeint=<\-4\-4>\fP ++.B \fB\-\-vo\-vdpau\-deint=<\-4\-4>\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.sp +Select deinterlacing mode (default: 0). In older versions (as well as @@ -5993,20 +7132,20 @@ index 0000000..fadcd48 +interpolation. Needs fast video hardware. +.UNINDENT +.TP -+.B \fBchroma\-deint\fP ++.B \fB\-\-vo\-vdpau\-chroma\-deint\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.sp +Makes temporal deinterlacers operate both on luma and chroma (default). +Use no\-chroma\-deint to solely use luma and speed up advanced +deinterlacing. Useful with slow video memory. +.TP -+.B \fBpullup\fP ++.B \fB\-\-vo\-vdpau\-pullup\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.sp +Try to apply inverse telecine, needs motion adaptive temporal +deinterlacing. +.TP -+.B \fBhqscaling=<0\-9>\fP ++.B \fB\-\-vo\-vdpau\-hqscaling=<0\-9>\fP +(Deprecated. See note about \fBvdpaupp\fP\&.) +.INDENT 7.0 +.TP @@ -6017,7 +7156,7 @@ index 0000000..fadcd48 +Apply high quality VDPAU scaling (needs capable hardware). +.UNINDENT +.TP -+.B \fBfps=<number>\fP ++.B \fB\-\-vo\-vdpau\-fps=<number>\fP +Override autodetected display refresh rate value (the value is needed +for framedrop to allow video playback rates higher than display +refresh rate, and for vsync\-aware frame timing adjustments). Default 0 @@ -6025,7 +7164,7 @@ index 0000000..fadcd48 +refresh rate in Hz and overrides the autodetected value. A negative +value disables all timing adjustment and framedrop logic. +.TP -+.B \fBcomposite\-detect\fP ++.B \fB\-\-vo\-vdpau\-composite\-detect\fP +NVIDIA\(aqs current VDPAU implementation behaves somewhat differently +under a compositing window manager and does not give accurate frame +timing information. With this option enabled, the player tries to @@ -6037,23 +7176,23 @@ index 0000000..fadcd48 +hard playback speed limit even without the disabled logic. Enabled by +default, use \fBno\-composite\-detect\fP to disable. +.TP -+.B \fBqueuetime_windowed=<number>\fP and \fBqueuetime_fs=<number>\fP ++.B \fB\-\-vo\-vdpau\-queuetime\-windowed=<number>\fP and \fBqueuetime\-fs=<number>\fP +Use VDPAU\(aqs presentation queue functionality to queue future video +frame changes at most this many milliseconds in advance (default: 50). +See below for additional information. +.TP -+.B \fBoutput_surfaces=<2\-15>\fP ++.B \fB\-\-vo\-vdpau\-output\-surfaces=<2\-15>\fP +Allocate this many output surfaces to display video frames (default: +3). See below for additional information. +.TP -+.B \fBcolorkey=<#RRGGBB|#AARRGGBB>\fP ++.B \fB\-\-vo\-vdpau\-colorkey=<#RRGGBB|#AARRGGBB>\fP +Set the VDPAU presentation queue background color, which in practice +is the colorkey used if VDPAU operates in overlay mode (default: +\fB#020507\fP, some shade of black). If the alpha component of this value +is 0, the default VDPAU colorkey will be used instead (which is usually +green). +.TP -+.B \fBforce\-yuv\fP ++.B \fB\-\-vo\-vdpau\-force\-yuv\fP +Never accept RGBA input. This means mpv will insert a filter to convert +to a YUV format before the VO. Sometimes useful to force availability +of certain YUV\-only features, like video equalizer or deinterlacing. @@ -6081,37 +7220,51 @@ index 0000000..fadcd48 +driver implementation may also have limits on the length of maximum +queuing time or number of queued surfaces that work well or at all. +.TP -+.B \fBdirect3d_shaders\fP (Windows only) ++.B \fBdirect3d\fP (Windows only) +Video output driver that uses the Direct3D interface. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This driver is for compatibility with systems that don\(aqt provide -+proper OpenGL drivers. ++proper OpenGL drivers, and where ANGLE does not perform well. ++.UNINDENT ++.UNINDENT ++.sp ++\fBNOTE:\fP ++.INDENT 7.0 ++.INDENT 3.5 ++Before to 0.21.0, \fBdirect3d_shaders\fP and \fBdirect3d\fP were ++different, with \fBdirect3d\fP not using shader by default. Now ++both use shaders by default, and \fBdirect3d_shaders\fP is a ++deprecated alias. Use the \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP ++or the \fB\-\-vo\-direct3d\-disable\-shaders\fP options to get the old ++behavior of \fBdirect3d\fP\&. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBprefer\-stretchrect\fP ++.B \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP +Use \fBIDirect3DDevice9::StretchRect\fP over other methods if possible. +.TP -+.B \fBdisable\-stretchrect\fP ++.B \fB\-\-vo\-direct3d\-disable\-stretchrect\fP +Never render the video using \fBIDirect3DDevice9::StretchRect\fP\&. +.TP -+.B \fBdisable\-textures\fP ++.B \fB\-\-vo\-direct3d\-disable\-textures\fP +Never render the video using D3D texture rendering. Rendering with +textures + shader will still be allowed. Add \fBdisable\-shaders\fP to +completely disable video rendering with textures. +.TP -+.B \fBdisable\-shaders\fP ++.B \fB\-\-vo\-direct3d\-disable\-shaders\fP +Never use shaders when rendering video. +.TP -+.B \fBonly\-8bit\fP ++.B \fB\-\-vo\-direct3d\-only\-8bit\fP +Never render YUV video with more than 8 bits per component. +Using this flag will force software conversion to 8\-bit. +.TP -+.B \fBdisable\-texture\-align\fP ++.B \fB\-\-vo\-direct3d\-disable\-texture\-align\fP +Normally texture sizes are always aligned to 16. With this option +enabled, the video texture will always have exactly the same size as +the video itself. @@ -6122,11 +7275,11 @@ index 0000000..fadcd48 +actually need any of these for performance or proper operation. +.INDENT 7.0 +.TP -+.B \fBforce\-power\-of\-2\fP ++.B \fB\-\-vo\-direct3d\-force\-power\-of\-2\fP +Always force textures to power of 2, even if the device reports +non\-power\-of\-2 texture sizes as supported. +.TP -+.B \fBtexture\-memory=<mode>\fP ++.B \fB\-\-vo\-direct3d\-texture\-memory=<mode>\fP +Only affects operation with shaders/texturing enabled, and (E)OSD. +Possible values: +.INDENT 7.0 @@ -6152,32 +7305,25 @@ index 0000000..fadcd48 +locking. +.UNINDENT +.TP -+.B \fBswap\-discard\fP ++.B \fB\-\-vo\-direct3d\-swap\-discard\fP +Use \fBD3DSWAPEFFECT_DISCARD\fP, which might be faster. +Might be slower too, as it must(?) clear every frame. +.TP -+.B \fBexact\-backbuffer\fP ++.B \fB\-\-vo\-direct3d\-exact\-backbuffer\fP +Always resize the backbuffer to window size. +.UNINDENT +.TP -+.B \fBdirect3d\fP (Windows only) -+Same as \fBdirect3d_shaders\fP, but with the options \fBdisable\-textures\fP -+and \fBdisable\-shaders\fP forced. -+.sp -+\fBNOTE:\fP -+.INDENT 7.0 -+.INDENT 3.5 -+This driver is for compatibility with old systems. -+.UNINDENT -+.UNINDENT -+.TP +.B \fBopengl\fP +OpenGL video output driver. It supports extended scaling methods, dithering +and color management. +.sp -+By default, it tries to use fast and fail\-safe settings. Use the alias -+\fBopengl\-hq\fP to use this driver with defaults set to high quality -+rendering. ++See \fI\%OpenGL renderer options\fP for options specific to this VO. ++.sp ++By default, it tries to use fast and fail\-safe settings. Use the ++\fBopengl\-hq\fP profile to use this driver with defaults set to high ++quality rendering. (This profile is also the replacement for ++\fB\-\-vo=opengl\-hq\fP\&.) The profile can be applied with \fB\-\-profile=opengl\-hq\fP ++and its contents can be viewed with \fB\-\-show\-profile=opengl\-hq\fP\&. +.sp +Requires at least OpenGL 2.1. +.sp @@ -6192,1050 +7338,12 @@ index 0000000..fadcd48 +the hardware decoder APIs. +.sp +\fBopengl\fP makes use of FBOs by default. Sometimes you can achieve better -+quality or performance by changing the \fBfbo\-format\fP suboption to ++quality or performance by changing the \fB\-\-opengl\-fbo\-format\fP option to +\fBrgb16f\fP, \fBrgb32f\fP or \fBrgb\fP\&. Known problems include Mesa/Intel not +accepting \fBrgb16\fP, Mesa sometimes not being compiled with float texture +support, and some OS X setups being very slow with \fBrgb16\fP but fast -+with \fBrgb32f\fP\&. If you have problems, you can also try passing the -+\fBdumb\-mode=yes\fP sub\-option. -+.INDENT 7.0 -+.TP -+.B \fBdumb\-mode=<yes|no>\fP -+This mode is extremely restricted, and will disable most extended -+OpenGL features. This includes high quality scalers and custom -+shaders! -+.sp -+It is intended for hardware that does not support FBOs (including GLES, -+which supports it insufficiently), or to get some more performance out -+of bad or old hardware. -+.sp -+This mode is forced automatically if needed, and this option is mostly -+useful for debugging. It\(aqs also enabled automatically if nothing uses -+features which require FBOs. -+.sp -+This option might be silently removed in the future. -+.UNINDENT -+.sp -+\fBscale=<filter>\fP -+.INDENT 7.0 -+.INDENT 3.5 -+.INDENT 0.0 -+.TP -+.B \fBbilinear\fP -+Bilinear hardware texture filtering (fastest, very low quality). -+This is the default for compatibility reasons. -+.TP -+.B \fBspline36\fP -+Mid quality and speed. This is the default when using \fBopengl\-hq\fP\&. -+.TP -+.B \fBlanczos\fP -+Lanczos scaling. Provides mid quality and speed. Generally worse -+than \fBspline36\fP, but it results in a slightly sharper image -+which is good for some content types. The number of taps can be -+controlled with \fBscale\-radius\fP, but is best left unchanged. -+.sp -+This filter corresponds to the old \fBlanczos3\fP alias if the default -+radius is used, while \fBlanczos2\fP corresponds to a radius of 2. -+.sp -+(This filter is an alias for \fBsinc\fP\-windowed \fBsinc\fP) -+.TP -+.B \fBewa_lanczos\fP -+Elliptic weighted average Lanczos scaling. Also known as Jinc. -+Relatively slow, but very good quality. The radius can be -+controlled with \fBscale\-radius\fP\&. Increasing the radius makes the -+filter sharper but adds more ringing. -+.sp -+(This filter is an alias for \fBjinc\fP\-windowed \fBjinc\fP) -+.TP -+.B \fBewa_lanczossharp\fP -+A slightly sharpened version of ewa_lanczos, preconfigured to use -+an ideal radius and parameter. If your hardware can run it, this is -+probably what you should use by default. -+.TP -+.B \fBmitchell\fP -+Mitchell\-Netravali. The \fBB\fP and \fBC\fP parameters can be set with -+\fBscale\-param1\fP and \fBscale\-param2\fP\&. This filter is very good at -+downscaling (see \fBdscale\fP). -+.TP -+.B \fBoversample\fP -+A version of nearest neighbour that (naively) oversamples pixels, -+so that pixels overlapping edges get linearly interpolated instead -+of rounded. This essentially removes the small imperfections and -+judder artifacts caused by nearest\-neighbour interpolation, in -+exchange for adding some blur. This filter is good at temporal -+interpolation, and also known as "smoothmotion" (see \fBtscale\fP). -+.TP -+.B \fBlinear\fP -+A \fBtscale\fP filter. -+.TP -+.B \fBcustom\fP -+A user\-defined custom shader (see \fBscale\-shader\fP). -+.UNINDENT -+.sp -+There are some more filters, but most are not as useful. For a complete -+list, pass \fBhelp\fP as value, e.g.: -+.INDENT 0.0 -+.INDENT 3.5 -+.sp -+.nf -+.ft C -+mpv \-\-vo=opengl:scale=help -+.ft P -+.fi -+.UNINDENT -+.UNINDENT -+.UNINDENT -+.UNINDENT -+.INDENT 7.0 -+.TP -+.B \fBscale\-param1=<value>\fP, \fBscale\-param2=<value>\fP -+Set filter parameters. Ignored if the filter is not tunable. -+Currently, this affects the following filter parameters: -+.INDENT 7.0 -+.TP -+.B bcspline -+Spline parameters (\fBB\fP and \fBC\fP). Defaults to 0.5 for both. -+.TP -+.B gaussian -+Scale parameter (\fBt\fP). Increasing this makes the result blurrier. -+Defaults to 1. -+.TP -+.B oversample -+Minimum distance to an edge before interpolation is used. Setting -+this to 0 will always interpolate edges, whereas setting it to 0.5 -+will never interpolate, thus behaving as if the regular nearest -+neighbour algorithm was used. Defaults to 0.0. -+.UNINDENT -+.TP -+.B \fBscale\-blur=<value>\fP -+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\(aqs preferred blur factor is used. Note that -+setting this too low (eg. 0.5) leads to bad results. It\(aqs generally -+recommended to stick to values between 0.8 and 1.2. -+.TP -+.B \fBscale\-radius=<value>\fP -+Set radius for filters listed below, must be a float number between 0.5 -+and 16.0. Defaults to the filter\(aqs preferred radius if not specified. -+.INDENT 7.0 -+.INDENT 3.5 -+\fBsinc\fP and derivatives, \fBjinc\fP and derivatives, \fBgaussian\fP, \fBbox\fP and \fBtriangle\fP -+.UNINDENT -+.UNINDENT -+.sp -+Note that depending on filter implementation details and video scaling -+ratio, the radius that actually being used might be different -+(most likely being increased a bit). -+.TP -+.B \fBscale\-antiring=<value>\fP -+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. -+.sp -+Note that this doesn\(aqt affect the special filters \fBbilinear\fP and -+\fBbicubic_fast\fP\&. -+.TP -+.B \fBscale\-window=<window>\fP -+(Advanced users only) Choose a custom windowing function for the kernel. -+Defaults to the filter\(aqs preferred window if unset. Use -+\fBscale\-window=help\fP to get a list of supported windowing functions. -+.TP -+.B \fBscale\-wparam=<window>\fP -+(Advanced users only) Configure the parameter for the window function -+given by \fBscale\-window\fP\&. Ignored if the window is not tunable. -+Currently, this affects the following window parameters: -+.INDENT 7.0 -+.TP -+.B kaiser -+Window parameter (alpha). Defaults to 6.33. -+.TP -+.B blackman -+Window parameter (alpha). Defaults to 0.16. -+.TP -+.B gaussian -+Scale parameter (t). Increasing this makes the window wider. -+Defaults to 1. -+.UNINDENT -+.TP -+.B \fBscaler\-lut\-size=<4..10>\fP -+Set the size of the lookup texture for scaler kernels (default: 6). -+The actual size of the texture is \fB2^N\fP for an option value of \fBN\fP\&. -+So the lookup texture with the default setting uses 64 samples. -+.sp -+All weights are bilinearly interpolated from those samples, so -+increasing the size of lookup table might improve the accuracy of -+scaler. -+.TP -+.B \fBscaler\-resizes\-only\fP -+Disable the scaler if the video image is not resized. In that case, -+\fBbilinear\fP is used instead whatever is set with \fBscale\fP\&. Bilinear -+will reproduce the source image perfectly if no scaling is performed. -+Enabled by default. Note that this option never affects \fBcscale\fP\&. -+.TP -+.B \fBpbo\fP -+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 might be slower or cause latency issues. -+.sp -+In theory, this can sometimes lead to sporadic and temporary image -+corruption (because reupload is not retried when it fails). -+.TP -+.B \fBdither\-depth=<N|no|auto>\fP -+Set dither target depth to N. Default: no. -+.INDENT 7.0 -+.TP -+.B no -+Disable any dithering done by mpv. -+.TP -+.B auto -+Automatic selection. If output bit depth cannot be detected, -+8 bits per component are assumed. -+.TP -+.B 8 -+Dither to 8 bit output. -+.UNINDENT -+.sp -+Note that the depth of the connected video display device cannot be -+detected. Often, LCD panels will do dithering on their own, which -+conflicts with \fBopengl\fP\(aqs dithering and leads to ugly output. -+.TP -+.B \fBdither\-size\-fruit=<2\-8>\fP -+Set the size of the dither matrix (default: 6). The actual size of -+the matrix is \fB(2^N) x (2^N)\fP for an option value of \fBN\fP, so a -+value of 6 gives a size of 64x64. The matrix is generated at startup -+time, and a large matrix can take rather long to compute (seconds). -+.sp -+Used in \fBdither=fruit\fP mode only. -+.TP -+.B \fBdither=<fruit|ordered|no>\fP -+Select dithering algorithm (default: fruit). (Normally, the -+\fBdither\-depth\fP option controls whether dithering is enabled.) -+.TP -+.B \fBtemporal\-dither\fP -+Enable temporal dithering. (Only active if dithering is enabled in -+general.) This changes between 8 different dithering patterns on each -+frame by changing the orientation of the tiled dithering matrix. -+Unfortunately, this can lead to flicker on LCD displays, since these -+have a high reaction time. -+.TP -+.B \fBtemporal\-dither\-period=<1\-128>\fP -+Determines how often the dithering pattern is updated when -+\fBtemporal\-dither\fP is in use. 1 (the default) will update on every -+video frame, 2 on every other frame, etc. -+.TP -+.B \fBdebug\fP -+Check for OpenGL errors, i.e. call \fBglGetError()\fP\&. Also, request a -+debug OpenGL context (which does nothing with current graphics drivers -+as of this writing). -+.TP -+.B \fBinterpolation\fP -+Reduce stuttering caused by mismatches in the video fps and display -+refresh rate (also known as judder). -+.sp -+\fBWARNING:\fP -+.INDENT 7.0 -+.INDENT 3.5 -+This requires setting the \fB\-\-video\-sync\fP option to one -+of the \fBdisplay\-\fP modes, or it will be silently disabled. -+This was not required before mpv 0.14.0. -+.UNINDENT -+.UNINDENT -+.sp -+This essentially attempts to interpolate the missing frames by -+convoluting the video along the temporal axis. The filter used can be -+controlled using the \fBtscale\fP setting. -+.sp -+Note that this relies on vsync to work, see \fBswapinterval\fP for more -+information. -+.TP -+.B \fBswapinterval=<n>\fP -+Interval in displayed frames between two buffer swaps. -+1 is equivalent to enable VSYNC, 0 to disable VSYNC. Defaults to 1 if -+not specified. -+.sp -+Note that this depends on proper OpenGL vsync support. On some platforms -+and drivers, this only works reliably when in fullscreen mode. It may -+also require driver\-specific hacks if using multiple monitors, to -+ensure mpv syncs to the right one. Compositing window managers can -+also lead to bad results, as can missing or incorrect display FPS -+information (see \fB\-\-display\-fps\fP). -+.TP -+.B \fBdscale=<filter>\fP -+Like \fBscale\fP, but apply these filters on downscaling instead. If this -+option is unset, the filter implied by \fBscale\fP will be applied. -+.TP -+.B \fBcscale=<filter>\fP -+As \fBscale\fP, but for interpolating chroma information. If the image -+is not subsampled, this option is ignored entirely. -+.TP -+.B \fBtscale=<filter>\fP -+The filter used for interpolating the temporal axis (frames). This is -+only used if \fBinterpolation\fP is enabled. The only valid choices -+for \fBtscale\fP are separable convolution filters (use \fBtscale=help\fP -+to get a list). The default is \fBmitchell\fP\&. -+.sp -+Note that the maximum supported filter radius is currently 3, due to -+limitations in the number of video textures that can be loaded -+simultaneously. -+.TP -+.B \fBtscale\-clamp\fP -+Clamp the \fBtscale\fP filter kernel\(aqs 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. -+.TP -+.B \fBinterpolation\-threshold=<0..1,\-1>\fP -+Threshold below which frame ratio interpolation gets disabled (default: -+\fB0.0001\fP). This is calculated as \fBabs(disphz/vfps \- 1) < threshold\fP, -+where \fBvfps\fP is the speed\-adjusted display FPS, and \fBdisphz\fP the -+display refresh rate. -+.sp -+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. \fB\-\-video\-sync=display\-vdrop\fP, small -+deviations in the rate can disable interpolation and introduce a -+discontinuity every other minute. -+.sp -+Set this to \fB\-1\fP to disable this logic. -+.TP -+.B \fBdscale\-radius\fP, \fBcscale\-radius\fP, \fBtscale\-radius\fP, etc. -+Set filter parameters for \fBdscale\fP, \fBcscale\fP and \fBtscale\fP, -+respectively. -+.sp -+See the corresponding options for \fBscale\fP\&. -+.TP -+.B \fBlinear\-scaling\fP -+Scale in linear light. It should only be used with a \fBfbo\-format\fP -+that has at least 16 bit precision. -+.TP -+.B \fBcorrect\-downscaling\fP -+When using convolution based filters, extend the filter size -+when downscaling. Increases quality, but reduces performance while -+downscaling. -+.sp -+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. -+.TP -+.B \fBpre\-shaders=<files>\fP, \fBpost\-shaders=<files>\fP, \fBscale\-shader=<file>\fP -+Custom GLSL fragment shaders. -+.INDENT 7.0 -+.TP -+.B pre\-shaders (list) -+These get applied after conversion to RGB and before linearization -+and upscaling. Operates on non\-linear RGB (same as input). This is -+the best place to put things like sharpen filters. -+.TP -+.B scale\-shader -+This gets used instead of scale/cscale when those options are set -+to \fBcustom\fP\&. The colorspace it operates on depends on the values -+of \fBlinear\-scaling\fP and \fBsigmoid\-upscaling\fP, so no assumptions -+should be made here. -+.TP -+.B post\-shaders (list) -+These get applied after upscaling and subtitle blending (when -+\fBblend\-subtitles\fP is enabled), but before color management. -+Operates on linear RGB if \fBlinear\-scaling\fP is in effect, -+otherwise non\-linear RGB. This is the best place for colorspace -+transformations (eg. saturation mapping). -+.UNINDENT -+.sp -+These files must define a function with the following signature: -+.INDENT 7.0 -+.INDENT 3.5 -+.sp -+.nf -+.ft C -+vec4 sample_pixel(sampler2D tex, vec2 pos, vec2 tex_size) -+.ft P -+.fi -+.UNINDENT -+.UNINDENT -+.sp -+(If there is no string \fBsample_pixel\fP in the shader script, it will -+use \fBsample\fP instead. This is a compatibility hack for older shader -+scripts, and is deprecated.) -+.sp -+The meanings of the parameters are as follows: -+.INDENT 7.0 -+.TP -+.B sampler2D tex -+The source texture for the shader. -+.TP -+.B vec2 pos -+The position to be sampled, in coordinate space [0\-1]. -+.TP -+.B vec2 tex_size -+The size of the texture, in pixels. This may differ from image_size, -+eg. for subsampled content or for post\-shaders. -+.UNINDENT -+.sp -+In addition to these parameters, the following uniforms are also -+globally available: -+.INDENT 7.0 -+.TP -+.B float random -+A random number in the range [0\-1], different per frame. -+.TP -+.B int frame -+A simple count of frames rendered, increases by one per frame and -+never resets (regardless of seeks). -+.TP -+.B vec2 image_size -+The size in pixels of the input image. -+.TP -+.B vec2 target_size -+The size in pixels of the visible part of the scaled (and possibly -+cropped) image. -+.UNINDENT -+.sp -+For example, a shader that inverts the colors could look like this: -+.INDENT 7.0 -+.INDENT 3.5 -+.sp -+.nf -+.ft C -+vec4 sample(sampler2D tex, vec2 pos, vec2 tex_size) -+{ -+ vec4 color = texture(tex, pos); -+ return vec4(1.0 \- color.rgb, color.a); -+} -+.ft P -+.fi -+.UNINDENT -+.UNINDENT -+.TP -+.B \fBuser\-shaders=<files>\fP -+Custom GLSL hooks. These are similar to \fBpost\-shaders\fP etc., but more -+flexible: They can be injected at almost arbitrary points in the -+rendering pipeline, and access all previous intermediate textures. -+.INDENT 7.0 -+.INDENT 3.5 -+.IP "Warning" -+.sp -+The syntax is not stable yet and may change any time. -+.UNINDENT -+.UNINDENT -+.sp -+The general syntax of a user shader looks like this: -+.INDENT 7.0 -+.INDENT 3.5 -+.sp -+.nf -+.ft C -+//!METADATA ARGS... -+//!METADATA ARGS... -+ -+vec4 hook() { -+ ... -+ return something; -+} -+ -+//!METADATA ARGS... -+//!METADATA ARGS... -+ -+\&... -+.ft P -+.fi -+.UNINDENT -+.UNINDENT -+.sp -+Each block of metadata, along with the non\-metadata lines after it, -+defines a single pass. Each pass can set the following metadata: -+.INDENT 7.0 -+.TP -+.B HOOK <name> (required) -+The texture which to hook into. May occur multiple times within a -+metadata block, up to a predetermined limit. See below for a list -+of hookable textures. -+.TP -+.B BIND <name> -+Loads a texture and makes it available to the pass, and sets up -+macros to enable accessing it. See below for a list of set macros. -+By default, no textures are bound. The special name HOOKED can be -+used to refer to the texture that triggered this pass. -+.TP -+.B SAVE <name> -+Gives the name of the texture to save the result of this pass -+into. By default, this is set to the special name HOOKED which has -+the effect of overwriting the hooked texture. -+.TP -+.B WIDTH <szexpr>, HEIGHT <szexpr> -+Specifies the size of the resulting texture for this pass. -+\fBszexpr\fP refers to an expression in RPN (reverse polish -+notation), using the operators + \- * / > < !, floating point -+literals, and references to sizes of existing texture and OUTPUT -+(such as MAIN.width or CHROMA.height). By default, these are set to -+HOOKED.w and HOOKED.h, respectively. -+.TP -+.B WHEN <szexpr> -+Specifies a condition that needs to be true (non\-zero) for the -+shader stage to be evaluated. If it fails, it will silently be -+omitted. (Note that a shader stage like this which has a dependency -+on an optional hook point can still cause that hook point to be -+saved, which has some minor overhead) -+.TP -+.B OFFSET ox oy -+Indicates a pixel shift (offset) introduced by this pass. These -+pixel offsets will be accumulated and corrected during the -+next scaling pass (\fBcscale\fP or \fBscale\fP). The default values -+are 0 0 which correspond to no shift. Note that offsets are ignored -+when not overwriting the hooked texture. -+.TP -+.B COMPONENTS n -+Specifies how many components of this pass\(aqs output are relevant -+and should be stored in the texture, up to 4 (rgba). By default, -+this value is equal to the number of components in HOOKED. -+.UNINDENT -+.sp -+Each bound texture (via \fBBIND\fP) will make available the following -+definitions to that shader pass, where NAME is the name of the bound -+texture: -+.INDENT 7.0 -+.TP -+.B vec4 NAME_tex(vec2 pos) -+The sampling function to use to access the texture at a certain -+spot (in texture coordinate space, range [0,1]). This takes care -+of any necessary normalization conversions. -+.TP -+.B vec4 NAME_texOff(vec2 offset) -+Sample the texture at a certain offset in pixels. This works like -+NAME_tex but additionally takes care of necessary rotations, so -+that sampling at e.g. vec2(\-1,0) is always one pixel to the left. -+.TP -+.B vec2 NAME_pos -+The local texture coordinate of that texture, range [0,1]. -+.TP -+.B vec2 NAME_size -+The (rotated) size in pixels of the texture. -+.TP -+.B mat2 NAME_rot -+The rotation matrix associated with this texture. (Rotates -+pixel space to texture coordinates) -+.TP -+.B vec2 NAME_pt -+The (unrotated) size of a single pixel, range [0,1]. -+.TP -+.B sampler NAME_raw -+The raw bound texture itself. The use of this should be -+avoided unless absolutely necessary. -+.UNINDENT -+.sp -+In addition, the global uniforms described in \fBpost\-shaders\fP are -+also available. -+.sp -+Internally, vo_opengl may generate any number of the following -+textures. Whenever a texture is rendered and saved by vo_opengl, all of -+the passes that have hooked into it will run, in the order they were -+added by the user. This is a list of the legal hook points: -+.INDENT 7.0 -+.TP -+.B RGB, LUMA, CHROMA, ALPHA, XYZ (resizable) -+Source planes (raw). Which of these fire depends on the image -+format of the source. -+.TP -+.B CHROMA_SCALED, ALPHA_SCALED (fixed) -+Source planes (upscaled). These only fire on subsampled content. -+.TP -+.B NATIVE (resizable) -+The combined image, in the source colorspace, before conversion -+to RGB. -+.TP -+.B MAINPRESUB (resizable) -+The image, after conversion to RGB, but before -+\fBblend\-subtitles=video\fP is applied. -+.TP -+.B MAIN (resizable) -+The main image, after conversion to RGB but before upscaling. -+.TP -+.B LINEAR (fixed) -+Linear light image, before scaling. This only fires when -+\fBlinear\-scaling\fP is in effect. -+.TP -+.B SIGMOID (fixed) -+Sigmoidized light, before scaling. This only fires when -+\fBsigmoid\-upscaling\fP is in effect. -+.TP -+.B PREKERNEL (fixed) -+The image immediately before the scaler kernel runs. -+.TP -+.B POSTKERNEL (fixed) -+The image immediately after the scaler kernel runs. -+.TP -+.B SCALED (fixed) -+The final upscaled image, before color management. -+.TP -+.B OUTPUT (fixed) -+The final output image, after color management but before -+dithering and drawing to screen. -+.UNINDENT -+.sp -+Only the textures labelled with \fBresizable\fP may be transformed by the -+pass. When overwriting a texture marked \fBfixed\fP, the WIDTH, HEIGHT -+and OFFSET must be left at their default values. -+.TP -+.B \fBdeband\fP -+Enable the debanding algorithm. This greatly reduces the amount of -+visible banding, blocking and other quantization artifacts, at the -+expensive of very slightly blurring some of the finest details. In -+practice, it\(aqs virtually always an improvement \- the only reason to -+disable it would be for performance. -+.TP -+.B \fBdeband\-iterations=<1..16>\fP -+The number of debanding steps to perform per sample. Each step reduces -+a bit more banding, but takes time to compute. Note that the strength -+of each step falls off very quickly, so high numbers (>4) are -+practically useless. (Default 1) -+.TP -+.B \fBdeband\-threshold=<0..4096>\fP -+The debanding filter\(aqs cut\-off threshold. Higher numbers increase the -+debanding strength dramatically but progressively diminish image -+details. (Default 64) -+.TP -+.B \fBdeband\-range=<1..64>\fP -+The debanding filter\(aqs initial radius. The radius increases linearly -+for each iteration. A higher radius will find more gradients, but -+a lower radius will smooth more aggressively. (Default 16) -+.sp -+If you increase the \fBdeband\-iterations\fP, you should probably -+decrease this to compensate. -+.TP -+.B \fBdeband\-grain=<0..4096>\fP -+Add some extra noise to the image. This significantly helps cover up -+remaining quantization artifacts. Higher numbers add more noise. -+(Default 48) -+.TP -+.B \fBsigmoid\-upscaling\fP -+When upscaling, use a sigmoidal color transform to avoid emphasizing -+ringing artifacts. This also implies \fBlinear\-scaling\fP\&. -+.TP -+.B \fBsigmoid\-center\fP -+The center of the sigmoid curve used for \fBsigmoid\-upscaling\fP, must -+be a float between 0.0 and 1.0. Defaults to 0.75 if not specified. -+.TP -+.B \fBsigmoid\-slope\fP -+The slope of the sigmoid curve used for \fBsigmoid\-upscaling\fP, must -+be a float between 1.0 and 20.0. Defaults to 6.5 if not specified. -+.TP -+.B \fBsharpen=<value>\fP -+If set to a value other than 0, enable an unsharp masking filter. -+Positive values will sharpen the image (but add more ringing and -+aliasing). Negative values will blur the image. If your GPU is powerful -+enough, consider alternatives like the \fBewa_lanczossharp\fP scale -+filter, or the \fBscale\-blur\fP sub\-option. -+.sp -+(This feature is the replacement for the old \fBsharpen3\fP and -+\fBsharpen5\fP scalers.) -+.TP -+.B \fBglfinish\fP -+Call \fBglFinish()\fP before and after swapping buffers (default: disabled). -+Slower, but might improve results when doing framedropping. -+Can completely ruin performance. The details depend entirely on the -+OpenGL driver. -+.TP -+.B \fBwaitvsync\fP -+Call \fBglXWaitVideoSyncSGI\fP after each buffer swap (default: disabled). -+This may or may not help with video timing accuracy and frame drop. It\(aqs -+possible that this makes video output slower, or has no effect at all. -+.sp -+X11/GLX only. -+.TP -+.B \fBvsync\-fences=<N>\fP -+Synchronize the CPU to the Nth past frame using the \fBGL_ARB_sync\fP -+extension. A value of 0 disables this behavior (default). A value of -+1 means it will synchronize to the current frame after rendering it. -+Like \fBglfinish\fP and \fBwaitvsync\fP, this can lower or ruin performance. -+Its advantage is that it can span multiple frames, and effectively limit -+the number of frames the GPU queues ahead (which also has an influence -+on vsync). -+.TP -+.B \fBdwmflush=<no|windowed|yes|auto>\fP -+Calls \fBDwmFlush\fP after swapping buffers on Windows (default: auto). -+It also sets \fBSwapInterval(0)\fP to ignore the OpenGL timing. Values -+are: no (disabled), windowed (only in windowed mode), yes (also in -+full screen). -+.sp -+The value \fBauto\fP will try to determine whether the compositor is -+active, and calls \fBDwmFlush\fP only if it seems to be. -+.sp -+This may help to get more consistent frame intervals, especially with -+high\-fps clips \- which might also reduce dropped frames. Typically, a -+value of \fBwindowed\fP should be enough, since full screen may bypass the -+DWM. -+.sp -+Windows only. -+.TP -+.B \fBdcomposition=<yes|no>\fP -+Allows DirectComposition when using the ANGLE backend (default: yes). -+DirectComposition implies flip\-model presentation, which can improve -+rendering efficiency on Windows 8+ by avoiding a copy of the video frame. -+mpv uses it by default where possible, but it can cause poor behaviour -+with some drivers, such as a black screen or graphical corruption when -+leaving full\-screen mode. Use "no" to disable it. -+.sp -+Windows with ANGLE only. -+.TP -+.B \fBsw\fP -+Continue even if a software renderer is detected. -+.TP -+.B \fBbackend=<sys>\fP -+The value \fBauto\fP (the default) selects the windowing backend. You -+can also pass \fBhelp\fP to get a complete list of compiled in backends -+(sorted by autoprobe order). -+.INDENT 7.0 -+.TP -+.B auto -+auto\-select (default) -+.TP -+.B cocoa -+Cocoa/OS X -+.TP -+.B win -+Win32/WGL -+.TP -+.B angle -+Direct3D11 through the OpenGL ES translation layer ANGLE. This -+supports almost everything the \fBwin\fP backend does (if the ANGLE -+build is new enough). -+.TP -+.B dxinterop (experimental) -+Win32, using WGL for rendering and Direct3D 9Ex for presentation. -+Works on Nvidia and AMD. Newer Intel chips with the latest drivers -+may also work. -+.TP -+.B x11 -+X11/GLX -+.TP -+.B wayland -+Wayland/EGL -+.TP -+.B drm\-egl -+DRM/EGL -+.TP -+.B x11egl -+X11/EGL -+.UNINDENT -+.TP -+.B \fBes=<mode>\fP -+Select whether to use GLES: -+.INDENT 7.0 -+.TP -+.B yes -+Try to prefer ES over Desktop GL -+.TP -+.B no -+Try to prefer desktop GL over ES -+.TP -+.B auto -+Use the default for each backend (default) -+.UNINDENT -+.TP -+.B \fBfbo\-format=<fmt>\fP -+Selects the internal format of textures used for FBOs. The format can -+influence performance and quality of the video output. -+\fBfmt\fP can be one of: rgb8, rgb10, rgb10_a2, rgb16, rgb16f, -+rgb32f, rgba12, rgba16, rgba16f, rgba32f. -+Default: \fBauto\fP, which maps to rgba16 on desktop GL, and rgba16f or -+rgb10_a2 on GLES (e.g. ANGLE), unless GL_EXT_texture_norm16 is -+available. -+.TP -+.B \fBgamma=<0.1..2.0>\fP -+Set a gamma value (default: 1.0). If gamma is adjusted in other ways -+(like with the \fB\-\-gamma\fP option or key bindings and the \fBgamma\fP -+property), the value is multiplied with the other gamma value. -+.sp -+Recommended values based on the environmental brightness: -+.INDENT 7.0 -+.TP -+.B 1.0 -+Brightly illuminated (default) -+.TP -+.B 0.9 -+Slightly dim -+.TP -+.B 0.8 -+Pitch black room -+.UNINDENT -+.sp -+NOTE: Typical movie content (Blu\-ray etc.) already contains a gamma -+drop of about 0.8, so specifying it here as well will result in even -+even darker image than intended! -+.TP -+.B \fBgamma\-auto\fP -+Automatically corrects the gamma value depending on ambient lighting -+conditions (adding a gamma boost for dark rooms). -+.sp -+With ambient illuminance of 64lux, mpv will pick the 1.0 gamma value -+(no boost), and slightly increase the boost up until 0.8 for 16lux. -+.sp -+NOTE: Only implemented on OS X. -+.TP -+.B \fBtarget\-prim=<value>\fP -+Specifies the primaries of the display. Video colors will be adapted to -+this colorspace when ICC color management is not being used. Valid -+values are: -+.INDENT 7.0 -+.TP -+.B auto -+Disable any adaptation (default) -+.TP -+.B bt.470m -+ITU\-R BT.470 M -+.TP -+.B bt.601\-525 -+ITU\-R BT.601 (525\-line SD systems, eg. NTSC), SMPTE 170M/240M -+.TP -+.B bt.601\-625 -+ITU\-R BT.601 (625\-line SD systems, eg. PAL/SECAM), ITU\-R BT.470 B/G -+.TP -+.B bt.709 -+ITU\-R BT.709 (HD), IEC 61966\-2\-4 (sRGB), SMPTE RP177 Annex B -+.TP -+.B bt.2020 -+ITU\-R BT.2020 (UHD) -+.TP -+.B apple -+Apple RGB -+.TP -+.B adobe -+Adobe RGB (1998) -+.TP -+.B prophoto -+ProPhoto RGB (ROMM) -+.TP -+.B cie1931 -+CIE 1931 RGB (not to be confused with CIE XYZ) -+.TP -+.B dci\-p3 -+DCI\-P3 (Digital Cinema Colorspace), SMPTE RP431\-2 -+.TP -+.B v\-gamut -+Panasonic V\-Gamut (VARICAM) primaries -+.UNINDENT -+.TP -+.B \fBtarget\-trc=<value>\fP -+Specifies the transfer characteristics (gamma) of the display. Video -+colors will be adjusted to this curve when ICC color management is -+not being used. Valid values are: -+.INDENT 7.0 -+.TP -+.B auto -+Disable any adaptation (default) -+.TP -+.B bt.1886 -+ITU\-R BT.1886 curve (assuming infinite contrast) -+.TP -+.B srgb -+IEC 61966\-2\-4 (sRGB) -+.TP -+.B linear -+Linear light output -+.TP -+.B gamma1.8 -+Pure power curve (gamma 1.8), also used for Apple RGB -+.TP -+.B gamma2.2 -+Pure power curve (gamma 2.2) -+.TP -+.B gamma2.8 -+Pure power curve (gamma 2.8), also used for BT.470\-BG -+.TP -+.B prophoto -+ProPhoto RGB (ROMM) -+.TP -+.B st2084 -+SMPTE ST2084 (HDR) curve, PQ OETF -+.TP -+.B std\-b67 -+ARIB STD\-B67 (Hybrid Log\-gamma) curve, also known as BBC/NHK HDR -+.TP -+.B v\-log -+Panasonic V\-Log (VARICAM) curve -+.TP -+.B NOTE: When using HDR output formats, mpv will encode to the specified -+curve but it will not set any HDMI flags or other signalling that -+might be required for the target device to correctly display the -+HDR signal. The user should independently guarantee this before -+using these signal formats for display. -+.UNINDENT -+.TP -+.B \fBtarget\-brightness=<1..100000>\fP -+Specifies the display\(aqs approximate brightness in cd/m^2. When playing -+HDR content on a SDR display (or SDR content on an HDR display), video -+colors will be tone mapped to this target brightness using the -+algorithm specified by \fBhdr\-tone\-mapping\fP\&. The default of 250 cd/m^2 -+corresponds to a typical consumer display. -+.TP -+.B \fBhdr\-tone\-mapping=<value>\fP -+Specifies the algorithm used for tone\-mapping HDR images onto the -+target display. Valid values are: -+.INDENT 7.0 -+.TP -+.B clip -+Hard\-clip any out\-of\-range values. -+.TP -+.B reinhard -+Reinhard tone mapping algorithm. Very simple continuous curve. -+Preserves dynamic range and peak but uses nonlinear contrast. -+.TP -+.B hable -+Similar to \fBreinhard\fP but preserves dark contrast better -+(slightly sigmoidal). Developed by John Hable for use in video -+games. (default) -+.TP -+.B gamma -+Fits a logarithmic transfer between the tone curves. -+.TP -+.B linear -+Linearly stretches the entire reference gamut to (a linear multiple -+of) the display. -+.UNINDENT -+.TP -+.B \fBtone\-mapping\-param=<value>\fP -+Set tone mapping parameters. Ignored if the tone mapping algorithm is -+not tunable. This affects the following tone mapping algorithms: -+.INDENT 7.0 -+.TP -+.B reinhard -+Specifies the local contrast coefficient at the display peak. -+Defaults to 0.5, which means that in\-gamut values will be about -+half as bright as when clipping. -+.TP -+.B gamma -+Specifies the exponent of the function. Defaults to 1.8. -+.TP -+.B linear -+Specifies the scale factor to use while stretching. Defaults to -+1.0. -+.UNINDENT -+.TP -+.B \fBicc\-profile=<file>\fP -+Load an ICC profile and use it to transform video RGB to screen output. -+Needs LittleCMS 2 support compiled in. This option overrides the -+\fBtarget\-prim\fP, \fBtarget\-trc\fP and \fBicc\-profile\-auto\fP options. -+.TP -+.B \fBicc\-profile\-auto\fP -+Automatically select the ICC display profile currently specified by -+the display settings of the operating system. -+.sp -+NOTE: On Windows, the default profile must be an ICC profile. WCS -+profiles are not supported. -+.TP -+.B \fBicc\-cache\-dir=<dirname>\fP -+Store and load the 3D LUTs created from the ICC profile in this directory. -+This can be used to speed up loading, since LittleCMS 2 can take a while -+to create a 3D LUT. Note that these files contain uncompressed LUTs. -+Their size depends on the \fB3dlut\-size\fP, and can be very big. -+.sp -+NOTE: This is not cleaned automatically, so old, unused cache files -+may stick around indefinitely. -+.TP -+.B \fBicc\-intent=<value>\fP -+Specifies the ICC intent used for the color transformation (when using -+\fBicc\-profile\fP). -+.INDENT 7.0 -+.TP -+.B 0 -+perceptual -+.TP -+.B 1 -+relative colorimetric (default) -+.TP -+.B 2 -+saturation -+.TP -+.B 3 -+absolute colorimetric -+.UNINDENT -+.TP -+.B \fB3dlut\-size=<r>x<g>x<b>\fP -+Size of the 3D LUT generated from the ICC profile in each dimension. -+Default is 64x64x64. Sizes may range from 2 to 512. -+.TP -+.B \fBicc\-contrast=<0\-100000>\fP -+Specifies an upper limit on the target device\(aqs contrast ratio. -+This is detected automatically from the profile if possible, but for -+some profiles it might be missing, causing the contrast to be assumed -+as infinite. As a result, video may appear darker than intended. This -+only affects BT.1886 content. The default of 0 means no limit. -+.TP -+.B \fBblend\-subtitles=<yes|video|no>\fP -+Blend subtitles directly onto upscaled video frames, before -+interpolation and/or color management (default: no). Enabling this -+causes subtitles to be affected by \fBicc\-profile\fP, \fBtarget\-prim\fP, -+\fBtarget\-trc\fP, \fBinterpolation\fP, \fBgamma\fP and \fBpost\-shader\fP\&. It -+also increases subtitle performance when using \fBinterpolation\fP\&. -+.sp -+The downside of enabling this is that it restricts subtitles to the -+visible portion of the video, so you can\(aqt have subtitles exist in the -+black margins below a video (for example). -+.sp -+If \fBvideo\fP is selected, the behavior is similar to \fByes\fP, but subs -+are drawn at the video\(aqs native resolution, and scaled along with the -+video. -+.sp -+\fBWARNING:\fP -+.INDENT 7.0 -+.INDENT 3.5 -+This changes the way subtitle colors are handled. Normally, -+subtitle colors are assumed to be in sRGB and color managed -+as such. Enabling this makes them treated as being in the -+video\(aqs color space instead. This is good if you want -+things like softsubbed ASS signs to match the video colors, -+but may cause SRT subtitles or similar to look slightly off. -+.UNINDENT -+.UNINDENT -+.TP -+.B \fBalpha=<blend\-tiles|blend|yes|no>\fP -+Decides what to do if the input has an alpha component. -+.INDENT 7.0 -+.TP -+.B blend\-tiles -+Blend the frame against a 16x16 gray/white tiles background (default). -+.TP -+.B blend -+Blend the frame against a black background. -+.TP -+.B yes -+Try to create a framebuffer with alpha component. This only makes sense -+if the video contains alpha information (which is extremely rare). May -+not be supported on all platforms. If alpha framebuffers are -+unavailable, it silently falls back on a normal framebuffer. Note -+that if you set the \fBfbo\-format\fP option to a non\-default value, -+a format with alpha must be specified, or this won\(aqt work. -+.TP -+.B no -+Ignore alpha component. -+.UNINDENT -+.TP -+.B \fBrectangle\-textures\fP -+Force use of rectangle textures (default: no). Normally this shouldn\(aqt -+have any advantages over normal textures. Note that hardware decoding -+overrides this flag. -+.TP -+.B \fBbackground=<color>\fP -+Color used to draw parts of the mpv window not covered by video. -+See \fB\-\-osd\-color\fP option how colors are defined. -+.UNINDENT -+.TP -+.B \fBopengl\-hq\fP -+Same as \fBopengl\fP, but with default settings for high quality rendering. -+.sp -+This is equivalent to: -+.INDENT 7.0 -+.INDENT 3.5 -+.sp -+.nf -+.ft C -+\-\-vo=opengl:scale=spline36:cscale=spline36:dscale=mitchell:dither\-depth=auto:correct\-downscaling:sigmoid\-upscaling:deband:es=no -+.ft P -+.fi -+.UNINDENT -+.UNINDENT -+.sp -+Note that some cheaper LCDs do dithering that gravely interferes with -+\fBopengl\fP\(aqs dithering. Disabling dithering with \fBdither\-depth=no\fP helps. ++with \fBrgb32f\fP\&. If you have problems, you can also try enabling the ++\fB\-\-opengl\-dumb\-mode=yes\fP option. +.TP +.B \fBsdl\fP +SDL 2.0+ Render video output driver, depending on system with or without @@ -7249,12 +7357,14 @@ index 0000000..fadcd48 +proper graphics drivers, or which support GLES only. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBsw\fP ++.B \fB\-\-sdl\-sw\fP +Continue even if a software renderer is detected. +.TP -+.B \fBswitch\-mode\fP ++.B \fB\-\-sdl\-switch\-mode\fP +Instruct SDL to switch the monitor video mode when going fullscreen. +.UNINDENT +.TP @@ -7271,9 +7381,11 @@ index 0000000..fadcd48 +use vaapi hardware decoding with \fB\-\-vo=opengl\fP too. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBscaling=<algorithm>\fP ++.B \fB\-\-vo\-vaapi\-scaling=<algorithm>\fP +.INDENT 7.0 +.TP +.B default @@ -7289,7 +7401,7 @@ index 0000000..fadcd48 +\fBnon\-linear anamorphic scaling\fP +.UNINDENT +.TP -+.B \fBdeint\-mode=<mode>\fP ++.B \fB\-\-vo\-vaapi\-deint\-mode=<mode>\fP +Select deinterlacing algorithm. Note that by default deinterlacing is +initially always off, and needs to be enabled with the \fBd\fP key +(default key binding for \fBcycle deinterlace\fP). @@ -7312,7 +7424,7 @@ index 0000000..fadcd48 +bob deinterlacing (default for older libva). +.UNINDENT +.TP -+.B \fBscaled\-osd=<yes|no>\fP ++.B \fB\-\-vo\-vaapi\-scaled\-osd=<yes|no>\fP +If enabled, then the OSD is rendered at video resolution and scaled to +display resolution. By default, this is disabled, and the OSD is +rendered at display resolution if the driver supports it. @@ -7322,9 +7434,11 @@ index 0000000..fadcd48 +Produces no video output. Useful for benchmarking. +.sp +Usually, it\(aqs better to disable video with \fB\-\-no\-video\fP instead. ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBfps=<value>\fP ++.B \fB\-\-vo\-null\-fps=<value>\fP +Simulate display FPS. This artificially limits how many frames the +VO accepts per second. +.UNINDENT @@ -7342,9 +7456,11 @@ index 0000000..fadcd48 +.B \fBimage\fP +Output each frame into an image file in the current directory. Each file +takes the frame number padded with leading zeros as name. ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBformat=<format>\fP ++.B \fB\-\-vo\-image\-format=<format>\fP +Select the image file format. +.INDENT 7.0 +.TP @@ -7370,32 +7486,32 @@ index 0000000..fadcd48 +Truevision TGA. +.UNINDENT +.TP -+.B \fBpng\-compression=<0\-9>\fP ++.B \fB\-\-vo\-image\-png\-compression=<0\-9>\fP +PNG compression factor (speed vs. file size tradeoff) (default: 7) +.TP -+.B \fBpng\-filter=<0\-5>\fP ++.B \fB\-\-vo\-image\-png\-filter=<0\-5>\fP +Filter applied prior to PNG compression (0 = none; 1 = sub; 2 = up; +3 = average; 4 = Paeth; 5 = mixed) (default: 5) +.TP -+.B \fBjpeg\-quality=<0\-100>\fP ++.B \fB\-\-vo\-image\-jpeg\-quality=<0\-100>\fP +JPEG quality factor (default: 90) +.TP -+.B \fB(no\-)jpeg\-progressive\fP ++.B \fB\-\-vo\-image\-jpeg\-progressive=<yes|no>\fP +Specify standard or progressive JPEG (default: no). +.TP -+.B \fB(no\-)jpeg\-baseline\fP ++.B \fB\-\-vo\-image\-jpeg\-baseline=<yes|no>\fP +Specify use of JPEG baseline or not (default: yes). +.TP -+.B \fBjpeg\-optimize=<0\-100>\fP ++.B \fB\-\-vo\-image\-jpeg\-optimize=<0\-100>\fP +JPEG optimization factor (default: 100) +.TP -+.B \fBjpeg\-smooth=<0\-100>\fP ++.B \fB\-\-vo\-image\-jpeg\-smooth=<0\-100>\fP +smooth factor (default: 0) +.TP -+.B \fBjpeg\-dpi=<1\->\fP ++.B \fB\-\-vo\-image\-jpeg\-dpi=<1\->\fP +JPEG DPI (default: 72) +.TP -+.B \fBoutdir=<dirname>\fP ++.B \fB\-\-vo\-image\-outdir=<dirname>\fP +Specify the directory to save the image files to (default: \fB\&./\fP). +.UNINDENT +.TP @@ -7409,18 +7525,20 @@ index 0000000..fadcd48 +working OpenGL drivers. +.UNINDENT +.UNINDENT ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBalpha\fP ++.B \fB\-\-vo\-wayland\-alpha\fP +Use a buffer format that supports videos and images with alpha +information +.TP -+.B \fBrgb565\fP ++.B \fB\-\-vo\-wayland\-rgb565\fP +Use RGB565 as buffer format. This format is implemented on most +platforms, especially on embedded where it is far more efficient then +RGB8888. +.TP -+.B \fBtriple\-buffering\fP ++.B \fB\-\-vo\-wayland\-triple\-buffering\fP +Use 3 buffers instead of 2. This can lead to more fluid playback, but +uses more memory. +.UNINDENT @@ -7429,31 +7547,37 @@ index 0000000..fadcd48 +For use with libmpv direct OpenGL embedding; useless in any other contexts. +(See \fB<mpv/opengl_cb.h>\fP\&.) +.sp -+This also supports many of the suboptions the \fBopengl\fP VO has. Run -+\fBmpv \-\-vo=opengl\-cb:help\fP for a list. -+.sp -+This also supports the \fBvo\-cmdline\fP command. ++This also supports many of the options the \fBopengl\fP VO has. +.TP +.B \fBrpi\fP (Raspberry Pi) +Native video output on the Raspberry Pi using the MMAL API. ++.sp ++This is deprecated. Use \fB\-\-vo=opengl\fP instead, which is the default and ++provides the same functionality. The \fBrpi\fP VO will be removed in ++mpv 0.22.0. Its functionality was folded into \-\-vo=opengl, which now uses ++RPI hardware decoding by treating it as a hardware overlay (without applying ++GL filtering). Also to be changed in 0.22.0: the \-\-fs flag will be reset to ++"no" by default (like on the other platforms). ++.sp ++The following deprecated global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBdisplay=<number>\fP ++.B \fB\-\-rpi\-display=<number>\fP +Select the display number on which the video overlay should be shown +(default: 0). +.TP -+.B \fBlayer=<number>\fP ++.B \fB\-\-rpi\-layer=<number>\fP +Select the dispmanx layer on which the video overlay should be shown +(default: \-10). Note that mpv will also use the 2 layers above the +selected layer, to handle the window background and OSD. Actual video +rendering will happen on the layer above the selected layer. +.TP -+.B \fBbackground=<yes|no>\fP ++.B \fB\-\-rpi\-background=<yes|no>\fP +Whether to render a black background behind the video (default: no). +Normally it\(aqs better to kill the console framebuffer instead, which +gives better performance. +.TP -+.B \fBosd=<yes|no>\fP ++.B \fB\-\-rpi\-osd=<yes|no>\fP +Enabled by default. If disabled with \fBno\fP, no OSD layer is created. +This also means there will be no subtitles rendered. +.UNINDENT @@ -7463,17 +7587,19 @@ index 0000000..fadcd48 +Should be used when one doesn\(aqt want to install full\-blown graphical +environment (e.g. no X). Does not support hardware acceleration (if you +need this, check the \fBdrm\-egl\fP backend for \fBopengl\fP VO). ++.sp ++The following global options are supported by this video output: +.INDENT 7.0 +.TP -+.B \fBconnector=<number>\fP -+Select the connector to use (usually this is a monitor.) If set to \-1, -+mpv renders the output on the first available connector. (default: \-1) -+.TP -+.B \fBdevpath=<filename>\fP -+Path to graphic card device. -+(default: /dev/dri/card0) ++.B \fB\-\-drm\-connector=[<gpu_number>.]<name>\fP ++Select the connector to use (usually this is a monitor.) If \fB<name>\fP ++is empty or \fBauto\fP, mpv renders the output on the first available ++connector. Use \fB\-\-drm\-connector=help\fP to get list of available ++connectors. When using multiple graphic cards, use the \fB<gpu_number>\fP ++argument to disambiguate. ++(default: empty) +.TP -+.B \fBmode=<number>\fP ++.B \fB\-\-drm\-mode=<number>\fP +Mode ID to use (resolution, bit depth and frame rate). +(default: 0) +.UNINDENT @@ -7925,6 +8051,15 @@ index 0000000..fadcd48 +remixing audio to 5.1 and output it like this. +.UNINDENT +.UNINDENT ++.sp ++This filter supports the following \fBaf\-command\fP commands: ++.INDENT 7.0 ++.TP ++.B \fBset\-matrix\fP ++Set the \fB<matrix>\fP argument dynamically. This can be used to change ++the mixing matrix at runtime, without reinitializing the entire filter ++chain. ++.UNINDENT +.TP +.B \fBdrc[=method:target]\fP +Applies dynamic range compression. This maximizes the volume by compressing @@ -8040,10 +8175,6 @@ index 0000000..fadcd48 +.B \fBmpv \-\-af=scaletempo=stride=30:overlap=.50:search=10 media.ogg\fP +Would tweak the quality and performance parameters. +.TP -+.B \fBmpv \-\-af=format=float,scaletempo media.ogg\fP -+Would make scaletempo use float code. Maybe faster on some -+platforms. -+.TP +.B \fBmpv \-\-af=scaletempo=scale=1.2:speed=pitch audio.ogg\fP +Would play media at 1.2x normal speed, with audio at normal pitch. +Changing playback speed would change pitch, leaving audio tempo at @@ -8055,9 +8186,15 @@ index 0000000..fadcd48 +.B \fBrubberband\fP +High quality pitch correction with librubberband. This can be used in place +of \fBscaletempo\fP, and will be used to adjust audio pitch when playing -+at speed different from normal. ++at speed different from normal. It can also be used to adjust audio pitch ++without changing playback speed. ++.INDENT 7.0 ++.TP ++.B \fB<pitch\-scale>\fP ++Sets the pitch scaling factor. Frequencies are multiplied by this value. ++.UNINDENT +.sp -+This filter has a number of sub\-options. You can list them with ++This filter has a number of additional sub\-options. You can list them with +\fBmpv \-\-af=rubberband=help\fP\&. This will also show the default values +for each option. The options are not documented here, because they are +merely passed to librubberband. Look at the librubberband documentation @@ -8065,6 +8202,15 @@ index 0000000..fadcd48 +\fI\%http://breakfastquay.com/rubberband/code\-doc/classRubberBand_1_1RubberBandStretcher.html\fP +(The mapping of the mpv rubberband filter sub\-option names and values to +those of librubberband follows a simple pattern: \fB"Option" + Name + Value\fP\&.) ++.sp ++This filter supports the following \fBaf\-command\fP commands: ++.INDENT 7.0 ++.TP ++.B \fBset\-pitch\fP ++Set the \fB<pitch\-scale>\fP argument dynamically. This can be used to ++change the playback pitch at runtime. Note that speed is controlled ++using the standard \fBspeed\fP property, not \fBaf\-command\fP\&. ++.UNINDENT +.TP +.B \fBlavfi=graph\fP +Filter audio using FFmpeg\(aqs libavfilter. @@ -9549,7 +9695,7 @@ index 0000000..fadcd48 +Seek relative to current position (a negative value seeks backwards). +.TP +.B absolute -+Seek to a given time. ++Seek to a given time (a negative value starts from the end of the file). +.TP +.B absolute\-percent +Seek to a given percent position. @@ -10187,13 +10333,6 @@ index 0000000..fadcd48 +(the \fBab\-loop\-a\fP property); the second the \fBB\fP point, and the third +will clear both points. +.TP -+.B \fBvo\-cmdline "<args>"\fP -+Reset the sub\-option of the current VO. Currently works with \fBopengl\fP -+(including \fBopengl\-hq\fP). The argument is the sub\-option string usually -+passed to the VO on the command line. Not all sub\-options can be set, but -+those which can will be reset even if they don\(aqt appear in the argument. -+This command might be changed or removed in the future. -+.TP +.B \fBdrop\-buffers\fP +Drop audio/video/demuxer buffers, and restart from fresh. Might help with +unseekable streams that are going out of sync. @@ -10219,6 +10358,17 @@ index 0000000..fadcd48 +.TP +.B \fBaf\-command "<label>" "<cmd>" "<args>"\fP +Same as \fBvf\-command\fP, but for audio filters. ++.TP ++.B \fBapply\-profile "<name>"\fP ++Apply the contents of a named profile. This is like using \fBprofile=name\fP ++in a config file, except you can map it to a key binding to change it at ++runtime. ++.sp ++There is no such thing as "unapplying" a profile \- applying a profile ++merely sets all option values listed within the profile. ++.TP ++.B \fBload\-script "<path>"\fP ++Load a script, similar to the \fB\-\-script\fP option. +.UNINDENT +.sp +Undocumented commands: \fBtv\-last\-channel\fP (TV/DVB only), @@ -10370,22 +10520,17 @@ index 0000000..fadcd48 +same values as the option. In these cases, properties are merely a way to change +an option at runtime. +.SS Property list ++.sp ++\fBNOTE:\fP ++.INDENT 0.0 ++.INDENT 3.5 ++Most options can be set as runtime via properties as well. Just remove the ++leading \fB\-\-\fP from the option name. These are not documented. Only ++properties which do not exist as option with the same name, or which have ++very different behavior from the options are documented below. ++.UNINDENT ++.UNINDENT +.INDENT 0.0 -+.TP -+.B \fBosd\-level\fP (RW) -+See \fB\-\-osd\-level\fP\&. -+.TP -+.B \fBosd\-scale\fP (RW) -+OSD font size multiplier, see \fB\-\-osd\-scale\fP\&. -+.TP -+.B \fBloop\fP (RW) -+See \fB\-\-loop\fP\&. -+.TP -+.B \fBloop\-file\fP (RW) -+See \fB\-\-loop\-file\fP (uses \fByes\fP/\fBno\fP). -+.TP -+.B \fBspeed\fP (RW) -+See \fB\-\-speed\fP\&. +.TP +.B \fBaudio\-speed\-correction\fP, \fBvideo\-speed\-correction\fP +Factor multiplied with \fBspeed\fP at which the player attempts to play the @@ -10457,8 +10602,10 @@ index 0000000..fadcd48 +list of format names, e.g. mp4 is \fBmov,mp4,m4a,3gp,3g2,mj2\fP (the list +may grow in the future for any format). +.TP -+.B \fBdemuxer\fP ++.B \fBcurrent\-demuxer\fP +Name of the current demuxer. (This is useless.) ++.sp ++(Renamed from \fBdemuxer\fP\&.) +.TP +.B \fBstream\-path\fP +Filename (full path) of the stream layer filename. (This is probably @@ -10535,6 +10682,12 @@ index 0000000..fadcd48 +Remaining length of the file in seconds. Note that the file duration is not +always exactly known, so this is an estimate. +.TP ++.B \fBaudio\-pts\fP (R) ++Current audio playback position in current file in seconds. Unlike time\-pos, ++this updates more often than once per frame. For audio\-only files, it is ++mostly equivalent to time\-pos, while for video\-only files this property is ++not available. ++.TP +.B \fBplaytime\-remaining\fP +\fBtime\-remaining\fP scaled by the current \fBspeed\fP\&. +.TP @@ -10640,10 +10793,6 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fBab\-loop\-a\fP, \fBab\-loop\-b\fP (RW) -+Set/get A\-B loop points. See corresponding options and \fBab\-loop\fP command -+for details. -+.TP +.B \fBangle\fP (RW) +Current DVD angle. +.TP @@ -10724,12 +10873,11 @@ index 0000000..fadcd48 +.B \fBaf\-metadata/<filter\-label>\fP +Equivalent to \fBvf\-metadata/<filter\-label>\fP, but for audio filters. +.TP -+.B \fBpause\fP (RW) -+Pause status. This is usually \fByes\fP or \fBno\fP\&. See \fB\-\-pause\fP\&. -+.TP -+.B \fBidle\fP ++.B \fBidle\-active\fP +Return \fByes\fP if no file is loaded, but the player is staying around +because of the \fB\-\-idle\fP option. ++.sp ++(Renamed from \fBidle\fP\&.) +.TP +.B \fBcore\-idle\fP +Return \fByes\fP if the playback core is paused, otherwise \fBno\fP\&. This can @@ -10806,25 +10954,12 @@ index 0000000..fadcd48 +is loaded, or when switching ordered chapter segments. This is because +the same underlying code is used for seeking and resyncing.) +.TP -+.B \fBhr\-seek\fP (RW) -+See \fB\-\-hr\-seek\fP\&. -+.TP +.B \fBmixer\-active\fP +Return \fByes\fP if the audio mixer is active, \fBno\fP otherwise. +.sp +This option is relatively useless. Before mpv 0.18.1, it could be used to +infer behavior of the \fBvolume\fP property. +.TP -+.B \fBvolume\fP (RW) -+Current volume (see \fB\-\-volume\fP for details). -+.TP -+.B \fBvolume\-max\fP (RW) -+Current maximum value the volume property can be set to. (Equivalent to the -+\fB\-\-volume\-max\fP option.) -+.TP -+.B \fBmute\fP (RW) -+Current mute status (\fByes\fP/\fBno\fP). -+.TP +.B \fBao\-volume\fP (RW) +System volume. This property is available only if mpv audio output is +currently active, and only if the underlying implementation supports volume @@ -10836,9 +10971,6 @@ index 0000000..fadcd48 +Similar to \fBao\-volume\fP, but controls the mute state. May be unimplemented +even if \fBao\-volume\fP works. +.TP -+.B \fBaudio\-delay\fP (RW) -+See \fB\-\-audio\-delay\fP\&. -+.TP +.B \fBaudio\-codec\fP +Audio codec selected for decoding. +.TP @@ -10894,28 +11026,6 @@ index 0000000..fadcd48 +Same as \fBaudio\-params\fP, but the format of the data written to the audio +API. +.TP -+.B \fBaid\fP (RW) -+Current audio track (similar to \fB\-\-aid\fP). -+.TP -+.B \fBaudio\fP (RW) -+Alias for \fBaid\fP\&. -+.TP -+.B \fBbalance\fP (RW) -+Audio channel balance. (The implementation of this feature is rather odd. -+It doesn\(aqt change the volumes of each channel, but instead sets up a pan -+matrix to mix the left and right channels.) -+.sp -+Deprecated. -+.TP -+.B \fBfullscreen\fP (RW) -+See \fB\-\-fullscreen\fP\&. -+.TP -+.B \fBdeinterlace\fP (RW) -+See \fB\-\-deinterlace\fP\&. -+.TP -+.B \fBfield\-dominance\fP (RW) -+See \fB\-\-field\-dominance\fP -+.TP +.B \fBcolormatrix\fP (R) +Redirects to \fBvideo\-params/colormatrix\fP\&. This parameter (as well as +similar ones) can be overridden with the \fBformat\fP video filter. @@ -10923,42 +11033,9 @@ index 0000000..fadcd48 +.B \fBcolormatrix\-input\-range\fP (R) +See \fBcolormatrix\fP\&. +.TP -+.B \fBvideo\-output\-levels\fP (RW) -+See \fB\-\-video\-output\-levels\fP, -+.TP +.B \fBcolormatrix\-primaries\fP (R) +See \fBcolormatrix\fP\&. +.TP -+.B \fBtaskbar\-progress\fP (RW) -+See \fB\-\-taskbar\-progress\fP\&. -+.TP -+.B \fBontop\fP (RW) -+See \fB\-\-ontop\fP\&. -+.TP -+.B \fBborder\fP (RW) -+See \fB\-\-border\fP\&. -+.TP -+.B \fBon\-all\-workspaces\fP (RW) -+See \fB\-\-on\-all\-workspaces\fP\&. Unsetting may not work on all WMs. -+.TP -+.B \fBframedrop\fP (RW) -+See \fB\-\-framedrop\fP\&. -+.TP -+.B \fBgamma\fP (RW) -+See \fB\-\-gamma\fP\&. -+.TP -+.B \fBbrightness\fP (RW) -+See \fB\-\-brightness\fP\&. -+.TP -+.B \fBcontrast\fP (RW) -+See \fB\-\-contrast\fP\&. -+.TP -+.B \fBsaturation\fP (RW) -+See \fB\-\-saturation\fP\&. -+.TP -+.B \fBhue\fP (RW) -+See \fB\-\-hue\fP\&. -+.TP +.B \fBhwdec\fP (RW) +Reflects the \fB\-\-hwdec\fP option. +.sp @@ -10991,27 +11068,6 @@ index 0000000..fadcd48 +multiple interop drivers for the same hardware decoder, depending on +platform and VO. +.TP -+.B \fBhwdec\-active\fP -+Deprecated. To be removed in mpv 0.20.0. Use \fBhwdec\-current\fP instead. -+.sp -+Return \fByes\fP or \fBno\fP, depending on whether any type of hardware decoding -+is actually in use. -+.TP -+.B \fBhwdec\-detected\fP -+Deprecated. To be removed in mpv 0.20.0. -+.sp -+If hardware decoding is active, this returns the hardware decoder in use. -+Otherwise, it returns either \fBno\fP, or if applicable, the currently loaded -+hardware decoding API. This is known only once the VO has opened (and -+possibly later). With some VOs (like \fBopengl\fP), this is never known in -+advance, but only when the decoder attempted to create the hw decoder -+successfully. Also, hw decoders with \fB\-copy\fP suffix will return \fBno\fP -+while no video is being decoded. All this reflects how detecting hw decoders -+are detected and used internally in mpv. -+.TP -+.B \fBpanscan\fP (RW) -+See \fB\-\-panscan\fP\&. -+.TP +.B \fBvideo\-format\fP +Video format as string. +.TP @@ -11120,6 +11176,9 @@ index 0000000..fadcd48 +These have the same values as \fBvideo\-out\-params/dw\fP and +\fBvideo\-out\-params/dh\fP\&. +.TP ++.B \fBvideo\-dec\-params\fP ++Exactly like \fBvideo\-params\fP, but no overrides applied. ++.TP +.B \fBvideo\-out\-params\fP +Same as \fBvideo\-params\fP, but after video filters have been applied. If +there are no video filters in use, this will contain the same values as @@ -11142,9 +11201,11 @@ index 0000000..fadcd48 +\fBvideo\-frame\-info/tff\fP +\fBvideo\-frame\-info/repeat\fP +.TP -+.B \fBfps\fP ++.B \fBcontainer\-fps\fP +Container FPS. This can easily contain bogus values. For videos that use +modern container formats or video codecs, this will often be incorrect. ++.sp ++(Renamed from \fBfps\fP\&.) +.TP +.B \fBestimated\-vf\-fps\fP +Estimated/measured FPS of the video filter chain output. (If no filters @@ -11166,7 +11227,10 @@ index 0000000..fadcd48 +.TP +.B \fBdisplay\-names\fP +Names of the displays that the mpv window covers. On X11, these -+are the xrandr names (LVDS1, HDMI1, DP1, VGA1, etc.). ++are the xrandr names (LVDS1, HDMI1, DP1, VGA1, etc.). On Windows, these ++are the GDI names (\e.DISPLAY1, \e.DISPLAY2, etc.) and the first display ++in the list will be the one that Windows considers associated with the ++window (as determined by the MonitorFromWindow API.) +.TP +.B \fBdisplay\-fps\fP (RW) +The refresh rate of the current display. Currently, this is the lowest FPS @@ -11185,6 +11249,9 @@ index 0000000..fadcd48 +.TP +.B \fBvideo\-aspect\fP (RW) +Video aspect, see \fB\-\-video\-aspect\fP\&. ++.sp ++If video is active, this reports the effective aspect value, instead of ++the value of the \fB\-\-video\-aspect\fP option. +.TP +.B \fBosd\-width\fP, \fBosd\-height\fP +Last known OSD width (can be 0). This is needed if you want to use the @@ -11194,24 +11261,6 @@ index 0000000..fadcd48 +.B \fBosd\-par\fP +Last known OSD display pixel aspect (can be 0). +.TP -+.B \fBvid\fP (RW) -+Current video track (similar to \fB\-\-vid\fP). -+.TP -+.B \fBvideo\fP (RW) -+Alias for \fBvid\fP\&. -+.TP -+.B \fBvideo\-align\-x\fP, \fBvideo\-align\-y\fP (RW) -+See \fB\-\-video\-align\-x\fP and \fB\-\-video\-align\-y\fP\&. -+.TP -+.B \fBvideo\-pan\-x\fP, \fBvideo\-pan\-y\fP (RW) -+See \fB\-\-video\-pan\-x\fP and \fB\-\-video\-pan\-y\fP\&. -+.TP -+.B \fBvideo\-zoom\fP (RW) -+See \fB\-\-video\-zoom\fP\&. -+.TP -+.B \fBvideo\-unscaled\fP (W) -+See \fB\-\-video\-unscaled\fP\&. -+.TP +.B \fBprogram\fP (W) +Switch TS program (write\-only). +.TP @@ -11224,41 +11273,12 @@ index 0000000..fadcd48 +On write, a channel\-switch to the named channel on the same +card is performed. Can also be used for channel switching. +.TP -+.B \fBsid\fP (RW) -+Current subtitle track (similar to \fB\-\-sid\fP). -+.TP -+.B \fBsecondary\-sid\fP (RW) -+Secondary subtitle track (see \fB\-\-secondary\-sid\fP). -+.TP -+.B \fBsub\fP (RW) -+Alias for \fBsid\fP\&. -+.TP -+.B \fBsub\-delay\fP (RW) -+See \fB\-\-sub\-delay\fP\&. -+.TP -+.B \fBsub\-pos\fP (RW) -+See \fB\-\-sub\-pos\fP\&. -+.TP -+.B \fBsub\-visibility\fP (RW) -+See \fB\-\-sub\-visibility\fP\&. -+.TP -+.B \fBsub\-forced\-only\fP (RW) -+See \fB\-\-sub\-forced\-only\fP\&. -+.TP -+.B \fBsub\-scale\fP (RW) -+Subtitle font size multiplier. -+.TP -+.B \fBass\-force\-margins\fP (RW) -+See \fB\-\-ass\-force\-margins\fP\&. -+.TP -+.B \fBsub\-use\-margins\fP (RW) -+See \fB\-\-sub\-use\-margins\fP\&. -+.TP -+.B \fBass\-vsfilter\-aspect\-compat\fP (RW) -+See \fB\-\-ass\-vsfilter\-aspect\-compat\fP\&. -+.TP -+.B \fBass\-style\-override\fP (RW) -+See \fB\-\-ass\-style\-override\fP\&. ++.B \fBsub\-text\fP ++Return the current subtitle text. Formatting is stripped. If a subtitle ++is selected, but no text is currently visible, or the subtitle is not ++text\-based (i.e. DVD/BD subtitles), an empty string is returned. ++.sp ++This property is experimental and might be removed in the future. +.TP +.B \fBstream\-capture\fP (RW) +A filename, see \fB\-\-stream\-capture\fP\&. Setting this will start capture using @@ -11494,11 +11514,8 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.TP -+.B \fBaf\fP (RW) -+See \fB\-\-af\fP and the \fBaf\fP command. -+.TP -+.B \fBvf\fP (RW) -+See \fB\-\-vf\fP and the \fBvf\fP command. ++.B \fBaf\fP, \fBvf\fP (RW) ++See \fB\-\-vf\fP/\fB\-\-af\fP and the \fBvf\fP/\fBaf\fP command. +.sp +When querying the property with the client API using \fBMPV_FORMAT_NODE\fP, +or with Lua \fBmp.get_property_native\fP, this will return a mpv_node with @@ -11522,12 +11539,6 @@ index 0000000..fadcd48 +.sp +It\(aqs also possible to write the property using this format. +.TP -+.B \fBvideo\-rotate\fP (RW) -+See \fB\-\-video\-rotate\fP option. -+.TP -+.B \fBvideo\-stereo\-mode\fP (RW) -+See \fB\-\-video\-stereo\-mode\fP option. -+.TP +.B \fBseekable\fP +Return whether it\(aqs generally possible to seek in the current file. +.TP @@ -11800,6 +11811,10 @@ index 0000000..fadcd48 +changed at runtime by writing to this property. Note that many options +require reloading the file for changes to take effect. If there is an +equivalent property, prefer setting the property instead. ++.sp ++There shouldn\(aqt be any reason to access \fBoptions/<name>\fP instead of ++\fB<name>\fP, except in situations in which the properties have different ++behavior or conflicting semantics. +.TP +.B \fBfile\-local\-options/<name>\fP +Similar to \fBoptions/<name>\fP, but when setting an option through this @@ -11855,6 +11870,87 @@ index 0000000..fadcd48 +.TP +.B \fBproperty\-list\fP +Return the list of top\-level properties. ++.TP ++.B \fBprofile\-list\fP ++Return the list of profiles and their contents. This is highly ++implementation\-specific, and may change any time. Currently, it returns ++an array of options for each profile. Each option has a name and a value, ++with the value currently always being a string. Note that the options array ++is not a map, as order matters and duplicate entries are possible. Recursive ++profiles are not expanded, and show up as special \fBprofile\fP options. ++.UNINDENT ++.SS Inconsistencies between options and properties ++.sp ++You can access (almost) all options as properties, though there are some ++caveats with some properties (due to historical reasons): ++.INDENT 0.0 ++.TP ++.B \fBvid\fP, \fBaid\fP, \fBsid\fP ++While playback is active, you can set existing tracks only. (The option ++allows setting any track ID, and which tracks to enable is chosen at ++loading time.) ++.sp ++Option changes at runtime are affected by this as well. ++.TP ++.B \fBdeinterlace\fP ++While video is active, this behaves differently from the option. It will ++never return the \fBauto\fP value (but the state as observed by the video ++chain). If you set \fBauto\fP, the property will set this as the option value, ++and will return the actual video chain state as observed instead of auto. ++.TP ++.B \fBvideo\-aspect\fP ++While video is active, always returns the effective aspect ratio. Setting ++a special value (like \fBno\fP, values \fB<= 0\fP) will make the property ++set this as option, and return whatever actual aspect was derived from the ++option setting. ++.TP ++.B \fBbrightness\fP (and other color options) ++If \fB\-\-vo=xv\fP is used, these properties may return the adapter\(aqs current ++values instead of the option values. ++.TP ++.B \fBdisplay\-fps\fP ++If a VO is created, this will return either the actual display FPS, or ++an invalid value, instead of the option value. ++.TP ++.B \fBvf\fP, \fBaf\fP ++If you set the properties during playback, and the filter chain fails to ++reinitialize, the new value will be rejected. Setting the option or ++setting the property outside of playback will always succeed/fail in the ++same way. Also, there are no \fBvf\-add\fP etc. properties, but you can use ++the \fBvf\fP/\fBaf\fP group of commands to achieve the same. ++.sp ++Option changes at runtime are affected by this as well. ++.TP ++.B \fBedition\fP ++While a file is loaded, the property will always return the effective ++edition, and setting the \fBauto\fP value will show somewhat strange behavior ++(the property eventually switching to whatever is the default edition). ++.TP ++.B \fBplaylist\fP ++The property is read\-only and returns the current internal playlist. The ++option is for loading playlist during command line parsing. For client API ++uses, you should use the \fBloadlist\fP command instead. ++.TP ++.B \fBwindow\-scale\fP ++Might verify the set value when setting while a window is created. ++.TP ++.B \fBaudio\-file\fP, \fBsub\-file\fP, \fBexternal\-file\fP ++These options/properties are actually lists of filenames. To make the ++command\-line interface easier, each \fB\-\-audio\-file=...\fP option appends ++the full string to the internal list. However, when used as properties, ++every time you set the property as a string the internal list will be ++replaced with a single entry containing the string you set. \fB,\fP or other ++separators are never used. You have to use \fBMPV_FORMAT_NODE_ARRAY\fP (or ++corresponding API, e.g. \fBmp.set_property_native()\fP with a table in Lua) ++to set multiple entries. ++.sp ++Strictly speaking, option access via API (e.g. \fBmpv_set_option_string()\fP) ++has the same problem, and it\(aqs only a difference between CLI/API. ++.TP ++.B \fBdemuxer\fP, \fBidle\fP, \fBlength\fP, \fBaudio\-samplerate\fP, \fBaudio\-channels\fP, \fBaudio\-format\fP, \fBfps\fP, \fBcache\fP, \fBplaylist\-pos\fP, \fBchapter\fP ++These behave completely different as property, but are deprecated (newer ++aliases which don\(aqt conflict have been added). After the deprecation period ++they will be changed to the proper option behavior. +.UNINDENT +.SS Property Expansion +.sp @@ -11981,24 +12077,19 @@ index 0000000..fadcd48 +.sp +.nf +.ft C -++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ -+| playlist prev | title | playlist next | -++\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-+\-\-+\-\-\-\-\-\-+\-+\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+ -+| audio | skip | seek | | seek | skip | full | -++\-\-\-\-\-\-\-+ back | back | play | frwd | frwd | screen | -+| sub | | | | | | | -++\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+ -+| seekbar | -++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ -+| time passed | cache status | time remaining | -++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +++\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-+ ++| pl prev | pl next | title | cache | +++\-\-\-\-\-\-+\-\-+\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+ ++| play | skip | skip | time | seekbar | time | audio | sub | ++| | back | frwd | elapsed | | left | | | +++\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+ +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP -+.B playlist prev ++.B pl prev +.TS +center; +|l|l|. @@ -12010,45 +12101,9 @@ index 0000000..fadcd48 +T} +_ +T{ -+shift+L\-click -+T} T{ -+show playlist -+T} -+_ -+.TE -+.TP -+.B title -+.nf -+Displays current media\-title or filename -+.fi -+.sp -+.TS -+center; -+|l|l|. -+_ -+T{ -+left\-click -+T} T{ -+show playlist position and length and full title -+T} -+_ -+T{ +right\-click +T} T{ -+show filename -+T} -+_ -+.TE -+.TP -+.B playlist next -+.TS -+center; -+|l|l|. -+_ -+T{ -+left\-click -+T} T{ -+play next file in playlist ++show playlist +T} +_ +T{ @@ -12059,11 +12114,7 @@ index 0000000..fadcd48 +_ +.TE +.TP -+.B audio and sub -+.nf -+Displays selected track and amount of available tracks -+.fi -+.sp ++.B pl next +.TS +center; +|l|l|. @@ -12071,43 +12122,28 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+cycle audio/sub tracks forward ++play next file in playlist +T} +_ +T{ +right\-click +T} T{ -+cycle audio/sub tracks backwards -+T} -+_ -+T{ -+shift+L\-click -+T} T{ -+show available audio/sub tracks -+T} -+_ -+.TE -+.TP -+.B skip back -+.TS -+center; -+|l|l|. -+_ -+T{ -+left\-click -+T} T{ -+go to beginning of chapter / previous chapter ++show playlist +T} +_ +T{ +shift+L\-click +T} T{ -+show chapters ++show playlist +T} +_ +.TE +.TP -+.B seek back ++.B title ++.nf ++Displays current media\-title or filename ++.fi ++.sp +.TS +center; +|l|l|. @@ -12115,23 +12151,23 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+skip back 5 seconds ++show playlist position and length and full title +T} +_ +T{ +right\-click +T} T{ -+skip back 30 seconds -+T} -+_ -+T{ -+shift\-L\-click -+T} T{ -+skip back 1 frame ++show filename +T} +_ +.TE +.TP ++.B cache ++.nf ++Shows current cache fill status ++.fi ++.sp ++.TP +.B play +.TS +center; @@ -12145,7 +12181,7 @@ index 0000000..fadcd48 +_ +.TE +.TP -+.B seek frwd ++.B skip back +.TS +center; +|l|l|. @@ -12153,19 +12189,19 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+skip forward 10 seconds ++go to beginning of chapter / previous chapter +T} +_ +T{ +right\-click +T} T{ -+skip forward 60 seconds ++show chapters +T} +_ +T{ -+shift\-L\-click ++shift+L\-click +T} T{ -+skip forward 1 frame ++show chapters +T} +_ +.TE @@ -12182,6 +12218,12 @@ index 0000000..fadcd48 +T} +_ +T{ ++right\-click ++T} T{ ++show chapters ++T} ++_ ++T{ +shift+L\-click +T} T{ +show chapters @@ -12189,7 +12231,11 @@ index 0000000..fadcd48 +_ +.TE +.TP -+.B fullscreen ++.B time elapsed ++.nf ++Shows current playback position timestamp ++.fi ++.sp +.TS +center; +|l|l|. @@ -12197,7 +12243,7 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+toggle fullscreen ++toggle displaying timecodes with milliseconds +T} +_ +.TE @@ -12219,9 +12265,9 @@ index 0000000..fadcd48 +_ +.TE +.TP -+.B time passed ++.B time left +.nf -+Shows current playback position timestamp ++Shows remaining playback time timestamp +.fi +.sp +.TS @@ -12231,20 +12277,14 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+toggle displaying timecodes with milliseconds ++toggle between total and remaining time +T} +_ +.TE +.TP -+.B cache status -+.nf -+Shows current cache fill status (only visible when below 45%) -+.fi -+.sp -+.TP -+.B time remaining ++.B audio and sub +.nf -+Shows remaining playback time timestamp ++Displays selected track and amount of available tracks +.fi +.sp +.TS @@ -12254,7 +12294,19 @@ index 0000000..fadcd48 +T{ +left\-click +T} T{ -+toggle between total and remaining time ++cycle audio/sub tracks forward ++T} ++_ ++T{ ++right\-click ++T} T{ ++cycle audio/sub tracks backwards ++T} ++_ ++T{ ++shift+L\-click ++T} T{ ++show available audio/sub tracks +T} +_ +.TE @@ -12334,14 +12386,14 @@ index 0000000..fadcd48 +.TP +.B \fBscalewindowed\fP +.nf -+Default: 1.0 ++Default: 1.5 +Scale factor of the OSC when windowed +.fi +.sp +.TP +.B \fBscalefullscreen\fP +.nf -+Default: 1.0 ++Default: 1.5 +Scale factor of the OSC when fullscreen +.fi +.sp @@ -12375,6 +12427,13 @@ index 0000000..fadcd48 +.fi +.sp +.TP ++.B \fBbarmargin\fP ++.nf ++Default: 0 ++Margin from bottom (bottombar) or top (topbar), in pixels ++.fi ++.sp ++.TP +.B \fBboxalpha\fP +.nf +Default: 80 @@ -12399,18 +12458,20 @@ index 0000000..fadcd48 +.TP +.B \fBdeadzonesize\fP +.nf -+Default: 0 ++Default: 1 +Size of the deadzone. The deadzone is an area that makes the mouse act +like leaving the window. Movement there won\(aqt make the OSC show up and +it will hide immediately if the mouse enters it. The deadzone starts +at the window border opposite to the OSC and the size controls how much -+of the window it will span. Values between 0 and 1. ++of the window it will span. Values between 0 and 1, where 0 means the ++OSC will always popup with mouse movement in the window, and 1 means the ++OSC will only show up when the mouse hovers it. +.fi +.sp +.TP +.B \fBminmousemove\fP +.nf -+Default: 3 ++Default: 0 +Minimum amount of pixels the mouse has to move between ticks to make +the OSC show up +.fi @@ -12418,7 +12479,7 @@ index 0000000..fadcd48 +.TP +.B \fBlayout\fP +.nf -+Default: box ++Default: bottombar +The layout for the OSC. Currently available are: box, slimbox, +bottombar and topbar. +.fi @@ -12426,11 +12487,18 @@ index 0000000..fadcd48 +.TP +.B \fBseekbarstyle\fP +.nf -+Default: slider ++Default: bar +Sets the style of the seekbar, slider (diamond marker) or bar (fill) +.fi +.sp +.TP ++.B \fBtooltipborder\fP ++.nf ++Default: 1 ++Size of the tooltip outline when using bottombar or topbar layouts ++.fi ++.sp ++.TP +.B \fBtimetotal\fP +.nf +Default: no @@ -12937,6 +13005,8 @@ index 0000000..fadcd48 +.INDENT 0.0 +.TP +.B \fBmp.suspend()\fP ++This function has been deprecated in mpv 0.21.0 (no replacement). ++.sp +Suspend the mpv main loop. There is a long\-winded explanation of this in +the C API function \fBmpv_suspend()\fP\&. In short, this prevents the player +from displaying the next video frame, so that you don\(aqt get blocked when @@ -12945,11 +13015,15 @@ index 0000000..fadcd48 +Before mpv 0.17.0, this was automatically called by the event handler. +.TP +.B \fBmp.resume()\fP ++This function has been deprecated in mpv 0.21.0 (no replacement). ++.sp +Undo one \fBmp.suspend()\fP call. \fBmp.suspend()\fP increments an internal +counter, and \fBmp.resume()\fP decrements it. When 0 is reached, the player +is actually resumed. +.TP +.B \fBmp.resume_all()\fP ++This function has been deprecated in mpv 0.21.0 (no replacement). ++.sp +This resets the internal suspend counter and resumes the player. (It\(aqs +like calling \fBmp.resume()\fP until the player is actually resumed.) +.TP @@ -12975,6 +13049,13 @@ index 0000000..fadcd48 +\fBmp.get_wakeup_pipe()\fP if you\(aqre interested in properly working +notification of new events and working timers. +.TP ++.B \fBmp.register_idle(fn)\fP ++Register an event loop idle handler. Idle handlers are called before the ++script goes to sleep after handling all new events. This can be used for ++example to delay processing of property change events: if you\(aqre observing ++multiple properties at once, you might not want to act on each property ++change, but only when all change notifications have been received. ++.TP +.B \fBmp.enable_messages(level)\fP +Set the minimum log level of which mpv message output to receive. These +messages are normally printed to the terminal. By calling this function, @@ -13195,8 +13276,23 @@ index 0000000..fadcd48 +.UNINDENT +.UNINDENT +.UNINDENT ++.TP ++.B \fButils.subprocess_detached(t)\fP ++Runs an external process and detaches it from mpv\(aqs control. +.sp -+In all cases, \fBmp.resume_all()\fP is implicitly called. ++The parameter \fBt\fP is a table. The function reads the following entries: ++.INDENT 7.0 ++.INDENT 3.5 ++.INDENT 0.0 ++.TP ++.B \fBargs\fP ++Array of strings of the same semantics as the \fBargs\fP used in the ++\fBsubprocess\fP function. ++.UNINDENT ++.UNINDENT ++.UNINDENT ++.sp ++The function returns \fBnil\fP\&. +.TP +.B \fButils.parse_json(str [, trail])\fP +Parses the given string argument as JSON, and returns it as a Lua table. On @@ -13720,12 +13816,16 @@ index 0000000..fadcd48 +command. +.TP +.B \fBsuspend\fP ++Deprecated, will be removed completely in 0.21.0. ++.sp +Suspend the mpv main loop. There is a long\-winded explanation of this in +the C API function \fBmpv_suspend()\fP\&. In short, this prevents the player +from displaying the next video frame, so that you don\(aqt get blocked when +trying to access the player. +.TP +.B \fBresume\fP ++Deprecated, will be removed completely in 0.21.0. ++.sp +Undo one \fBsuspend\fP call. \fBsuspend\fP increments an internal counter, and +\fBresume\fP decrements it. When 0 is reached, the player is actually resumed. +.TP @@ -13757,9 +13857,15 @@ index 0000000..fadcd48 +.IP \(bu 2 +The git log, which is the "real" changelog +.IP \(bu 2 ++The files \fBclient\-api\-changes.rst\fP and \fBinterface\-changes.rst\fP in the ++\fBDOCS\fP sub directoryon the git repository, which document API and user ++interface changes (the latter usually documents breaking changes only, rather ++than additions). ++.IP \(bu 2 +The file \fBmplayer\-changes.rst\fP in the \fBDOCS\fP sub directory on the git +repository, which used to be in place of this section. It documents some -+changes that happened since mplayer2 forked off MPlayer. ++changes that happened since mplayer2 forked off MPlayer. (Not updated ++anymore.) +.UNINDENT +.SH EMBEDDING INTO OTHER PROGRAMS (LIBMPV) +.sp @@ -13767,6 +13873,21 @@ index 0000000..fadcd48 +recommended way to do so is using libmpv. See \fBlibmpv/client.h\fP in the mpv +source code repository. This provides a C API. Bindings for other languages +might be available (see wiki). ++.sp ++Since libmpv merely allows access to underlying mechanisms that can control ++mpv, further documentation is spread over a few places: ++.INDENT 0.0 ++.IP \(bu 2 ++\fI\%https://github.com/mpv\-player/mpv/blob/master/libmpv/client.h\fP ++.IP \(bu 2 ++\fI\%http://mpv.io/manual/master/#options\fP ++.IP \(bu 2 ++\fI\%http://mpv.io/manual/master/#list\-of\-input\-commands\fP ++.IP \(bu 2 ++\fI\%http://mpv.io/manual/master/#properties\fP ++.IP \(bu 2 ++\fI\%https://github.com/mpv\-player/mpv\-examples/tree/master/libmpv\fP ++.UNINDENT +.SH ENVIRONMENT VARIABLES +.sp +There are a number of environment variables that can be used to control the @@ -14011,5 +14132,5 @@ index 0000000..fadcd48 +.\" Generated by docutils manpage writer. +. -- -2.9.2 +2.10.1 diff --git a/media/mpv/rev b/media/mpv/rev index b8626c4c..7ed6ff82 100644 --- a/media/mpv/rev +++ b/media/mpv/rev @@ -1 +1 @@ -4 +5 diff --git a/media/mpv/sources.txt b/media/mpv/sources.txt index 41aeccdc..901fccbd 100644 --- a/media/mpv/sources.txt +++ b/media/mpv/sources.txt @@ -86,6 +86,7 @@ misc/bstr.c misc/charset_conv.c misc/dispatch.c misc/json.c +misc/node.c misc/ring.c misc/rendezvous.c options/m_config.c @@ -166,6 +167,7 @@ video/vaapi.c vaapi video/vdpau.c vdpau video/vdpau_mixer.c vdpau video/decode/dec_video.c +video/decode/cuda.c cuda-hwaccel video/decode/dxva2.c d3d-hwaccel video/decode/d3d11va.c d3d-hwaccel video/decode/d3d.c win32 @@ -213,6 +215,7 @@ video/out/opengl/context_angle.c egl-angle video/out/opengl/context_cocoa.c gl-cocoa video/out/opengl/context_drm_egl.c egl-drm video/out/opengl/context_dxinterop.c gl-dxinterop +video/out/opengl/context_mali_fbdev.c mali-fbdev video/out/opengl/context_rpi.c rpi video/out/opengl/context_wayland.c gl-wayland video/out/opengl/context_w32.c gl-win32 @@ -221,14 +224,16 @@ video/out/opengl/context_x11egl.c egl-x11 video/out/opengl/egl_helpers.c egl-helpers video/out/opengl/formats.c gl video/out/opengl/hwdec.c gl +video/out/opengl/hwdec_cuda.c cuda-hwaccel video/out/opengl/hwdec_d3d11egl.c egl-angle video/out/opengl/hwdec_d3d11eglrgb.c egl-angle video/out/opengl/hwdec_dxva2.c gl-win32 video/out/opengl/hwdec_dxva2gldx.c gl-dxinterop video/out/opengl/hwdec_dxva2egl.c egl-angle +video/out/opengl/hwdec_osx.c videotoolbox-gl +video/out/opengl/hwdec_rpi.c rpi video/out/opengl/hwdec_vaegl.c vaapi-egl video/out/opengl/hwdec_vaglx.c vaapi-glx -video/out/opengl/hwdec_osx.c videotoolbox-gl video/out/opengl/hwdec_vdpau.c vdpau-gl-x11 video/out/opengl/lcms.c gl video/out/opengl/osd.c gl diff --git a/media/mpv/src b/media/mpv/src -Subproject c226bc7616ab2ae9de6172660e9cf727f07dc37 +Subproject e6b85c91700bee0ddc92e98a30d5021691bd6f6 |
