commit: f4b63071fc4307413e6ef113ffca46f951005778
parent 12bc4d583bdfcbbd0fa3be2162e780ead43af035
Author: Michael Forney <mforney@mforney.org>
Date: Thu, 28 Dec 2017 20:04:19 -0800
mpv: Track generated man page instead of patch
Diffstat:
4 files changed, 15203 insertions(+), 15225 deletions(-)
diff --git a/pkg/mpv/gen.lua b/pkg/mpv/gen.lua
@@ -118,6 +118,6 @@ exe('mpv', {
expand{'$builddir/pkg/', libs},
})
file('bin/mpv', '755', '$outdir/mpv')
-man{'DOCS/man/mpv.1'}
+man{'$dir/mpv.1'}
fetch 'git'
diff --git a/pkg/mpv/mpv.1 b/pkg/mpv/mpv.1
@@ -0,0 +1,15201 @@
+.\" Man page generated from reStructuredText.
+.
+.TH MPV 1 "" "" "multimedia"
+.SH NAME
+mpv \- a media player
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.nf
+\fBmpv\fP [options] [file|URL|PLAYLIST|\-]
+\fBmpv\fP [options] files
+.fi
+.sp
+.SH DESCRIPTION
+.sp
+\fBmpv\fP is a media player based on MPlayer and mplayer2. It supports a wide variety of video
+file formats, audio and video codecs, and subtitle types. Special input URL
+types are available to read input from a variety of sources other than disk
+files. Depending on platform, a variety of different video and audio output
+methods are supported.
+.sp
+Usage examples to get you started quickly can be found at the end of this man
+page.
+.SH INTERACTIVE CONTROL
+.sp
+mpv has a fully configurable, command\-driven control layer which allows you
+to control mpv using keyboard, mouse, or remote control (there is no
+LIRC support \- configure remotes as input devices instead).
+.sp
+See the \fB\-\-input\-\fP options for ways to customize it.
+.sp
+The following listings are not necessarily complete. See \fBetc/input.conf\fP for
+a list of default bindings. User \fBinput.conf\fP files and Lua scripts can
+define additional key bindings.
+.SS Keyboard Control
+.INDENT 0.0
+.TP
+.B LEFT and RIGHT
+Seek backward/forward 5 seconds. Shift+arrow does a 1 second exact seek
+(see \fB\-\-hr\-seek\fP).
+.TP
+.B UP and DOWN
+Seek forward/backward 1 minute. Shift+arrow does a 5 second exact seek (see
+\fB\-\-hr\-seek\fP).
+.TP
+.B Ctrl+LEFT and Ctrl+RIGHT
+Seek to the previous/next subtitle. Subject to some restrictions and
+might not always work; see \fBsub\-seek\fP command.
+.TP
+.B [ and ]
+Decrease/increase current playback speed by 10%.
+.TP
+.B { and }
+Halve/double current playback speed.
+.TP
+.B BACKSPACE
+Reset playback speed to normal.
+.TP
+.B < and >
+Go backward/forward in the playlist.
+.TP
+.B ENTER
+Go forward in the playlist.
+.TP
+.B p / SPACE
+Pause (pressing again unpauses).
+.TP
+.B \&.
+Step forward. Pressing once will pause, every consecutive press will
+play one frame and then go into pause mode again.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B ,
+Step backward. Pressing once will pause, every consecutive press will
+play one frame in reverse and then go into pause mode again.
+.TP
+.B q
+Stop playing and quit.
+.TP
+.B Q
+Like \fBq\fP, but store the current playback position. Playing the same file
+later will resume at the old playback position if possible.
+.TP
+.B / and *
+Decrease/increase volume.
+.TP
+.B 9 and 0
+Decrease/increase volume.
+.TP
+.B m
+Mute sound.
+.TP
+.B _
+Cycle through the available video tracks.
+.TP
+.B #
+Cycle through the available audio tracks.
+.TP
+.B f
+Toggle fullscreen (see also \fB\-\-fs\fP).
+.TP
+.B ESC
+Exit fullscreen mode.
+.TP
+.B T
+Toggle stay\-on\-top (see also \fB\-\-ontop\fP).
+.TP
+.B w and e
+Decrease/increase pan\-and\-scan range.
+.TP
+.B o (also P)
+Show progression bar, elapsed time and total duration on the OSD.
+.TP
+.B O
+Toggle OSD states between normal and playback time/duration.
+.TP
+.B v
+Toggle subtitle visibility.
+.TP
+.B j and J
+Cycle through the available subtitles.
+.TP
+.B x and z
+Adjust subtitle delay by +/\- 0.1 seconds.
+.TP
+.B l
+Set/clear A\-B loop points. See \fBab\-loop\fP command for details.
+.TP
+.B L
+Toggle infinite looping.
+.TP
+.B Ctrl + and Ctrl \-
+Adjust audio delay (A/V sync) by +/\- 0.1 seconds.
+.TP
+.B u
+Switch between applying no style overrides to SSA/ASS subtitles, and
+overriding them almost completely with the normal subtitle style. See
+\fB\-\-sub\-ass\-override\fP for more info.
+.TP
+.B V
+Toggle subtitle VSFilter aspect compatibility mode. See
+\fB\-\-sub\-ass\-vsfilter\-aspect\-compat\fP for more info.
+.TP
+.B r and t
+Move subtitles up/down.
+.TP
+.B s
+Take a screenshot.
+.TP
+.B S
+Take a screenshot, without subtitles. (Whether this works depends on VO
+driver support.)
+.TP
+.B Ctrl s
+Take a screenshot, as the window shows it (with subtitles, OSD, and scaled
+video).
+.TP
+.B PGUP and PGDWN
+Seek to the beginning of the previous/next chapter. In most cases,
+"previous" will actually go to the beginning of the current chapter; see
+\fB\-\-chapter\-seek\-threshold\fP\&.
+.TP
+.B Shift+PGUP and Shift+PGDWN
+Seek backward or forward by 10 minutes. (This used to be mapped to
+PGUP/PGDWN without Shift.)
+.TP
+.B d
+Activate/deactivate deinterlacer.
+.TP
+.B A
+Cycle aspect ratio override.
+.UNINDENT
+.sp
+(The following keys are valid only when using a video output that supports the
+corresponding adjustment, or the software equalizer (\fB\-\-vf=eq\fP).)
+.INDENT 0.0
+.TP
+.B 1 and 2
+Adjust contrast.
+.TP
+.B 3 and 4
+Adjust brightness.
+.TP
+.B 5 and 6
+Adjust gamma.
+.TP
+.B 7 and 8
+Adjust saturation.
+.TP
+.B Alt+0 (and command+0 on OSX)
+Resize video window to half its original size.
+.TP
+.B Alt+1 (and command+1 on OSX)
+Resize video window to its original size.
+.TP
+.B Alt+2 (and command+2 on OSX)
+Resize video window to double its original size.
+.TP
+.B command + f (OSX only)
+Toggle fullscreen (see also \fB\-\-fs\fP).
+.UNINDENT
+.sp
+(The following keys are valid if you have a keyboard with multimedia keys.)
+.INDENT 0.0
+.TP
+.B PAUSE
+Pause.
+.TP
+.B STOP
+Stop playing and quit.
+.TP
+.B PREVIOUS and NEXT
+Seek backward/forward 1 minute.
+.UNINDENT
+.sp
+If you miss some older key bindings, look at \fBetc/restore\-old\-bindings.conf\fP
+in the mpv git repository.
+.SS Mouse Control
+.INDENT 0.0
+.TP
+.B button 3 and button 4
+Seek backward/forward 1 minute.
+.TP
+.B button 5 and button 6
+Decrease/increase volume.
+.UNINDENT
+.SH USAGE
+.sp
+Command line arguments starting with \fB\-\fP are interpreted as options,
+everything else as filenames or URLs. All options except \fIflag\fP options (or
+choice options which include \fByes\fP) require a parameter in the form
+\fB\-\-option=value\fP\&.
+.sp
+One exception is the lone \fB\-\fP (without anything else), which means media data
+will be read from stdin. Also, \fB\-\-\fP (without anything else) will make the
+player interpret all following arguments as filenames, even if they start with
+\fB\-\fP\&. (To play a file named \fB\-\fP, you need to use \fB\&./\-\fP\&.)
+.sp
+Every \fIflag\fP option has a \fIno\-flag\fP counterpart, e.g. the opposite of the
+\fB\-\-fs\fP option is \fB\-\-no\-fs\fP\&. \fB\-\-fs=yes\fP is same as \fB\-\-fs\fP, \fB\-\-fs=no\fP
+is the same as \fB\-\-no\-fs\fP\&.
+.sp
+If an option is marked as \fI(XXX only)\fP, it will only work in combination with
+the \fIXXX\fP option or if \fIXXX\fP is compiled in.
+.SS Legacy option syntax
+.sp
+The \fB\-\-option=value\fP syntax is not strictly enforced, and the alternative
+legacy syntax \fB\-option value\fP and \fB\-\-option value\fP will also work. This is
+mostly for compatibility with MPlayer. Using these should be avoided. Their
+semantics can change any time in the future.
+.sp
+For example, the alternative syntax will consider an argument following the
+option a filename. \fBmpv \-fs no\fP will attempt to play a file named \fBno\fP,
+because \fB\-\-fs\fP is a flag option that requires no parameter. If an option
+changes and its parameter becomes optional, then a command line using the
+alternative syntax will break.
+.sp
+Currently, the parser makes no difference whether an option starts with \fB\-\-\fP
+or a single \fB\-\fP\&. This might also change in the future, and \fB\-\-option value\fP
+might always interpret \fBvalue\fP as filename in order to reduce ambiguities.
+.SS Escaping spaces and other special characters
+.sp
+Keep in mind that the shell will partially parse and mangle the arguments you
+pass to mpv. For example, you might need to quote or escape options and
+filenames:
+.INDENT 0.0
+.INDENT 3.5
+\fBmpv "filename with spaces.mkv" \-\-title="window title"\fP
+.UNINDENT
+.UNINDENT
+.sp
+It gets more complicated if the suboption parser is involved. The suboption
+parser puts several options into a single string, and passes them to a
+component at once, instead of using multiple options on the level of the
+command line.
+.sp
+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, assume the hypothetical \fBfoo\fP filter can take multiple options:
+.INDENT 0.0
+.INDENT 3.5
+\fBmpv test.mkv \-\-vf=foo:option1=value1:option2:option3=value3,bar\fP
+.UNINDENT
+.UNINDENT
+.sp
+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\-\-vf=foo:option1="option value with spaces",bar\(aq\fP
+.UNINDENT
+.UNINDENT
+.sp
+Shells may actually strip some quotes from the string passed to the commandline,
+so the example quotes the string twice, ensuring that mpv receives the \fB"\fP
+quotes.
+.sp
+The \fB[...]\fP form of quotes wraps everything between \fB[\fP and \fB]\fP\&. It\(aqs
+useful with shells that don\(aqt interpret these characters in the middle of
+an argument (like bash). These quotes are balanced (since mpv 0.9.0): the \fB[\fP
+and \fB]\fP nest, and the quote terminates on the last \fB]\fP that has no matching
+\fB[\fP within the string. (For example, \fB[a[b]c]\fP results in \fBa[b]c\fP\&.)
+.sp
+The fixed\-length quoting syntax is intended for use with external
+scripts and programs.
+.sp
+It is started with \fB%\fP and has the following format:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+%n%string_of_length_n
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.IP "Examples"
+.sp
+\fBmpv \(aq\-\-vf=foo:option1=%11%quoted text\(aq test.avi\fP
+.sp
+Or in a script:
+.sp
+\fBmpv \-\-vf=foo:option1=%\(gaexpr length "$NAME"\(ga%"$NAME" test.avi\fP
+.UNINDENT
+.UNINDENT
+.sp
+Suboptions passed to the client API are also subject to escaping. Using
+\fBmpv_set_option_string()\fP is exactly like passing \fB\-\-name=data\fP to the
+command line (but without shell processing of the string). Some options
+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.
+.SS Paths
+.sp
+Some care must be taken when passing arbitrary paths and filenames to mpv. For
+example, paths starting with \fB\-\fP will be interpreted as options. Likewise,
+if a path contains the sequence \fB://\fP, the string before that might be
+interpreted as protocol prefix, even though \fB://\fP can be part of a legal
+UNIX path. To avoid problems with arbitrary paths, you should be sure that
+absolute paths passed to mpv start with \fB/\fP, and prefix relative paths with
+\fB\&./\fP\&.
+.sp
+Using the \fBfile://\fP pseudo\-protocol is discouraged, because it involves
+strange URL unescaping rules.
+.sp
+The name \fB\-\fP itself is interpreted as stdin, and will cause mpv to disable
+console controls. (Which makes it suitable for playing data piped to stdin.)
+.sp
+The special argument \fB\-\-\fP can be used to stop mpv from interpreting the
+following arguments as options.
+.sp
+When using the client API, you should strictly avoid using \fBmpv_command_string\fP
+for invoking the \fBloadfile\fP command, and instead prefer e.g. \fBmpv_command\fP
+to avoid the need for filename escaping.
+.sp
+For paths passed to suboptions, the situation is further complicated by the
+need to escape special characters. To work this around, the path can be
+additionally wrapped in the fixed\-length syntax, e.g. \fB%n%string_of_length_n\fP
+(see above).
+.sp
+Some mpv options interpret paths starting with \fB~\fP\&. Currently, the prefix
+\fB~~/\fP expands to the mpv configuration directory (usually \fB~/.config/mpv/\fP).
+\fB~/\fP expands to the user\(aqs home directory. (The trailing \fB/\fP is always
+required.) There are the following paths as well:
+.TS
+center;
+|l|l|.
+_
+T{
+Name
+T} T{
+Meaning
+T}
+_
+T{
+\fB~~home/\fP
+T} T{
+same as \fB~~/\fP
+T}
+_
+T{
+\fB~~global/\fP
+T} T{
+the global config path, if available (not on win32)
+T}
+_
+T{
+\fB~~osxbundle/\fP
+T} T{
+the OSX bundle resource path (OSX only)
+T}
+_
+T{
+\fB~~desktop/\fP
+T} T{
+the path to the desktop (win32, OSX)
+T}
+_
+.TE
+.SS Per\-File Options
+.sp
+When playing multiple files, any option given on the command line usually
+affects all files. Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-a file1.mkv \-\-b file2.mkv \-\-c
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TS
+center;
+|l|l|.
+_
+T{
+File
+T} T{
+Active options
+T}
+_
+T{
+file1.mkv
+T} T{
+\fB\-\-a \-\-b \-\-c\fP
+T}
+_
+T{
+file2.mkv
+T} T{
+\fB\-\-a \-\-b \-\-c\fP
+T}
+_
+.TE
+.sp
+(This is different from MPlayer and mplayer2.)
+.sp
+Also, if any option is changed at runtime (via input commands), they are not
+reset when a new file is played.
+.sp
+Sometimes, it is useful to change options per\-file. This can be achieved by
+adding the special per\-file markers \fB\-\-{\fP and \fB\-\-}\fP\&. (Note that you must
+escape these on some shells.) Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-a file1.mkv \-\-b \-\-\e{ \-\-c file2.mkv \-\-d file3.mkv \-\-e \-\-\e} file4.mkv \-\-f
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TS
+center;
+|l|l|.
+_
+T{
+File
+T} T{
+Active options
+T}
+_
+T{
+file1.mkv
+T} T{
+\fB\-\-a \-\-b \-\-f\fP
+T}
+_
+T{
+file2.mkv
+T} T{
+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
+T}
+_
+T{
+file3.mkv
+T} T{
+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
+T}
+_
+T{
+file4.mkv
+T} T{
+\fB\-\-a \-\-b \-\-f\fP
+T}
+_
+.TE
+.sp
+Additionally, any file\-local option changed at runtime is reset when the current
+file stops playing. If option \fB\-\-c\fP is changed during playback of
+\fBfile2.mkv\fP, it is reset when advancing to \fBfile3.mkv\fP\&. This only affects
+file\-local options. The option \fB\-\-a\fP is never reset here.
+.SS List Options
+.sp
+Some options which store lists of option values can have action suffixes. For
+example, you can set a \fB,\fP\-separated list of filters with \fB\-\-vf\fP, but the
+option also allows you to append filters with \fB\-\-vf\-append\fP\&.
+.sp
+Options for filenames do not use \fB,\fP as separator, but \fB:\fP (Unix) or \fB;\fP
+(Windows).
+.TS
+center;
+|l|l|.
+_
+T{
+Suffix
+T} T{
+Meaning
+T}
+_
+T{
+\-add
+T} T{
+Append 1 or more items (may become alias for \-append)
+T}
+_
+T{
+\-append
+T} T{
+Append single item (avoids need for escaping)
+T}
+_
+T{
+\-clr
+T} T{
+Clear the option
+T}
+_
+T{
+\-del
+T} T{
+Delete an existing item by integer index
+T}
+_
+T{
+\-pre
+T} T{
+Prepend 1 or more items
+T}
+_
+T{
+\-set
+T} T{
+Set a list of items
+T}
+_
+.TE
+.sp
+Although some operations allow specifying multiple \fB,\fP\-separated items, using
+this is strongly discouraged and deprecated, except for \fB\-set\fP\&.
+.sp
+Without suffix, the action taken is normally \fB\-set\fP\&.
+.sp
+Some options (like \fB\-\-sub\-file\fP, \fB\-\-audio\-file\fP, \fB\-\-opengl\-shader\fP) are
+aliases for the proper option with \fB\-append\fP action. For example,
+\fB\-\-sub\-file\fP is an alias for \fB\-\-sub\-files\-append\fP\&.
+.SS Playing DVDs
+.sp
+DVDs can be played with the \fBdvd://[title]\fP syntax. The optional
+title specifier is a number which selects between separate video
+streams on the DVD. If no title is given (\fBdvd://\fP) then the longest
+title is selected automatically by the library. This is usually what
+you want. mpv does not support DVD menus.
+.sp
+DVDs which have been copied on to a hard drive or other mounted
+filesystem (by e.g. the \fBdvdbackup\fP tool) are accommodated by
+specifying the path to the local copy: \fB\-\-dvd\-device=PATH\fP\&.
+Alternatively, running \fBmpv PATH\fP should auto\-detect a DVD directory
+tree and play the longest title.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+DVD library choices
+.sp
+mpv uses a different default DVD library than MPlayer. MPlayer
+uses libdvdread by default, and mpv uses libdvdnav by default.
+Both libraries are developed in parallel, but libdvdnav is
+intended to support more sophisticated DVD features such as menus
+and multi\-angle playback. mpv uses libdvdnav for files specified
+as either \fBdvd://...\fP or \fBdvdnav://...\fP\&. To use libdvdread,
+which will produce behavior more like MPlayer, specify
+\fBdvdread://...\fP instead. Some users have experienced problems
+when using libdvdnav, in which playback gets stuck in a DVD menu
+stream. These problems are reported to go away when auto\-selecting
+the title (\fBdvd://\fP rather than \fBdvd://1\fP) or when using
+libdvdread (e.g. \fBdvdread://0\fP). There are also outstanding bugs
+in libdvdnav with seeking backwards and forwards in a video
+stream. Specify \fBdvdread://...\fP to fix such problems.
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+DVD subtitles
+.sp
+DVDs use image\-based subtitles. Image subtitles are implemented as
+a bitmap video stream which can be superimposed over the main
+movie. mpv\(aqs subtitle styling and positioning options and keyboard
+shortcuts generally do not work with image\-based subtitles.
+Exceptions include options like \fB\-\-stretch\-dvd\-subs\fP and
+\fB\-\-stretch\-image\-subs\-to\-screen\fP\&.
+.UNINDENT
+.UNINDENT
+.SH CONFIGURATION FILES
+.SS Location and Syntax
+.sp
+You can put all of the options in configuration files which will be read every
+time mpv is run. The system\-wide configuration file \(aqmpv.conf\(aq is in your
+configuration directory (e.g. \fB/etc/mpv\fP or \fB/usr/local/etc/mpv\fP), the
+user\-specific one is \fB~/.config/mpv/mpv.conf\fP\&. For details and platform
+specifics (in particular Windows paths) see the \fI\%FILES\fP section.
+.sp
+User\-specific options override system\-wide options and options given on the
+command line override either. The syntax of the configuration files is
+\fBoption=value\fP\&. Everything after a \fI#\fP is considered a comment. Options
+that work without values can be enabled by setting them to \fIyes\fP and disabled by
+setting them to \fIno\fP\&. Even suboptions can be specified in this way.
+.INDENT 0.0
+.INDENT 3.5
+.IP "Example configuration file"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# Use opengl video output by default.
+vo=opengl
+# Use quotes for text that can contain spaces:
+status\-msg="Time: ${time\-pos}"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SS Escaping spaces and special characters
+.sp
+This is done like with command line options. The shell is not involved here,
+but option values still need to be quoted as a whole if it contains certain
+characters like spaces. A config entry can be quoted with \fB"\fP,
+as well as with the fixed\-length syntax (\fB%n%\fP) mentioned before. This is like
+passing the exact contents of the quoted string as command line option. C\-style
+escapes are currently _not_ interpreted on this level, although some options do
+this manually. (This is a mess and should probably be changed at some point.)
+.SS Putting Command Line Options into the Configuration File
+.sp
+Almost all command line options can be put into the configuration file. Here
+is a small guide:
+.TS
+center;
+|l|l|.
+_
+T{
+Option
+T} T{
+Configuration file entry
+T}
+_
+T{
+\fB\-\-flag\fP
+T} T{
+\fBflag\fP
+T}
+_
+T{
+\fB\-opt val\fP
+T} T{
+\fBopt=val\fP
+T}
+_
+T{
+\fB\-\-opt=val\fP
+T} T{
+\fBopt=val\fP
+T}
+_
+T{
+\fB\-opt "has spaces"\fP
+T} T{
+\fBopt="has spaces"\fP
+T}
+_
+.TE
+.SS File\-specific Configuration Files
+.sp
+You can also write file\-specific configuration files. If you wish to have a
+configuration file for a file called \(aqvideo.avi\(aq, create a file named
+\(aqvideo.avi.conf\(aq with the file\-specific options in it and put it in
+\fB~/.config/mpv/\fP\&. You can also put the configuration file in the same directory
+as the file to be played. Both require you to set the \fB\-\-use\-filedir\-conf\fP
+option (either on the command line or in your global config file). If a
+file\-specific configuration file is found in the same directory, no
+file\-specific configuration is loaded from \fB~/.config/mpv\fP\&. In addition, the
+\fB\-\-use\-filedir\-conf\fP option enables directory\-specific configuration files.
+For this, mpv first tries to load a mpv.conf from the same directory
+as the file played and then tries to load any file\-specific configuration.
+.SS Profiles
+.sp
+To ease working with different configurations, profiles can be defined in the
+configuration files. A profile starts with its name in square brackets,
+e.g. \fB[my\-profile]\fP\&. All following options will be part of the profile. A
+description (shown by \fB\-\-profile=help\fP) can be defined with the
+\fBprofile\-desc\fP option. To end the profile, start another one or use the
+profile name \fBdefault\fP to continue with normal options.
+.INDENT 0.0
+.INDENT 3.5
+.IP "Example mpv config file with profiles"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# normal top\-level option
+fullscreen=yes
+
+# a profile that can be enabled with \-\-profile=big\-cache
+[big\-cache]
+cache=123400
+demuxer\-readahead\-secs=20
+
+[slow]
+profile\-desc="some profile name"
+# reference a builtin profile
+profile=opengl\-hq
+
+[fast]
+vo=vdpau
+
+# using a profile again extends it
+[slow]
+framedrop=no
+# you can also include other profiles
+profile=big\-cache
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SS Auto profiles
+.sp
+Some profiles are loaded automatically. The following example demonstrates this:
+.INDENT 0.0
+.INDENT 3.5
+.IP "Auto profile loading"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[protocol.dvd]
+profile\-desc="profile for dvd:// streams"
+alang=en
+
+[extension.flv]
+profile\-desc="profile for .flv files"
+vf=flip
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+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).
+.sp
+This feature is very limited, and there are no other auto profiles.
+.SH TAKING SCREENSHOTS
+.sp
+Screenshots of the currently played file can be taken using the \(aqscreenshot\(aq
+input mode command, which is by default bound to the \fBs\fP key. Files named
+\fBmpv\-shotNNNN.jpg\fP will be saved in the working directory, using the first
+available number \- no files will be overwritten. In pseudo\-GUI mode, the
+screenshot will be saved somewhere else. See \fI\%PSEUDO GUI MODE\fP\&.
+.sp
+A screenshot will usually contain the unscaled video contents at the end of the
+video filter chain and subtitles. By default, \fBS\fP takes screenshots without
+subtitles, while \fBs\fP includes subtitles.
+.sp
+Unlike with MPlayer, the \fBscreenshot\fP video filter is not required. This
+filter was never required in mpv, and has been removed.
+.SH TERMINAL STATUS LINE
+.sp
+During playback, mpv shows the playback status on the terminal. It looks like
+something like this:
+.INDENT 0.0
+.INDENT 3.5
+\fBAV: 00:03:12 / 00:24:25 (13%) A\-V: \-0.000\fP
+.UNINDENT
+.UNINDENT
+.sp
+The status line can be overridden with the \fB\-\-term\-status\-msg\fP option.
+.sp
+The following is a list of things that can show up in the status line. Input
+properties, that can be used to get the same information manually, are also
+listed.
+.INDENT 0.0
+.IP \(bu 2
+\fBAV:\fP or \fBV:\fP (video only) or \fBA:\fP (audio only)
+.IP \(bu 2
+The current time position in \fBHH:MM:SS\fP format (\fBplayback\-time\fP property)
+.IP \(bu 2
+The total file duration (absent if unknown) (\fBlength\fP property)
+.IP \(bu 2
+Playback speed, e.g. \(ga\(ga x2.0\(ga\(ga. Only visible if the speed is not normal. This
+is the user\-requested speed, and not the actual speed (usually they should
+be the same, unless playback is too slow). (\fBspeed\fP property.)
+.IP \(bu 2
+Playback percentage, e.g. \fB(13%)\fP\&. How much of the file has been played.
+Normally calculated out of playback position and duration, but can fallback
+to other methods (like byte position) if these are not available.
+(\fBpercent\-pos\fP property.)
+.IP \(bu 2
+The audio/video sync as \fBA\-V: 0.000\fP\&. This is the difference between
+audio and video time. Normally it should be 0 or close to 0. If it\(aqs growing,
+it might indicate a playback problem. (\fBavsync\fP property.)
+.IP \(bu 2
+Total A/V sync change, e.g. \fBct: \-0.417\fP\&. Normally invisible. Can show up
+if there is audio "missing", or not enough frames can be dropped. Usually
+this will indicate a problem. (\fBtotal\-avsync\-change\fP property.)
+.IP \(bu 2
+Encoding state in \fB{...}\fP, only shown in encoding mode.
+.IP \(bu 2
+Display sync state. If display sync is active (\fBdisplay\-sync\-active\fP
+property), this shows \fBDS: 2.500/13\fP, where the first number is average
+number of vsyncs per video frame (e.g. 2.5 when playing 24Hz videos on 60Hz
+screens), which might jitter if the ratio doesn\(aqt round off, or there are
+mistimed frames (\fBvsync\-ratio\fP), and the second number of estimated number
+of vsyncs which took too long (\fBvo\-delayed\-frame\-count\fP property). The
+latter is a heuristic, as it\(aqs generally not possible to determine this with
+certainty.
+.IP \(bu 2
+Dropped frames, e.g. \fBDropped: 4\fP\&. Shows up only if the count is not 0. Can
+grow if the video framerate is higher than that of the display, or if video
+rendering is too slow. May also be incremented on "hiccups" and when the video
+frame couldn\(aqt be displayed on time. (\fBvo\-drop\-frame\-count\fP property.)
+If the decoder drops frames, the number of decoder\-dropped frames is appended
+to the display as well, e.g.: \fBDropped: 4/34\fP\&. This happens only if
+decoder frame dropping is enabled with the \fB\-\-framedrop\fP options.
+(\fBdrop\-frame\-count\fP property.)
+.IP \(bu 2
+Cache state, e.g. \fBCache: 2s+134KB\fP\&. Visible if the stream cache is enabled.
+The first value shows the amount of video buffered in the demuxer in seconds,
+the second value shows \fIadditional\fP data buffered in the stream cache in
+kilobytes. (\fBdemuxer\-cache\-duration\fP and \fBcache\-used\fP properties.)
+.UNINDENT
+.SH PROTOCOLS
+.sp
+\fBhttp://...\fP, \fBhttps://\fP, ...
+.INDENT 0.0
+.INDENT 3.5
+Many network protocols are supported, but the protocol prefix must always
+be specified. mpv will never attempt to guess whether a filename is
+actually a network address. A protocol prefix is always required.
+.sp
+Note that not all prefixes are documented here. Undocumented prefixes are
+either aliases to documented protocols, or are just redirections to
+protocols implemented and documented in FFmpeg.
+.sp
+\fBdata:\fP is supported in FFmpeg (not in Libav), but needs to be in the
+format \fBdata://\fP\&. This is done to avoid ambiguity with filenames. You
+can also prefix it with \fBlavf://\fP or \fBffmpeg://\fP\&.
+.UNINDENT
+.UNINDENT
+.sp
+\fBytdl://...\fP
+.INDENT 0.0
+.INDENT 3.5
+By default, the youtube\-dl hook script (enabled by default for mpv CLI)
+only looks at http URLs. Prefixing an URL with \fBytdl://\fP forces it to
+be always processed by the script. This can also be used to invoke special
+youtube\-dl functionality like playing a video by ID or invoking search.
+.sp
+Keep in mind that you can\(aqt pass youtube\-dl command line options by this,
+and you have to use \fB\-\-ytdl\-raw\-options\fP instead.
+.UNINDENT
+.UNINDENT
+.sp
+\fB\-\fP
+.INDENT 0.0
+.INDENT 3.5
+Play data from stdin.
+.UNINDENT
+.UNINDENT
+.sp
+\fBsmb://PATH\fP
+.INDENT 0.0
+.INDENT 3.5
+Play a path from Samba share.
+.UNINDENT
+.UNINDENT
+.sp
+\fBbd://[title][/device]\fP \fB\-\-bluray\-device=PATH\fP
+.INDENT 0.0
+.INDENT 3.5
+Play a Blu\-ray disc. Currently, this does not accept ISO files. Instead,
+you must mount the ISO file as filesystem, and point \fB\-\-bluray\-device\fP
+to the mounted directory directly.
+.sp
+\fBtitle\fP can be: \fBlongest\fP or \fBfirst\fP (selects the default
+playlist); \fBmpls/<number>\fP (selects <number>.mpls playlist);
+\fB<number>\fP (select playlist with the same index). You can list
+the available playlists with \fB\-\-msg\-level=bd=v\fP\&.
+.UNINDENT
+.UNINDENT
+.sp
+\fBdvd://[title|[starttitle]\-endtitle][/device]\fP \fB\-\-dvd\-device=PATH\fP
+.INDENT 0.0
+.INDENT 3.5
+Play a DVD. DVD menus are not supported. If no title is given, the longest
+title is auto\-selected.
+.sp
+\fBdvdnav://\fP is an old alias for \fBdvd://\fP and does exactly the same
+thing.
+.UNINDENT
+.UNINDENT
+.sp
+\fBdvdread://...:\fP
+.INDENT 0.0
+.INDENT 3.5
+Play a DVD using the old libdvdread code. This is what MPlayer and
+older mpv versions use for \fBdvd://\fP\&. Use is discouraged. It\(aqs
+provided only for compatibility and for transition, and to work
+around outstanding dvdnav bugs (see "DVD library choices" above).
+.UNINDENT
+.UNINDENT
+.sp
+\fBtv://[channel][/input_id]\fP \fB\-\-tv\-...\fP
+.INDENT 0.0
+.INDENT 3.5
+Analogue TV via V4L. Also useful for webcams. (Linux only.)
+.UNINDENT
+.UNINDENT
+.sp
+\fBpvr://\fP \fB\-\-pvr\-...\fP
+.INDENT 0.0
+.INDENT 3.5
+PVR. (Linux only.)
+.UNINDENT
+.UNINDENT
+.sp
+\fBdvb://[cardnumber@]channel\fP \fB\-\-dvbin\-...\fP
+.INDENT 0.0
+.INDENT 3.5
+Digital TV via DVB. (Linux only.)
+.UNINDENT
+.UNINDENT
+.sp
+\fBmf://[filemask|@listfile]\fP \fB\-\-mf\-...\fP
+.INDENT 0.0
+.INDENT 3.5
+Play a series of images as video.
+.UNINDENT
+.UNINDENT
+.sp
+\fBcdda://[device]\fP \fB\-\-cdrom\-device=PATH\fP \fB\-\-cdda\-...\fP
+.INDENT 0.0
+.INDENT 3.5
+Play CD.
+.UNINDENT
+.UNINDENT
+.sp
+\fBlavf://...\fP
+.INDENT 0.0
+.INDENT 3.5
+Access any FFmpeg/Libav libavformat protocol. Basically, this passed the
+string after the \fB//\fP directly to libavformat.
+.UNINDENT
+.UNINDENT
+.sp
+\fBav://type:options\fP
+.INDENT 0.0
+.INDENT 3.5
+This is intended for using libavdevice inputs. \fBtype\fP is the libavdevice
+demuxer name, and \fBoptions\fP is the (pseudo\-)filename passed to the
+demuxer.
+.sp
+For example, \fBmpv av://lavfi:mandelbrot\fP makes use of the libavfilter
+wrapper included in libavdevice, and will use the \fBmandelbrot\fP source
+filter to generate input data.
+.sp
+\fBavdevice://\fP is an alias.
+.UNINDENT
+.UNINDENT
+.sp
+\fBfile://PATH\fP
+.INDENT 0.0
+.INDENT 3.5
+A local path as URL. Might be useful in some special use\-cases. Note that
+\fBPATH\fP itself should start with a third \fB/\fP to make the path an
+absolute path.
+.UNINDENT
+.UNINDENT
+.sp
+\fBfd://123\fP
+.INDENT 0.0
+.INDENT 3.5
+Read data from the given file descriptor (for example 123). This is similar
+to piping data to stdin via \fB\-\fP, but can use an arbitrary file descriptor.
+.UNINDENT
+.UNINDENT
+.sp
+\fBfdclose://123\fP
+.INDENT 0.0
+.INDENT 3.5
+Like \fBfd://\fP, but the file descriptor is closed after use. When using this
+you need to ensure that the same fd URL will only be used once.
+.UNINDENT
+.UNINDENT
+.sp
+\fBedl://[edl specification as in edl\-mpv.rst]\fP
+.INDENT 0.0
+.INDENT 3.5
+Stitch together parts of multiple files and play them.
+.UNINDENT
+.UNINDENT
+.sp
+\fBnull://\fP
+.INDENT 0.0
+.INDENT 3.5
+Simulate an empty file. If opened for writing, it will discard all data.
+The \fBnull\fP demuxer will specifically pass autoprobing if this protocol
+is used (while it\(aqs not automatically invoked for empty files).
+.UNINDENT
+.UNINDENT
+.sp
+\fBmemory://data\fP
+.INDENT 0.0
+.INDENT 3.5
+Use the \fBdata\fP part as source data.
+.UNINDENT
+.UNINDENT
+.sp
+\fBhex://data\fP
+.INDENT 0.0
+.INDENT 3.5
+Like \fBmemory://\fP, but the string is interpreted as hexdump.
+.UNINDENT
+.UNINDENT
+.SH PSEUDO GUI MODE
+.sp
+mpv has no official GUI, other than the OSC (\fI\%ON SCREEN CONTROLLER\fP), which
+is not a full GUI and is not meant to be. However, to compensate for the lack
+of expected GUI behavior, mpv will in some cases start with some settings
+changed to behave slightly more like a GUI mode.
+.sp
+Currently this happens only in the following cases:
+.INDENT 0.0
+.IP \(bu 2
+if started using the \fBmpv.desktop\fP file on Linux (e.g. started from menus
+or file associations provided by desktop environments)
+.IP \(bu 2
+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
+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 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
+[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
+\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
+.TP
+.B \fB\-\-alang=<languagecode[,languagecode,...]>\fP
+Specify a priority list of audio languages to use. Different container
+formats employ different language codes. DVDs use ISO 639\-1 two\-letter
+language codes, Matroska, MPEG\-TS and NUT use ISO 639\-2 three\-letter
+language codes, while OGM uses a free\-form identifier. See also \fB\-\-aid\fP\&.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fBmpv dvd://1 \-\-alang=hu,en\fP chooses the Hungarian language track
+on a DVD and falls back on English if Hungarian is not available.
+.IP \(bu 2
+\fBmpv \-\-alang=jpn example.mkv\fP plays a Matroska file with Japanese
+audio.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-slang=<languagecode[,languagecode,...]>\fP
+Specify a priority list of subtitle languages to use. Different container
+formats employ different language codes. DVDs use ISO 639\-1 two letter
+language codes, Matroska uses ISO 639\-2 three letter language codes while
+OGM uses a free\-form identifier. See also \fB\-\-sid\fP\&.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fBmpv dvd://1 \-\-slang=hu,en\fP chooses the Hungarian subtitle track on
+a DVD and falls back on English if Hungarian is not available.
+.IP \(bu 2
+\fBmpv \-\-slang=jpn example.mkv\fP plays a Matroska file with Japanese
+subtitles.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-aid=<ID|auto|no>\fP
+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
+\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
+stream index is relatively arbitrary, but useful when interacting with
+other software using FFmpeg (consider \fBffprobe\fP).
+.sp
+Note that with external tracks (added with \fB\-\-sub\-files\fP and similar
+options), there will be streams with duplicate IDs. In this case, the
+first stream in order is selected.
+.TP
+.B \fB\-\-edition=<ID|auto>\fP
+(Matroska files only)
+Specify the edition (set of chapters) to use, where 0 is the first. If set
+to \fBauto\fP (the default), mpv will choose the first edition declared as a
+default, or if there is no default, the first edition defined.
+.TP
+.B \fB\-\-track\-auto\-selection=<yes|no>\fP
+Enable the default track auto\-selection (default: yes). Enabling this will
+make the player select streams according to \fB\-\-aid\fP, \fB\-\-alang\fP, and
+others. If it is disabled, no tracks are selected. In addition, the player
+will not exit if no tracks are selected, and wait instead (this wait mode
+is similar to pausing, but the pause option is not set).
+.sp
+This is useful with \fB\-\-lavfi\-complex\fP: you can start playback in this
+mode, and then set select tracks at runtime by setting the filter graph.
+Note that if \fB\-\-lavfi\-complex\fP is set before playback is started, the
+referenced tracks are always selected.
+.UNINDENT
+.SS Playback Control
+.INDENT 0.0
+.TP
+.B \fB\-\-start=<relative time>\fP
+Seek to given time position.
+.sp
+The general format for absolute times is \fB[[hh:]mm:]ss[.ms]\fP\&. If the time
+is given with a prefix of \fB+\fP or \fB\-\fP, the seek is relative from the start
+or end of the file. (Since mpv 0.14, the start of the file is always
+considered 0.)
+.sp
+\fBpp%\fP seeks to percent position pp (0\-100).
+.sp
+\fB#c\fP seeks to chapter number c. (Chapters start from 1.)
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB\-\-start=+56\fP, \fB\-\-start=+00:56\fP
+Seeks to the start time + 56 seconds.
+.TP
+.B \fB\-\-start=\-56\fP, \fB\-\-start=\-00:56\fP
+Seeks to the end time \- 56 seconds.
+.TP
+.B \fB\-\-start=01:10:00\fP
+Seeks to 1 hour 10 min.
+.TP
+.B \fB\-\-start=50%\fP
+Seeks to the middle of the file.
+.TP
+.B \fB\-\-start=30 \-\-end=40\fP
+Seeks to 30 seconds, plays 10 seconds, and exits.
+.TP
+.B \fB\-\-start=\-3:20 \-\-length=10\fP
+Seeks to 3 minutes and 20 seconds before the end of the file, plays
+10 seconds, and exits.
+.TP
+.B \fB\-\-start=\(aq#2\(aq \-\-end=\(aq#4\(aq\fP
+Plays chapters 2 and 3, and exits.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-end=<time>\fP
+Stop at given absolute time. Use \fB\-\-length\fP if the time should be relative
+to \fB\-\-start\fP\&. See \fB\-\-start\fP for valid option values and examples.
+.TP
+.B \fB\-\-length=<relative time>\fP
+Stop after a given time relative to the start time.
+See \fB\-\-start\fP for valid option values and examples.
+.TP
+.B \fB\-\-rebase\-start\-time=<yes|no>\fP
+Whether to move the file start time to \fB00:00:00\fP (default: yes). This
+is less awkward for files which start at a random timestamp, such as
+transport streams. On the other hand, if there are timestamp resets, the
+resulting behavior can be rather weird. For this reason, and in case you
+are actually interested in the real timestamps, this behavior can be
+disabled with \fBno\fP\&.
+.TP
+.B \fB\-\-speed=<0.01\-100>\fP
+Slow down or speed up playback by the factor given as parameter.
+.sp
+If \fB\-\-audio\-pitch\-correction\fP (on by default) is used, playing with a
+speed higher than normal automatically inserts the \fBscaletempo\fP audio
+filter.
+.TP
+.B \fB\-\-pause\fP
+Start the player in paused state.
+.TP
+.B \fB\-\-shuffle\fP
+Play files in random order.
+.TP
+.B \fB\-\-chapter=<start[\-end]>\fP
+Specify which chapter to start playing at. Optionally specify which
+chapter to end playing at.
+.sp
+See also: \fB\-\-start\fP\&.
+.TP
+.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 \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\-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
+no format is detected, it will be treated as list of files, separated by
+newline characters. Note that XML playlist formats are not supported.)
+.sp
+You can play playlists directly and without this option, however, this
+option disables any security mechanisms that might be in place. You may
+also need this option to load plaintext files as playlist.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+The way mpv uses playlist files via \fB\-\-playlist\fP is not safe against
+maliciously constructed files. Such files may trigger harmful actions.
+This has been the case for all mpv and MPlayer versions, but
+unfortunately this fact was not well documented earlier, and some people
+have even misguidedly recommended use of \fB\-\-playlist\fP with untrusted
+sources. Do NOT use \fB\-\-playlist\fP with random internet sources or files
+you do not trust!
+.sp
+Playlist can contain entries using other protocols, such as local files,
+or (most severely), special protocols like \fBavdevice://\fP, which are
+inherently unsafe.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-chapter\-merge\-threshold=<number>\fP
+Threshold for merging almost consecutive ordered chapter parts in
+milliseconds (default: 100). Some Matroska files with ordered chapters
+have inaccurate chapter end timestamps, causing a small gap between the
+end of one chapter and the start of the next one when they should match.
+If the end of one playback part is less than the given threshold away from
+the start of the next one then keep playing video normally over the
+chapter change instead of doing a seek.
+.TP
+.B \fB\-\-chapter\-seek\-threshold=<seconds>\fP
+Distance in seconds from the beginning of a chapter within which a backward
+chapter seek will go to the previous chapter (default: 5.0). Past this
+threshold, a backward chapter seek will go to the beginning of the current
+chapter instead. A negative value means always go back to the previous
+chapter.
+.TP
+.B \fB\-\-hr\-seek=<no|absolute|yes>\fP
+Select when to use precise seeks that are not limited to keyframes. Such
+seeks require decoding video from the previous keyframe up to the target
+position and so can take some time depending on decoding performance. For
+some video formats, precise seeks are disabled. This option selects the
+default choice to use for seeks; it is possible to explicitly override that
+default in the definition of key bindings and in input commands.
+.INDENT 7.0
+.TP
+.B no
+Never use precise seeks.
+.TP
+.B absolute
+Use precise seeks if the seek is to an absolute position in the
+file, such as a chapter seek, but not for relative seeks like
+the default behavior of arrow keys (default).
+.TP
+.B yes
+Use precise seeks whenever possible.
+.TP
+.B always
+Same as \fByes\fP (for compatibility).
+.UNINDENT
+.TP
+.B \fB\-\-hr\-seek\-demuxer\-offset=<seconds>\fP
+This option exists to work around failures to do precise seeks (as in
+\fB\-\-hr\-seek\fP) caused by bugs or limitations in the demuxers for some file
+formats. Some demuxers fail to seek to a keyframe before the given target
+position, going to a later position instead. The value of this option is
+subtracted from the time stamp given to the demuxer. Thus, if you set this
+option to 1.5 and try to do a precise seek to 60 seconds, the demuxer is
+told to seek to time 58.5, which hopefully reduces the chance that it
+erroneously goes to some time later than 60 seconds. The downside of
+setting this option is that precise seeks become slower, as video between
+the earlier demuxer position and the real target may be unnecessarily
+decoded.
+.TP
+.B \fB\-\-hr\-seek\-framedrop=<yes|no>\fP
+Allow the video decoder to drop frames during seek, if these frames are
+before the seek target. If this is enabled, precise seeking can be faster,
+but if you\(aqre using video filters which modify timestamps or add new
+frames, it can lead to precise seeking skipping the target frame. This
+e.g. can break frame backstepping when deinterlacing is enabled.
+.sp
+Default: \fByes\fP
+.TP
+.B \fB\-\-index=<mode>\fP
+Controls how to seek in files. Note that if the index is missing from a
+file, it will be built on the fly by default, so you don\(aqt need to change
+this. But it might help with some broken files.
+.INDENT 7.0
+.TP
+.B default
+use an index if the file has one, or build it if missing
+.TP
+.B recreate
+don\(aqt read or use the file\(aqs index
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This option only works if the underlying media supports seeking
+(i.e. not with stdin, pipe, etc).
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-load\-unsafe\-playlists\fP
+Load URLs from playlists which are considered unsafe (default: no). This
+includes special protocols and anything that doesn\(aqt refer to normal files.
+Local files and HTTP links on the other hand are always considered safe.
+.sp
+Note that \fB\-\-playlist\fP always loads all entries, so you use that instead
+if you really have the need for this functionality.
+.TP
+.B \fB\-\-access\-references=<yes|no>\fP
+Follow any references in the file being opened (default: yes). Disabling
+this is helpful if the file is automatically scanned (e.g. thumbnail
+generation). If the thumbnail scanner for example encounters a playlist
+file, which contains network URLs, and the scanner should not open these,
+enabling this option will prevent it. This option also disables ordered
+chapters, mov reference files, opening of archives, and a number of other
+features.
+.sp
+On older FFmpeg versions, this will not work in some cases. Some FFmpeg
+demuxers might not respect this option.
+.sp
+This option does not prevent opening of paired subtitle files and such. Use
+\fB\-\-autoload\-files=no\fP to prevent this.
+.sp
+This option does not always work if you open non\-files (for example using
+\fBdvd://directory\fP would open a whole bunch of files in the given
+directory). Prefixing the filename with \fB\&./\fP if it doesn\(aqt start with
+a \fB/\fP will avoid this.
+.TP
+.B \fB\-\-loop\-playlist=<N|inf|force|no>\fP, \fB\-\-loop\-playlist\fP
+Loops playback \fBN\fP times. A value of \fB1\fP plays it one time (default),
+\fB2\fP two times, etc. \fBinf\fP means forever. \fBno\fP is the same as \fB1\fP and
+disables looping. If several files are specified on command line, the
+entire playlist is looped. \fB\-\-loop\-playlist\fP is the same as
+\fB\-\-loop\-playlist=inf\fP\&.
+.sp
+The \fBforce\fP mode is like \fBinf\fP, but does not skip playlist entries
+which have been marked as failing. This means the player might waste CPU
+time trying to loop a file that doesn\(aqt exist. But it might be useful for
+playing webradios under very bad network conditions.
+.TP
+.B \fB\-\-loop\-file=<N|inf|no>\fP, \fB\-\-loop=<N|inf|no>\fP
+Loop a single file N times. \fBinf\fP means forever, \fBno\fP means normal
+playback. For compatibility, \fB\-\-loop\-file\fP and \fB\-\-loop\-file=yes\fP are
+also accepted, and are the same as \fB\-\-loop\-file=inf\fP\&.
+.sp
+The difference to \fB\-\-loop\-playlist\fP is that this doesn\(aqt loop the playlist,
+just the file itself. If the playlist contains only a single file, the
+difference between the two option is that this option performs a seek on
+loop, instead of reloading the file.
+.sp
+\fB\-\-loop\fP is an alias for this option.
+.TP
+.B \fB\-\-ab\-loop\-a=<time>\fP, \fB\-\-ab\-loop\-b=<time>\fP
+Set loop points. If playback passes the \fBb\fP timestamp, it will seek to
+the \fBa\fP timestamp. Seeking past the \fBb\fP point doesn\(aqt loop (this is
+intentional).
+.sp
+If both options are set to \fBno\fP, looping is disabled. Otherwise, the
+start/end of the file is used if one of the options is set to \fBno\fP\&.
+.sp
+The loop\-points can be adjusted at runtime with the corresponding
+properties. See also \fBab\-loop\fP command.
+.TP
+.B \fB\-\-ordered\-chapters\fP, \fB\-\-no\-ordered\-chapters\fP
+Enabled by default.
+Disable support for Matroska ordered chapters. mpv will not load or
+search for video segments from other files, and will also ignore any
+chapter order specified for the main file.
+.TP
+.B \fB\-\-ordered\-chapters\-files=<playlist\-file>\fP
+Loads the given file as playlist, and tries to use the files contained in
+it as reference files when opening a Matroska file that uses ordered
+chapters. This overrides the normal mechanism for loading referenced
+files by scanning the same directory the main file is located in.
+.sp
+Useful for loading ordered chapter files that are not located on the local
+filesystem, or if the referenced files are in different directories.
+.sp
+Note: a playlist can be as simple as a text file containing filenames
+separated by newlines.
+.TP
+.B \fB\-\-chapters\-file=<filename>\fP
+Load chapters from this file, instead of using the chapter metadata found
+in the main file.
+.sp
+This accepts a media file (like mkv) or even a pseudo\-format like ffmetadata
+and uses its chapters to replace the current file\(aqs chapters. This doesn\(aqt
+work with OGM or XML chapters directly.
+.TP
+.B \fB\-\-sstep=<sec>\fP
+Skip <sec> seconds after every frame.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Without \fB\-\-hr\-seek\fP, skipping will snap to keyframes.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-stop\-playback\-on\-init\-failure=<yes|no>\fP
+Stop playback if either audio or video fails to initialize. Currently,
+the default behavior is \fBno\fP for the command line player, but \fByes\fP
+for libmpv. With \fBno\fP, playback will continue in video\-only or audio\-only
+mode if one of them fails. This doesn\(aqt affect playback of audio\-only or
+video\-only files.
+.UNINDENT
+.SS Program Behavior
+.INDENT 0.0
+.TP
+.B \fB\-\-help\fP, \fB\-\-h\fP
+Show short summary of options.
+.sp
+You can also pass a string to this option, which will list all top\-level
+options which contain the string in the name, e.g. \fB\-\-h=scale\fP for all
+options that contain the word \fBscale\fP\&. The special string \fB*\fP lists
+all top\-level options.
+.TP
+.B \fB\-v\fP
+Increment verbosity level, one level for each \fB\-v\fP found on the command
+line.
+.TP
+.B \fB\-\-version, \-V\fP
+Print version string and exit.
+.TP
+.B \fB\-\-no\-config\fP
+Do not load default configuration files. This prevents loading of both the
+user\-level and system\-wide \fBmpv.conf\fP and \fBinput.conf\fP files. Other
+configuration files are blocked as well, such as resume playback files.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Files explicitly requested by command line options, like
+\fB\-\-include\fP or \fB\-\-use\-filedir\-conf\fP, will still be loaded.
+.UNINDENT
+.UNINDENT
+.sp
+See also: \fB\-\-config\-dir\fP\&.
+.TP
+.B \fB\-\-list\-options\fP
+Prints all available options.
+.TP
+.B \fB\-\-list\-properties\fP
+Print a list of the available properties.
+.TP
+.B \fB\-\-list\-protocols\fP
+Print a list of the supported protocols.
+.TP
+.B \fB\-\-log\-file=<path>\fP
+Opens the given path for writing, and print log messages to it. Existing
+files will be truncated. The log level always corresponds to \fB\-v\fP,
+regardless of terminal verbosity levels.
+.TP
+.B \fB\-\-config\-dir=<path>\fP
+Force a different configuration directory. If this is set, the given
+directory is used to load configuration files, and all other configuration
+directories are ignored. This means the global mpv configuration directory
+as well as per\-user directories are ignored, and overrides through
+environment variables (\fBMPV_HOME\fP) are also ignored.
+.sp
+Note that the \fB\-\-no\-config\fP option takes precedence over this option.
+.TP
+.B \fB\-\-save\-position\-on\-quit\fP
+Always save the current playback position on quit. When this file is
+played again later, the player will seek to the old playback position on
+start. This does not happen if playback of a file is stopped in any other
+way than quitting. For example, going to the next file in the playlist
+will not save the position, and start playback at beginning the next time
+the file is played.
+.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
+opening. The file will contain raw samples, each with a timestamp. To
+make this file into a readable, the script \fBTOOLS/stats\-conv.py\fP can be
+used (which currently displays it as a graph).
+.sp
+This option is useful for debugging only.
+.TP
+.B \fB\-\-idle=<no|yes|once>\fP
+Makes mpv wait idly instead of quitting when there is no file to play.
+Mostly useful in input mode, where mpv can be controlled through input
+commands.
+.sp
+\fBonce\fP will only idle at start and let the player close once the
+first playlist has finished playing back.
+.TP
+.B \fB\-\-include=<configuration\-file>\fP
+Specify configuration file to be parsed after the default ones.
+.TP
+.B \fB\-\-load\-scripts=<yes|no>\fP
+If set to \fBno\fP, don\(aqt auto\-load scripts from the \fBscripts\fP
+configuration subdirectory (usually \fB~/.config/mpv/scripts/\fP).
+(Default: \fByes\fP)
+.TP
+.B \fB\-\-script=<filename>\fP
+Load a Lua script. You can load multiple scripts by separating them with
+commas (\fB,\fP).
+.TP
+.B \fB\-\-script\-opts=key1=value1,key2=value2,...\fP
+Set options for scripts. A script can query an option by key. If an
+option is used and what semantics the option value has depends entirely on
+the loaded scripts. Values not claimed by any scripts are ignored.
+.TP
+.B \fB\-\-merge\-files\fP
+Pretend that all files passed to mpv are concatenated into a single, big
+file. This uses timeline/EDL support internally.
+.TP
+.B \fB\-\-no\-resume\-playback\fP
+Do not restore playback position from the \fBwatch_later\fP configuration
+subdirectory (usually \fB~/.config/mpv/watch_later/\fP).
+See \fBquit\-watch\-later\fP input command.
+.TP
+.B \fB\-\-profile=<profile1,profile2,...>\fP
+Use the given profile(s), \fB\-\-profile=help\fP displays a list of the
+defined profiles.
+.TP
+.B \fB\-\-reset\-on\-next\-file=<all|option1,option2,...>\fP
+Normally, mpv will try to keep all settings when playing the next file on
+the playlist, even if they were changed by the user during playback. (This
+behavior is the opposite of MPlayer\(aqs, which tries to reset all settings
+when starting next file.)
+.sp
+Default: Do not reset anything.
+.sp
+This can be changed with this option. It accepts a list of options, and
+mpv will reset the value of these options on playback start to the initial
+value. The initial value is either the default value, or as set by the
+config file or command line.
+.sp
+In some cases, this might not work as expected. For example, \fB\-\-volume\fP
+will only be reset if it is explicitly set in the config file or the
+command line.
+.sp
+The special name \fBall\fP resets as many options as possible.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-reset\-on\-next\-file=pause\fP
+Reset pause mode when switching to the next file.
+.IP \(bu 2
+\fB\-\-reset\-on\-next\-file=fullscreen,speed\fP
+Reset fullscreen and playback speed settings if they were changed
+during playback.
+.IP \(bu 2
+\fB\-\-reset\-on\-next\-file=all\fP
+Try to reset all settings that were changed during playback.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-write\-filename\-in\-watch\-later\-config\fP
+Prepend the watch later config files with the name of the file they refer
+to. This is simply written as comment on the top of the file.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+This option may expose privacy\-sensitive information and is thus
+disabled by default.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-ignore\-path\-in\-watch\-later\-config\fP
+Ignore path (i.e. use filename only) when using watch later feature.
+.TP
+.B \fB\-\-show\-profile=<profile>\fP
+Show the description and content of a profile.
+.TP
+.B \fB\-\-use\-filedir\-conf\fP
+Look for a file\-specific configuration file in the same directory as the
+file that is being played. See \fI\%File\-specific Configuration Files\fP\&.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+May be dangerous if playing from untrusted media.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-ytdl\fP, \fB\-\-no\-ytdl\fP
+Enable the youtube\-dl hook\-script. It will look at the input URL, and will
+play the video located on the website. This works with many streaming sites,
+not just the one that the script is named after. This requires a recent
+version of youtube\-dl to be installed on the system. (Enabled by default,
+except when the client API / libmpv is used.)
+.sp
+If the script can\(aqt do anything with an URL, it will do nothing.
+.sp
+The \fIexclude\fP script option accepts a \fB|\fP\-separated list of URL patterns
+which mpv should not use with youtube\-dl. The patterns are matched after
+the \fBhttp(s)://\fP part of the URL.
+.sp
+\fB^\fP matches the beginning of the URL, \fB$\fP matches its end, and you
+should use \fB%\fP before any of the characters \fB^$()%|,.[]*+\-?\fP to match
+that character.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq^youtube%.com\(aq\fP
+will exclude any URL that starts with \fBhttp://youtube.com\fP or
+\fBhttps://youtube.com\fP\&.
+.IP \(bu 2
+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq%.mkv$|%.mp4$\(aq\fP
+will exclude any URL that ends with \fB\&.mkv\fP or \fB\&.mp4\fP\&.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+See more lua patterns here: \fI\%https://www.lua.org/manual/5.1/manual.html#5.4.1\fP
+.TP
+.B \fB\-\-ytdl\-format=<best|worst|mp4|webm|...>\fP
+Video format/quality that is directly passed to youtube\-dl. The possible
+values are specific to the website and the video, for a given url the
+available formats can be found with the command
+\fByoutube\-dl \-\-list\-formats URL\fP\&. See youtube\-dl\(aqs documentation for
+available aliases.
+(Default: youtube\-dl\(aqs default, currently \fBbestvideo+bestaudio/best\fP)
+.TP
+.B \fB\-\-ytdl\-raw\-options=<key>=<value>[,<key>=<value>[,...]]\fP
+Pass arbitrary options to youtube\-dl. Parameter and argument should be
+passed as a key\-value pair. Options without argument must include \fB=\fP\&.
+.sp
+There is no sanity checking so it\(aqs possible to break things (i.e.
+passing invalid parameters to youtube\-dl).
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-ytdl\-raw\-options=username=user,password=pass\fP
+.IP \(bu 2
+\fB\-\-ytdl\-raw\-options=force\-ipv6=\fP
+.UNINDENT
+.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=<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=<...>\fP
+Specify a priority list of video decoders to be used, according to their
+family and name. See \fB\-\-ad\fP for further details. Both of these options
+use the same syntax and semantics; the only difference is that they
+operate on different codec lists.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+See \fB\-\-vd=help\fP for a full list of available decoders.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
+Specify a list of video filters to apply to the video stream. See
+\fI\%VIDEO FILTERS\fP for details and descriptions of the available filters.
+The option variants \fB\-\-vf\-add\fP, \fB\-\-vf\-pre\fP, \fB\-\-vf\-del\fP and
+\fB\-\-vf\-clr\fP exist to modify a previously specified list, but you
+should not need these for typical use.
+.TP
+.B \fB\-\-untimed\fP
+Do not sleep when outputting video frames. Useful for benchmarks when used
+with \fB\-\-no\-audio.\fP
+.TP
+.B \fB\-\-framedrop=<mode>\fP
+Skip displaying some frames to maintain A/V sync on slow systems, or
+playing high framerate video on video outputs that have an upper framerate
+limit.
+.sp
+The argument selects the drop methods, and can be one of the following:
+.INDENT 7.0
+.TP
+.B <no>
+Disable any framedropping.
+.TP
+.B <vo>
+Drop late frames on video output (default). This still decodes and
+filters all frames, but doesn\(aqt render them on the VO. It tries to query
+the display FPS (X11 only, not correct on multi\-monitor systems), or
+assumes infinite display FPS if that fails. Drops are indicated in
+the terminal status line as \fBDropped:\fP field. If the decoder is too slow,
+in theory all frames would have to be dropped (because all frames are
+too late) \- to avoid this, frame dropping stops if the effective
+framerate is below 10 FPS.
+.TP
+.B <decoder>
+Old, decoder\-based framedrop mode. (This is the same as \fB\-\-framedrop=yes\fP
+in mpv 0.5.x and before.) This tells the decoder to skip frames (unless
+they are needed to decode future frames). May help with slow systems,
+but can produce unwatchable choppy output, or even freeze the display
+completely. Not recommended.
+The \fB\-\-vd\-lavc\-framedrop\fP option controls what frames to drop.
+.TP
+.B <decoder+vo>
+Enable both modes. Not recommended.
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+\fB\-\-vo=vdpau\fP has its own code for the \fBvo\fP framedrop mode. Slight
+differences to other VOs are possible.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-display\-fps=<fps>\fP
+Set the display FPS used with the \fB\-\-video\-sync=display\-*\fP modes. By
+default, a detected value is used. Keep in mind that setting an incorrect
+value (even if slightly incorrect) can ruin video playback. On multi\-monitor
+systems, there is a chance that the detected value is from the wrong
+monitor.
+.sp
+Set this option only if you have reason to believe the automatically
+determined value is wrong.
+.TP
+.B \fB\-\-hwdec=<api>\fP
+Specify the hardware video decoding API that should be used if possible.
+Whether hardware decoding is actually done depends on the video codec. If
+hardware decoding is not possible, mpv will fall back on software decoding.
+.sp
+\fB<api>\fP can be one of the following:
+.INDENT 7.0
+.TP
+.B no
+always use software decoding (default)
+.TP
+.B auto
+enable best hw decoder (see below)
+.TP
+.B yes
+exactly the same as \fBauto\fP
+.TP
+.B auto\-copy
+enable best hw decoder with copy\-back (see below)
+.TP
+.B vdpau
+requires \fB\-\-vo=vdpau\fP or \fB\-\-vo=opengl\fP (Linux only)
+.TP
+.B vdpau\-copy
+copies video back into system RAM (Linux with some GPUs only)
+.TP
+.B vaapi
+requires \fB\-\-vo=opengl\fP or \fB\-\-vo=vaapi\fP (Linux only)
+.TP
+.B vaapi\-copy
+copies video back into system RAM (Linux with Intel GPUs only)
+.TP
+.B videotoolbox
+requires \fB\-\-vo=opengl\fP (OS X 10.8 and up),
+or \fB\-\-vo=opengl\-cb\fP (iOS 9.0 and up)
+.TP
+.B videotoolbox\-copy
+copies video back into system RAM (OS X 10.8 or iOS 9.0 and up)
+.TP
+.B dxva2
+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\fP with \fB\-\-opengl\-backend=angle\fP
+(Windows 8+ only)
+.TP
+.B d3d11va\-copy
+copies video back to system RAM (Windows 8+ only)
+.TP
+.B mediacodec
+copies video back to system RAM (Android only)
+.TP
+.B rpi
+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
+available method. This still depends what VO you are using. For example,
+if you are not using \fB\-\-vo=vdpau\fP or \fB\-\-vo=opengl\fP, vdpau decoding will
+never be enabled. Also note that if the first found method doesn\(aqt actually
+work, it will always fall back to software decoding, instead of trying the
+next method (might matter on some Linux systems).
+.sp
+\fBauto\-copy\fP selects only modes that copy the video data back to system
+memory after decoding. Currently, this selects only one of the following
+modes: \fBvaapi\-copy\fP, \fBdxva2\-copy\fP, \fBd3d11va\-copy\fP, \fBmediacodec\fP\&.
+If none of these work, hardware decoding is disabled. This mode is always
+guaranteed to incur no additional loss compared to software decoding, and
+will allow CPU processing with video filters.
+.sp
+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\-\-opengl\-backend=x11\fP, but the vaapi/GLX interop is
+said to be slower than \fBvaapi\-copy\fP\&.
+.sp
+The \fBcuda\fP and \fBcuda\-copy\fP modes provides deinterlacing in 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 (or leave the option unset) to not attempt any
+deinterlacing. \fBcuda\fP should always be preferred unless the \fBopengl\fP
+vo is not being used or filters are required.
+.sp
+Most video filters will not work with hardware decoding as they are
+primarily implemented on the CPU. Some exceptions are \fBvdpaupp\fP,
+\fBvdpaurb\fP and \fBvavpp\fP\&. See \fI\%VIDEO FILTERS\fP for more details.
+.sp
+The \fB\&...\-copy\fP modes (e.g. \fBdxva2\-copy\fP) allow you to use hardware
+decoding with any VO, backend or filter. Because these copy the decoded
+video back to system RAM, they\(aqre likely less efficient than the direct
+modes (like e.g. \fBdxva2\fP), and probably not more efficient than software
+decoding except for some codecs (e.g. HEVC).
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+When using this switch, hardware decoding is still only done for some
+codecs. See \fB\-\-hwdec\-codecs\fP to enable hardware decoding for more
+codecs.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Quality reduction with hardware decoding"
+.sp
+In theory, hardware decoding does not reduce video quality (at least
+for the codecs h264 and HEVC). However, due to restrictions in video
+output APIs, as well as bugs in the actual hardware decoders, there can
+be some loss, or even blatantly incorrect results.
+.sp
+In some cases, RGB conversion is forced, which means the RGB conversion
+is performed by the hardware decoding API, instead of the OpenGL code
+used by \fB\-\-vo=opengl\fP\&. This means certain colorspaces may not display
+correctly, and certain filtering (such as debanding) cannot be applied
+in an ideal way. This will also usually force the use of low quality
+chroma scalers instead of the one specified by \fB\-\-cscale\fP\&. In other
+cases, hardware decoding can also reduce the bit depth of the decoded
+image, which can introduce banding or precision loss for 10\-bit files.
+.sp
+\fBvdpau\fP is usually safe. If deinterlacing enabled (or the \fBvdpaupp\fP
+video filter is active in general), it forces RGB conversion. The latter
+currently does not treat certain colorspaces like BT.2020 correctly
+(which is mostly a mpv\-specific restriction). The \fBvdpauprb\fP video
+filter retrieves image data without RGB conversion and is safe (but
+precludes use of vdpau postprocessing).
+.sp
+\fBvaapi\fP is safe if the \fBvaapi\-egl\fP backend is indicated in the
+logs. If \fBvaapi\-glx\fP is indicated, and the video colorspace is either
+BT.601 or BT.709, a forced, low\-quality but correct RGB conversion is
+performed. Otherwise, the result will be totally incorrect.
+.sp
+\fBd3d11va\fP is usually safe (if used with ANGLE builds that support
+\fBEGL_KHR_stream path\fP \- otherwise, it converts to RGB), except that
+10 bit input (HEVC main 10 profiles) will be rounded down to 8 bits,
+which results in reduced quality.
+.sp
+\fBdxva2\fP is not safe. It appears to always use BT.601 for forced RGB
+conversion, but actual behavior depends on the GPU drivers. Some drivers
+appear to convert to limited range RGB, which gives a faded appearance.
+In addition to driver\-specific behavior, global system settings might
+affect this additionally. This can give incorrect results even with
+completely ordinary video sources.
+.sp
+\fBrpi\fP always uses the hardware overlay renderer, even with
+\fB\-\-vo=opengl\fP\&.
+.sp
+\fBcuda\fP should be safe, but it has been reported to corrupt the
+timestamps causing glitched, flashing frames on some files. It can also
+sometimes cause massive framedrops for unknown reasons. Caution is
+advised.
+.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.) should hopefully be safe, although they can still
+cause random decoding issues. At the very least, they shouldn\(aqt affect
+the colors of the image.
+.sp
+In particular, \fBauto\-copy\fP will only select "safe" modes
+(although potentially slower than other methods), but there\(aqs still no
+guarantee the chosen hardware decoder will actually work correctly.
+.sp
+In general, it\(aqs very strongly advised to avoid hardware decoding
+unless \fBabsolutely\fP necessary, i.e. if your CPU is insufficient to
+decode the file in questions. If you run into any weird decoding issues,
+frame glitches or discoloration, and you have \fB\-\-hwdec\fP turned on,
+the first thing you should try is disabling it.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-opengl\-hwdec\-interop=<name>\fP
+This is useful for the \fBopengl\fP and \fBopengl\-cb\fP VOs for creating the
+hardware decoding OpenGL interop context, but without actually enabling
+hardware decoding itself (like \fB\-\-hwdec\fP does).
+.sp
+If set to an empty string (default), the \fB\-\-hwdec\fP option is used.
+.sp
+For \fBopengl\fP, if set, do not create the interop context on demand, but
+when the VO is created.
+.sp
+For \fBopengl\-cb\fP, if set, load the interop context as soon as the OpenGL
+context is created. Since \fBopengl\-cb\fP has no on\-demand loading, this
+allows enabling hardware decoding at runtime at all, without having
+to temporarily set the \fBhwdec\fP option just during OpenGL context
+initialization with \fBmpv_opengl_cb_init_gl()\fP\&.
+.sp
+See \fB\-\-opengl\-hwdec\-interop=help\fP for accepted values. This lists the
+interop backend, with the \fB\-\-hwdec\fP alias after it in \fB[...]\fP\&. Consider
+all values except the proper interop backend name, \fBauto\fP, and \fBno\fP as
+silently deprecated and subject to change. Also, if you use this in
+application code (e.g. via libmpv), any value other than \fBauto\fP and \fBno\fP
+should be avoided, as backends can change.
+.sp
+Currently the option sets a single value. It is possible that the option
+type changes to a list in the future.
+.sp
+The old alias \fB\-\-hwdec\-preload\fP has different behavior if the option value
+is \fBno\fP\&.
+.TP
+.B \fB\-\-videotoolbox\-format=<name>\fP
+Set the internal pixel format used by \fB\-\-hwdec=videotoolbox\fP on OSX. The
+choice of the format can influence performance considerably. On the other
+hand, there doesn\(aqt appear to be a good way to detect the best format for
+the given hardware. \fBnv12\fP, the default, works better on modern hardware,
+while \fBuyvy422\fP appears to be better for old hardware. \fByuv420p\fP also
+works.
+Since mpv 0.25.0, \fBno\fP is an accepted value, which lets the decoder pick
+the format on newer FFmpeg versions (will use \fBnv12\fP on older versions).
+.TP
+.B \fB\-\-panscan=<0.0\-1.0>\fP
+Enables pan\-and\-scan functionality (cropping the sides of e.g. a 16:9
+video to make it fit a 4:3 display without black bands). The range
+controls how much of the image is cropped. May not work with all video
+output drivers.
+.sp
+This option has no effect if \fB\-\-video\-unscaled\fP option is used.
+.TP
+.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
+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
+.sp
+But note that handling of these special values might change in the future.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\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\-\-video\-aspect\-method=<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).
+.INDENT 7.0
+.TP
+.B container
+Strictly prefer the container aspect ratio. This is apparently
+the default behavior with VLC, at least with Matroska. Note that
+if the container has no aspect ratio set, the behavior is the
+same as with bitstream.
+.TP
+.B bitstream
+Strictly prefer the bitstream aspect ratio, unless the bitstream
+aspect ratio is not set. This is apparently the default behavior
+with XBMC/kodi, at least with Matroska.
+.UNINDENT
+.sp
+The current default for mpv is \fBcontainer\fP\&.
+.sp
+Normally you should not set this. Try the various choices if you encounter
+video that has the wrong aspect ratio in mpv, but seems to be correct in
+other players.
+.TP
+.B \fB\-\-video\-unscaled=<no|yes|downscale\-big>\fP
+Disable scaling of the video. If the window is larger than the video,
+black bars are added. Otherwise, the video is cropped, unless the option
+is set to \fBdownscale\-big\fP, in which case the video is fit to window. The
+video still can be influenced by the other \fB\-\-video\-...\fP options. This
+option disables the effect of \fB\-\-panscan\fP\&.
+.sp
+Note that the scaler algorithm may still be used, even if the video isn\(aqt
+scaled. For example, this can influence chroma conversion. The video will
+also still be scaled in one dimension if the source uses non\-square pixels
+(e.g. anamorphic widescreen DVDs).
+.sp
+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
+.TP
+.B \fB\-\-video\-pan\-x=<value>\fP, \fB\-\-video\-pan\-y=<value>\fP
+Moves the displayed video rectangle by the given value in the X or Y
+direction. The unit is in fractions of the size of the scaled video (the
+full size, even if parts of the video are not visible due to panscan or
+other options).
+.sp
+For example, displaying a 1280x720 video fullscreen on a 1680x1050 screen
+with \fB\-\-video\-pan\-x=\-0.1\fP would move the video 168 pixels to the left
+(making 128 pixels of the source video invisible).
+.sp
+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
+.TP
+.B \fB\-\-video\-rotate=<0\-359|no>\fP
+Rotate the video clockwise, in degrees. Currently supports 90° steps only.
+If \fBno\fP is given, the video is never rotated, even if the file has
+rotation metadata. (The rotation value is added to the rotation metadata,
+which means the value \fB0\fP would rotate the video according to the
+rotation metadata.)
+.TP
+.B \fB\-\-video\-stereo\-mode=<no|mode>\fP
+Set the stereo 3D output mode (default: \fBmono\fP). This is done by inserting
+the \fBstereo3d\fP conversion filter.
+.sp
+The pseudo\-mode \fBno\fP disables automatic conversion completely.
+.sp
+The mode \fBmono\fP is an alias to \fBml\fP, which refers to the left frame in
+2D. This is the default, which means mpv will try to show 3D movies in 2D,
+instead of the mangled 3D image not intended for consumption (such as
+showing the left and right frame side by side, etc.).
+.sp
+Use \fB\-\-video\-stereo\-mode=help\fP to list all available modes. Check with
+the \fBstereo3d\fP filter documentation to see what the names mean. Note that
+some names refer to modes not supported by \fBstereo3d\fP \- these modes can
+appear in files, but can\(aqt be handled properly by mpv.
+.TP
+.B \fB\-\-video\-zoom=<value>\fP
+Adjust the video display scale factor by the given value. The parameter is
+given log 2. For example, \fB\-\-video\-zoom=0\fP is unscaled,
+\fB\-\-video\-zoom=1\fP is twice the size, \fB\-\-video\-zoom=\-2\fP is one fourth of
+the size, and so on.
+.sp
+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
+.TP
+.B \fB\-\-video\-align\-x=<\-1\-1>\fP, \fB\-\-video\-align\-y=<\-1\-1>\fP
+Moves the video rectangle within the black borders, which are usually added
+to pad the video to screen if video and screen aspect ratios are different.
+\fB\-\-video\-align\-y=\-1\fP would move the video to the top of the screen
+(leaving a border only on the bottom), a value of \fB0\fP centers it
+(default), and a value of \fB1\fP would put the video at the bottom of the
+screen.
+.sp
+If video and screen aspect match perfectly, these options do nothing.
+.sp
+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
+.TP
+.B \fB\-\-correct\-pts\fP, \fB\-\-no\-correct\-pts\fP
+\fB\-\-no\-correct\-pts\fP switches mpv to a mode where video timing is
+determined using a fixed framerate value (either using the \fB\-\-fps\fP
+option, or using file information). Sometimes, files with very broken
+timestamps can be played somewhat well in this mode. Note that video
+filters, subtitle rendering and audio synchronization can be completely
+broken in this mode.
+.TP
+.B \fB\-\-fps=<float>\fP
+Override video framerate. Useful if the original value is wrong or missing.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Works in \fB\-\-no\-correct\-pts\fP mode only.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-deinterlace=<yes|no>\fP
+Enable or disable interlacing (default: no).
+Interlaced video shows ugly comb\-like artifacts, which are visible on
+fast movement. Enabling this typically inserts the yadif video filter in
+order to deinterlace the video, or lets the video output apply deinterlacing
+if supported.
+.sp
+This behaves exactly like the \fBdeinterlace\fP input property (usually
+mapped to \fBd\fP).
+.sp
+Keep in mind that this \fBwill\fP conflict with manually inserted
+deinterlacing filters, unless you take care. (Since mpv 0.27.0, even the
+hardware deinterlace filters will conflict. Also since that version,
+\fB\-\-deinterlace=auto\fP was removed, which used to mean that the default
+interlacing option of possibly inserted video filters was used.)
+.TP
+.B \fB\-\-frames=<number>\fP
+Play/convert only first \fB<number>\fP video frames, then quit.
+.sp
+\fB\-\-frames=0\fP loads the file, but immediately quits before initializing
+playback. (Might be useful for scripts which just want to determine some
+file properties.)
+.sp
+For audio\-only playback, any value greater than 0 will quit playback
+immediately after initialization. The value 0 works as with video.
+.TP
+.B \fB\-\-video\-output\-levels=<outputlevels>\fP
+RGB color levels used with YUV to RGB conversion. Normally, output devices
+such as PC monitors use full range color levels. However, some TVs and
+video monitors expect studio RGB levels. Providing full range output to a
+device expecting studio level input results in crushed blacks and whites,
+the reverse in dim gray blacks and dim whites.
+.sp
+Not all VOs support this option. Some will silently ignore it.
+.sp
+Available color ranges are:
+.INDENT 7.0
+.TP
+.B auto
+automatic selection (equals to full range) (default)
+.TP
+.B limited
+limited range (16\-235 per component), studio levels
+.TP
+.B full
+full range (0\-255 per component), PC levels
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+It is advisable to use your graphics driver\(aqs color range option
+instead, if available.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-hwdec\-codecs=<codec1,codec2,...|all>\fP
+Allow hardware decoding for a given list of codecs only. The special value
+\fBall\fP always allows all codecs.
+.sp
+You can get the list of allowed codecs with \fBmpv \-\-vd=help\fP\&. Remove the
+prefix, e.g. instead of \fBlavc:h264\fP use \fBh264\fP\&.
+.sp
+By default, this is set to \fBh264,vc1,wmv3,hevc,mpeg2video,vp9\fP\&. Note that
+the hardware acceleration special codecs like \fBh264_vdpau\fP are not
+relevant anymore, and in fact have been removed from Libav in this form.
+.sp
+This is usually only needed with broken GPUs, where a codec is reported
+as supported, but decoding causes more problems than it solves.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-hwdec=vdpau \-\-vo=vdpau \-\-hwdec\-codecs=h264,mpeg2video\fP
+Enable vdpau decoding for h264 and mpeg2 only.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-vd\-lavc\-check\-hw\-profile=<yes|no>\fP
+Check hardware decoder profile (default: yes). If \fBno\fP is set, the
+highest profile of the hardware decoder is unconditionally selected, and
+decoding is forced even if the profile of the video is higher than that.
+The result is most likely broken decoding, but may also help if the
+detected or reported profiles are somehow incorrect.
+.TP
+.B \fB\-\-vd\-lavc\-software\-fallback=<yes|no|N>\fP
+Fallback to software decoding if the hardware\-accelerated decoder fails
+(default: 3). If this is a number, then fallback will be triggered if
+N frames fail to decode in a row. 1 is equivalent to \fByes\fP\&.
+.TP
+.B \fB\-\-vd\-lavc\-dr=<yes|no>\fP
+Enable direct rendering (default: no). If this is set to \fByes\fP, the
+video will be decoded directly to GPU video memory (or staging buffers).
+This can speed up video upload, and may help with large resolutions or
+slow hardware. This works only with the following VOs:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+\fBopengl\fP: requires at least OpenGL 4.4.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+(In particular, this can\(aqt be made work with \fBopengl\-cb\fP\&.)
+.sp
+Using video filters of any kind that write to the image data (or output
+newly allocated frames) will silently disable the DR code path.
+.sp
+There are some corner cases that will result in undefined behavior (crashes
+and other strange behavior) if this option is enabled. These are pending
+towards being fixed properly at a later point.
+.TP
+.B \fB\-\-vd\-lavc\-bitexact\fP
+Only use bit\-exact algorithms in all decoding steps (for codec testing).
+.TP
+.B \fB\-\-vd\-lavc\-fast\fP (MPEG\-2, MPEG\-4, and H.264 only)
+Enable optimizations which do not comply with the format specification and
+potentially cause problems, like simpler dequantization, simpler motion
+compensation, assuming use of the default quantization matrix, assuming YUV
+4:2:0 and skipping a few checks to detect damaged bitstreams.
+.TP
+.B \fB\-\-vd\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
+Pass AVOptions to libavcodec decoder. Note, a patch to make the \fBo=\fP
+unneeded and pass all unknown options through the AVOption system is
+welcome. A full list of AVOptions can be found in the FFmpeg manual.
+.sp
+Some options which used to be direct options can be set with this
+mechanism, like \fBbug\fP, \fBgray\fP, \fBidct\fP, \fBec\fP, \fBvismv\fP,
+\fBskip_top\fP (was \fBst\fP), \fBskip_bottom\fP (was \fBsb\fP), \fBdebug\fP\&.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fB\-\-vd\-lavc\-o=debug=pict\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-vd\-lavc\-show\-all=<yes|no>\fP
+Show even broken/corrupt frames (default: no). If this option is set to
+no, libavcodec won\(aqt output frames that were either decoded before an
+initial keyframe was decoded, or frames that are recognized as corrupted.
+.TP
+.B \fB\-\-vd\-lavc\-skiploopfilter=<skipvalue> (H.264 only)\fP
+Skips the loop filter (AKA deblocking) during H.264 decoding. Since
+the filtered frame is supposed to be used as reference for decoding
+dependent frames, this has a worse effect on quality than not doing
+deblocking on e.g. MPEG\-2 video. But at least for high bitrate HDTV,
+this provides a big speedup with little visible quality loss.
+.sp
+\fB<skipvalue>\fP can be one of the following:
+.INDENT 7.0
+.TP
+.B none
+Never skip.
+.TP
+.B default
+Skip useless processing steps (e.g. 0 size packets in AVI).
+.TP
+.B nonref
+Skip frames that are not referenced (i.e. not used for
+decoding other frames, the error cannot "build up").
+.TP
+.B bidir
+Skip B\-Frames.
+.TP
+.B nonkey
+Skip all frames except keyframes.
+.TP
+.B all
+Skip all frames.
+.UNINDENT
+.TP
+.B \fB\-\-vd\-lavc\-skipidct=<skipvalue> (MPEG\-1/2 only)\fP
+Skips the IDCT step. This degrades quality a lot in almost all cases
+(see skiploopfilter for available skip values).
+.TP
+.B \fB\-\-vd\-lavc\-skipframe=<skipvalue>\fP
+Skips decoding of frames completely. Big speedup, but jerky motion and
+sometimes bad artifacts (see skiploopfilter for available skip values).
+.TP
+.B \fB\-\-vd\-lavc\-framedrop=<skipvalue>\fP
+Set framedropping mode used with \fB\-\-framedrop\fP (see skiploopfilter for
+available skip values).
+.TP
+.B \fB\-\-vd\-lavc\-threads=<N>\fP
+Number of threads to use for decoding. Whether threading is actually
+supported depends on codec (default: 0). 0 means autodetect number of cores
+on the machine and use that, up to the maximum of 16. You can set more than
+16 threads manually.
+.UNINDENT
+.SS Audio
+.INDENT 0.0
+.TP
+.B \fB\-\-audio\-pitch\-correction=<yes|no>\fP
+If this is enabled (default), playing with a speed different from normal
+automatically inserts the \fBscaletempo\fP audio filter. For details, see
+audio filter section.
+.TP
+.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. 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. The list of audio devices
+can be retrieved by API by using the \fBaudio\-device\-list\fP property.
+.sp
+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
+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
+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
+is useful in combination with \fB\-\-audio\-device\fP: instead of causing an
+error if the selected device does not exist, the client API user (or a
+Lua script) could let playback continue normally, and check the
+\fBcurrent\-ao\fP and \fBaudio\-device\-list\fP properties to make high\-level
+decisions about how to continue.
+.TP
+.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
+\fI\%AUDIO FILTERS\fP for details and descriptions of the available filters.
+The option variants \fB\-\-af\-add\fP, \fB\-\-af\-pre\fP, \fB\-\-af\-del\fP and
+\fB\-\-af\-clr\fP exist to modify a previously specified list, but you
+should not need these for typical use.
+.TP
+.B \fB\-\-audio\-spdif=<codecs>\fP
+List of codecs for which compressed audio passthrough should be used. This
+works for both classic S/PDIF and HDMI.
+.sp
+Possible codecs are \fBac3\fP, \fBdts\fP, \fBdts\-hd\fP\&. Multiple codecs can be
+specified by separating them with \fB,\fP\&. \fBdts\fP refers to low bitrate DTS
+core, while \fBdts\-hd\fP refers to DTS MA (receiver and OS support varies).
+If both \fBdts\fP and \fBdts\-hd\fP are specified, it behaves equivalent to
+specifying \fBdts\-hd\fP only.
+.sp
+In earlier mpv versions you could use \fB\-\-ad\fP to force the spdif wrapper.
+This does not work anymore.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Warning"
+.sp
+There is not much reason to use this. HDMI supports uncompressed
+multichannel PCM, and mpv supports lossless DTS\-HD decoding via
+FFmpeg\(aqs new DCA decoder (based on libdcadec).
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-ad=<decoder1,decoder2,...[\-]>\fP
+Specify a priority list of audio decoders to be used, according to their
+decoder name. When determining which decoder to use, the first decoder that
+matches the audio format is selected. If that is unavailable, the next
+decoder is used. Finally, it tries all other decoders that are not
+explicitly selected or rejected by the option.
+.sp
+\fB\-\fP at the end of the list suppresses fallback on other available
+decoders not on the \fB\-\-ad\fP list. \fB+\fP in front of an entry forces the
+decoder. Both of these should not normally be used, because they break
+normal decoder auto\-selection! Both of these methods are deprecated.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB\-\-ad=mp3float\fP
+Prefer the FFmpeg/Libav \fBmp3float\fP decoder over all other MP3
+decoders.
+.TP
+.B \fB\-\-ad=help\fP
+List all available decoders.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Warning"
+.sp
+Enabling compressed audio passthrough (AC3 and DTS via SPDIF/HDMI) with
+this option is not possible. Use \fB\-\-audio\-spdif\fP instead.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-volume=<value>\fP
+Set the startup volume. 0 means silence, 100 means no volume reduction or
+amplification. Negative values can be passed for compatibility, but are
+treated as 0.
+.sp
+Since mpv 0.18.1, this always controls the internal mixer (aka "softvol").
+.TP
+.B \fB\-\-replaygain=<no|track|album>\fP
+Adjust volume gain according to the track\-gain or album\-gain replaygain
+value stored in the file metadata (default: no replaygain).
+.TP
+.B \fB\-\-replaygain\-preamp=<db>\fP
+Pre\-amplification gain in dB to apply to the selected replaygain gain
+(default: 0).
+.TP
+.B \fB\-\-replaygain\-clip=<yes|no>\fP
+Prevent clipping caused by replaygain by automatically lowering the
+gain (default). Use \fB\-\-replaygain\-clip=no\fP to disable this.
+.TP
+.B \fB\-\-replaygain\-fallback=<db>\fP
+Gain in dB to apply if the file has no replay gain tags. This option
+is always applied if the replaygain logic is somehow inactive. If this
+is applied, no other replaygain options are applied.
+.TP
+.B \fB\-\-balance=<value>\fP
+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
+.B \fB\-\-audio\-delay=<sec>\fP
+Audio delay in seconds (positive or negative float value). Positive values
+delay the audio, and negative values delay the video.
+.TP
+.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
+.B \fB\-\-softvol=<no|yes|auto>\fP
+Deprecated/unfunctional. Before mpv 0.18.1, this used to control whether
+to use the volume controls of the audio output driver or the internal mpv
+volume filter.
+.sp
+The current behavior is that softvol is always enabled, i.e. as if this
+option is set to \fByes\fP\&. The other behaviors are not available anymore,
+although \fBauto\fP almost matches current behavior in most cases.
+.sp
+The \fBno\fP behavior is still partially available through the \fBao\-volume\fP
+and \fBao\-mute\fP properties. But there are no options to reset these.
+.TP
+.B \fB\-\-audio\-demuxer=<[+]name>\fP
+Use this audio demuxer type when using \fB\-\-audio\-file\fP\&. Use a \(aq+\(aq before
+the name to force it; this will skip some checks. Give the demuxer name as
+printed by \fB\-\-audio\-demuxer=help\fP\&.
+.TP
+.B \fB\-\-ad\-lavc\-ac3drc=<level>\fP
+Select the Dynamic Range Compression level for AC\-3 audio streams.
+\fB<level>\fP is a float value ranging from 0 to 1, where 0 means no
+compression (which is the default) and 1 means full compression (make loud
+passages more silent and vice versa). Values up to 6 are also accepted, but
+are purely experimental. This option only shows an effect if the AC\-3 stream
+contains the required range compression information.
+.sp
+The standard mandates that DRC is enabled by default, but mpv (and some
+other players) ignore this for the sake of better audio quality.
+.TP
+.B \fB\-\-ad\-lavc\-downmix=<yes|no>\fP
+Whether to request audio channel downmixing from the decoder (default: yes).
+Some decoders, like AC\-3, AAC and DTS, can remix audio on decoding. The
+requested number of output channels is set with the \fB\-\-audio\-channels\fP option.
+Useful for playing surround audio on a stereo system.
+.TP
+.B \fB\-\-ad\-lavc\-threads=<0\-16>\fP
+Number of threads to use for decoding. Whether threading is actually
+supported depends on codec. As of this writing, it\(aqs supported for some
+lossless codecs only. 0 means autodetect number of cores on the
+machine and use that, up to the maximum of 16 (default: 1).
+.TP
+.B \fB\-\-ad\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
+Pass AVOptions to libavcodec decoder. Note, a patch to make the o=
+unneeded and pass all unknown options through the AVOption system is
+welcome. A full list of AVOptions can be found in the FFmpeg manual.
+.TP
+.B \fB\-\-ad\-spdif\-dtshd=<yes|no>\fP, \fB\-\-dtshd\fP, \fB\-\-no\-dtshd\fP
+If DTS is passed through, use DTS\-HD.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Warning"
+.sp
+This and enabling passthrough via \fB\-\-ad\fP are deprecated in favor of
+using \fB\-\-audio\-spdif=dts\-hd\fP\&.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-audio\-channels=<auto\-safe|auto|layouts>\fP
+Control which audio channels are output (e.g. surround vs. stereo). There
+are the following possibilities:
+.INDENT 7.0
+.IP \(bu 2
+.INDENT 2.0
+.TP
+.B \fB\-\-audio\-channels=auto\-safe\fP
+Use the system\(aqs preferred channel layout. If there is none (such
+as when accessing a hardware device instead of the system mixer),
+force stereo. Some audio outputs might simply accept any layout and
+do downmixing on their own.
+.sp
+This is the default.
+.UNINDENT
+.IP \(bu 2
+.INDENT 2.0
+.TP
+.B \fB\-\-audio\-channels=auto\fP
+Send the audio device whatever it accepts, preferring the audio\(aqs
+original channel layout. Can cause issues with HDMI (see the warning
+below).
+.UNINDENT
+.IP \(bu 2
+.INDENT 2.0
+.TP
+.B \fB\-\-audio\-channels=layout1,layout2,...\fP
+List of \fB,\fP\-separated channel layouts which should be allowed.
+Technically, this only adjusts the filter chain output to the best
+matching layout in the list, and passes the result to the audio API.
+It\(aqs possible that the audio API will select a different channel
+layout.
+.sp
+Using this mode is recommended for direct hardware output, especially
+over HDMI (see HDMI warning below).
+.UNINDENT
+.IP \(bu 2
+.INDENT 2.0
+.TP
+.B \fB\-\-audio\-channels=stereo\fP
+Force a plain stereo downmix. This is a special\-case of the previous
+item. (See paragraphs below for implications.)
+.UNINDENT
+.UNINDENT
+.sp
+If a list of layouts is given, each item can be either an explicit channel
+layout name (like \fB5.1\fP), or a channel number. Channel numbers refer to
+default layouts, e.g. 2 channels refer to stereo, 6 refers to 5.1.
+.sp
+See \fB\-\-audio\-channels=help\fP output for defined default layouts. This also
+lists speaker names, which can be used to express arbitrary channel
+layouts (e.g. \fBfl\-fr\-lfe\fP is 2.1).
+.sp
+If the list of channel layouts has only 1 item, the decoder is asked to
+produce according output. This sometimes triggers decoder\-downmix, which
+might be different from the normal mpv downmix. (Only some decoders support
+remixing audio, like AC\-3, AAC or DTS. You can use \fB\-\-ad\-lavc\-downmix=no\fP
+to make the decoder always output its native layout.) One consequence is
+that \fB\-\-audio\-channels=stereo\fP triggers decoder downmix, while \fBauto\fP
+or \fBauto\-safe\fP never will, even if they end up selecting stereo. This
+happens because the decision whether to use decoder downmix happens long
+before the audio device is opened.
+.sp
+If the channel layout of the media file (i.e. the decoder) and the AO\(aqs
+channel layout don\(aqt match, mpv will attempt to insert a conversion filter.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Warning"
+.sp
+Using \fBauto\fP can cause issues when using audio over HDMI. The OS will
+typically report all channel layouts that _can_ go over HDMI, even if
+the receiver does not support them. If a receiver gets an unsupported
+channel layout, random things can happen, such as dropping the
+additional channels, or adding noise.
+.sp
+You are recommended to set an explicit whitelist of the layouts you
+want. For example, most A/V receivers connected via HDMI and that can
+do 7.1 would be served by: \fB\-\-audio\-channels=7.1,5.1,stereo\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-audio\-normalize\-downmix=<yes|no>\fP
+Enable/disable normalization if surround audio is downmixed to stereo
+(default: no). If this is disabled, downmix can cause clipping. If it\(aqs
+enabled, the output might be too silent. It depends on the source audio.
+.sp
+Technically, this changes the \fBnormalize\fP suboption of the
+\fBlavrresample\fP audio filter, which performs the downmixing.
+.sp
+If downmix happens outside of mpv for some reason, this has no effect.
+.TP
+.B \fB\-\-audio\-display=<no|attachment>\fP
+Setting this option to \fBattachment\fP (default) will display image
+attachments (e.g. album cover art) when playing audio files. It will
+display the first image found, and additional images are available as
+video tracks.
+.sp
+Setting this option to \fBno\fP disables display of video entirely when
+playing audio files.
+.sp
+This option has no influence on files with normal video tracks.
+.TP
+.B \fB\-\-audio\-files=<files>\fP
+Play audio from an external file while viewing a video.
+.sp
+This is a list option. See \fI\%List Options\fP for details.
+.TP
+.B \fB\-\-audio\-file=<file>\fP
+CLI/config file only alias for \fB\-\-audio\-files\-append\fP\&. Each use of this
+option will add a new audio track. The details are similar to how
+\fB\-\-sub\-file\fP works.
+.TP
+.B \fB\-\-audio\-format=<format>\fP
+Select the sample format used for output from the audio filter layer to
+the sound card. The values that \fB<format>\fP can adopt are listed below in
+the description of the \fBformat\fP audio filter.
+.TP
+.B \fB\-\-audio\-samplerate=<Hz>\fP
+Select the output sample rate to be used (of course sound cards have
+limits on this). If the sample frequency selected is different from that
+of the current media, the lavrresample audio filter will be inserted into
+the audio filter layer to compensate for the difference.
+.TP
+.B \fB\-\-gapless\-audio=<no|yes|weak>\fP
+Try to play consecutive audio files with no silence or disruption at the
+point of file change. Default: \fBweak\fP\&.
+.INDENT 7.0
+.TP
+.B no
+Disable gapless audio.
+.TP
+.B yes
+The audio device is opened using parameters chosen for the first
+file played and is then kept open for gapless playback. This
+means that if the first file for example has a low sample rate, then
+the following files may get resampled to the same low sample rate,
+resulting in reduced sound quality. If you play files with different
+parameters, consider using options such as \fB\-\-audio\-samplerate\fP
+and \fB\-\-audio\-format\fP to explicitly select what the shared output
+format will be.
+.TP
+.B weak
+Normally, the audio device is kept open (using the format it was
+first initialized with). If the audio format the decoder output
+changes, the audio device is closed and reopened. This means that
+you will normally get gapless audio with files that were encoded
+using the same settings, but might not be gapless in other cases.
+(Unlike with \fByes\fP, you don\(aqt have to worry about corner cases
+like the first file setting a very low quality output format, and
+ruining the playback of higher quality files that follow.)
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This feature is implemented in a simple manner and relies on audio
+output device buffering to continue playback while moving from one file
+to another. If playback of the new file starts slowly, for example
+because it is played from a remote network location or because you have
+specified cache settings that require time for the initial cache fill,
+then the buffered audio may run out before playback of the new file
+can start.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-initial\-audio\-sync\fP, \fB\-\-no\-initial\-audio\-sync\fP
+When starting a video file or after events such as seeking, mpv will by
+default modify the audio stream to make it start from the same timestamp
+as video, by either inserting silence at the start or cutting away the
+first samples. Disabling this option makes the player behave like older
+mpv versions did: video and audio are both started immediately even if
+their start timestamps differ, and then video timing is gradually adjusted
+if necessary to reach correct synchronization later.
+.TP
+.B \fB\-\-volume\-max=<100.0\-1000.0>\fP, \fB\-\-softvol\-max=<...>\fP
+Set the maximum amplification level in percent (default: 130). A value of
+130 will allow you to adjust the volume up to about double the normal level.
+.sp
+\fB\-\-softvol\-max\fP is a deprecated alias and should not be used.
+.TP
+.B \fB\-\-audio\-file\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-audio\-file\-auto\fP
+Load additional audio files matching the video filename. The parameter
+specifies how external audio files are matched.
+.INDENT 7.0
+.TP
+.B no
+Don\(aqt automatically load external audio files (default).
+.TP
+.B exact
+Load the media filename with audio file extension.
+.TP
+.B fuzzy
+Load all audio files containing media filename.
+.TP
+.B all
+Load all audio files in the current and \fB\-\-audio\-file\-paths\fP
+directories.
+.UNINDENT
+.TP
+.B \fB\-\-audio\-file\-paths=<path1:path2:...>\fP
+Equivalent to \fB\-\-sub\-file\-paths\fP option, but for auto\-loaded audio files.
+.TP
+.B \fB\-\-audio\-client\-name=<name>\fP
+The application name the player reports to the audio API. Can be useful
+if you want to force a different audio profile (e.g. with PulseAudio),
+or to set your own application name when using libmpv.
+.TP
+.B \fB\-\-audio\-buffer=<seconds>\fP
+Set the audio output minimum buffer. The audio device might actually create
+a larger buffer if it pleases. If the device creates a smaller buffer,
+additional audio is buffered in an additional software buffer.
+.sp
+Making this larger will make soft\-volume and other filters react slower,
+introduce additional issues on playback speed change, and block the
+player on audio format changes. A smaller buffer might lead to audio
+dropouts.
+.sp
+This option should be used for testing only. If a non\-default value helps
+significantly, the mpv developers should be contacted.
+.sp
+Default: 0.2 (200 ms).
+.TP
+.B \fB\-\-audio\-stream\-silence=<yes|no>\fP
+Cash\-grab consumer audio hardware (such as A/V receivers) often ignore
+initial audio sent over HDMI. This can happen every time audio over HDMI
+is stopped and resumed. In order to compensate for this, you can enable
+this option to not to stop and restart audio on seeks, and fill the gaps
+with silence. Likewise, when pausing playback, audio is not stopped, and
+silence is played while paused. Note that if no audio track is selected,
+the audio device will still be closed immediately.
+.sp
+Not all AOs support this.
+.TP
+.B \fB\-\-audio\-wait\-open=<secs>\fP
+This makes sense for use with \fB\-\-audio\-stream\-silence=yes\fP\&. If this option
+is given, the player will wait for the given amount of seconds after opening
+the audio device before sending actual audio data to it. Useful if your
+expensive hardware discards the first 1 or 2 seconds of audio data sent to
+it. If \fB\-\-audio\-stream\-silence=yes\fP is not set, this option will likely
+just waste time.
+.UNINDENT
+.SS Subtitles
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+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\-\-sub\-ass\-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\-\-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\&.
+.TP
+.B \fB\-\-sub\-delay=<sec>\fP
+Delays subtitles by \fB<sec>\fP seconds. Can be negative.
+.TP
+.B \fB\-\-sub\-files=<file\-list>\fP
+Add a subtitle file to the list of external subtitles.
+.sp
+If you use \fB\-\-sub\-file\fP only once, this subtitle file is displayed by
+default.
+.sp
+If \fB\-\-sub\-file\fP is used multiple times, the subtitle to use can be
+switched at runtime by cycling subtitle tracks. It\(aqs possible to show
+two subtitles at once: use \fB\-\-sid\fP to select the first subtitle index,
+and \fB\-\-secondary\-sid\fP to select the second index. (The index is printed
+on the terminal output after the \fB\-\-sid=\fP in the list of streams.)
+.sp
+This is a list option. See \fI\%List Options\fP for details.
+.TP
+.B \fB\-\-secondary\-sid=<ID|auto|no>\fP
+Select a secondary subtitle stream. This is similar to \fB\-\-sid\fP\&. If a
+secondary subtitle is selected, it will be rendered as toptitle (i.e. on
+the top of the screen) alongside the normal subtitle, and provides a way
+to render two subtitles at once.
+.sp
+There are some caveats associated with this feature. For example, bitmap
+subtitles will always be rendered in their usual position, so selecting a
+bitmap subtitle as secondary subtitle will result in overlapping subtitles.
+Secondary subtitles are never shown on the terminal if video is disabled.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Styling and interpretation of any formatting tags is disabled for the
+secondary subtitle. Internally, the same mechanism as \fB\-\-no\-sub\-ass\fP
+is used to strip the styling.
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+If the main subtitle stream contains formatting tags which display the
+subtitle at the top of the screen, it will overlap with the secondary
+subtitle. To prevent this, you could use \fB\-\-no\-sub\-ass\fP to disable
+styling in the main subtitle stream.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-scale=<0\-100>\fP
+Factor for the text subtitle font size (default: 1).
+.sp
+\fBNOTE:\fP
+.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\-font\-size\fP instead.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-scale\-by\-window=<yes|no>\fP
+Whether to scale subtitles with the window size (default: yes). If this is
+disabled, changing the window size won\(aqt change the subtitle font size.
+.sp
+Like \fB\-\-sub\-scale\fP, this can break ASS subtitles.
+.TP
+.B \fB\-\-sub\-scale\-with\-window=<yes|no>\fP
+Make the subtitle font size relative to the window, instead of the video.
+This is useful if you always want the same font size, even if the video
+doesn\(aqt cover the window fully, e.g. because screen aspect and window
+aspect mismatch (and the player adds black bars).
+.sp
+Default: yes.
+.sp
+This option is misnamed. The difference to the confusingly similar sounding
+option \fB\-\-sub\-scale\-by\-window\fP is that \fB\-\-sub\-scale\-with\-window\fP still
+scales with the approximate window size, while the other option disables
+this scaling.
+.sp
+Affects plain text subtitles only (or ASS if \fB\-\-sub\-ass\-override\fP is set
+high enough).
+.TP
+.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
+Default: no.
+.TP
+.B \fB\-\-embeddedfonts\fP, \fB\-\-no\-embeddedfonts\fP
+Use fonts embedded in Matroska container files and ASS scripts (default:
+enabled). These fonts can be used for SSA/ASS subtitle rendering.
+.TP
+.B \fB\-\-sub\-pos=<0\-100>\fP
+Specify the position of subtitles on the screen. The value is the vertical
+position of the subtitle in % of the screen height.
+.sp
+\fBNOTE:\fP
+.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\-margin\-y\fP instead.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-speed=<0.1\-10.0>\fP
+Multiply the subtitle event timestamps with the given value. Can be used
+to fix the playback speed for frame\-based subtitle formats. Affects text
+subtitles only.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fB\-\-sub\-speed=25/23.976\fP plays frame based subtitles which have been
+loaded assuming a framerate of 23.976 at 25 FPS.
+.UNINDENT
+.UNINDENT
+.TP
+.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\-\-sub\-ass\-force\-style=FontName=Arial,Default.Bold=1\fP
+.IP \(bu 2
+\fB\-\-sub\-ass\-force\-style=PlayResY=768\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Using this option may lead to incorrect subtitle rendering.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-ass\-hinting=<none|light|normal|native>\fP
+Set font hinting type. <type> can be:
+.INDENT 7.0
+.TP
+.B none
+no hinting (default)
+.TP
+.B light
+FreeType autohinter, light mode
+.TP
+.B normal
+FreeType autohinter, normal mode
+.TP
+.B native
+font native hinter
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Warning"
+.sp
+Enabling hinting can lead to mispositioned text (in situations it\(aqs
+supposed to match up video background), or reduce the smoothness
+of animations with some badly authored ASS scripts. It is recommended
+to not use this option, unless really needed.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-ass\-line\-spacing=<value>\fP
+Set line spacing value for SSA/ASS renderer.
+.TP
+.B \fB\-\-sub\-ass\-shaper=<simple|complex>\fP
+Set the text layout engine used by libass.
+.INDENT 7.0
+.TP
+.B simple
+uses Fribidi only, fast, doesn\(aqt render some languages correctly
+.TP
+.B complex
+uses HarfBuzz, slower, wider language support
+.UNINDENT
+.sp
+\fBcomplex\fP is the default. If libass hasn\(aqt been compiled against HarfBuzz,
+libass silently reverts to \fBsimple\fP\&.
+.TP
+.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.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Using this option may lead to incorrect subtitle rendering.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-ass\-override=<yes|no|force|scale|strip>\fP
+Control whether user style overrides should be applied. Note that all of
+these overrides try to be somewhat smart about figuring out whether or not
+a subtitle is considered a "sign".
+.INDENT 7.0
+.TP
+.B no
+Render subtitles as specified by the subtitle scripts, without
+overrides.
+.TP
+.B yes
+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
+.B force
+Like \fByes\fP, but also force all \fB\-\-sub\-*\fP options. Can break
+rendering easily.
+.TP
+.B scale
+Like \fByes\fP, but also apply \fB\-\-sub\-scale\fP\&.
+.TP
+.B strip
+Radically strip all ASS tags and styles from the subtitle. This
+is equivalent to the old \fB\-\-no\-ass\fP / \fB\-\-no\-sub\-ass\fP options.
+.UNINDENT
+.TP
+.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
+Default: no.
+.TP
+.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\-\-sub\-ass\-override\fP is set high enough).
+.sp
+Default: yes.
+.sp
+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\-\-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.
+.sp
+The renderer historically most commonly used for the SSA/ASS subtitle
+formats, VSFilter, had questionable behavior that resulted in subtitles
+being stretched too if the video was stored in anamorphic format that
+required scaling for display. This behavior is usually undesirable and
+newer VSFilter versions may behave differently. However, many existing
+scripts compensate for the stretching by modifying things in the opposite
+direction. Thus, if such scripts are displayed "correctly", they will not
+appear as intended. This switch enables emulation of the old VSFilter
+behavior (undesirable but expected by many existing scripts).
+.sp
+Enabled by default.
+.TP
+.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.
+.sp
+Note that this uses the actual video resolution for calculating the
+offset scale factor, not what the video filter chain or the video output
+use.
+.TP
+.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
+(BT.709), VSFilter was still converting RGB colors to BT.601, rendered
+them into the video frame, and handled the frame to the video output, which
+would use BT.709 for conversion to RGB. The result were mangled subtitle
+colors. Later on, bad hacks were added on top of the ASS format to control
+how colors are to be mangled.
+.INDENT 7.0
+.TP
+.B basic
+Handle only BT.601\->BT.709 mangling, if the subtitles seem to
+indicate that this is required (default).
+.TP
+.B full
+Handle the full \fBYCbCr Matrix\fP header with all video color spaces
+supported by libass and mpv. This might lead to bad breakages in
+corner cases and is not strictly needed for compatibility
+(hopefully), which is why this is not default.
+.TP
+.B force\-601
+Force BT.601\->BT.709 mangling, regardless of subtitle headers
+or video color space.
+.TP
+.B no
+Disable color mangling completely. All colors are RGB.
+.UNINDENT
+.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\-\-sub\-ass\-override\fP
+option doesn\(aqt affect how this option is interpreted.
+.TP
+.B \fB\-\-stretch\-dvd\-subs=<yes|no>\fP
+Stretch DVD subtitles when playing anamorphic videos for better looking
+fonts on badly mastered DVDs. This switch has no effect when the
+video is stored with square pixels \- which for DVD input cannot be the case
+though.
+.sp
+Many studios tend to use bitmap fonts designed for square pixels when
+authoring DVDs, causing the fonts to look stretched on playback on DVD
+players. This option fixes them, however at the price of possibly
+misaligning some subtitles (e.g. sign translations).
+.sp
+Disabled by default.
+.TP
+.B \fB\-\-stretch\-image\-subs\-to\-screen=<yes|no>\fP
+Stretch DVD and other image subtitles to the screen, ignoring the video
+margins. This has a similar effect as \fB\-\-sub\-use\-margins\fP for text
+subtitles, except that the text itself will be stretched, not only just
+repositioned. (At least in general it is unavoidable, as an image bitmap
+can in theory consist of a single bitmap covering the whole screen, and
+the player won\(aqt know where exactly the text parts are located.)
+.sp
+This option does not display subtitles correctly. Use with care.
+.sp
+Disabled by default.
+.TP
+.B \fB\-\-image\-subs\-video\-resolution=<yes|no>\fP
+Override the image subtitle resolution with the video resolution
+(default: no). Normally, the subtitle canvas is fit into the video canvas
+(e.g. letterboxed). Setting this option uses the video size as subtitle
+canvas size. Can be useful to test broken subtitles, which often happen
+when the video was trancoded, while attempting to keep the old subtitles.
+.TP
+.B \fB\-\-sub\-ass\fP, \fB\-\-no\-sub\-ass\fP
+Render ASS subtitles natively (enabled by default).
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This has been deprecated by \fB\-\-sub\-ass\-override=strip\fP\&. You also
+may need \fB\-\-embeddedfonts=no\fP to get the same behavior. Also,
+using \fB\-\-sub\-ass\-override=style\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\-\fP options instead.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Using \fB\-\-no\-sub\-ass\fP may lead to incorrect or completely broken
+rendering of ASS/SSA subtitles. It can sometimes be useful to forcibly
+override the styling of ASS subtitles, but should be avoided in general.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-sub\-auto\fP
+Load additional subtitle files matching the video filename. The parameter
+specifies how external subtitle files are matched. \fBexact\fP is enabled by
+default.
+.INDENT 7.0
+.TP
+.B no
+Don\(aqt automatically load external subtitle files.
+.TP
+.B exact
+Load the media filename with subtitle file extension (default).
+.TP
+.B fuzzy
+Load all subs containing media filename.
+.TP
+.B all
+Load all subs in the current and \fB\-\-sub\-file\-paths\fP directories.
+.UNINDENT
+.TP
+.B \fB\-\-sub\-codepage=<codepage>\fP
+You can use this option to specify the subtitle codepage. uchardet will be
+used to guess the charset. (If mpv was not compiled with uchardet, then
+\fButf\-8\fP is the effective default.)
+.sp
+The default value for this option is \fBauto\fP, which enables autodetection.
+.sp
+The following steps are taken to determine the final codepage, in order:
+.INDENT 7.0
+.IP \(bu 2
+if the specific codepage has a \fB+\fP, use that codepage
+.IP \(bu 2
+if the data looks like UTF\-8, assume it is UTF\-8
+.IP \(bu 2
+if \fB\-\-sub\-codepage\fP is set to a specific codepage, use that
+.IP \(bu 2
+run uchardet, and if successful, use that
+.IP \(bu 2
+otherwise, use \fBUTF\-8\-BROKEN\fP
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-sub\-codepage=latin2\fP Use Latin 2 if input is not UTF\-8.
+.IP \(bu 2
+\fB\-\-sub\-codepage=+cp1250\fP Always force recoding to cp1250.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The pseudo codepage \fBUTF\-8\-BROKEN\fP is used internally. If it\(aqs set,
+subtitles are interpreted as UTF\-8 with "Latin 1" as fallback for bytes
+which are not valid UTF\-8 sequences. iconv is never involved in this mode.
+.sp
+This option changed in mpv 0.23.0. Support for the old syntax was fully
+removed in mpv 0.24.0.
+.TP
+.B \fB\-\-sub\-fix\-timing=<yes|no>\fP
+Adjust subtitle timing is to remove minor gaps or overlaps between
+subtitles (if the difference is smaller than 210 ms, the gap or overlap
+is removed).
+.TP
+.B \fB\-\-sub\-forced\-only\fP
+Display only forced subtitles for the DVD subtitle stream selected by e.g.
+\fB\-\-slang\fP\&.
+.TP
+.B \fB\-\-sub\-fps=<rate>\fP
+Specify the framerate of the subtitle file (default: video fps). Affects
+text subtitles only.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+\fB<rate>\fP > video fps speeds the subtitles up for frame\-based
+subtitle files and slows them down for time\-based ones.
+.UNINDENT
+.UNINDENT
+.sp
+See also: \fB\-\-sub\-speed\fP\&.
+.TP
+.B \fB\-\-sub\-gauss=<0.0\-3.0>\fP
+Apply Gaussian blur to image subtitles (default: 0). This can help to make
+pixelated DVD/Vobsubs look nicer. A value other than 0 also switches to
+software subtitle scaling. Might be slow.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Never applied to text subtitles.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-gray\fP
+Convert image subtitles to grayscale. Can help to make yellow DVD/Vobsubs
+look nicer.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Never applied to text subtitles.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-sub\-paths=<path1:path2:...>\fP
+Deprecated, use \fB\-\-sub\-file\-paths\fP\&.
+.TP
+.B \fB\-\-sub\-file\-paths=<path\-list>\fP
+Specify extra directories to search for subtitles matching the video.
+Multiple directories can be separated by ":" (";" on Windows).
+Paths can be relative or absolute. Relative paths are interpreted relative
+to video file directory.
+If the file is a URL, only absolute paths and \fBsub\fP configuration
+subdirectory will be scanned.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+Assuming that \fB/path/to/video/video.avi\fP is played and
+\fB\-\-sub\-file\-paths=sub:subtitles\fP is specified, mpv
+searches for subtitle files in these directories:
+.INDENT 0.0
+.IP \(bu 2
+\fB/path/to/video/\fP
+.IP \(bu 2
+\fB/path/to/video/sub/\fP
+.IP \(bu 2
+\fB/path/to/video/subtitles/\fP
+.IP \(bu 2
+the \fBsub\fP configuration subdirectory (usually \fB~/.config/mpv/sub/\fP)
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+This is a list option. See \fI\%List Options\fP for details.
+.TP
+.B \fB\-\-sub\-visibility\fP, \fB\-\-no\-sub\-visibility\fP
+Can be used to disable display of subtitles, but still select and decode
+them.
+.TP
+.B \fB\-\-sub\-clear\-on\-seek\fP
+(Obscure, rarely useful.) Can be used to play broken mkv files with
+duplicate ReadOrder fields. ReadOrder is the first field in a
+Matroska\-style ASS subtitle packets. It should be unique, and libass
+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=\(aqComic Sans MS\(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\-justify=<auto|left|center|right>\fP
+Control how multi line subs are justified irrespective of where they
+are aligned (default: \fBauto\fP which justifies as defined by
+\fB\-\-sub\-align\-y\fP).
+Left justification is recommended to make the subs easier to read
+as it is easier for the eyes.
+.TP
+.B \fB\-\-sub\-ass\-justify=<yes|no>\fP
+Applies justification as defined by \fB\-\-sub\-justify\fP on ASS subtitles
+if \fB\-\-sub\-ass\-override\fP is not set to \fBno\fP\&.
+Default: \fBno\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.
+.TP
+.B \fB\-\-sub\-filter\-sdh=<yes|no>\fP
+Applies filter removing subtitle additions for the deaf or hard\-of\-hearing (SDH).
+This is intended for English, but may in part work for other languages too.
+The intention is that it can be always enabled so may not remove
+all parts added.
+It removes speaker labels (like MAN:), upper case text in parentheses and
+any text in brackets.
+.sp
+Default: \fBno\fP\&.
+.TP
+.B \fB\-\-sub\-filter\-sdh\-harder=<yes|no>\fP
+Do harder SDH filtering (if enabled by \fB\-\-sub\-filter\-sdh\fP).
+Will also remove speaker labels and text within parentheses using both
+lower and upper case letters.
+.sp
+Default: \fBno\fP\&.
+.UNINDENT
+.SS Window
+.INDENT 0.0
+.TP
+.B \fB\-\-title=<string>\fP
+Set the window title. This is used for the video window, and if possible,
+also sets the audio stream title.
+.sp
+Properties are expanded. (See \fI\%Property Expansion\fP\&.)
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+There is a danger of this causing significant CPU usage, depending on
+the properties used. Changing the window title is often a slow
+operation, and if the title changes every frame, playback can be ruined.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-screen=<default|0\-32>\fP
+In multi\-monitor configurations (i.e. a single desktop that spans across
+multiple displays), this option tells mpv which screen to display the
+video on.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Note (X11)"
+.sp
+This option does not work properly with all window managers. In these
+cases, you can try to use \fB\-\-geometry\fP to position the window
+explicitly. It\(aqs also possible that the window manager provides native
+features to control which screens application windows should use.
+.UNINDENT
+.UNINDENT
+.sp
+See also \fB\-\-fs\-screen\fP\&.
+.TP
+.B \fB\-\-fullscreen\fP, \fB\-\-fs\fP
+Fullscreen playback.
+.TP
+.B \fB\-\-fs\-screen=<all|current|0\-32>\fP
+In multi\-monitor configurations (i.e. a single desktop that spans across
+multiple displays), this option tells mpv which screen to go fullscreen to.
+If \fBdefault\fP is provided mpv will fallback on using the behavior
+depending on what the user provided with the \fBscreen\fP option.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Note (X11)"
+.sp
+This option does works properly only with window managers which
+understand the EWMH \fB_NET_WM_FULLSCREEN_MONITORS\fP hint.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Note (OS X)"
+.sp
+\fBall\fP does not work on OS X and will behave like \fBcurrent\fP\&.
+.UNINDENT
+.UNINDENT
+.sp
+See also \fB\-\-screen\fP\&.
+.TP
+.B \fB\-\-keep\-open=<yes|no|always>\fP
+Do not terminate when playing or seeking beyond the end of the file, and
+there is not next file to be played (and \fB\-\-loop\fP is not used).
+Instead, pause the player. When trying to seek beyond end of the file, the
+player will attempt to seek to the last frame.
+.sp
+Normally, this will act like \fBset pause yes\fP on EOF, unless the
+\fB\-\-keep\-open\-pause=no\fP option is set.
+.sp
+The following arguments can be given:
+.INDENT 7.0
+.TP
+.B no
+If the current file ends, go to the next file or terminate.
+(Default.)
+.TP
+.B yes
+Don\(aqt terminate if the current file is the last playlist entry.
+Equivalent to \fB\-\-keep\-open\fP without arguments.
+.TP
+.B always
+Like \fByes\fP, but also applies to files before the last playlist
+entry. This means playback will never automatically advance to
+the next file.
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This option is not respected when using \fB\-\-frames\fP\&. Explicitly
+skipping to the next file if the binding uses \fBforce\fP will terminate
+playback as well.
+.sp
+Also, if errors or unusual circumstances happen, the player can quit
+anyway.
+.UNINDENT
+.UNINDENT
+.sp
+Since mpv 0.6.0, this doesn\(aqt pause if there is a next file in the playlist,
+or the playlist is looped. Approximately, this will pause when the player
+would normally exit, but in practice there are corner cases in which this
+is not the case (e.g. \fBmpv \-\-keep\-open file.mkv /dev/null\fP will play
+file.mkv normally, then fail to open \fB/dev/null\fP, then exit). (In
+mpv 0.8.0, \fBalways\fP was introduced, which restores the old behavior.)
+.TP
+.B \fB\-\-keep\-open\-pause=<yes|no>\fP
+If set to \fBno\fP, instead of pausing when \fB\-\-keep\-open\fP is active, just
+stop at end of file and continue playing forward when you seek backwards
+until end where it stops again. Default: \fByes\fP\&.
+.TP
+.B \fB\-\-image\-display\-duration=<seconds|inf>\fP
+If the current file is an image, play the image for the given amount of
+seconds (default: 1). \fBinf\fP means the file is kept open forever (until
+the user stops playback manually).
+.sp
+Unlike \fB\-\-keep\-open\fP, the player is not paused, but simply continues
+playback until the time has elapsed. (It should not use any resources
+during "playback".)
+.sp
+This affects image files, which are defined as having only 1 video frame
+and no audio. The player may recognize certain non\-images as images, for
+example if \fB\-\-length\fP is used to reduce the length to 1 frame, or if
+you seek to the last frame.
+.sp
+This option does not affect the framerate used for \fBmf://\fP or
+\fB\-\-merge\-files\fP\&. For that, use \fB\-\-mf\-fps\fP instead.
+.TP
+.B \fB\-\-force\-window=<yes|no|immediate>\fP
+Create a video output window even if there is no video. This can be useful
+when pretending that mpv is a GUI application. Currently, the window
+always has the size 640x480, and is subject to \fB\-\-geometry\fP,
+\fB\-\-autofit\fP, and similar options.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+The window is created only after initialization (to make sure default
+window placement still works if the video size is different from the
+\fB\-\-force\-window\fP default window size). This can be a problem if
+initialization doesn\(aqt work perfectly, such as when opening URLs with
+bad network connection, or opening broken video files. The \fBimmediate\fP
+mode can be used to create the window always on program start, but this
+may cause other issues.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-taskbar\-progress\fP, \fB\-\-no\-taskbar\-progress\fP
+(Windows only)
+Enable/disable playback progress rendering in taskbar (Windows 7 and above).
+.sp
+Enabled by default.
+.TP
+.B \fB\-\-snap\-window\fP
+(Windows only) Snap the player window to screen edges.
+.TP
+.B \fB\-\-ontop\fP
+Makes the player window stay on top of other windows.
+.sp
+On Windows, if combined with fullscreen mode, this causes mpv to be
+treated as exclusive fullscreen window that bypasses the Desktop Window
+Manager.
+.TP
+.B \fB\-\-ontop\-level=<window|system|level>\fP
+(OS X only)
+Sets the level of an ontop window (default: window).
+.INDENT 7.0
+.TP
+.B window
+On top of all other windows.
+.TP
+.B system
+On top of system elements like Taskbar, Menubar and Dock.
+.TP
+.B level
+A level as integer.
+.UNINDENT
+.TP
+.B \fB\-\-border\fP, \fB\-\-no\-border\fP
+Play video with window border and decorations. Since this is on by
+default, use \fB\-\-no\-border\fP to disable the standard window decorations.
+.TP
+.B \fB\-\-fit\-border\fP, \fB\-\-no\-fit\-border\fP
+(Windows only) Fit the whole window with border and decorations on the
+screen. Since this is on by default, use \fB\-\-no\-fit\-border\fP to make mpv
+try to only fit client area with video on the screen. This behavior only
+applied to window/video with size exceeding size of the screen.
+.TP
+.B \fB\-\-on\-all\-workspaces\fP
+(X11 only)
+Show the video window on all virtual desktops.
+.TP
+.B \fB\-\-geometry=<[W[xH]][+\-x+\-y]>\fP, \fB\-\-geometry=<x:y>\fP
+Adjust the initial window position or size. \fBW\fP and \fBH\fP set the window
+size in pixels. \fBx\fP and \fBy\fP set the window position, measured in pixels
+from the top\-left corner of the screen to the top\-left corner of the image
+being displayed. If a percentage sign (\fB%\fP) is given after the argument,
+it turns the value into a percentage of the screen size in that direction.
+Positions are specified similar to the standard X11 \fB\-\-geometry\fP option
+format, in which e.g. +10\-50 means "place 10 pixels from the left border and
+50 pixels from the lower border" and "\-\-20+\-10" means "place 20 pixels
+beyond the right and 10 pixels beyond the top border".
+.sp
+If an external window is specified using the \fB\-\-wid\fP option, this
+option is ignored.
+.sp
+The coordinates are relative to the screen given with \fB\-\-screen\fP for the
+video output drivers that fully support \fB\-\-screen\fP\&.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Generally only supported by GUI VOs. Ignored for encoding.
+.UNINDENT
+.UNINDENT
+.\" admonition: Note (OS X)
+.\"
+.\" On Mac OS X the origin of the screen coordinate system is located on the
+.\" bottom-left corner. For instance, ``0:0`` will place the window at the
+.\" bottom-left of the screen.
+.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Note (X11)"
+.sp
+This option does not work properly with all window managers.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB50:40\fP
+Places the window at x=50, y=40.
+.TP
+.B \fB50%:50%\fP
+Places the window in the middle of the screen.
+.TP
+.B \fB100%:100%\fP
+Places the window at the bottom right corner of the screen.
+.TP
+.B \fB50%\fP
+Sets the window width to half the screen width. Window height is set
+so that the window has the video aspect ratio.
+.TP
+.B \fB50%x50%\fP
+Forces the window width and height to half the screen width and
+height. Will show black borders to compensate for the video aspect
+ratio (with most VOs and without \fB\-\-no\-keepaspect\fP).
+.TP
+.B \fB50%+10+10\fP
+Sets the window to half the screen widths, and positions it 10
+pixels below/left of the top left corner of the screen.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+See also \fB\-\-autofit\fP and \fB\-\-autofit\-larger\fP for fitting the window into
+a given size without changing aspect ratio.
+.TP
+.B \fB\-\-autofit=<[W[xH]]>\fP
+Set the initial window size to a maximum size specified by \fBWxH\fP, without
+changing the window\(aqs aspect ratio. The size is measured in pixels, or if
+a number is followed by a percentage sign (\fB%\fP), in percents of the
+screen size.
+.sp
+This option never changes the aspect ratio of the window. If the aspect
+ratio mismatches, the window\(aqs size is reduced until it fits into the
+specified size.
+.sp
+Window position is not taken into account, nor is it modified by this
+option (the window manager still may place the window differently depending
+on size). Use \fB\-\-geometry\fP to change the window position. Its effects
+are applied after this option.
+.sp
+See \fB\-\-geometry\fP for details how this is handled with multi\-monitor
+setups.
+.sp
+Use \fB\-\-autofit\-larger\fP instead if you just want to limit the maximum size
+of the window, rather than always forcing a window size.
+.sp
+Use \fB\-\-geometry\fP if you want to force both window width and height to a
+specific size.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Generally only supported by GUI VOs. Ignored for encoding.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB70%\fP
+Make the window width 70% of the screen size, keeping aspect ratio.
+.TP
+.B \fB1000\fP
+Set the window width to 1000 pixels, keeping aspect ratio.
+.TP
+.B \fB70%x60%\fP
+Make the window as large as possible, without being wider than 70%
+of the screen width, or higher than 60% of the screen height.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-autofit\-larger=<[W[xH]]>\fP
+This option behaves exactly like \fB\-\-autofit\fP, except the window size is
+only changed if the window would be larger than the specified size.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fB90%x80%\fP
+If the video is larger than 90% of the screen width or 80% of the
+screen height, make the window smaller until either its width is 90%
+of the screen, or its height is 80% of the screen.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-autofit\-smaller=<[W[xH]]>\fP
+This option behaves exactly like \fB\-\-autofit\fP, except that it sets the
+minimum size of the window (just as \fB\-\-autofit\-larger\fP sets the maximum).
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fB500x500\fP
+Make the window at least 500 pixels wide and 500 pixels high
+(depending on the video aspect ratio, the width or height will be
+larger than 500 in order to keep the aspect ratio the same).
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-window\-scale=<factor>\fP
+Resize the video window to a multiple (or fraction) of the video size. This
+option is applied before \fB\-\-autofit\fP and other options are applied (so
+they override this option).
+.sp
+For example, \fB\-\-window\-scale=0.5\fP would show the window at half the
+video size.
+.TP
+.B \fB\-\-cursor\-autohide=<number|no|always>\fP
+Make mouse cursor automatically hide after given number of milliseconds.
+\fBno\fP will disable cursor autohide. \fBalways\fP means the cursor will stay
+hidden.
+.TP
+.B \fB\-\-cursor\-autohide\-fs\-only\fP
+If this option is given, the cursor is always visible in windowed mode. In
+fullscreen mode, the cursor is shown or hidden according to
+\fB\-\-cursor\-autohide\fP\&.
+.TP
+.B \fB\-\-no\-fixed\-vo\fP, \fB\-\-fixed\-vo\fP
+\fB\-\-no\-fixed\-vo\fP enforces closing and reopening the video window for
+multiple files (one (un)initialization for each file).
+.TP
+.B \fB\-\-force\-rgba\-osd\-rendering\fP
+Change how some video outputs render the OSD and text subtitles. This
+does not change appearance of the subtitles and only has performance
+implications. For VOs which support native ASS rendering (like \fBvdpau\fP,
+\fBopengl\fP, \fBdirect3d\fP), this can be slightly faster or slower,
+depending on GPU drivers and hardware. For other VOs, this just makes
+rendering slower.
+.TP
+.B \fB\-\-force\-window\-position\fP
+Forcefully move mpv\(aqs video output window to default location whenever
+there is a change in video parameters, video stream or file. This used to
+be the default behavior. Currently only affects X11 VOs.
+.UNINDENT
+.sp
+\fB\-\-heartbeat\-cmd=<command>\fP
+.INDENT 0.0
+.INDENT 3.5
+.sp
+\fBWARNING:\fP
+.INDENT 0.0
+.INDENT 3.5
+This option is redundant with Lua scripting. Further, it shouldn\(aqt be
+needed for disabling screensaver anyway, since mpv will call
+\fBxdg\-screensaver\fP when using X11 backend. As a consequence this
+option has been deprecated with no direct replacement.
+.UNINDENT
+.UNINDENT
+.sp
+Command that is executed every 30 seconds during playback via \fIsystem()\fP \-
+i.e. using the shell. The time between the commands can be customized with
+the \fB\-\-heartbeat\-interval\fP option. The command is not run while playback
+is paused.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+mpv uses this command without any checking. It is your responsibility to
+ensure it does not cause security problems (e.g. make sure to use full
+paths if "." is in your path like on Windows). It also only works when
+playing video (i.e. not with \fB\-\-no\-video\fP but works with
+\fB\-\-vo=null\fP).
+.UNINDENT
+.UNINDENT
+.sp
+This can be "misused" to disable screensavers that do not support the
+proper X API (see also \fB\-\-stop\-screensaver\fP). If you think this is too
+complicated, ask the author of the screensaver program to support the
+proper X APIs. Note that the \fB\-\-stop\-screensaver\fP does not influence the
+heartbeat code at all.
+.INDENT 0.0
+.INDENT 3.5
+.IP "Example for xscreensaver"
+.sp
+\fBmpv \-\-heartbeat\-cmd="xscreensaver\-command \-deactivate" file\fP
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.IP "Example for GNOME screensaver"
+.sp
+\fBmpv \-\-heartbeat\-cmd="gnome\-screensaver\-command \-\-deactivate" file\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-\-heartbeat\-interval=<sec>\fP
+Time between \fB\-\-heartbeat\-cmd\fP invocations in seconds (default: 30).
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This does not affect the normal screensaver operation in any way.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-no\-keepaspect\fP, \fB\-\-keepaspect\fP
+\fB\-\-no\-keepaspect\fP will always stretch the video to window size, and will
+disable the window manager hints that force the window aspect ratio.
+(Ignored in fullscreen mode.)
+.TP
+.B \fB\-\-no\-keepaspect\-window\fP, \fB\-\-keepaspect\-window\fP
+\fB\-\-keepaspect\-window\fP (the default) will lock the window size to the
+video aspect. \fB\-\-no\-keepaspect\-window\fP disables this behavior, and will
+instead add black bars if window aspect and video aspect mismatch. Whether
+this actually works depends on the VO backend.
+(Ignored in fullscreen mode.)
+.TP
+.B \fB\-\-monitoraspect=<ratio>\fP
+Set the aspect ratio of your monitor or TV screen. A value of 0 disables a
+previous setting (e.g. in the config file). Overrides the
+\fB\-\-monitorpixelaspect\fP setting if enabled.
+.sp
+See also \fB\-\-monitorpixelaspect\fP and \fB\-\-video\-aspect\fP\&.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-monitoraspect=4:3\fP or \fB\-\-monitoraspect=1.3333\fP
+.IP \(bu 2
+\fB\-\-monitoraspect=16:9\fP or \fB\-\-monitoraspect=1.7777\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-hidpi\-window\-scale\fP, \fB\-\-no\-hidpi\-window\-scale\fP
+(OS X and X11 only)
+Scale the window size according to the backing scale factor (default: yes).
+On regular HiDPI resolutions the window opens with double the size but appears
+as having the same size as on none\-HiDPI resolutions. This is the default OS X
+behavior.
+.TP
+.B \fB\-\-native\-fs\fP, \fB\-\-no\-native\-fs\fP
+(OS X only)
+Uses the native fullscreen mechanism of the OS (default: yes).
+.TP
+.B \fB\-\-monitorpixelaspect=<ratio>\fP
+Set the aspect of a single pixel of your monitor or TV screen (default:
+1). A value of 1 means square pixels (correct for (almost?) all LCDs). See
+also \fB\-\-monitoraspect\fP and \fB\-\-video\-aspect\fP\&.
+.TP
+.B \fB\-\-stop\-screensaver\fP, \fB\-\-no\-stop\-screensaver\fP
+Turns off the screensaver (or screen blanker and similar mechanisms) at
+startup and turns it on again on exit (default: yes). The screensaver is
+always re\-enabled when the player is paused.
+.sp
+This is not supported on all video outputs or platforms. Sometimes it is
+implemented, but does not work (known to happen with GNOME). You might be
+able to work around this using \fB\-\-heartbeat\-cmd\fP instead.
+.TP
+.B \fB\-\-wid=<ID>\fP
+This tells mpv to attach to an existing window. If a VO is selected that
+supports this option, it will use that window for video output. mpv will
+scale the video to the size of this window, and will add black bars to
+compensate if the aspect ratio of the video is different.
+.sp
+On X11, the ID is interpreted as a \fBWindow\fP on X11. Unlike
+MPlayer/mplayer2, mpv always creates its own window, and sets the wid
+window as parent. The window will always be resized to cover the parent
+window fully. The value \fB0\fP is interpreted specially, and mpv will
+draw directly on the root window.
+.sp
+On win32, the ID is interpreted as \fBHWND\fP\&. Pass it as value cast to
+\fBintptr_t\fP\&. mpv will create its own window, and set the wid window as
+parent, like with X11.
+.sp
+On OSX/Cocoa, the ID is interpreted as \fBNSView*\fP\&. Pass it as value cast
+to \fBintptr_t\fP\&. mpv will create its own sub\-view. Because OSX does not
+support window embedding of foreign processes, this works only with libmpv,
+and will crash when used from the command line.
+.TP
+.B \fB\-\-no\-window\-dragging\fP
+Don\(aqt move the window when clicking on it and moving the mouse pointer.
+.TP
+.B \fB\-\-x11\-name\fP
+Set the window class name for X11\-based video output methods.
+.TP
+.B \fB\-\-x11\-netwm=<yes|no|auto>\fP
+(X11 only)
+Control the use of NetWM protocol features.
+.sp
+This may or may not help with broken window managers. This provides some
+functionality that was implemented by the now removed \fB\-\-fstype\fP option.
+Actually, it is not known to the developers to which degree this option
+was needed, so feedback is welcome.
+.sp
+Specifically, \fByes\fP will force use of NetWM fullscreen support, even if
+not advertised by the WM. This can be useful for WMs that are broken on
+purpose, like XMonad. (XMonad supposedly doesn\(aqt advertise fullscreen
+support, because Flash uses it. Apparently, applications which want to
+use fullscreen anyway are supposed to either ignore the NetWM support hints,
+or provide a workaround. Shame on XMonad for deliberately breaking X
+protocols (as if X isn\(aqt bad enough already).
+.sp
+By default, NetWM support is autodetected (\fBauto\fP).
+.sp
+This option might be removed in the future.
+.TP
+.B \fB\-\-x11\-bypass\-compositor=<yes|no|fs\-only|never>\fP
+If set to \fByes\fP, then ask the compositor to unredirect the mpv window
+(default: \fBfs\-only\fP). This uses the \fB_NET_WM_BYPASS_COMPOSITOR\fP hint.
+.sp
+\fBfs\-only\fP asks the window manager to disable the compositor only in
+fullscreen mode.
+.sp
+\fBno\fP sets \fB_NET_WM_BYPASS_COMPOSITOR\fP to 0, which is the default value
+as declared by the EWMH specification, i.e. no change is done.
+.sp
+\fBnever\fP asks the window manager to never disable the compositor.
+.UNINDENT
+.SS Disc Devices
+.INDENT 0.0
+.TP
+.B \fB\-\-cdrom\-device=<path>\fP
+Specify the CD\-ROM device (default: \fB/dev/cdrom\fP).
+.TP
+.B \fB\-\-dvd\-device=<path>\fP
+Specify the DVD device or .iso filename (default: \fB/dev/dvd\fP). You can
+also specify a directory that contains files previously copied directly
+from a DVD (with e.g. vobcopy).
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fBmpv dvd:// \-\-dvd\-device=/path/to/dvd/\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-bluray\-device=<path>\fP
+(Blu\-ray only)
+Specify the Blu\-ray disc location. Must be a directory with Blu\-ray
+structure.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fBmpv bd:// \-\-bluray\-device=/path/to/bd/\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-cdda\-...\fP
+These options can be used to tune the CD Audio reading feature of mpv.
+.TP
+.B \fB\-\-cdda\-speed=<value>\fP
+Set CD spin speed.
+.TP
+.B \fB\-\-cdda\-paranoia=<0\-2>\fP
+Set paranoia level. Values other than 0 seem to break playback of
+anything but the first track.
+.INDENT 7.0
+.TP
+.B 0
+disable checking (default)
+.TP
+.B 1
+overlap checking only
+.TP
+.B 2
+full data correction and verification
+.UNINDENT
+.TP
+.B \fB\-\-cdda\-sector\-size=<value>\fP
+Set atomic read size.
+.TP
+.B \fB\-\-cdda\-overlap=<value>\fP
+Force minimum overlap search during verification to <value> sectors.
+.TP
+.B \fB\-\-cdda\-toc\-bias\fP
+Assume that the beginning offset of track 1 as reported in the TOC
+will be addressed as LBA 0. Some discs need this for getting track
+boundaries correctly.
+.TP
+.B \fB\-\-cdda\-toc\-offset=<value>\fP
+Add \fB<value>\fP sectors to the values reported when addressing tracks.
+May be negative.
+.TP
+.B \fB\-\-cdda\-skip=<yes|no>\fP
+(Never) accept imperfect data reconstruction.
+.TP
+.B \fB\-\-cdda\-cdtext=<yes|no>\fP
+Print CD text. This is disabled by default, because it ruins performance
+with CD\-ROM drives for unknown reasons.
+.TP
+.B \fB\-\-dvd\-speed=<speed>\fP
+Try to limit DVD speed (default: 0, no change). DVD base speed is 1385
+kB/s, so an 8x drive can read at speeds up to 11080 kB/s. Slower speeds
+make the drive more quiet. For watching DVDs, 2700 kB/s should be quiet and
+fast enough. mpv resets the speed to the drive default value on close.
+Values of at least 100 mean speed in kB/s. Values less than 100 mean
+multiples of 1385 kB/s, i.e. \fB\-\-dvd\-speed=8\fP selects 11080 kB/s.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+You need write access to the DVD device to change the speed.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-dvd\-angle=<ID>\fP
+Some DVDs contain scenes that can be viewed from multiple angles.
+This option tells mpv which angle to use (default: 1).
+.UNINDENT
+.SS Equalizer
+.INDENT 0.0
+.TP
+.B \fB\-\-brightness=<\-100\-100>\fP
+Adjust the brightness of the video signal (default: 0). Not supported by
+all video output drivers.
+.TP
+.B \fB\-\-contrast=<\-100\-100>\fP
+Adjust the contrast of the video signal (default: 0). Not supported by all
+video output drivers.
+.TP
+.B \fB\-\-saturation=<\-100\-100>\fP
+Adjust the saturation of the video signal (default: 0). You can get
+grayscale output with this option. Not supported by all video output
+drivers.
+.TP
+.B \fB\-\-gamma=<\-100\-100>\fP
+Adjust the gamma of the video signal (default: 0). Not supported by all
+video output drivers.
+.TP
+.B \fB\-\-hue=<\-100\-100>\fP
+Adjust the hue of the video signal (default: 0). You can get a colored
+negative of the image with this option. Not supported by all video output
+drivers.
+.UNINDENT
+.SS Demuxer
+.INDENT 0.0
+.TP
+.B \fB\-\-demuxer=<[+]name>\fP
+Force demuxer type. Use a \(aq+\(aq before the name to force it; this will skip
+some checks. Give the demuxer name as printed by \fB\-\-demuxer=help\fP\&.
+.TP
+.B \fB\-\-demuxer\-lavf\-analyzeduration=<value>\fP
+Maximum length in seconds to analyze the stream properties.
+.TP
+.B \fB\-\-demuxer\-lavf\-probe\-info=<yes|no|auto>\fP
+Whether to probe stream information (default: auto). Technically, this
+controls whether libavformat\(aqs \fBavformat_find_stream_info()\fP function
+is called. Usually it\(aqs safer to call it, but it can also make startup
+slower.
+.sp
+The \fBauto\fP choice (the default) tries to skip this for a few know\-safe
+whitelisted formats, while calling it for everything else.
+.TP
+.B \fB\-\-demuxer\-lavf\-probescore=<1\-100>\fP
+Minimum required libavformat probe score. Lower values will require
+less data to be loaded (makes streams start faster), but makes file
+format detection less reliable. Can be used to force auto\-detected
+libavformat demuxers, even if libavformat considers the detection not
+reliable enough. (Default: 26.)
+.TP
+.B \fB\-\-demuxer\-lavf\-allow\-mimetype=<yes|no>\fP
+Allow deriving the format from the HTTP MIME type (default: yes). Set
+this to no in case playing things from HTTP mysteriously fails, even
+though the same files work from local disk.
+.sp
+This is default in order to reduce latency when opening HTTP streams.
+.TP
+.B \fB\-\-demuxer\-lavf\-format=<name>\fP
+Force a specific libavformat demuxer.
+.TP
+.B \fB\-\-demuxer\-lavf\-hacks=<yes|no>\fP
+By default, some formats will be handled differently from other formats
+by explicitly checking for them. Most of these compensate for weird or
+imperfect behavior from libavformat demuxers. Passing \fBno\fP disables
+these. For debugging and testing only.
+.TP
+.B \fB\-\-demuxer\-lavf\-genpts\-mode=<no|lavf>\fP
+Mode for deriving missing packet PTS values from packet DTS. \fBlavf\fP
+enables libavformat\(aqs \fBgenpts\fP option. \fBno\fP disables it. This used
+to be enabled by default, but then it was deemed as not needed anymore.
+Enabling this might help with timestamp problems, or make them worse.
+.TP
+.B \fB\-\-demuxer\-lavf\-o=<key>=<value>[,<key>=<value>[,...]]\fP
+Pass AVOptions to libavformat demuxer.
+.sp
+Note, a patch to make the \fIo=\fP unneeded and pass all unknown options
+through the AVOption system is welcome. A full list of AVOptions can
+be found in the FFmpeg manual. Note that some options may conflict
+with mpv options.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fB\-\-demuxer\-lavf\-o=fflags=+ignidx\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-demuxer\-lavf\-probesize=<value>\fP
+Maximum amount of data to probe during the detection phase. In the
+case of MPEG\-TS this value identifies the maximum number of TS packets
+to scan.
+.TP
+.B \fB\-\-demuxer\-lavf\-buffersize=<value>\fP
+Size of the stream read buffer allocated for libavformat in bytes
+(default: 32768). Lowering the size could lower latency. Note that
+libavformat might reallocate the buffer internally, or not fully use all
+of it.
+.TP
+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll=<yes|index|no>\fP, \fB\-\-mkv\-subtitle\-preroll\fP
+Try harder to show embedded soft subtitles when seeking somewhere. Normally,
+it can happen that the subtitle at the seek target is not shown due to how
+some container file formats are designed. The subtitles appear only if
+seeking before or exactly to the position a subtitle first appears. To
+make this worse, subtitles are often timed to appear a very small amount
+before the associated video frame, so that seeking to the video frame
+typically does not demux the subtitle at that position.
+.sp
+Enabling this option makes the demuxer start reading data a bit before the
+seek target, so that subtitles appear correctly. Note that this makes
+seeking slower, and is not guaranteed to always work. It only works if the
+subtitle is close enough to the seek target.
+.sp
+Works with the internal Matroska demuxer only. Always enabled for absolute
+and hr\-seeks, and this option changes behavior with relative or imprecise
+seeks only.
+.sp
+You can use the \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\fP option to specify
+how much data the demuxer should pre\-read at most in order to find subtitle
+packets that may overlap. Setting this to 0 will effectively disable this
+preroll mechanism. Setting a very large value can make seeking very slow,
+and an extremely large value would completely reread the entire file from
+start to seek target on every seek \- seeking can become slower towards the
+end of the file. The details are messy, and the value is actually rounded
+down to the cluster with the previous video keyframe.
+.sp
+Some files, especially files muxed with newer mkvmerge versions, have
+information embedded that can be used to determine what subtitle packets
+overlap with a seek target. In these cases, mpv will reduce the amount
+of data read to a minimum. (Although it will still read \fIall\fP data between
+the cluster that contains the first wanted subtitle packet, and the seek
+target.) If the \fBindex\fP choice (which is the default) is specified, then
+prerolling will be done only if this information is actually available. If
+this method is used, the maximum amount of data to skip can be additionally
+controlled by \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index\fP (it still uses
+the value of the option without \fB\-index\fP if that is higher).
+.sp
+See also \fB\-\-hr\-seek\-demuxer\-offset\fP option. This option can achieve a
+similar effect, but only if hr\-seek is active. It works with any demuxer,
+but makes seeking much slower, as it has to decode audio and video data
+instead of just skipping over it.
+.sp
+\fB\-\-mkv\-subtitle\-preroll\fP is a deprecated alias.
+.TP
+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs=<value>\fP
+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
+.TP
+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index=<value>\fP
+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
+.TP
+.B \fB\-\-demuxer\-mkv\-probe\-video\-duration=<yes|no|full>\fP
+When opening the file, seek to the end of it, and check what timestamp the
+last video packet has, and report that as file duration. This is strictly
+for compatibility with Haali only. In this mode, it\(aqs possible that opening
+will be slower (especially when playing over http), or that behavior with
+broken files is much worse. So don\(aqt use this option.
+.sp
+The \fByes\fP mode merely uses the index and reads a small number of blocks
+from the end of the file. The \fBfull\fP mode actually traverses the entire
+file and can make a reliable estimate even without an index present (such
+as partial files).
+.TP
+.B \fB\-\-demuxer\-rawaudio\-channels=<value>\fP
+Number of channels (or channel layout) if \fB\-\-demuxer=rawaudio\fP is used
+(default: stereo).
+.TP
+.B \fB\-\-demuxer\-rawaudio\-format=<value>\fP
+Sample format for \fB\-\-demuxer=rawaudio\fP (default: s16le).
+Use \fB\-\-demuxer\-rawaudio\-format=help\fP to get a list of all formats.
+.TP
+.B \fB\-\-demuxer\-rawaudio\-rate=<value>\fP
+Sample rate for \fB\-\-demuxer=rawaudio\fP (default: 44 kHz).
+.TP
+.B \fB\-\-demuxer\-rawvideo\-fps=<value>\fP
+Rate in frames per second for \fB\-\-demuxer=rawvideo\fP (default: 25.0).
+.TP
+.B \fB\-\-demuxer\-rawvideo\-w=<value>\fP, \fB\-\-demuxer\-rawvideo\-h=<value>\fP
+Image dimension in pixels for \fB\-\-demuxer=rawvideo\fP\&.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+Play a raw YUV sample:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv sample\-720x576.yuv \-\-demuxer=rawvideo \e
+\-\-demuxer\-rawvideo\-w=720 \-\-demuxer\-rawvideo\-h=576
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-demuxer\-rawvideo\-format=<value>\fP
+Color space (fourcc) in hex or string for \fB\-\-demuxer=rawvideo\fP
+(default: \fBYV12\fP).
+.TP
+.B \fB\-\-demuxer\-rawvideo\-mp\-format=<value>\fP
+Color space by internal video format for \fB\-\-demuxer=rawvideo\fP\&. Use
+\fB\-\-demuxer\-rawvideo\-mp\-format=help\fP for a list of possible formats.
+.TP
+.B \fB\-\-demuxer\-rawvideo\-codec=<value>\fP
+Set the video codec instead of selecting the rawvideo codec when using
+\fB\-\-demuxer=rawvideo\fP\&. This uses the same values as codec names in
+\fB\-\-vd\fP (but it does not accept decoder names).
+.TP
+.B \fB\-\-demuxer\-rawvideo\-size=<value>\fP
+Frame size in bytes when using \fB\-\-demuxer=rawvideo\fP\&.
+.TP
+.B \fB\-\-demuxer\-max\-bytes=<bytes>\fP
+This controls how much the demuxer is allowed to buffer ahead. The demuxer
+will normally try to read ahead as much as necessary, or as much is
+requested with \fB\-\-demuxer\-readahead\-secs\fP\&. The option can be used to
+restrict the maximum readahead. This limits excessive readahead in case of
+broken files or desynced playback. The demuxer will stop reading additional
+packets as soon as one of the limits is reached. (The limits still can be
+slightly overstepped due to technical reasons.)
+.sp
+Set these limits higher if you get a packet queue overflow warning, and
+you think normal playback would be possible with a larger packet queue.
+.sp
+See \fB\-\-list\-options\fP for defaults and value range.
+.TP
+.B \fB\-\-demuxer\-max\-packets=<packets>\fP
+Quite similar \fB\-\-demuxer\-max\-bytes=<bytes>\fP\&. Deprecated, because the
+other option does basically the same job. Since mpv 0.25.0, the code
+tries to account for per\-packet overhead, which is why this option becomes
+rather pointless.
+.TP
+.B \fB\-\-demuxer\-thread=<yes|no>\fP
+Run the demuxer in a separate thread, and let it prefetch a certain amount
+of packets (default: yes). Having this enabled may lead to smoother
+playback, but on the other hand can add delays to seeking or track
+switching.
+.TP
+.B \fB\-\-demuxer\-readahead\-secs=<seconds>\fP
+If \fB\-\-demuxer\-thread\fP is enabled, this controls how much the demuxer
+should buffer ahead in seconds (default: 1). As long as no packet has
+a timestamp difference higher than the readahead amount relative to the
+last packet returned to the decoder, the demuxer keeps reading.
+.sp
+Note that the \fB\-\-cache\-secs\fP option will override this value if a cache
+is enabled, and the value is larger.
+.sp
+(This value tends to be fuzzy, because many file formats don\(aqt store linear
+timestamps.)
+.TP
+.B \fB\-\-prefetch\-playlist=<yes|no>\fP
+Prefetch next playlist entry while playback of the current entry is ending
+(default: no). This merely opens the URL of the next playlist entry as soon
+as the current URL is fully read.
+.sp
+This does \fBnot\fP work with URLs resolved by the \fByoutube\-dl\fP wrapper,
+and it won\(aqt.
+.sp
+This does not affect HLS (\fB\&.m3u8\fP URLs) \- HLS prefetching depends on the
+demuxer cache settings and is on by default.
+.sp
+This can give subtly wrong results if per\-file options are used, or if
+options are changed in the time window between prefetching start and next
+file played.
+.sp
+This can occasionally make wrong prefetching decisions. For example, it
+can\(aqt predict whether you go backwards in the playlist, and assumes you
+won\(aqt edit the playlist.
+.sp
+Highly experimental.
+.TP
+.B \fB\-\-force\-seekable=<yes|no>\fP
+If the player thinks that the media is not seekable (e.g. playing from a
+pipe, or it\(aqs an http stream with a server that doesn\(aqt support range
+requests), seeking will be disabled. This option can forcibly enable it.
+For seeks within the cache, there\(aqs a good chance of success.
+.UNINDENT
+.SS Input
+.INDENT 0.0
+.TP
+.B \fB\-\-native\-keyrepeat\fP
+Use system settings for keyrepeat delay and rate, instead of
+\fB\-\-input\-ar\-delay\fP and \fB\-\-input\-ar\-rate\fP\&. (Whether this applies
+depends on the VO backend and how it handles keyboard input. Does not
+apply to terminal input.)
+.TP
+.B \fB\-\-input\-ar\-delay\fP
+Delay in milliseconds before we start to autorepeat a key (0 to disable).
+.TP
+.B \fB\-\-input\-ar\-rate\fP
+Number of key presses to generate per second on autorepeat.
+.TP
+.B \fB\-\-input\-conf=<filename>\fP
+Specify input configuration file other than the default location in the mpv
+configuration directory (usually \fB~/.config/mpv/input.conf\fP).
+.TP
+.B \fB\-\-no\-input\-default\-bindings\fP
+Disable mpv default (built\-in) key bindings.
+.TP
+.B \fB\-\-input\-cmdlist\fP
+Prints all commands that can be bound to keys.
+.TP
+.B \fB\-\-input\-doubleclick\-time=<milliseconds>\fP
+Time in milliseconds to recognize two consecutive button presses as a
+double\-click (default: 300).
+.TP
+.B \fB\-\-input\-keylist\fP
+Prints all keys that can be bound to commands.
+.TP
+.B \fB\-\-input\-key\-fifo\-size=<2\-65000>\fP
+Specify the size of the FIFO that buffers key events (default: 7). If it
+is too small, some events may be lost. The main disadvantage of setting it
+to a very large value is that if you hold down a key triggering some
+particularly slow command then the player may be unresponsive while it
+processes all the queued commands.
+.TP
+.B \fB\-\-input\-test\fP
+Input test mode. Instead of executing commands on key presses, mpv
+will show the keys and the bound commands on the OSD. Has to be used
+with a dummy video, and the normal ways to quit the player will not
+work (key bindings that normally quit will be shown on OSD only, just
+like any other binding). See \fI\%INPUT.CONF\fP\&.
+.TP
+.B \fB\-\-input\-file=<filename>\fP
+Read commands from the given file. Mostly useful with a FIFO. Since
+mpv 0.7.0 also understands JSON commands (see \fI\%JSON IPC\fP), but you can\(aqt
+get replies or events. Use \fB\-\-input\-ipc\-server\fP for something
+bi\-directional. On MS Windows, JSON commands are not available.
+.sp
+This can also specify a direct file descriptor with \fBfd://N\fP (UNIX only).
+In this case, JSON replies will be written if the FD is writable.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+When the given file is a FIFO mpv opens both ends, so you can do several
+\fIecho "seek 10" > mp_pipe\fP and the pipe will stay valid.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-input\-terminal\fP, \fB\-\-no\-input\-terminal\fP
+\fB\-\-no\-input\-terminal\fP prevents the player from reading key events from
+standard input. Useful when reading data from standard input. This is
+automatically enabled when \fB\-\fP is found on the command line. There are
+situations where you have to set it manually, e.g. if you open
+\fB/dev/stdin\fP (or the equivalent on your system), use stdin in a playlist
+or intend to read from stdin later on via the loadfile or loadlist input
+commands.
+.TP
+.B \fB\-\-input\-ipc\-server=<filename>\fP
+Enable the IPC support and create the listening socket at the given path.
+.sp
+On Linux and Unix, the given path is a regular filesystem path. On Windows,
+named pipes are used, so the path refers to the pipe namespace
+(\fB\e\e.\epipe\e<name>\fP). If the \fB\e\e.\epipe\e\fP prefix is missing, mpv will add
+it automatically before creating the pipe, so
+\fB\-\-input\-ipc\-server=/tmp/mpv\-socket\fP and
+\fB\-\-input\-ipc\-server=\e\e.\epipe\etmp\empv\-socket\fP are equivalent for IPC on
+Windows.
+.sp
+See \fI\%JSON IPC\fP for details.
+.TP
+.B \fB\-\-input\-appleremote=<yes|no>\fP
+(OS X only)
+Enable/disable Apple Remote support. Enabled by default (except for libmpv).
+.TP
+.B \fB\-\-input\-cursor\fP, \fB\-\-no\-input\-cursor\fP
+Permit mpv to receive pointer events reported by the video output
+driver. Necessary to use the OSC, or to select the buttons in DVD menus.
+Support depends on the VO in use.
+.TP
+.B \fB\-\-input\-media\-keys=<yes|no>\fP
+(OS X and Windows only)
+Enable/disable media keys support. Enabled by default (except for libmpv).
+.TP
+.B \fB\-\-input\-right\-alt\-gr\fP, \fB\-\-no\-input\-right\-alt\-gr\fP
+(Cocoa and Windows only)
+Use the right Alt key as Alt Gr to produce special characters. If disabled,
+count the right Alt as an Alt modifier key. Enabled by default.
+.TP
+.B \fB\-\-input\-vo\-keyboard=<yes|no>\fP
+Disable all keyboard input on for VOs which can\(aqt participate in proper
+keyboard input dispatching. May not affect all VOs. Generally useful for
+embedding only.
+.sp
+On X11, a sub\-window with input enabled grabs all keyboard input as long
+as it is 1. a child of a focused window, and 2. the mouse is inside of
+the sub\-window. It can steal away all keyboard input from the
+application embedding the mpv window, and on the other hand, the mpv
+window will receive no input if the mouse is outside of the mpv window,
+even though mpv has focus. Modern toolkits work around this weird X11
+behavior, but naively embedding foreign windows breaks it.
+.sp
+The only way to handle this reasonably is using the XEmbed protocol, which
+was designed to solve these problems. GTK provides \fBGtkSocket\fP, which
+supports XEmbed. Qt doesn\(aqt seem to provide anything working in newer
+versions.
+.sp
+If the embedder supports XEmbed, input should work with default settings
+and with this option disabled. Note that \fBinput\-default\-bindings\fP is
+disabled by default in libmpv as well \- it should be enabled if you want
+the mpv default key bindings.
+.sp
+(This option was renamed from \fB\-\-input\-x11\-keyboard\fP\&.)
+.UNINDENT
+.SS OSD
+.INDENT 0.0
+.TP
+.B \fB\-\-osc\fP, \fB\-\-no\-osc\fP
+Whether to load the on\-screen\-controller (default: yes).
+.TP
+.B \fB\-\-no\-osd\-bar\fP, \fB\-\-osd\-bar\fP
+Disable display of the OSD bar. This will make some things (like seeking)
+use OSD text messages instead of the bar.
+.sp
+You can configure this on a per\-command basis in input.conf using \fBosd\-\fP
+prefixes, see \fBInput command prefixes\fP\&. If you want to disable the OSD
+completely, use \fB\-\-osd\-level=0\fP\&.
+.TP
+.B \fB\-\-osd\-duration=<time>\fP
+Set the duration of the OSD messages in ms (default: 1000).
+.TP
+.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"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-osd\-font=\(aqBitstream Vera Sans\(aq\fP
+.IP \(bu 2
+\fB\-\-osd\-font=\(aqComic Sans MS\(aq\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-osd\-font\-size=<size>\fP
+Specify the OSD font size. See \fB\-\-sub\-font\-size\fP for details.
+.sp
+Default: 55.
+.TP
+.B \fB\-\-osd\-msg1=<string>\fP
+Show this string as message on OSD with OSD level 1 (visible by default).
+The message will be visible by default, and as long no other message
+covers it, and the OSD level isn\(aqt changed (see \fB\-\-osd\-level\fP).
+Expands properties; see \fI\%Property Expansion\fP\&.
+.TP
+.B \fB\-\-osd\-msg2=<string>\fP
+Similar as \fB\-\-osd\-msg1\fP, but for OSD level 2. If this is an empty string
+(default), then the playback time is shown.
+.TP
+.B \fB\-\-osd\-msg3=<string>\fP
+Similar as \fB\-\-osd\-msg1\fP, but for OSD level 3. If this is an empty string
+(default), then the playback time, duration, and some more information is
+shown.
+.sp
+This is also used for the \fBshow\-progress\fP command (by default mapped to
+\fBP\fP), or in some non\-default cases when seeking.
+.sp
+\fB\-\-osd\-status\-msg\fP is a legacy equivalent (but with a minor difference).
+.TP
+.B \fB\-\-osd\-status\-msg=<string>\fP
+Show a custom string during playback instead of the standard status text.
+This overrides the status text used for \fB\-\-osd\-level=3\fP, when using the
+\fBshow\-progress\fP command (by default mapped to \fBP\fP), or in some
+non\-default cases when seeking. Expands properties. See
+\fI\%Property Expansion\fP\&.
+.sp
+This option has been replaced with \fB\-\-osd\-msg3\fP\&. The only difference is
+that this option implicitly includes \fB${osd\-sym\-cc}\fP\&. This option is
+ignored if \fB\-\-osd\-msg3\fP is not empty.
+.TP
+.B \fB\-\-osd\-playing\-msg=<string>\fP
+Show a message on OSD when playback starts. The string is expanded for
+properties, e.g. \fB\-\-osd\-playing\-msg=\(aqfile: ${filename}\(aq\fP will show the
+message \fBfile:\fP followed by a space and the currently played filename.
+.sp
+See \fI\%Property Expansion\fP\&.
+.TP
+.B \fB\-\-osd\-bar\-align\-x=<\-1\-1>\fP
+Position of the OSD bar. \-1 is far left, 0 is centered, 1 is far right.
+Fractional values (like 0.5) are allowed.
+.TP
+.B \fB\-\-osd\-bar\-align\-y=<\-1\-1>\fP
+Position of the OSD bar. \-1 is top, 0 is centered, 1 is bottom.
+Fractional values (like 0.5) are allowed.
+.TP
+.B \fB\-\-osd\-bar\-w=<1\-100>\fP
+Width of the OSD bar, in percentage of the screen width (default: 75).
+A value of 50 means the bar is half the screen wide.
+.TP
+.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
+See \fB\-\-osd\-color\fP\&. Color used for OSD text background.
+.TP
+.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
+Format text on bold.
+.TP
+.B \fB\-\-osd\-italic=<yes|no>\fP
+Format text on italic.
+.TP
+.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 is
+specified (or more exactly: when that option is not set to completely
+transparent).
+.UNINDENT
+.UNINDENT
+.TP
+.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
+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
+to see the exact timestamp of a video frame.
+.TP
+.B \fB\-\-osd\-level=<0\-3>\fP
+Specifies which mode the OSD should start in.
+.INDENT 7.0
+.TP
+.B 0
+OSD completely disabled (subtitles only)
+.TP
+.B 1
+enabled (shows up only on user interaction)
+.TP
+.B 2
+enabled + current time visible by default
+.TP
+.B 3
+enabled + \fB\-\-osd\-status\-msg\fP (current time and status by default)
+.UNINDENT
+.TP
+.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>\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.
+.sp
+Default: 22.
+.TP
+.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
+Vertical position (default: \fBtop\fP).
+Details see \fB\-\-osd\-align\-x\fP\&.
+.TP
+.B \fB\-\-osd\-scale=<factor>\fP
+OSD font size multiplier, multiplied with \fB\-\-osd\-font\-size\fP value.
+.TP
+.B \fB\-\-osd\-scale\-by\-window=<yes|no>\fP
+Whether to scale the OSD with the window size (default: yes). If this is
+disabled, \fB\-\-osd\-font\-size\fP and other OSD options that use scaled pixels
+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>\fP
+See \fB\-\-sub\-color\fP\&. Color used for OSD shadow.
+.TP
+.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>\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
+.TP
+.B \fB\-\-screenshot\-format=<type>\fP
+Set the image file type used for saving screenshots.
+.sp
+Available choices:
+.INDENT 7.0
+.TP
+.B png
+PNG
+.TP
+.B jpg
+JPEG (default)
+.TP
+.B jpeg
+JPEG (alias for jpg)
+.UNINDENT
+.TP
+.B \fB\-\-screenshot\-tag\-colorspace=<yes|no>\fP
+Tag screenshots with the appropriate colorspace.
+.sp
+Note that not all formats are supported.
+.sp
+Default: \fBno\fP\&.
+.TP
+.B \fB\-\-screenshot\-high\-bit\-depth=<yes|no>\fP
+If possible, write screenshots with a bit depth similar to the source
+video (default: yes). This is interesting in particular for PNG, as this
+sometimes triggers writing 16 bit PNGs with huge file sizes.
+.TP
+.B \fB\-\-screenshot\-template=<template>\fP
+Specify the filename template used to save screenshots. The template
+specifies the filename without file extension, and can contain format
+specifiers, which will be substituted when taking a screenshot.
+By default, the template is \fBmpv\-shot%n\fP, which results in filenames like
+\fBmpv\-shot0012.png\fP for example.
+.sp
+The template can start with a relative or absolute path, in order to
+specify a directory location where screenshots should be saved.
+.sp
+If the final screenshot filename points to an already existing file, the
+file will not be overwritten. The screenshot will either not be saved, or if
+the template contains \fB%n\fP, saved using different, newly generated
+filename.
+.sp
+Allowed format specifiers:
+.INDENT 7.0
+.TP
+.B \fB%[#][0X]n\fP
+A sequence number, padded with zeros to length X (default: 04). E.g.
+passing the format \fB%04n\fP will yield \fB0012\fP on the 12th screenshot.
+The number is incremented every time a screenshot is taken or if the
+file already exists. The length \fBX\fP must be in the range 0\-9. With
+the optional # sign, mpv will use the lowest available number. For
+example, if you take three screenshots\-\-0001, 0002, 0003\-\-and delete
+the first two, the next two screenshots will not be 0004 and 0005, but
+0001 and 0002 again.
+.TP
+.B \fB%f\fP
+Filename of the currently played video.
+.TP
+.B \fB%F\fP
+Same as \fB%f\fP, but strip the file extension, including the dot.
+.TP
+.B \fB%x\fP
+Directory path of the currently played video. If the video is not on
+the filesystem (but e.g. \fBhttp://\fP), this expand to an empty string.
+.TP
+.B \fB%X{fallback}\fP
+Same as \fB%x\fP, but if the video file is not on the filesystem, return
+the fallback string inside the \fB{...}\fP\&.
+.TP
+.B \fB%p\fP
+Current playback time, in the same format as used in the OSD. The
+result is a string of the form "HH:MM:SS". For example, if the video is
+at the time position 5 minutes and 34 seconds, \fB%p\fP will be replaced
+with "00:05:34".
+.TP
+.B \fB%P\fP
+Similar to \fB%p\fP, but extended with the playback time in milliseconds.
+It is formatted as "HH:MM:SS.mmm", with "mmm" being the millisecond
+part of the playback time.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This is a simple way for getting unique per\-frame timestamps. (Frame
+numbers would be more intuitive, but are not easily implementable
+because container formats usually use time stamps for identifying
+frames.)
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB%wX\fP
+Specify the current playback time using the format string \fBX\fP\&.
+\fB%p\fP is like \fB%wH:%wM:%wS\fP, and \fB%P\fP is like \fB%wH:%wM:%wS.%wT\fP\&.
+.INDENT 7.0
+.TP
+.B Valid format specifiers:
+.INDENT 7.0
+.TP
+.B \fB%wH\fP
+hour (padded with 0 to two digits)
+.TP
+.B \fB%wh\fP
+hour (not padded)
+.TP
+.B \fB%wM\fP
+minutes (00\-59)
+.TP
+.B \fB%wm\fP
+total minutes (includes hours, unlike \fB%wM\fP)
+.TP
+.B \fB%wS\fP
+seconds (00\-59)
+.TP
+.B \fB%ws\fP
+total seconds (includes hours and minutes)
+.TP
+.B \fB%wf\fP
+like \fB%ws\fP, but as float
+.TP
+.B \fB%wT\fP
+milliseconds (000\-999)
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB%tX\fP
+Specify the current local date/time using the format \fBX\fP\&. This format
+specifier uses the UNIX \fBstrftime()\fP function internally, and inserts
+the result of passing "%X" to \fBstrftime\fP\&. For example, \fB%tm\fP will
+insert the number of the current month as number. You have to use
+multiple \fB%tX\fP specifiers to build a full date/time string.
+.TP
+.B \fB%{prop[:fallback text]}\fP
+Insert the value of the input property \(aqprop\(aq. E.g. \fB%{filename}\fP is
+the same as \fB%f\fP\&. If the property does not exist or is not available,
+an error text is inserted, unless a fallback is specified.
+.TP
+.B \fB%%\fP
+Replaced with the \fB%\fP character itself.
+.UNINDENT
+.TP
+.B \fB\-\-screenshot\-directory=<path>\fP
+Store screenshots in this directory. This path is joined with the filename
+generated by \fB\-\-screenshot\-template\fP\&. If the template filename is already
+absolute, the directory is ignored.
+.sp
+If the directory does not exist, it is created on the first screenshot. If
+it is not a directory, an error is generated when trying to write a
+screenshot.
+.sp
+This option is not set by default, and thus will write screenshots to the
+directory from which mpv was started. In pseudo\-gui mode
+(see \fI\%PSEUDO GUI MODE\fP), this is set to the desktop.
+.TP
+.B \fB\-\-screenshot\-jpeg\-quality=<0\-100>\fP
+Set the JPEG quality level. Higher means better quality. The default is 90.
+.TP
+.B \fB\-\-screenshot\-jpeg\-source\-chroma=<yes|no>\fP
+Write JPEG files with the same chroma subsampling as the video
+(default: yes). If disabled, the libjpeg default is used.
+.TP
+.B \fB\-\-screenshot\-png\-compression=<0\-9>\fP
+Set the PNG compression level. Higher means better compression. This will
+affect the file size of the written screenshot file and the time it takes
+to write a screenshot. Too high compression might occupy enough CPU time to
+interrupt playback. The default is 7.
+.TP
+.B \fB\-\-screenshot\-png\-filter=<0\-5>\fP
+Set the filter applied prior to PNG compression. 0 is none, 1 is "sub", 2 is
+"up", 3 is "average", 4 is "Paeth", and 5 is "mixed". This affects the level
+of compression that can be achieved. For most images, "mixed" achieves the
+best compression ratio, hence it is the default.
+.UNINDENT
+.SS Software Scaler
+.INDENT 0.0
+.TP
+.B \fB\-\-sws\-scaler=<name>\fP
+Specify the software scaler algorithm to be used with \fB\-\-vf=scale\fP\&. This
+also affects video output drivers which lack hardware acceleration,
+e.g. \fBx11\fP\&. See also \fB\-\-vf=scale\fP\&.
+.sp
+To get a list of available scalers, run \fB\-\-sws\-scaler=help\fP\&.
+.sp
+Default: \fBbicubic\fP\&.
+.TP
+.B \fB\-\-sws\-lgb=<0\-100>\fP
+Software scaler Gaussian blur filter (luma). See \fB\-\-sws\-scaler\fP\&.
+.TP
+.B \fB\-\-sws\-cgb=<0\-100>\fP
+Software scaler Gaussian blur filter (chroma). See \fB\-\-sws\-scaler\fP\&.
+.TP
+.B \fB\-\-sws\-ls=<\-100\-100>\fP
+Software scaler sharpen filter (luma). See \fB\-\-sws\-scaler\fP\&.
+.TP
+.B \fB\-\-sws\-cs=<\-100\-100>\fP
+Software scaler sharpen filter (chroma). See \fB\-\-sws\-scaler\fP\&.
+.TP
+.B \fB\-\-sws\-chs=<h>\fP
+Software scaler chroma horizontal shifting. See \fB\-\-sws\-scaler\fP\&.
+.TP
+.B \fB\-\-sws\-cvs=<v>\fP
+Software scaler chroma vertical shifting. See \fB\-\-sws\-scaler\fP\&.
+.UNINDENT
+.SS Terminal
+.INDENT 0.0
+.TP
+.B \fB\-\-quiet\fP
+Make console output less verbose; in particular, prevents the status line
+(i.e. AV: 3.4 (00:00:03.37) / 5320.6 ...) from being displayed.
+Particularly useful on slow terminals or broken ones which do not properly
+handle carriage return (i.e. \fB\er\fP).
+.sp
+See also: \fB\-\-really\-quiet\fP and \fB\-\-msg\-level\fP\&.
+.TP
+.B \fB\-\-really\-quiet\fP
+Display even less output and status messages than with \fB\-\-quiet\fP\&.
+.TP
+.B \fB\-\-no\-terminal\fP, \fB\-\-terminal\fP
+Disable any use of the terminal and stdin/stdout/stderr. This completely
+silences any message output.
+.sp
+Unlike \fB\-\-really\-quiet\fP, this disables input and terminal initialization
+as well.
+.TP
+.B \fB\-\-no\-msg\-color\fP
+Disable colorful console output on terminals.
+.TP
+.B \fB\-\-msg\-level=<module1=level1,module2=level2,...>\fP
+Control verbosity directly for each module. The \fBall\fP module changes the
+verbosity of all the modules not explicitly specified on the command line.
+.sp
+Run mpv with \fB\-\-msg\-level=all=trace\fP to see all messages mpv outputs. You
+can use the module names printed in the output (prefixed to each line in
+\fB[...]\fP) to limit the output to interesting modules.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Some messages are printed before the command line is parsed and are
+therefore not affected by \fB\-\-msg\-level\fP\&. To control these messages,
+you have to use the \fBMPV_VERBOSE\fP environment variable; see
+\fI\%ENVIRONMENT VARIABLES\fP for details.
+.UNINDENT
+.UNINDENT
+.sp
+Available levels:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B no
+complete silence
+.TP
+.B fatal
+fatal messages only
+.TP
+.B error
+error messages
+.TP
+.B warn
+warning messages
+.TP
+.B info
+informational messages
+.TP
+.B status
+status messages (default)
+.TP
+.B v
+verbose messages
+.TP
+.B debug
+debug messages
+.TP
+.B trace
+very noisy debug messages
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-msg\-level=ao/sndio=no
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Completely silences the output of ao_sndio, which uses the log
+prefix \fB[ao/sndio]\fP\&.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-msg\-level=all=warn,ao/alsa=error
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Only show warnings or worse, and let the ao_alsa output show errors
+only.
+.UNINDENT
+.UNINDENT
+.TP
+.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
+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.
+(Disabled by default.)
+.TP
+.B \fB\-\-term\-osd\-bar\-chars=<string>\fP
+Customize the \fB\-\-term\-osd\-bar\fP feature. The string is expected to
+consist of 5 characters (start, left space, position indicator,
+right space, end). You can use Unicode characters, but note that double\-
+width characters will not be treated correctly.
+.sp
+Default: \fB[\-+\-]\fP\&.
+.TP
+.B \fB\-\-term\-playing\-msg=<string>\fP
+Print out a string after starting playback. The string is expanded for
+properties, e.g. \fB\-\-term\-playing\-msg=\(aqfile: ${filename}\(aq\fP will print the string
+\fBfile:\fP followed by a space and the currently played filename.
+.sp
+See \fI\%Property Expansion\fP\&.
+.TP
+.B \fB\-\-term\-status\-msg=<string>\fP
+Print out a custom string during playback instead of the standard status
+line. Expands properties. See \fI\%Property Expansion\fP\&.
+.TP
+.B \fB\-\-msg\-module\fP
+Prepend module name to each console message.
+.TP
+.B \fB\-\-msg\-time\fP
+Prepend timing information to each console message.
+.UNINDENT
+.SS TV
+.INDENT 0.0
+.TP
+.B \fB\-\-tv\-...\fP
+These options tune various properties of the TV capture module. For
+watching TV with mpv, use \fBtv://\fP or \fBtv://<channel_number>\fP or
+even \fBtv://<channel_name>\fP (see option \fBtv\-channels\fP for \fBchannel_name\fP
+below) as a media URL. You can also use \fBtv:///<input_id>\fP to start
+watching a video from a composite or S\-Video input (see option \fBinput\fP for
+details).
+.TP
+.B \fB\-\-tv\-device=<value>\fP
+Specify TV device (default: \fB/dev/video0\fP).
+.TP
+.B \fB\-\-tv\-channel=<value>\fP
+Set tuner to <value> channel.
+.TP
+.B \fB\-\-no\-tv\-audio\fP
+no sound
+.TP
+.B \fB\-\-tv\-automute=<0\-255> (v4l and v4l2 only)\fP
+If signal strength reported by device is less than this value, audio
+and video will be muted. In most cases automute=100 will be enough.
+Default is 0 (automute disabled).
+.TP
+.B \fB\-\-tv\-driver=<value>\fP
+See \fB\-\-tv=driver=help\fP for a list of compiled\-in TV input drivers.
+available: dummy, v4l2 (default: autodetect)
+.TP
+.B \fB\-\-tv\-input=<value>\fP
+Specify input (default: 0 (TV), see console output for available
+inputs).
+.TP
+.B \fB\-\-tv\-freq=<value>\fP
+Specify the frequency to set the tuner to (e.g. 511.250). Not
+compatible with the channels parameter.
+.TP
+.B \fB\-\-tv\-outfmt=<value>\fP
+Specify the output format of the tuner with a preset value supported
+by the V4L driver (YV12, UYVY, YUY2, I420) or an arbitrary format given
+as hex value.
+.TP
+.B \fB\-\-tv\-width=<value>\fP
+output window width
+.TP
+.B \fB\-\-tv\-height=<value>\fP
+output window height
+.TP
+.B \fB\-\-tv\-fps=<value>\fP
+framerate at which to capture video (frames per second)
+.TP
+.B \fB\-\-tv\-buffersize=<value>\fP
+maximum size of the capture buffer in megabytes (default: dynamical)
+.TP
+.B \fB\-\-tv\-norm=<value>\fP
+See the console output for a list of all available norms.
+.sp
+See also: \fB\-\-tv\-normid\fP\&.
+.TP
+.B \fB\-\-tv\-normid=<value> (v4l2 only)\fP
+Sets the TV norm to the given numeric ID. The TV norm depends on the
+capture card. See the console output for a list of available TV norms.
+.TP
+.B \fB\-\-tv\-chanlist=<value>\fP
+available: argentina, australia, china\-bcast, europe\-east,
+europe\-west, france, ireland, italy, japan\-bcast, japan\-cable,
+newzealand, russia, southafrica, us\-bcast, us\-cable, us\-cable\-hrc
+.TP
+.B \fB\-\-tv\-channels=<chan>\-<name>[=<norm>],<chan>\-<name>[=<norm>],...\fP
+Set names for channels.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+If <chan> is an integer greater than 1000, it will be treated as
+frequency (in kHz) rather than channel name from frequency table.
+Use _ for spaces in names (or play with quoting ;\-) ). The channel
+names will then be written using OSD, and the input commands
+\fBtv_step_channel\fP, \fBtv_set_channel\fP and \fBtv_last_channel\fP
+will be usable for a remote control. Not compatible with
+the \fBfrequency\fP parameter.
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+The channel number will then be the position in the \(aqchannels\(aq
+list, beginning with 1.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.sp
+\fBtv://1\fP, \fBtv://TV1\fP, \fBtv_set_channel 1\fP,
+\fBtv_set_channel TV1\fP
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-tv\-[brightness|contrast|hue|saturation]=<\-100\-100>\fP
+Set the image equalizer on the card.
+.TP
+.B \fB\-\-tv\-audiorate=<value>\fP
+Set input audio sample rate.
+.TP
+.B \fB\-\-tv\-forceaudio\fP
+Capture audio even if there are no audio sources reported by v4l.
+.TP
+.B \fB\-\-tv\-alsa\fP
+Capture from ALSA.
+.TP
+.B \fB\-\-tv\-amode=<0\-3>\fP
+Choose an audio mode:
+.INDENT 7.0
+.TP
+.B 0
+mono
+.TP
+.B 1
+stereo
+.TP
+.B 2
+language 1
+.TP
+.B 3
+language 2
+.UNINDENT
+.TP
+.B \fB\-\-tv\-forcechan=<1\-2>\fP
+By default, the count of recorded audio channels is determined
+automatically by querying the audio mode from the TV card. This option
+allows forcing stereo/mono recording regardless of the amode option
+and the values returned by v4l. This can be used for troubleshooting
+when the TV card is unable to report the current audio mode.
+.TP
+.B \fB\-\-tv\-adevice=<value>\fP
+Set an audio device. <value> should be \fB/dev/xxx\fP for OSS and a
+hardware ID for ALSA. You must replace any \(aq:\(aq by a \(aq.\(aq in the
+hardware ID for ALSA.
+.TP
+.B \fB\-\-tv\-audioid=<value>\fP
+Choose an audio output of the capture card, if it has more than one.
+.TP
+.B \fB\-\-tv\-[volume|bass|treble|balance]=<0\-100>\fP
+These options set parameters of the mixer on the video capture card.
+They will have no effect, if your card does not have one. For v4l2 50
+maps to the default value of the control, as reported by the driver.
+.TP
+.B \fB\-\-tv\-gain=<0\-100>\fP
+Set gain control for video devices (usually webcams) to the desired
+value and switch off automatic control. A value of 0 enables automatic
+control. If this option is omitted, gain control will not be modified.
+.TP
+.B \fB\-\-tv\-immediatemode=<bool>\fP
+A value of 0 means capture and buffer audio and video together. A
+value of 1 (default) means to do video capture only and let the audio
+go through a loopback cable from the TV card to the sound card.
+.TP
+.B \fB\-\-tv\-mjpeg\fP
+Use hardware MJPEG compression (if the card supports it). When using
+this option, you do not need to specify the width and height of the
+output window, because mpv will determine it automatically from
+the decimation value (see below).
+.TP
+.B \fB\-\-tv\-decimation=<1|2|4>\fP
+choose the size of the picture that will be compressed by hardware
+MJPEG compression:
+.INDENT 7.0
+.TP
+.B 1
+full size
+.INDENT 7.0
+.IP \(bu 2
+704x576 PAL
+.IP \(bu 2
+704x480 NTSC
+.UNINDENT
+.TP
+.B 2
+medium size
+.INDENT 7.0
+.IP \(bu 2
+352x288 PAL
+.IP \(bu 2
+352x240 NTSC
+.UNINDENT
+.TP
+.B 4
+small size
+.INDENT 7.0
+.IP \(bu 2
+176x144 PAL
+.IP \(bu 2
+176x120 NTSC
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-tv\-quality=<0\-100>\fP
+Choose the quality of the JPEG compression (< 60 recommended for full
+size).
+.TP
+.B \fB\-\-tv\-scan\-autostart\fP
+Begin channel scanning immediately after startup (default: disabled).
+.TP
+.B \fB\-\-tv\-scan\-period=<0.1\-2.0>\fP
+Specify delay in seconds before switching to next channel (default:
+0.5). Lower values will cause faster scanning, but can detect inactive
+TV channels as active.
+.TP
+.B \fB\-\-tv\-scan\-threshold=<1\-100>\fP
+Threshold value for the signal strength (in percent), as reported by
+the device (default: 50). A signal strength higher than this value will
+indicate that the currently scanning channel is active.
+.UNINDENT
+.SS Cache
+.INDENT 0.0
+.TP
+.B \fB\-\-cache=<kBytes|yes|no|auto>\fP
+Set the size of the cache in kilobytes, disable it with \fBno\fP, or
+automatically enable it if needed with \fBauto\fP (default: \fBauto\fP).
+With \fBauto\fP, the cache will usually be enabled for network streams,
+using the size set by \fB\-\-cache\-default\fP\&. With \fByes\fP, the cache will
+always be enabled with the size set by \fB\-\-cache\-default\fP (unless the
+stream cannot be cached, or \fB\-\-cache\-default\fP disables caching).
+.sp
+May be useful when playing files from slow media, but can also have
+negative effects, especially with file formats that require a lot of
+seeking, such as MP4.
+.sp
+Note that half the cache size will be used to allow fast seeking back. This
+is also the reason why a full cache is usually not reported as 100% full.
+The cache fill display does not include the part of the cache reserved for
+seeking back. The actual maximum percentage will usually be the ratio
+between readahead and backbuffer sizes.
+.TP
+.B \fB\-\-cache\-default=<kBytes|no>\fP
+Set the size of the cache in kilobytes (default: 75000 KB). Using \fBno\fP
+will not automatically enable the cache e.g. when playing from a network
+stream. Note that using \fB\-\-cache\fP will always override this option.
+.TP
+.B \fB\-\-cache\-initial=<kBytes>\fP
+Playback will start when the cache has been filled up with this many
+kilobytes of data (default: 0).
+.TP
+.B \fB\-\-cache\-seek\-min=<kBytes>\fP
+If a seek is to be made to a position within \fB<kBytes>\fP of the cache
+size from the current position, mpv will wait for the cache to be
+filled to this position rather than performing a stream seek (default:
+500).
+.sp
+This matters for small forward seeks. With slow streams (especially HTTP
+streams) there is a tradeoff between skipping the data between current
+position and seek destination, or performing an actual seek. Depending
+on the situation, either of these might be slower than the other method.
+This option allows control over this.
+.TP
+.B \fB\-\-cache\-backbuffer=<kBytes>\fP
+Size of the cache back buffer (default: 75000 KB). This will add to the total
+cache size, and reserved the amount for seeking back. The reserved amount
+will not be used for readahead, and instead preserves already read data to
+enable fast seeking back.
+.TP
+.B \fB\-\-cache\-file=<TMP|path>\fP
+Create a cache file on the filesystem.
+.sp
+There are two ways of using this:
+.INDENT 7.0
+.IP 1. 3
+Passing a path (a filename). The file will always be overwritten. When
+the general cache is enabled, this file cache will be used to store
+whatever is read from the source stream.
+.sp
+This will always overwrite the cache file, and you can\(aqt use an existing
+cache file to resume playback of a stream. (Technically, mpv wouldn\(aqt
+even know which blocks in the file are valid and which not.)
+.sp
+The resulting file will not necessarily contain all data of the source
+stream. For example, if you seek, the parts that were skipped over are
+never read and consequently are not written to the cache. The skipped over
+parts are filled with zeros. This means that the cache file doesn\(aqt
+necessarily correspond to a full download of the source stream.
+.sp
+Both of these issues could be improved if there is any user interest.
+.sp
+\fBWARNING:\fP
+.INDENT 3.0
+.INDENT 3.5
+Causes random corruption when used with ordered chapters or
+with \fB\-\-audio\-file\fP\&.
+.UNINDENT
+.UNINDENT
+.IP 2. 3
+Passing the string \fBTMP\fP\&. This will not be interpreted as filename.
+Instead, an invisible temporary file is created. It depends on your
+C library where this file is created (usually \fB/tmp/\fP), and whether
+filename is visible (the \fBtmpfile()\fP function is used). On some
+systems, automatic deletion of the cache file might not be guaranteed.
+.sp
+If you want to use a file cache, this mode is recommended, because it
+doesn\(aqt break ordered chapters or \fB\-\-audio\-file\fP\&. These modes open
+multiple cache streams, and using the same file for them obviously
+clashes.
+.UNINDENT
+.sp
+See also: \fB\-\-cache\-file\-size\fP\&.
+.TP
+.B \fB\-\-cache\-file\-size=<kBytes>\fP
+Maximum size of the file created with \fB\-\-cache\-file\fP\&. For read accesses
+above this size, the cache is simply not used.
+.sp
+Keep in mind that some use\-cases, like playing ordered chapters with cache
+enabled, will actually create multiple cache files, each of which will
+use up to this much disk space.
+.sp
+(Default: 1048576, 1 GB.)
+.TP
+.B \fB\-\-no\-cache\fP
+Turn off input stream caching. See \fB\-\-cache\fP\&.
+.TP
+.B \fB\-\-cache\-secs=<seconds>\fP
+How many seconds of audio/video to prefetch if the cache is active. This
+overrides the \fB\-\-demuxer\-readahead\-secs\fP option if and only if the cache
+is enabled and the value is larger. (Default: 10.)
+.TP
+.B \fB\-\-cache\-pause\fP, \fB\-\-no\-cache\-pause\fP
+Whether the player should automatically pause when the cache runs low,
+and unpause once more data is available ("buffering").
+.UNINDENT
+.SS Network
+.INDENT 0.0
+.TP
+.B \fB\-\-user\-agent=<string>\fP
+Use \fB<string>\fP as user agent for HTTP streaming.
+.TP
+.B \fB\-\-cookies\fP, \fB\-\-no\-cookies\fP
+Support cookies when making HTTP requests. Disabled by default.
+.TP
+.B \fB\-\-cookies\-file=<filename>\fP
+Read HTTP cookies from <filename>. The file is assumed to be in Netscape
+format.
+.TP
+.B \fB\-\-http\-header\-fields=<field1,field2>\fP
+Set custom HTTP fields when accessing HTTP stream.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-http\-header\-fields=\(aqField1: value1\(aq,\(aqField2: value2\(aq \e
+http://localhost:1234
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Will generate HTTP request:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+GET / HTTP/1.0
+Host: localhost:1234
+User\-Agent: MPlayer
+Icy\-MetaData: 1
+Field1: value1
+Field2: value2
+Connection: close
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-tls\-ca\-file=<filename>\fP
+Certificate authority database file for use with TLS. (Silently fails with
+older FFmpeg or Libav versions.)
+.TP
+.B \fB\-\-tls\-verify\fP
+Verify peer certificates when using TLS (e.g. with \fBhttps://...\fP).
+(Silently fails with older FFmpeg or Libav versions.)
+.TP
+.B \fB\-\-tls\-cert\-file\fP
+A file containing a certificate to use in the handshake with the
+peer.
+.TP
+.B \fB\-\-tls\-key\-file\fP
+A file containing the private key for the certificate.
+.TP
+.B \fB\-\-referrer=<string>\fP
+Specify a referrer path or URL for HTTP requests.
+.TP
+.B \fB\-\-network\-timeout=<seconds>\fP
+Specify the network timeout in seconds. This affects at least HTTP. The
+special value 0 (default) uses the FFmpeg/Libav defaults. If a protocol
+is used which does not support timeouts, this option is silently ignored.
+.TP
+.B \fB\-\-rtsp\-transport=<lavf|udp|tcp|http>\fP
+Select RTSP transport method (default: tcp). This selects the underlying
+network transport when playing \fBrtsp://...\fP URLs. The value \fBlavf\fP
+leaves the decision to libavformat.
+.TP
+.B \fB\-\-hls\-bitrate=<no|min|max|<rate>>\fP
+If HLS streams are played, this option controls what streams are selected
+by default. The option allows the following parameters:
+.INDENT 7.0
+.TP
+.B no
+Don\(aqt do anything special. Typically, this will simply pick the
+first audio/video streams it can find.
+.TP
+.B min
+Pick the streams with the lowest bitrate.
+.TP
+.B max
+Same, but highest bitrate. (Default.)
+.UNINDENT
+.sp
+Additionally, if the option is a number, the stream with the highest rate
+equal or below the option value is selected.
+.sp
+The bitrate as used is sent by the server, and there\(aqs no guarantee it\(aqs
+actually meaningful.
+.UNINDENT
+.SS DVB
+.INDENT 0.0
+.TP
+.B \fB\-\-dvbin\-card=<1\-4>\fP
+Specifies using card number 1\-4 (default: 1).
+.TP
+.B \fB\-\-dvbin\-file=<filename>\fP
+Instructs mpv to read the channels list from \fB<filename>\fP\&. The default is
+in the mpv configuration directory (usually \fB~/.config/mpv\fP) with the
+filename \fBchannels.conf.{sat,ter,cbl,atsc}\fP (based on your card type) or
+\fBchannels.conf\fP as a last resort.
+For DVB\-S/2 cards, a VDR 1.7.x format channel list is recommended
+as it allows tuning to DVB\-S2 channels, enabling subtitles and
+decoding the PMT (which largely improves the demuxing).
+Classic mplayer format channel lists are still supported (without
+these improvements), and for other card types, only limited VDR
+format channel list support is implemented (patches welcome).
+For channels with dynamic PID switching or incomplete
+\fBchannels.conf\fP, \fB\-\-dvbin\-full\-transponder\fP or the magic PID
+\fB8192\fP are recommended.
+.TP
+.B \fB\-\-dvbin\-timeout=<1\-30>\fP
+Maximum number of seconds to wait when trying to tune a frequency before
+giving up (default: 30).
+.TP
+.B \fB\-\-dvbin\-full\-transponder=<yes|no>\fP
+Apply no filters on program PIDs, only tune to frequency and pass full
+transponder to demuxer.
+The player frontend selects the streams from the full TS in this case,
+so the program which is shown initially may not match the chosen channel.
+Switching between the programs is possible by cycling the \fBprogram\fP
+property.
+This is useful to record multiple programs on a single transponder,
+or to work around issues in the \fBchannels.conf\fP\&.
+It is also recommended to use this for channels which switch PIDs
+on\-the\-fly, e.g. for regional news.
+.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\-\-scale=<filter>\fP
+The filter function to use when upscaling video.
+.INDENT 7.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 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-scale=help
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.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\-\-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\-\-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\-\-scale\-param1=<value>\fP, \fB\-\-scale\-param2=<value>\fP, \fB\-\-cscale\-param1=<value>\fP, \fB\-\-cscale\-param2=<value>\fP, \fB\-\-dscale\-param1=<value>\fP, \fB\-\-dscale\-param2=<value>\fP, \fB\-\-tscale\-param1=<value>\fP, \fB\-\-tscale\-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, \fB\-\-scale\-wblur=<value>\fP, \fB\-\-cscale\-blur=<value>\fP, \fB\-\-cscale\-wblur=<value>\fP, \fB\-\-dscale\-blur=<value>\fP, \fB\-\-dscale\-wblur=<value>\fP, \fB\-\-tscale\-blur=<value>\fP, \fB\-\-tscale\-wblur=<value>\fP
+Kernel/window scaling factor (also known as a blur factor). Decreasing this
+makes the result sharper, increasing it makes it blurrier (default 0). If
+set to 0, the kernel\(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\-clamp=<0.0\-1.0>\fP, \fB\-\-cscale\-clamp\fP, \fB\-\-dscale\-clamp\fP, \fB\-\-tscale\-clamp\fP
+Specifies a weight bias to multiply into negative coefficients. Specifying
+\fB\-\-scale\-clamp=1\fP has the effect of removing negative weights completely,
+thus effectively clamping the value range to [0\-1]. Values between 0.0 and
+1.0 can be specified to apply only a moderate diminishment of negative
+weights. This is especially useful for \fB\-\-tscale\fP, where it reduces
+excessive ringing artifacts in the temporal domain (which typically
+manifest themselves as short flashes or fringes of black, mostly around
+moving edges) in exchange for potentially adding more blur. The default for
+\fB\-\-tscale\-clamp\fP is 1.0, the others default to 0.0.
+.TP
+.B \fB\-\-scale\-cutoff=<value>\fP, \fB\-\-cscale\-cutoff=<value>\fP, \fB\-\-dscale\-cutoff=<value>\fP
+Cut off the filter kernel prematurely once the value range drops below
+this threshold. Doing so allows more aggressive pruning of skippable
+coefficients by disregarding parts of the LUT which are effectively zeroed
+out by the window function. Only affects polar (EWA) filters. The default
+is 0.001 for each, which is perceptually transparent but provides a 10%\-20%
+speedup, depending on the exact radius and filter kernel chosen.
+.TP
+.B \fB\-\-scale\-taper=<value>\fP, \fB\-\-scale\-wtaper=<value>\fP, \fB\-\-dscale\-taper=<value>\fP, \fB\-\-dscale\-wtaper=<value>\fP, \fB\-\-cscale\-taper=<value>\fP, \fB\-\-cscale\-wtaper=<value>\fP, \fB\-\-tscale\-taper=<value>\fP, \fB\-\-tscale\-wtaper=<value>\fP
+Kernel/window taper factor. Increasing this flattens the filter function.
+Value range is 0 to 1. A value of 0 (the default) means no flattening, a
+value of 1 makes the filter completely flat (equivalent to a box function).
+Values in between mean that some portion will be flat and the actual filter
+function will be squeezed into the space in between.
+.TP
+.B \fB\-\-scale\-radius=<value>\fP, \fB\-\-cscale\-radius=<value>\fP, \fB\-\-dscale\-radius=<value>\fP, \fB\-\-tscale\-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, \fB\-\-cscale\-antiring=<value>\fP, \fB\-\-dscale\-antiring=<value>\fP, \fB\-\-tscale\-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, nor does it affect any polar (EWA) scalers.
+.TP
+.B \fB\-\-scale\-window=<window>\fP, \fB\-\-cscale\-window=<window>\fP, \fB\-\-dscale\-window=<window>\fP, \fB\-\-tscale\-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, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-tscale\-wparam=<window>\fP
+(Advanced users only) Configure the parameter for the window function given
+by \fB\-\-scale\-window\fP etc. 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\-\-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. This option
+has no effect on HDR content.
+.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\-\-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. It should also only be used with an \fB\-\-opengl\-fbo\-format\fP
+that has at least 16 bit precision.
+.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\-\-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.
+.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\-\-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\-\-opengl\-shaders=<file\-list>\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. Each use of the option will
+add another file to the internal list of shaders (see \fI\%List Options\fP).
+.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 section of metadata, along with the non\-metadata lines after it,
+defines a single block. There are currently two types of blocks, HOOKs and
+TEXTUREs.
+.sp
+A \fBTEXTURE\fP block can set the following options:
+.INDENT 7.0
+.TP
+.B TEXTURE <name> (required)
+The name of this texture. Hooks can then bind the texture under this
+name using BIND. This must be the first option of the texture block.
+.TP
+.B SIZE <width> [<height>] [<depth>] (required)
+The dimensions of the texture. The height and depth are optional. The
+type of texture (1D, 2D or 3D) depends on the number of components
+specified.
+.TP
+.B FORMAT <name> (required)
+The texture format for the samples. Supported texture formats are listed
+in debug logging when the \fBopengl\fP VO is initialized (look for
+\fBTexture formats:\fP). Usually, this follows OpenGL naming conventions.
+For example, \fBrgb16\fP provides 3 channels with normalized 16 bit
+components. One oddity are float formats: for example, \fBrgba16f\fP has
+16 bit internal precision, but the texture data is provided as 32 bit
+floats, and the driver converts the data on texture upload.
+.sp
+Although format names follow a common naming convention, not all of them
+are available on all hardware, drivers, GL versions, and so on.
+.TP
+.B FILTER <LINEAR|NEAREST>
+The min/magnification filter used when sampling from this texture.
+.TP
+.B BORDER <CLAMP|REPEAT|MIRROR>
+The border wrapping mode used when sampling from this texture.
+.UNINDENT
+.sp
+Following the metadata is a string of bytes in hexadecimal notation that
+define the raw texture data, corresponding to the format specified by
+\fIFORMAT\fP, on a single line with no extra whitespace.
+.sp
+A \fBHOOK\fP block can set the following options:
+.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 DESC <title>
+User\-friendly description of the pass. This is the name used when
+representing this shader in the list of passes for property
+\fIvo\-passes\fP\&.
+.TP
+.B BIND <name>
+Loads a texture (either coming from mpv or from a \fBTEXTURE\fP block)
+and makes it available to the pass. When binding textures from mpv,
+this will also set up macros to facilitate accessing it properly. See
+below for a list. 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 (such as MAIN.width or CHROMA.height),
+OUTPUT, or NATIVE_CROPPED (size of an input texture cropped after
+pan\-and\-scan, video\-align\-x/y, video\-pan\-x/y, etc. and possibly
+prescaled). By default, these are set to HOOKED.w and HOOKED.h,
+espectively.
+.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.
+.TP
+.B COMPUTE <bw> <bh> [<tw> <th>]
+Specifies that this shader should be treated as a compute shader, with
+the block size bw and bh. The compute shader will be dispatched with
+however many blocks are necessary to completely tile over the output.
+Within each block, there will bw tw*th threads, forming a single work
+group. In other words: tw and th specify the work group size, which can
+be different from the block size. So for example, a compute shader with
+bw, bh = 32 and tw, th = 8 running on a 500x500 texture would dispatch
+16x16 blocks (rounded up), each with 8x8 threads.
+.sp
+Compute shaders in mpv are treated a bit different from fragment
+shaders. Instead of defining a \fBvec4 hook\fP that produces an output
+sample, you directly define \fBvoid hook\fP which writes to a fixed
+writeonly image unit named \fBout_image\fP (this is bound by mpv) using
+\fIimageStore\fP\&. To help translate texture coordinates in the absence of
+vertices, mpv provides a special function \fBNAME_map(id)\fP to map from
+the texel space of the output image to the texture coordinates for all
+bound textures. In particular, \fBNAME_pos\fP is equivalent to
+\fBNAME_map(gl_GlobalInvocationID)\fP, although using this only really
+makes sense if (tw,th) == (bw,bh).
+.UNINDENT
+.sp
+Each bound mpv 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 float NAME_mul
+The coefficient that needs to be multiplied into the texture contents
+in order to normalize it to the 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
+Normally, users should use either NAME_tex or NAME_texOff to read from the
+texture. For some shaders however , it can be better for performance to do
+custom sampling from NAME_raw, in which case care needs to be taken to
+respect NAME_mul and NAME_rot.
+.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 input_size
+The size in pixels of the input image (possibly cropped and prescaled).
+.TP
+.B vec2 target_size
+The size in pixels of the visible part of the scaled (and possibly
+cropped) image.
+.TP
+.B vec2 tex_offset
+Texture offset introduced by user shaders or options like panscan, video\-align\-x/y, video\-pan\-x/y.
+.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\-\-opengl\-shader=<file>\fP
+CLI/config file only alias for \fB\-\-opengl\-shaders\-append\fP\&.
+.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\-\-angle\-d3d11\-feature\-level=<11_0|10_1|10_0|9_3>\fP
+Selects a specific feature level when using the ANGLE backend with D3D11.
+By default, the highest available feature level is used. This option can be
+used to select a lower feature level, which is mainly useful for debugging.
+Note that OpenGL ES 3.0 is only supported at feature level 10_1 or higher.
+Most extended OpenGL features will not work at lower feature levels
+(similar to \fB\-\-opengl\-dumb\-mode\fP).
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-d3d11\-warp=<yes|no|auto>\fP
+Use WARP (Windows Advanced Rasterization Platform) when using the ANGLE
+backend with D3D11 (default: auto). This is a high performance software
+renderer. By default, it is used when the Direct3D hardware does not
+support Direct3D 11 feature level 9_3. While the extended OpenGL features
+will work with WARP, they can be very slow.
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-egl\-windowing=<yes|no|auto>\fP
+Use ANGLE\(aqs built in EGL windowing functions to create a swap chain
+(default: auto). If this is set to \fBno\fP and the D3D11 renderer is in use,
+ANGLE\(aqs built in swap chain will not be used and a custom swap chain that
+is optimized for video rendering will be created instead. If set to
+\fBauto\fP, a custom swap chain will be used for D3D11 and the built in swap
+chain will be used for D3D9. This option is mainly for debugging purposes,
+in case the custom swap chain has poor performance or does not work.
+.sp
+If set to \fByes\fP, the \fB\-\-angle\-max\-frame\-latency\fP,
+\fB\-\-angle\-swapchain\-length\fP and \fB\-\-angle\-flip\fP options will have no
+effect.
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-flip=<yes|no>\fP
+Enable flip\-model presentation, which avoids unnecessarily copying the
+backbuffer by sharing surfaces with the DWM (default: yes). This may cause
+performance issues with older drivers. If flip\-model presentation is not
+supported (for example, on Windows 7 without the platform update), mpv will
+automatically fall back to the older bitblt presentation model.
+.sp
+If set to \fBno\fP, the \fB\-\-angle\-swapchain\-length\fP option will have no
+effect.
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-max\-frame\-latency=<1\-16>\fP
+Sets the maximum number of frames that the system is allowed to queue for
+rendering with the ANGLE backend (default: 3). Lower values should make
+VSync timing more accurate, but a value of \fB1\fP requires powerful
+hardware, since the CPU will not be able to "render ahead" of the GPU.
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-renderer=<d3d9|d3d11|auto>\fP
+Forces a specific renderer when using the ANGLE backend (default: auto). In
+auto mode this will pick D3D11 for systems that support Direct3D 11 feature
+level 9_3 or higher, and D3D9 otherwise. This option is mainly for
+debugging purposes. Normally there is no reason to force a specific
+renderer, though \fB\-\-angle\-renderer=d3d9\fP may give slightly better
+performance on old hardware. Note that the D3D9 renderer only supports
+OpenGL ES 2.0, so most extended OpenGL features will not work if this
+renderer is selected (similar to \fB\-\-opengl\-dumb\-mode\fP).
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-angle\-swapchain\-length=<2\-16>\fP
+Sets the number of buffers in the D3D11 presentation queue when using the
+ANGLE backend (default: 6). At least 2 are required, since one is the back
+buffer that mpv renders to and the other is the front buffer that is
+presented by the DWM. Additional buffers can improve performance, because
+for example, mpv will not have to wait on the DWM to release the front
+buffer before rendering a new frame to it. For this reason, Microsoft
+recommends at least 4.
+.sp
+Windows with ANGLE only.
+.TP
+.B \fB\-\-cocoa\-force\-dedicated\-gpu=<yes|no>\fP
+Deactivates the automatic graphics switching and forces the dedicated GPU.
+(default: no)
+.sp
+OS X 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 x11probe
+For internal autoprobing, equivalent to \fBx11\fP otherwise. Don\(aqt use
+directly, it could be removed without warning as autoprobing is changed.
+.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.
+.TP
+.B vdpauglx
+Use vdpau presentation with GLX as backing. Experimental use only.
+Using this will have no advantage (other than additional bugs or
+performance problems), and is for doing experiments only. Will not
+be used automatically.
+.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 force2
+Try to request a ES 2.0 context (the driver might ignore this)
+.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
+.TP
+.B s\-gamut
+Sony S\-Gamut (S\-Log) 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 pq
+ITU\-R BT.2100 PQ (Perceptual quantizer) curve, aka SMPTE ST2084
+.TP
+.B hlg
+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve, aka ARIB STD\-B67
+.TP
+.B v\-log
+Panasonic V\-Log (VARICAM) curve
+.TP
+.B s\-log1
+Sony S\-Log1 curve
+.TP
+.B s\-log2
+Sony S\-Log2 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\-\-tone\-mapping=<value>\fP
+Specifies the algorithm used for tone\-mapping images onto the target
+display. This is relevant for both HDR\->SDR conversion as well as gamut
+reduction (e.g. playing back BT.2020 content on a standard gamut display).
+Valid values are:
+.INDENT 7.0
+.TP
+.B clip
+Hard\-clip any out\-of\-range values. Use this when you care about
+perfect color accuracy for in\-range values at the cost of completely
+distorting out\-of\-range values. Not generally recommended.
+.TP
+.B mobius
+Generalization of Reinhard to a Möbius transform with linear section.
+Smoothly maps out\-of\-range values while retaining contrast and colors
+for in\-range material as much as possible. Use this when you care about
+color accuracy more than detail preservation. This is somewhere in
+between \fBclip\fP and \fBreinhard\fP, depending on the value of
+\fB\-\-tone\-mapping\-param\fP\&. (default)
+.TP
+.B reinhard
+Reinhard tone mapping algorithm. Very simple continuous curve.
+Preserves overall image brightness but uses nonlinear contrast, which
+results in flattening of details and degradation in color accuracy.
+.TP
+.B hable
+Similar to \fBreinhard\fP but preserves both dark and bright details
+better (slightly sigmoidal), at the cost of slightly darkening /
+desaturating everything. Developed by John Hable for use in video
+games. Use this when you care about detail preservation more than
+color/brightness accuracy. This is roughly equivalent to
+\fB\-\-hdr\-tone\-mapping=reinhard \-\-tone\-mapping\-param=0.24\fP\&.
+.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 clip
+Specifies an extra linear coefficient to multiply into the signal
+before clipping. Defaults to 1.0.
+.TP
+.B mobius
+Specifies the transition point from linear to mobius transform. Every
+value below this point is guaranteed to be mapped 1:1. The higher the
+value, the more accurate the result will be, at the cost of losing
+bright details. Defaults to 0.3, which due to the steep initial slope
+still preserves in\-range colors fairly accurately.
+.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\-\-hdr\-compute\-peak\fP
+Compute the HDR peak per\-frame of relying on tagged metadata. These values
+are averaged over local regions as well as over several frames to prevent
+the value from jittering around too much. This option basically gives you
+dynamic, per\-scene tone mapping. Requires compute shaders, which is a
+fairly recent OpenGL feature, and will probably also perform horribly on
+some drivers, so enable at your own risk.
+.TP
+.B \fB\-\-tone\-mapping\-desaturate=<value>\fP
+Apply desaturation for highlights that exceed this level of brightness. The
+higher the parameter, the more color information will be preserved. This
+setting helps prevent unnaturally blown\-out colors for super\-highlights, by
+(smoothly) turning into white instead. This makes images feel more natural,
+at the cost of reducing information about out\-of\-range colors.
+.sp
+The default of 2.0 is somewhat conservative and will mostly just apply to
+skies or directly sunlit surfaces. A setting of 0.0 disables this option.
+.TP
+.B \fB\-\-gamut\-warning\fP
+If enabled, mpv will mark all clipped/out\-of\-gamut pixels that exceed a
+given threshold (currently hard\-coded to 101%). The affected pixels will be
+inverted to make them stand out. Note: This option applies after the
+effects of all of mpv\(aqs color space transformation / tone mapping options,
+so it\(aqs a good idea to combine this with \fB\-\-tone\-mapping=clip\fP and use
+\fB\-\-target\-gamut\fP to set the gamut to simulate. For example,
+\fB\-\-target\-gamut=bt.709\fP would make mpv highlight all pixels that exceed the
+gamut of a standard gamut (sRGB) display. This option also does not work
+well with ICC profiles, since the 3DLUTs are always generated against the
+source color space and have chromatically\-accurate clipping built in.
+.TP
+.B \fB\-\-use\-embedded\-icc\-profile\fP
+Load the embedded ICC profile contained in media files such as PNG images.
+(Default: yes). Note that this option only works when also using a display
+ICC profile (\fB\-\-icc\-profile\fP or \fB\-\-icc\-profile\-auto\fP), and also
+requires LittleCMS 2 support.
+.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 the background color (\fB\-\-background\fP, normally
+black).
+.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.
+This does not work on X11 with EGL and Mesa (freedesktop bug 67676).
+.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|auto>\fP
+Call \fBglFlush()\fP after rendering a frame and before attempting to display
+it (default: auto). Can fix stuttering in some cases, in other cases
+probably causes it. The \fBauto\fP mode will call \fBglFlush()\fP only if
+the renderer is going to wait for a while after rendering, instead of
+flipping GL front and backbuffers immediately (i.e. it doesn\(aqt call it
+in display\-sync mode).
+.TP
+.B \fB\-\-opengl\-dumb\-mode=<yes|no|auto>\fP
+This mode is extremely restricted, and will disable most extended OpenGL
+features. That 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. The default of \fBauto\fP will enable it automatically
+if nothing uses features which require FBOs.
+.sp
+This option might be silently removed in the future.
+.TP
+.B \fB\-\-opengl\-shader\-cache\-dir=<dirname>\fP
+Store and load compiled GL shaders in this directory. Normally, shader
+compilation is very fast, so this is usually not needed. But some GL
+implementations (notably ANGLE, the default on Windows) have relatively
+slow shader compilation, and can cause startup delays.
+.sp
+NOTE: This is not cleaned automatically, so old, unused cache files may
+stick around indefinitely.
+.sp
+This option might be silently removed in the future, if ANGLE fixes shader
+compilation speed.
+.TP
+.B \fB\-\-cuda\-decode\-device=<auto|0..>\fP
+Choose the GPU device used for decoding when using the \fBcuda\fP hwdec.
+.sp
+By default, the device that is being used to provide OpenGL output will
+also be used for decoding (and in the vast majority of cases, only one
+GPU will be present).
+.sp
+Note that when using the \fBcuda\-copy\fP hwdec, a different option must be
+passed: \fB\-\-vd\-lavc\-o=gpu=<0..>\fP\&.
+.UNINDENT
+.SS Miscellaneous
+.INDENT 0.0
+.TP
+.B \fB\-\-display\-tags=tag1,tags2,...\fP
+Set the list of tags that should be displayed on the terminal. Tags that
+are in the list, but are not present in the played file, will not be shown.
+If a value ends with \fB*\fP, all tags are matched by prefix (though there
+is no general globbing). Just passing \fB*\fP essentially filtering.
+.sp
+The default includes a common list of tags, call mpv with \fB\-\-list\-options\fP
+to see it.
+.TP
+.B \fB\-\-mc=<seconds/frame>\fP
+Maximum A\-V sync correction per frame (in seconds)
+.TP
+.B \fB\-\-autosync=<factor>\fP
+Gradually adjusts the A/V sync based on audio delay measurements.
+Specifying \fB\-\-autosync=0\fP, the default, will cause frame timing to be
+based entirely on audio delay measurements. Specifying \fB\-\-autosync=1\fP
+will do the same, but will subtly change the A/V correction algorithm. An
+uneven video framerate in a video which plays fine with \fB\-\-no\-audio\fP can
+often be helped by setting this to an integer value greater than 1. The
+higher the value, the closer the timing will be to \fB\-\-no\-audio\fP\&. Try
+\fB\-\-autosync=30\fP to smooth out problems with sound drivers which do not
+implement a perfect audio delay measurement. With this value, if large A/V
+sync offsets occur, they will only take about 1 or 2 seconds to settle
+out. This delay in reaction time to sudden A/V offsets should be the only
+side effect of turning this option on, for all sound drivers.
+.TP
+.B \fB\-\-video\-sync=<audio|...>\fP
+How the player synchronizes audio and video.
+.sp
+If you use this option, you usually want to set it to \fBdisplay\-resample\fP
+to enable a timing mode that tries to not skip or repeat frames when for
+example playing 24fps video on a 24Hz screen.
+.sp
+The modes starting with \fBdisplay\-\fP try to output video frames completely
+synchronously to the display, using the detected display vertical refresh
+rate as a hint how fast frames will be displayed on average. These modes
+change video speed slightly to match the display. See \fB\-\-video\-sync\-...\fP
+options for fine tuning. The robustness of this mode is further reduced by
+making a some idealized assumptions, which may not always apply in reality.
+Behavior can depend on the VO and the system\(aqs video and audio drivers.
+Media files must use constant framerate. Section\-wise VFR might work as well
+with some container formats (but not e.g. mkv). If the sync code detects
+severe A/V desync, or the framerate cannot be detected, the player
+automatically reverts to \fBaudio\fP mode for some time or permanently.
+.sp
+The modes with \fBdesync\fP in their names do not attempt to keep audio/video
+in sync. They will slowly (or quickly) desync, until e.g. the next seek
+happens. These modes are meant for testing, not serious use.
+.INDENT 7.0
+.TP
+.B audio
+Time video frames to audio. This is the most robust
+mode, because the player doesn\(aqt have to assume anything
+about how the display behaves. The disadvantage is that
+it can lead to occasional frame drops or repeats. If
+audio is disabled, this uses the system clock. This is
+the default mode.
+.TP
+.B display\-resample
+Resample audio to match the video. This mode will also
+try to adjust audio speed to compensate for other drift.
+(This means it will play the audio at a different speed
+every once in a while to reduce the A/V difference.)
+.TP
+.B display\-resample\-vdrop
+Resample audio to match the video. Drop video
+frames to compensate for drift.
+.TP
+.B display\-resample\-desync
+Like the previous mode, but no A/V compensation.
+.TP
+.B display\-vdrop
+Drop or repeat video frames to compensate desyncing
+video. (Although it should have the same effects as
+\fBaudio\fP, the implementation is very different.)
+.TP
+.B display\-adrop
+Drop or repeat audio data to compensate desyncing
+video. See \fB\-\-video\-sync\-adrop\-size\fP\&. This mode will
+cause severe audio artifacts if the real monitor
+refresh rate is too different from the reported or
+forced rate.
+.TP
+.B display\-desync
+Sync video to display, and let audio play on its own.
+.TP
+.B desync
+Sync video according to system clock, and let audio play
+on its own.
+.UNINDENT
+.TP
+.B \fB\-\-video\-sync\-max\-video\-change=<value>\fP
+Maximum speed difference in percent that is applied to video with
+\fB\-\-video\-sync=display\-...\fP (default: 1). Display sync mode will be
+disabled if the monitor and video refresh way do not match within the
+given range. It tries multiples as well: playing 30 fps video on a 60 Hz
+screen will duplicate every second frame. Playing 24 fps video on a 60 Hz
+screen will play video in a 2\-3\-2\-3\-... pattern.
+.sp
+The default settings are not loose enough to speed up 23.976 fps video to
+25 fps. We consider the pitch change too extreme to allow this behavior
+by default. Set this option to a value of \fB5\fP to enable it.
+.sp
+Note that in the \fB\-\-video\-sync=display\-resample\fP mode, audio speed will
+additionally be changed by a small amount if necessary for A/V sync. See
+\fB\-\-video\-sync\-max\-audio\-change\fP\&.
+.TP
+.B \fB\-\-video\-sync\-max\-audio\-change=<value>\fP
+Maximum \fIadditional\fP speed difference in percent that is applied to audio
+with \fB\-\-video\-sync=display\-...\fP (default: 0.125). Normally, the player
+plays the audio at the speed of the video. But if the difference between
+audio and video position is too high, e.g. due to drift or other timing
+errors, it will attempt to speed up or slow down audio by this additional
+factor. Too low values could lead to video frame dropping or repeating if
+the A/V desync cannot be compensated, too high values could lead to chaotic
+frame dropping due to the audio "overshooting" and skipping multiple video
+frames before the sync logic can react.
+.TP
+.B \fB\-\-video\-sync\-adrop\-size=<value>\fP
+For the \fB\-\-video\-sync=display\-adrop\fP mode. This mode duplicates/drops
+audio data to keep audio in sync with video. To avoid audio artifacts on
+jitter (which would add/remove samples all the time), this is done in
+relatively large, fixed units, controlled by this option. The unit is
+seconds.
+.TP
+.B \fB\-\-mf\-fps=<value>\fP
+Framerate used when decoding from multiple PNG or JPEG files with \fBmf://\fP
+(default: 1).
+.TP
+.B \fB\-\-mf\-type=<value>\fP
+Input file type for \fBmf://\fP (available: jpeg, png, tga, sgi). By default,
+this is guessed from the file extension.
+.TP
+.B \fB\-\-stream\-dump=<destination\-filename>\fP
+Instead of playing a file, read its byte stream and write it to the given
+destination file. The destination is overwritten. Can be useful to test
+network\-related behavior.
+.TP
+.B \fB\-\-stream\-lavf\-o=opt1=value1,opt2=value2,...\fP
+Set AVOptions on streams opened with libavformat. Unknown or misspelled
+options are silently ignored. (They are mentioned in the terminal output
+in verbose mode, i.e. \fB\-\-v\fP\&. In general we can\(aqt print errors, because
+other options such as e.g. user agent are not available with all protocols,
+and printing errors for unknown options would end up being too noisy.)
+.TP
+.B \fB\-\-vo\-mmcss\-profile=<name>\fP
+(Windows only.)
+Set the MMCSS profile for the video renderer thread (default: \fBPlayback\fP).
+.TP
+.B \fB\-\-priority=<prio>\fP
+(Windows only.)
+Set process priority for mpv according to the predefined priorities
+available under Windows.
+.sp
+Possible values of \fB<prio>\fP:
+idle|belownormal|normal|abovenormal|high|realtime
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+Using realtime priority can cause system lockup.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-\-force\-media\-title=<string>\fP
+Force the contents of the \fBmedia\-title\fP property to this value. Useful
+for scripts which want to set a title, without overriding the user\(aqs
+setting in \fB\-\-title\fP\&.
+.TP
+.B \fB\-\-external\-files=<file\-list>\fP
+Load a file and add all of its tracks. This is useful to play different
+files together (for example audio from one file, video from another), or
+for advanced \fB\-\-lavfi\-complex\fP used (like playing two video files at
+the same time).
+.sp
+Unlike \fB\-\-sub\-files\fP and \fB\-\-audio\-files\fP, this includes all tracks, and
+does not cause default stream selection over the "proper" file. This makes
+it slightly less intrusive.
+.sp
+This is a list option. See \fI\%List Options\fP for details.
+.TP
+.B \fB\-\-external\-file=<file>\fP
+CLI/config file only alias for \fB\-\-external\-files\-append\fP\&. Each use of this
+option will add a new external files.
+.TP
+.B \fB\-\-autoload\-files=<yes|no>\fP
+Automatically load/select external files (default: yes).
+.sp
+If set to \fBno\fP, then do not automatically load external files as specified
+by \fB\-\-sub\-auto\fP and \fB\-\-audio\-file\-auto\fP\&. If external files are forcibly
+added (like with \fB\-\-sub\-files\fP), they will not be auto\-selected.
+.sp
+This does not affect playlist expansion, redirection, or other loading of
+referenced files like with ordered chapters.
+.TP
+.B \fB\-\-record\-file=<file>\fP
+Record the current stream to the given target file. The target file will
+always be overwritten without asking.
+.sp
+This remuxes the source stream without reencoding, which makes this a
+highly fragile and experimental feature. It\(aqs entirely possible that this
+writes files which are broken, not standards compliant, not playable with
+all players (including mpv), or incomplete.
+.sp
+The target file format is determined by the file extension of the target
+filename. It is recommended to use the same target container as the source
+container if possible, and preferring Matroska as fallback.
+.sp
+Seeking during stream recording, or enabling/disabling stream recording
+during playback, can cut off data, or produce "holes" in the output file.
+These are technical restrictions. In particular, video data or subtitles
+which were read ahead can produce such holes, which might cause playback
+problems with various players (including mpv).
+.sp
+The behavior of this option might changed in the future, such as changing
+it to a template (similar to \fB\-\-screenshot\-template\fP), being renamed,
+removed, or anything else, until it is declared semi\-stable.
+.TP
+.B \fB\-\-lavfi\-complex=<string>\fP
+Set a "complex" libavfilter filter, which means a single filter graph can
+take input from multiple source audio and video tracks. The graph can result
+in a single audio or video output (or both).
+.sp
+Currently, the filter graph labels are used to select the participating
+input tracks and audio/video output. The following rules apply:
+.INDENT 7.0
+.IP \(bu 2
+A label of the form \fBaidN\fP selects audio track N as input (e.g.
+\fBaid1\fP).
+.IP \(bu 2
+A label of the form \fBvidN\fP selects video track N as input.
+.IP \(bu 2
+A label named \fBao\fP will be connected to the audio output.
+.IP \(bu 2
+A label named \fBvo\fP will be connected to the video output.
+.UNINDENT
+.sp
+Each label can be used only once. If you want to use e.g. an audio stream
+for multiple filters, you need to use the \fBasplit\fP filter. Multiple
+video or audio outputs are not possible, but you can use filters to merge
+them into one.
+.sp
+It\(aqs not possible to change the tracks connected to the filter at runtime,
+unless you explicitly change the \fBlavfi\-complex\fP property and set new
+track assignments. When the graph is changed, the track selection is changed
+according to the used labels as well.
+.sp
+Other tracks, as long as they\(aqre not connected to the filter, and the
+corresponding output is not connected to the filter, can still be freely
+changed with the normal methods.
+.sp
+Note that the normal filter chains (\fB\-\-af\fP, \fB\-\-vf\fP) are applied between
+the complex graphs (e.g. \fBao\fP label) and the actual output.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [ao] [t] ; [t] aphasemeter [vo]\(aq\fP
+Play audio track 1, and visualize it as video using the \fBaphasemeter\fP
+filter.
+.IP \(bu 2
+\fB\-\-lavfi\-complex=\(aq[aid1] [aid2] amix [ao]\(aq\fP
+Play audio track 1 and 2 at the same time.
+.IP \(bu 2
+\fB\-\-lavfi\-complex=\(aq[vid1] [vid2] vstack [vo]\(aq\fP
+Stack video track 1 and 2 and play them at the same time. Note that
+both tracks need to have the same width, or filter initialization
+will fail (you can add \fBscale\fP filters before the \fBvstack\fP filter
+to fix the size).
+.IP \(bu 2
+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [ao] [t] ; [t] aphasemeter [t2] ; [vid1] [t2] overlay [vo]\(aq\fP
+Play audio track 1, and overlay its visualization over video track 1.
+.IP \(bu 2
+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [t1] [ao] ; [t1] showvolume [t2] ; [vid1] [t2] overlay [vo]\(aq\fP
+Play audio track 1, and overlay the measured volume for each speaker
+over video track 1.
+.IP \(bu 2
+\fBnull:// \-\-lavfi\-complex=\(aqlife [vo]\(aq\fP
+Conways\(aq Life Game.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+See the FFmpeg libavfilter documentation for details on the available
+filters.
+.UNINDENT
+.SH AUDIO OUTPUT DRIVERS
+.sp
+Audio output drivers are interfaces to different audio output facilities. The
+syntax is:
+.INDENT 0.0
+.TP
+.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.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+See \fB\-\-ao=help\fP for a list of compiled\-in audio output drivers. The
+driver \fB\-\-ao=alsa\fP is preferred. \fB\-\-ao=pulse\fP is preferred on systems
+where PulseAudio is used. On BSD systems, \fB\-\-ao=oss\fP or \fB\-\-ao=sndio\fP
+may work (the latter being experimental).
+.UNINDENT
+.UNINDENT
+.sp
+Available audio output drivers are:
+.INDENT 0.0
+.TP
+.B \fBalsa\fP (Linux only)
+ALSA audio output driver
+.sp
+See \fI\%ALSA audio output options\fP for options specific to this AO.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+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
+with automatic upmixing with shared access, so playing stereo
+and multichannel audio at the same time will work as expected.
+.UNINDENT
+.UNINDENT
+.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\-\-oss\-mixer\-device\fP
+Sets the audio mixer device (default: \fB/dev/mixer\fP).
+.TP
+.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.
+.sp
+The following global options are supported by this audio output:
+.INDENT 7.0
+.TP
+.B \fB\-\-jack\-port=<name>\fP
+Connects to the ports with the given name (default: physical ports).
+.TP
+.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\-\-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\-\-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 \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
+outputs, and reroutes it to whatever the user defines. This means the
+user and the application are in charge of dealing with the channel
+layout. \fBwaveext\fP uses WAVE_FORMAT_EXTENSIBLE order, which, even
+though it was defined by Microsoft, is the standard on many systems.
+The value \fBany\fP makes JACK accept whatever comes from the audio
+filter chain, regardless of channel layout and without reordering. This
+mode is probably not very useful, other than for debugging or when used
+with fixed setups.
+.UNINDENT
+.TP
+.B \fBcoreaudio\fP (Mac OS X only)
+Native Mac OS X audio output driver using AudioUnits and the CoreAudio
+sound server.
+.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 \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
+system\-wide audio settings. This is equivalent to changing the \fBFormat\fP
+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 \fB\-\-coreaudio\-spdif\-hack=<yes|no>\fP
+Try to pass through AC3/DTS data as PCM. This is useful for drivers
+which do not report AC3 support. It converts the AC3 data to float,
+and assumes the driver will do the inverse conversion, which means
+a typical A/V receiver will pick it up as compressed IEC framed AC3
+stream, ignoring that it\(aqs marked as PCM. This disables normal AC3
+passthrough (even if the device reports it as supported). Use with
+extreme care.
+.UNINDENT
+.TP
+.B \fBcoreaudio_exclusive\fP (Mac OS X only)
+Native Mac OS X audio output driver using direct device access and
+exclusive mode (bypasses the sound server).
+.TP
+.B \fBopenal\fP
+Experimental OpenAL audio output driver
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is not very useful. Playing multi\-channel audio with
+it is slow.
+.UNINDENT
+.UNINDENT
+.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\-\-pulse\-host=<host>\fP
+Specify the host to use. An empty <host> string uses a local connection,
+"localhost" uses network transfer (most likely not what you want).
+.TP
+.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 \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
+information. Disabling this might help with e.g. networked audio or
+some plugins, while enabling it might help in some unknown situations
+(it used to be required to get good behavior on old PulseAudio versions).
+.sp
+If you have stuttering video when using pulse, try to enable this
+option. (Or try to update PulseAudio.)
+.UNINDENT
+.TP
+.B \fBsdl\fP
+SDL 1.2+ audio output driver. Should work on any platform supported by SDL
+1.2, but may require the \fBSDL_AUDIODRIVER\fP environment variable to be set
+appropriately for your system.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is for compatibility with extremely foreign
+environments, such as systems where none of the other drivers
+are available.
+.UNINDENT
+.UNINDENT
+.sp
+The following global options are supported by this audio output:
+.INDENT 7.0
+.TP
+.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 \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. 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 \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 \fB\-\-ao\-null\-buffer\fP
+Simulated buffer length in seconds.
+.TP
+.B \fB\-\-ao\-null\-outburst\fP
+Simulated chunk size in samples.
+.TP
+.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 \fB\-\-ao\-null\-latency\fP
+Simulated device latency. This is additional to EOF.
+.TP
+.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 \fB\-\-ao\-null\-broken\-delay\fP
+Simulate broken audio drivers, which don\(aqt report latency correctly.
+.TP
+.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\-\-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 \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\-\-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.
+.UNINDENT
+.TP
+.B \fBrsound\fP
+Audio output to an RSound daemon. Use \fB\-\-audio\-device=rsound/<hostname>\fP
+to set the host name (with \fB<hostname>\fP replaced, without the \fB< >\fP).
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Completely useless, unless you intend to run RSound. Not to be
+confused with RoarAudio, which is something completely
+different.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBsndio\fP
+Audio output to the OpenBSD sndio sound system
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Experimental. There are known bugs and issues.
+.UNINDENT
+.UNINDENT
+.sp
+(Note: only supports mono, stereo, 4.0, 5.1 and 7.1 channel
+layouts.)
+.TP
+.B \fBwasapi\fP
+Audio output to the Windows Audio Session API.
+.UNINDENT
+.SH VIDEO OUTPUT DRIVERS
+.sp
+Video output drivers are interfaces to different video output facilities. The
+syntax is:
+.INDENT 0.0
+.TP
+.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 \fB,\fP, mpv will fall back on drivers not contained
+in the list.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.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\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
+Available video output drivers are:
+.INDENT 0.0
+.TP
+.B \fBxv\fP (X11 only)
+Uses the XVideo extension to enable hardware\-accelerated display. This is
+the most compatible VO on X, but may be low\-quality, and has issues with
+OSD and subtitle display.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+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 \fB\-\-xv\-adaptor=<number>\fP
+Select a specific XVideo adapter (check xvinfo results).
+.TP
+.B \fB\-\-xv\-port=<number>\fP
+Select a specific XVideo port.
+.TP
+.B \fB\-\-xv\-ck=<cur|use|set>\fP
+Select the source from which the color key is taken (default: cur).
+.INDENT 7.0
+.TP
+.B cur
+The default takes the color key currently set in Xv.
+.TP
+.B use
+Use but do not set the color key from mpv (use the \fB\-\-colorkey\fP
+option to change it).
+.TP
+.B set
+Same as use but also sets the supplied color key.
+.UNINDENT
+.TP
+.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
+.B bg
+Set the color key as window background.
+.TP
+.B auto
+Let Xv draw the color key.
+.UNINDENT
+.TP
+.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 \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
+the display refresh rate.
+.UNINDENT
+.TP
+.B \fBx11\fP (X11 only)
+Shared memory video output driver without hardware acceleration that works
+whenever X11 is present.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This is a fallback only, and should not be normally used.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBvdpau\fP (X11 only)
+Uses the VDPAU interface to display and optionally also decode video.
+Hardware decoding is used with \fB\-\-hwdec=vdpau\fP\&.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Earlier versions of mpv (and MPlayer, mplayer2) provided sub\-options
+to tune vdpau post\-processing, like \fBdeint\fP, \fBsharpen\fP, \fBdenoise\fP,
+\fBchroma\-deint\fP, \fBpullup\fP, \fBhqscaling\fP\&. These sub\-options are
+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 \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 \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 \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
+MPlayer/mplayer2) you could use this option to enable deinterlacing.
+This doesn\(aqt work anymore, and deinterlacing is enabled with either
+the \fBd\fP key (by default mapped to the command \fBcycle deinterlace\fP),
+or the \fB\-\-deinterlace\fP option. Also, to select the default deint mode,
+you should use something like \fB\-\-vf\-defaults=vdpaupp:deint\-mode=temporal\fP
+instead of this sub\-option.
+.INDENT 7.0
+.TP
+.B 0
+Pick the \fBvdpaupp\fP video filter default, which corresponds to 3.
+.TP
+.B 1
+Show only first field.
+.TP
+.B 2
+Bob deinterlacing.
+.TP
+.B 3
+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
+with slow video hardware and/or high resolution.
+.TP
+.B 4
+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
+interpolation. Needs fast video hardware.
+.UNINDENT
+.TP
+.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 \fB\-\-vo\-vdpau\-pullup\fP
+(Deprecated. See note about \fBvdpaupp\fP\&.)
+.sp
+Try to apply inverse telecine, needs motion adaptive temporal
+deinterlacing.
+.TP
+.B \fB\-\-vo\-vdpau\-hqscaling=<0\-9>\fP
+(Deprecated. See note about \fBvdpaupp\fP\&.)
+.INDENT 7.0
+.TP
+.B 0
+Use default VDPAU scaling (default).
+.TP
+.B 1\-9
+Apply high quality VDPAU scaling (needs capable hardware).
+.UNINDENT
+.TP
+.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
+means use autodetected value. A positive value is interpreted as a
+refresh rate in Hz and overrides the autodetected value. A negative
+value disables all timing adjustment and framedrop logic.
+.TP
+.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
+detect whether a compositing window manager is active. If one is
+detected, the player disables timing adjustments as if the user had
+specified \fBfps=\-1\fP (as they would be based on incorrect input). This
+means timing is somewhat less accurate than without compositing, but
+with the composited mode behavior of the NVIDIA driver, there is no
+hard playback speed limit even without the disabled logic. Enabled by
+default, use \fB\-\-vo\-vdpau\-composite\-detect=no\fP to disable.
+.TP
+.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 \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 \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 \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.
+.UNINDENT
+.sp
+Using the VDPAU frame queuing functionality controlled by the queuetime
+options makes mpv\(aqs frame flip timing less sensitive to system CPU load and
+allows mpv to start decoding the next frame(s) slightly earlier, which can
+reduce jitter caused by individual slow\-to\-decode frames. However, the
+NVIDIA graphics drivers can make other window behavior such as window moves
+choppy if VDPAU is using the blit queue (mainly happens if you have the
+composite extension enabled) and this feature is active. If this happens on
+your system and it bothers you then you can set the queuetime value to 0 to
+disable this feature. The settings to use in windowed and fullscreen mode
+are separate because there should be no reason to disable this for
+fullscreen mode (as the driver issue should not affect the video itself).
+.sp
+You can queue more frames ahead by increasing the queuetime values and the
+\fBoutput_surfaces\fP count (to ensure enough surfaces to buffer video for a
+certain time ahead you need at least as many surfaces as the video has
+frames during that time, plus two). This could help make video smoother in
+some cases. The main downsides are increased video RAM requirements for
+the surfaces and laggier display response to user commands (display
+changes only become visible some time after they\(aqre queued). The graphics
+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\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, 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 \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP
+Use \fBIDirect3DDevice9::StretchRect\fP over other methods if possible.
+.TP
+.B \fB\-\-vo\-direct3d\-disable\-stretchrect\fP
+Never render the video using \fBIDirect3DDevice9::StretchRect\fP\&.
+.TP
+.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 \fB\-\-vo\-direct3d\-disable\-shaders\fP
+Never use shaders when rendering video.
+.TP
+.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 \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.
+.UNINDENT
+.sp
+Debug options. These might be incorrect, might be removed in the future,
+might crash, might cause slow downs, etc. Contact the developers if you
+actually need any of these for performance or proper operation.
+.INDENT 7.0
+.TP
+.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 \fB\-\-vo\-direct3d\-texture\-memory=<mode>\fP
+Only affects operation with shaders/texturing enabled, and (E)OSD.
+Possible values:
+.INDENT 7.0
+.TP
+.B \fBdefault\fP (default)
+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
+locking. If the driver supports \fBD3DDEVCAPS_TEXTURESYSTEMMEMORY\fP,
+\fBD3DPOOL_SYSTEMMEM\fP is used directly.
+.TP
+.B \fBdefault\-pool\fP
+Use \fBD3DPOOL_DEFAULT\fP\&. (Like \fBdefault\fP, but never use a
+shadow\-texture.)
+.TP
+.B \fBdefault\-pool\-shadow\fP
+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
+locking. (Like \fBdefault\fP, but always force the shadow\-texture.)
+.TP
+.B \fBmanaged\fP
+Use \fBD3DPOOL_MANAGED\fP\&.
+.TP
+.B \fBscratch\fP
+Use \fBD3DPOOL_SCRATCH\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
+locking.
+.UNINDENT
+.TP
+.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 \fB\-\-vo\-direct3d\-exact\-backbuffer\fP
+Always resize the backbuffer to window size.
+.UNINDENT
+.TP
+.B \fBopengl\fP
+OpenGL video output driver. It supports extended scaling methods, dithering
+and color management.
+.sp
+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
+Some features are available with OpenGL 3 capable graphics drivers only
+(or if the necessary extensions are available).
+.sp
+OpenGL ES 2.0 and 3.0 are supported as well.
+.sp
+Hardware decoding over OpenGL\-interop is supported to some degree. Note
+that in this mode, some corner case might not be gracefully handled, and
+color space conversion and chroma upsampling is generally in the hand of
+the hardware decoder APIs.
+.sp
+\fBopengl\fP makes use of FBOs by default. Sometimes you can achieve better
+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 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
+hardware acceleration. Should work on all platforms supported by SDL 2.0.
+For tuning, refer to your copy of the file \fBSDL_hints.h\fP\&.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is for compatibility with systems that don\(aqt provide
+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 \fB\-\-sdl\-sw\fP
+Continue even if a software renderer is detected.
+.TP
+.B \fB\-\-sdl\-switch\-mode\fP
+Instruct SDL to switch the monitor video mode when going fullscreen.
+.UNINDENT
+.TP
+.B \fBvaapi\fP
+Intel VA API video output driver with support for hardware decoding. Note
+that there is absolutely no reason to use this, other than compatibility.
+This is low quality, and has issues with OSD.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is for compatibility with crappy systems. You can
+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 \fB\-\-vo\-vaapi\-scaling=<algorithm>\fP
+.INDENT 7.0
+.TP
+.B default
+Driver default (mpv default as well).
+.TP
+.B fast
+Fast, but low quality.
+.TP
+.B hq
+Unspecified driver dependent high\-quality scaling, slow.
+.TP
+.B nla
+\fBnon\-linear anamorphic scaling\fP
+.UNINDENT
+.TP
+.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).
+.sp
+This option doesn\(aqt apply if libva supports video post processing (vpp).
+In this case, the default for \fBdeint\-mode\fP is \fBno\fP, and enabling
+deinterlacing via user interaction using the methods mentioned above
+actually inserts the \fBvavpp\fP video filter. If vpp is not actually
+supported with the libva backend in use, you can use this option to
+forcibly enable VO based deinterlacing.
+.INDENT 7.0
+.TP
+.B no
+Don\(aqt allow deinterlacing (default for newer libva).
+.TP
+.B first\-field
+Show only first field.
+.TP
+.B bob
+bob deinterlacing (default for older libva).
+.UNINDENT
+.TP
+.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.
+.UNINDENT
+.TP
+.B \fBnull\fP
+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 \fB\-\-vo\-null\-fps=<value>\fP
+Simulate display FPS. This artificially limits how many frames the
+VO accepts per second.
+.UNINDENT
+.TP
+.B \fBcaca\fP
+Color ASCII art video output driver that works on a text console.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is a joke.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBtct\fP
+Color Unicode art video output driver that works on a text console.
+Depends on support of true color by modern terminals to display the images
+at full color range. On Windows it requires an ansi terminal such as mintty.
+.INDENT 7.0
+.TP
+.B \fB\-\-vo\-tct\-algo=<algo>\fP
+Select how to write the pixels to the terminal.
+.INDENT 7.0
+.TP
+.B half\-blocks
+Uses unicode LOWER HALF BLOCK character to achieve higher vertical
+resolution. (Default.)
+.TP
+.B plain
+Uses spaces. Causes vertical resolution to drop twofolds, but in
+theory works in more places.
+.UNINDENT
+.TP
+.B \fB\-\-vo\-tct\-width=<width>\fP \fB\-\-vo\-tct\-height=<height>\fP
+Assume the terminal has the specified character width and/or height.
+These default to 80x25 if the terminal size cannot be determined.
+.TP
+.B \fB\-\-vo\-tct\-256=<yes|no>\fP (default: no)
+Use 256 colors \- for terminals which don\(aqt support true color.
+.UNINDENT
+.TP
+.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 \fB\-\-vo\-image\-format=<format>\fP
+Select the image file format.
+.INDENT 7.0
+.TP
+.B jpg
+JPEG files, extension .jpg. (Default.)
+.TP
+.B jpeg
+JPEG files, extension .jpeg.
+.TP
+.B png
+PNG files.
+.UNINDENT
+.TP
+.B \fB\-\-vo\-image\-png\-compression=<0\-9>\fP
+PNG compression factor (speed vs. file size tradeoff) (default: 7)
+.TP
+.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 \fB\-\-vo\-image\-jpeg\-quality=<0\-100>\fP
+JPEG quality factor (default: 90)
+.TP
+.B \fB\-\-vo\-image\-jpeg\-optimize=<0\-100>\fP
+JPEG optimization factor (default: 100)
+.TP
+.B \fB\-\-vo\-image\-outdir=<dirname>\fP
+Specify the directory to save the image files to (default: \fB\&./\fP).
+.UNINDENT
+.TP
+.B \fBwayland\fP (Wayland only)
+Wayland shared memory video output as fallback for \fBopengl\fP\&.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This driver is for compatibility with systems that don\(aqt provide
+working OpenGL drivers.
+.UNINDENT
+.UNINDENT
+.sp
+The following global options are supported by this video output:
+.INDENT 7.0
+.TP
+.B \fB\-\-vo\-wayland\-alpha\fP
+Use a buffer format that supports videos and images with alpha
+information
+.TP
+.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 \fB\-\-vo\-wayland\-triple\-buffering\fP
+Use 3 buffers instead of 2. This can lead to more fluid playback, but
+uses more memory.
+.UNINDENT
+.TP
+.B \fBopengl\-cb\fP
+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 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.23.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.23.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 \fB\-\-rpi\-display=<number>\fP
+Select the display number on which the video overlay should be shown
+(default: 0).
+.TP
+.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 \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 \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
+.TP
+.B \fBdrm\fP (Direct Rendering Manager)
+Video output driver using Kernel Mode Setting / Direct Rendering Manager.
+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\fP backend for \fBopengl\fP VO).
+.sp
+The following global options are supported by this video output:
+.INDENT 7.0
+.TP
+.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 \fB\-\-drm\-mode=<number>\fP
+Mode ID to use (resolution, bit depth and frame rate).
+(default: 0)
+.UNINDENT
+.UNINDENT
+.SH AUDIO FILTERS
+.sp
+Audio filters allow you to modify the audio stream and its properties. The
+syntax is:
+.INDENT 0.0
+.TP
+.B \fB\-\-af=...\fP
+Setup a chain of audio filters. See \fB\-\-vf\fP for the syntax.
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+To get a full list of available audio filters, see \fB\-\-af=help\fP\&.
+.sp
+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
+wrapper, which gives you access to most of libavfilter\(aqs filters. This
+includes all filters that have been ported from MPlayer to libavfilter.
+.sp
+The \fB\-\-vf\fP description describes how libavfilter can be used and how to
+workaround deprecated mpv filters.
+.UNINDENT
+.UNINDENT
+.sp
+See \fB\-\-vf\fP group of options for info on how \fB\-\-af\-defaults\fP, \fB\-\-af\-add\fP,
+\fB\-\-af\-pre\fP, \fB\-\-af\-del\fP, \fB\-\-af\-clr\fP, and possibly others work.
+.sp
+Available filters are:
+.INDENT 0.0
+.TP
+.B \fBlavrresample[=option1:option2:...]\fP
+This filter uses libavresample (or libswresample, depending on the build)
+to change sample rate, sample format, or channel layout of the audio stream.
+This filter is automatically enabled if the audio output does not support
+the audio configuration of the file being played.
+.sp
+It supports only the following sample formats: u8, s16, s32, float.
+.INDENT 7.0
+.TP
+.B \fBfilter\-size=<length>\fP
+Length of the filter with respect to the lower sampling rate. (default:
+16)
+.TP
+.B \fBphase\-shift=<count>\fP
+Log2 of the number of polyphase entries. (..., 10\->1024, 11\->2048,
+12\->4096, ...) (default: 10\->1024)
+.TP
+.B \fBcutoff=<cutoff>\fP
+Cutoff frequency (0.0\-1.0), default set depending upon filter length.
+.TP
+.B \fBlinear\fP
+If set then filters will be linearly interpolated between polyphase
+entries. (default: no)
+.TP
+.B \fBno\-detach\fP
+Do not detach if input and output audio format/rate/channels match.
+(If you just want to set defaults for this filter that will be used
+even by automatically inserted lavrresample instances, you should
+prefer setting them with \fB\-\-af\-defaults=lavrresample:...\fP\&.)
+.TP
+.B \fBnormalize=<yes|no|auto>\fP
+Whether to normalize when remixing channel layouts (default: auto).
+\fBauto\fP uses the value set by \fB\-\-audio\-normalize\-downmix\fP\&.
+.TP
+.B \fBo=<string>\fP
+Set AVOptions on the SwrContext or AVAudioResampleContext. These should
+be documented by FFmpeg or Libav.
+.UNINDENT
+.TP
+.B \fBlavcac3enc[=options]\fP
+Encode multi\-channel audio to AC\-3 at runtime using libavcodec. Supports
+16\-bit native\-endian input format, maximum 6 channels. The output is
+big\-endian when outputting a raw AC\-3 stream, native\-endian when
+outputting to S/PDIF. If the input sample rate is not 48 kHz, 44.1 kHz or
+32 kHz, it will be resampled to 48 kHz.
+.INDENT 7.0
+.TP
+.B \fBtospdif=<yes|no>\fP
+Output raw AC\-3 stream if \fBno\fP, output to S/PDIF for
+pass\-through if \fByes\fP (default).
+.TP
+.B \fBbitrate=<rate>\fP
+The bitrate use for the AC\-3 stream. Set it to 384 to get 384 kbps.
+.sp
+The default is 640. Some receivers might not be able to handle this.
+.sp
+Valid values: 32, 40, 48, 56, 64, 80, 96, 112, 128,
+160, 192, 224, 256, 320, 384, 448, 512, 576, 640.
+.sp
+The special value \fBauto\fP selects a default bitrate based on the
+input channel number:
+.INDENT 7.0
+.TP
+.B 1ch
+96
+.TP
+.B 2ch
+192
+.TP
+.B 3ch
+224
+.TP
+.B 4ch
+384
+.TP
+.B 5ch
+448
+.TP
+.B 6ch
+448
+.UNINDENT
+.TP
+.B \fBminch=<n>\fP
+If the input channel number is less than \fB<minch>\fP, the filter will
+detach itself (default: 3).
+.TP
+.B \fBencoder=<name>\fP
+Select the libavcodec encoder used. Currently, this should be an AC\-3
+encoder, and using another codec will fail horribly.
+.UNINDENT
+.TP
+.B \fBequalizer=g1:g2:g3:...:g10\fP
+10 octave band graphic equalizer, implemented using 10 IIR band\-pass
+filters. This means that it works regardless of what type of audio is
+being played back. The center frequencies for the 10 bands are:
+.TS
+center;
+|l|l|.
+_
+T{
+No.
+T} T{
+frequency
+T}
+_
+T{
+0
+T} T{
+31.25 Hz
+T}
+_
+T{
+1
+T} T{
+62.50 Hz
+T}
+_
+T{
+2
+T} T{
+125.00 Hz
+T}
+_
+T{
+3
+T} T{
+250.00 Hz
+T}
+_
+T{
+4
+T} T{
+500.00 Hz
+T}
+_
+T{
+5
+T} T{
+1.00 kHz
+T}
+_
+T{
+6
+T} T{
+2.00 kHz
+T}
+_
+T{
+7
+T} T{
+4.00 kHz
+T}
+_
+T{
+8
+T} T{
+8.00 kHz
+T}
+_
+T{
+9
+T} T{
+16.00 kHz
+T}
+_
+.TE
+.sp
+If the sample rate of the sound being played is lower than the center
+frequency for a frequency band, then that band will be disabled. A known
+bug with this filter is that the characteristics for the uppermost band
+are not completely symmetric if the sample rate is close to the center
+frequency of that band. This problem can be worked around by upsampling
+the sound using a resampling filter before it reaches this filter.
+.INDENT 7.0
+.TP
+.B \fB<g1>:<g2>:<g3>:...:<g10>\fP
+floating point numbers representing the gain in dB for each frequency
+band (\-12\-12)
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-af=equalizer=11:11:10:5:0:\-12:0:5:12:12 media.avi\fP
+Would amplify the sound in the upper and lower frequency region
+while canceling it almost completely around 1 kHz.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBchannels=nch[:routes]\fP
+Can be used for adding, removing, routing and copying audio channels. If
+only \fB<nch>\fP is given, the default routing is used. It works as follows:
+If the number of output channels is greater than the number of input
+channels, empty channels are inserted (except when mixing from mono to
+stereo; then the mono channel is duplicated). If the number of output
+channels is less than the number of input channels, the exceeding
+channels are truncated.
+.INDENT 7.0
+.TP
+.B \fB<nch>\fP
+number of output channels (1\-8)
+.TP
+.B \fB<routes>\fP
+List of \fB,\fP separated routes, in the form \fBfrom1\-to1,from2\-to2,...\fP\&.
+Each pair defines where to route each channel. There can be at most
+8 routes. Without this argument, the default routing is used. Since
+\fB,\fP is also used to separate filters, you must quote this argument
+with \fB[...]\fP or similar.
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-af=channels=4:[0\-1,1\-0,2\-2,3\-3] media.avi\fP
+Would change the number of channels to 4 and set up 4 routes that
+swap channel 0 and channel 1 and leave channel 2 and 3 intact.
+Observe that if media containing two channels were played back,
+channels 2 and 3 would contain silence but 0 and 1 would still be
+swapped.
+.TP
+.B \fBmpv \-\-af=channels=6:[0\-0,0\-1,0\-2,0\-3] media.avi\fP
+Would change the number of channels to 6 and set up 4 routes that
+copy channel 0 to channels 0 to 3. Channel 4 and 5 will contain
+silence.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+You should probably not use this filter. If you want to change the
+output channel layout, try the \fBformat\fP filter, which can make mpv
+automatically up\- and downmix standard channel layouts.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBformat=format:srate:channels:out\-format:out\-srate:out\-channels\fP
+Does not do any format conversion itself. Rather, it may cause the
+filter system to insert necessary conversion filters before or after this
+filter if needed. It is primarily useful for controlling the audio format
+going into other filters. To specify the format for audio output, see
+\fB\-\-audio\-format\fP, \fB\-\-audio\-samplerate\fP, and \fB\-\-audio\-channels\fP\&. This
+filter is able to force a particular format, whereas \fB\-\-audio\-*\fP
+may be overridden by the ao based on output compatibility.
+.sp
+All parameters are optional. The first 3 parameters restrict what the filter
+accepts as input. They will therefore cause conversion filters to be
+inserted before this one. The \fBout\-\fP parameters tell the filters or audio
+outputs following this filter how to interpret the data without actually
+doing a conversion. Setting these will probably just break things unless you
+really know you want this for some reason, such as testing or dealing with
+broken media.
+.INDENT 7.0
+.TP
+.B \fB<format>\fP
+Force conversion to this format. Use \fB\-\-af=format=format=help\fP to get
+a list of valid formats.
+.TP
+.B \fB<srate>\fP
+Force conversion to a specific sample rate. The rate is an integer,
+48000 for example.
+.TP
+.B \fB<channels>\fP
+Force mixing to a specific channel layout. See \fB\-\-audio\-channels\fP option
+for possible values.
+.UNINDENT
+.sp
+\fB<out\-format>\fP
+.sp
+\fB<out\-srate>\fP
+.sp
+\fB<out\-channels>\fP
+.sp
+\fINOTE\fP: this filter used to be named \fBforce\fP\&. The old \fBformat\fP filter
+used to do conversion itself, unlike this one which lets the filter system
+handle the conversion.
+.TP
+.B \fBvolume[=<volumedb>[:...]]\fP
+Implements software volume control. Use this filter with caution since it
+can reduce the signal to noise ratio of the sound. In most cases it is
+best to use the \fIMaster\fP volume control of your sound card or the volume
+knob on your amplifier.
+.sp
+\fIWARNING\fP: This filter is deprecated. Use the top\-level options like
+\fB\-\-volume\fP and \fB\-\-replaygain...\fP instead.
+.sp
+\fINOTE\fP: This filter is not reentrant and can therefore only be enabled
+once for every audio stream.
+.INDENT 7.0
+.TP
+.B \fB<volumedb>\fP
+Sets the desired gain in dB for all channels in the stream from \-200 dB
+to +60 dB, where \-200 dB mutes the sound completely and +60 dB equals a
+gain of 1000 (default: 0).
+.TP
+.B \fBreplaygain\-track\fP
+Adjust volume gain according to the track\-gain replaygain value stored
+in the file metadata.
+.TP
+.B \fBreplaygain\-album\fP
+Like replaygain\-track, but using the album\-gain value instead.
+.TP
+.B \fBreplaygain\-preamp\fP
+Pre\-amplification gain in dB to apply to the selected replaygain gain
+(default: 0).
+.TP
+.B \fBreplaygain\-clip=yes|no\fP
+Prevent clipping caused by replaygain by automatically lowering the
+gain (default). Use \fBreplaygain\-clip=no\fP to disable this.
+.TP
+.B \fBreplaygain\-fallback\fP
+Gain in dB to apply if the file has no replay gain tags. This option
+is always applied if the replaygain logic is somehow inactive. If this
+is applied, no other replaygain options are applied.
+.TP
+.B \fBsoftclip\fP
+Turns soft clipping on. Soft\-clipping can make the
+sound more smooth if very high volume levels are used. Enable this
+option if the dynamic range of the loudspeakers is very low.
+.sp
+\fIWARNING\fP: This feature creates distortion and should be considered a
+last resort.
+.TP
+.B \fBs16\fP
+Force S16 sample format if set. Lower quality, but might be faster
+in some situations.
+.TP
+.B \fBdetach\fP
+Remove the filter if the volume is not changed at audio filter config
+time. Useful with replaygain: if the current file has no replaygain
+tags, then the filter will be removed if this option is enabled.
+(If \fB\-\-softvol=yes\fP is used and the player volume controls are used
+during playback, a different volume filter will be inserted.)
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-af=volume=10.1 media.avi\fP
+Would amplify the sound by 10.1 dB and hard\-clip if the sound level
+is too high.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBpan=n:[<matrix>]\fP
+Mixes channels arbitrarily. Basically a combination of the volume and the
+channels filter that can be used to down\-mix many channels to only a few,
+e.g. stereo to mono, or vary the "width" of the center speaker in a
+surround sound system. This filter is hard to use, and will require some
+tinkering before the desired result is obtained. The number of options for
+this filter depends on the number of output channels. An example how to
+downmix a six\-channel file to two channels with this filter can be found
+in the examples section near the end.
+.INDENT 7.0
+.TP
+.B \fB<n>\fP
+Number of output channels (1\-8).
+.TP
+.B \fB<matrix>\fP
+A list of values \fB[L00,L01,L02,...,L10,L11,L12,...,Ln0,Ln1,Ln2,...]\fP,
+where each element \fBLij\fP means how much of input channel i is mixed
+into output channel j (range 0\-1). So in principle you first have n
+numbers saying what to do with the first input channel, then n numbers
+that act on the second input channel etc. If you do not specify any
+numbers for some input channels, 0 is assumed.
+Note that the values are separated by \fB,\fP, which is already used
+by the option parser to separate filters. This is why you must quote
+the value list with \fB[...]\fP or similar.
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-af=pan=1:[0.5,0.5] media.avi\fP
+Would downmix from stereo to mono.
+.TP
+.B \fBmpv \-\-af=pan=3:[1,0,0.5,0,1,0.5] media.avi\fP
+Would give 3 channel output leaving channels 0 and 1 intact, and mix
+channels 0 and 1 into output channel 2 (which could be sent to a
+subwoofer for example).
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+If you just want to force remixing to a certain output channel layout,
+it is easier to use the \fBformat\fP filter. For example,
+\fBmpv \(aq\-\-af=format=channels=5.1\(aq \(aq\-\-audio\-channels=5.1\(aq\fP would always force
+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 \fBscaletempo[=option1:option2:...]\fP
+Scales audio tempo without altering pitch, optionally synced to playback
+speed (default).
+.sp
+This works by playing \(aqstride\(aq ms of audio at normal speed then consuming
+\(aqstride*scale\(aq ms of input audio. It pieces the strides together by
+blending \(aqoverlap\(aq% of stride with audio following the previous stride. It
+optionally performs a short statistical analysis on the next \(aqsearch\(aq ms
+of audio to determine the best overlap position.
+.INDENT 7.0
+.TP
+.B \fBscale=<amount>\fP
+Nominal amount to scale tempo. Scales this amount in addition to
+speed. (default: 1.0)
+.TP
+.B \fBstride=<amount>\fP
+Length in milliseconds to output each stride. Too high of a value will
+cause noticeable skips at high scale amounts and an echo at low scale
+amounts. Very low values will alter pitch. Increasing improves
+performance. (default: 60)
+.TP
+.B \fBoverlap=<percent>\fP
+Percentage of stride to overlap. Decreasing improves performance.
+(default: .20)
+.TP
+.B \fBsearch=<amount>\fP
+Length in milliseconds to search for best overlap position. Decreasing
+improves performance greatly. On slow systems, you will probably want
+to set this very low. (default: 14)
+.TP
+.B \fBspeed=<tempo|pitch|both|none>\fP
+Set response to speed change.
+.INDENT 7.0
+.TP
+.B tempo
+Scale tempo in sync with speed (default).
+.TP
+.B pitch
+Reverses effect of filter. Scales pitch without altering tempo.
+Add this to your \fBinput.conf\fP to step by musical semi\-tones:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[ multiply speed 0.9438743126816935
+] multiply speed 1.059463094352953
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+Loses sync with video.
+.UNINDENT
+.UNINDENT
+.TP
+.B both
+Scale both tempo and pitch.
+.TP
+.B none
+Ignore speed changes.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fBmpv \-\-af=scaletempo \-\-speed=1.2 media.ogg\fP
+Would play media at 1.2x normal speed, with audio at normal
+pitch. Changing playback speed would change audio tempo to match.
+.TP
+.B \fBmpv \-\-af=scaletempo=scale=1.2:speed=none \-\-speed=1.2 media.ogg\fP
+Would play media at 1.2x normal speed, with audio at normal
+pitch, but changing playback speed would have no effect on audio
+tempo.
+.TP
+.B \fBmpv \-\-af=scaletempo=stride=30:overlap=.50:search=10 media.ogg\fP
+Would tweak the quality and performance parameters.
+.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
+1.2x.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.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. 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 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
+to learn what each option does:
+\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.
+.INDENT 7.0
+.TP
+.B \fB<graph>\fP
+Libavfilter graph. See \fBlavfi\fP video filter for details \- the graph
+syntax is the same.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+Don\(aqt forget to quote libavfilter graphs as described in the lavfi
+video filter section.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBo=<string>\fP
+AVOptions.
+.UNINDENT
+.UNINDENT
+.SH VIDEO FILTERS
+.sp
+Video filters allow you to modify the video stream and its properties. The
+syntax is:
+.INDENT 0.0
+.TP
+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
+Setup a chain of video filters. This consists on the filter name, and an
+option list of parameters after \fB=\fP\&. The parameters are separated by
+\fB:\fP (not \fB,\fP, as that starts a new filter entry).
+.sp
+Before the filter name, a label can be specified with \fB@name:\fP, where
+name is an arbitrary user\-given name, which identifies the filter. This
+is only needed if you want to toggle the filter at runtime.
+.sp
+A \fB!\fP before the filter name means the filter is enabled by default. It
+will be skipped on filter creation. This is also useful for runtime filter
+toggling.
+.sp
+See the \fBvf\fP command (and \fBtoggle\fP sub\-command) for further explanations
+and examples.
+.sp
+The general filter entry syntax is:
+.INDENT 7.0
+.INDENT 3.5
+\fB["@"<label\-name>":"] ["!"] <filter\-name> [ "=" <filter\-parameter\-list> ]\fP
+.UNINDENT
+.UNINDENT
+.sp
+or for the special "toggle" syntax (see \fBvf\fP command):
+.INDENT 7.0
+.INDENT 3.5
+\fB"@"<label\-name>\fP
+.UNINDENT
+.UNINDENT
+.sp
+and the \fBfilter\-parameter\-list\fP:
+.INDENT 7.0
+.INDENT 3.5
+\fB<filter\-parameter> | <filter\-parameter> "," <filter\-parameter\-list>\fP
+.UNINDENT
+.UNINDENT
+.sp
+and \fBfilter\-parameter\fP:
+.INDENT 7.0
+.INDENT 3.5
+\fB( <param\-name> "=" <param\-value> ) | <param\-value>\fP
+.UNINDENT
+.UNINDENT
+.sp
+\fBparam\-value\fP can further be quoted in \fB[\fP / \fB]\fP in case the value
+contains characters like \fB,\fP or \fB=\fP\&. This is used in particular with
+the \fBlavfi\fP filter, which uses a very similar syntax as mpv (MPlayer
+historically) to specify filters and their parameters.
+.UNINDENT
+.sp
+You can also set defaults for each filter. The defaults are applied before the
+normal filter parameters.
+.INDENT 0.0
+.TP
+.B \fB\-\-vf\-defaults=<filter1[=parameter1:parameter2:...],filter2,...>\fP
+Set defaults for each filter.
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+To get a full list of available video filters, see \fB\-\-vf=help\fP and
+\fI\%http://ffmpeg.org/ffmpeg\-filters.html\fP .
+.sp
+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
+wrapper, which gives you access to most of libavfilter\(aqs filters. This
+includes all filters that have been ported from MPlayer to libavfilter.
+.sp
+Most builtin filters are deprecated in some ways, unless they\(aqre only available
+in mpv (such as filters which deal with mpv specifics, or which are
+implemented in mpv only).
+.sp
+If a filter is not builtin, the \fBlavfi\-bridge\fP will be automatically
+tried. This bridge does not support help output, and does not verify
+parameters before the filter is actually used. Although the mpv syntax
+is rather similar to libavfilter\(aqs, it\(aqs not the same. (Which means not
+everything accepted by vf_lavfi\(aqs \fBgraph\fP option will be accepted by
+\fB\-\-vf\fP\&.)
+.sp
+You can also prefix the filter name with \fBlavfi\-\fP to force the wrapper.
+This is helpful if the filter name collides with a deprecated mpv builtin
+filter. For example \fB\-\-vf=lavfi\-scale=args\fP would use libavfilter\(aqs
+\fBscale\fP filter over mpv\(aqs deprecated builtin one.
+.UNINDENT
+.UNINDENT
+.sp
+Video filters are managed in lists. There are a few commands to manage the
+filter list.
+.INDENT 0.0
+.TP
+.B \fB\-\-vf\-add=<filter1[,filter2,...]>\fP
+Appends the filters given as arguments to the filter list.
+.TP
+.B \fB\-\-vf\-pre=<filter1[,filter2,...]>\fP
+Prepends the filters given as arguments to the filter list.
+.TP
+.B \fB\-\-vf\-del=<index1[,index2,...]>\fP
+Deletes the filters at the given indexes. Index numbers start at 0,
+negative numbers address the end of the list (\-1 is the last).
+.TP
+.B \fB\-\-vf\-clr\fP
+Completely empties the filter list.
+.UNINDENT
+.sp
+With filters that support it, you can access parameters by their name.
+.INDENT 0.0
+.TP
+.B \fB\-\-vf=<filter>=help\fP
+Prints the parameter names and parameter value ranges for a particular
+filter.
+.TP
+.B \fB\-\-vf=<filter=named_parameter1=value1[:named_parameter2=value2:...]>\fP
+Sets a named parameter to the given value. Use on and off or yes and no to
+set flag parameters.
+.UNINDENT
+.sp
+Available mpv\-only filters are:
+.INDENT 0.0
+.TP
+.B \fBcrop[=w:h:x:y]\fP
+Crops the given part of the image and discards the rest. Useful to remove
+black bands from widescreen videos.
+.INDENT 7.0
+.TP
+.B \fB<w>,<h>\fP
+Cropped width and height, defaults to original width and height.
+.TP
+.B \fB<x>,<y>\fP
+Position of the cropped picture, defaults to center.
+.UNINDENT
+.TP
+.B \fBexpand[=w:h:x:y:aspect:round]\fP
+Expands (not scales) video resolution to the given value and places the
+unscaled original at coordinates x, y.
+.INDENT 7.0
+.TP
+.B \fB<w>,<h>\fP
+Expanded width,height (default: original width,height). Negative
+values for w and h are treated as offsets to the original size.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBexpand=0:\-50:0:0\fP
+Adds a 50 pixel border to the bottom of the picture.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<x>,<y>\fP
+position of original image on the expanded image (default: center)
+.TP
+.B \fB<aspect>\fP
+Expands to fit an aspect instead of a resolution (default: 0).
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBexpand=800::::4/3\fP
+Expands to 800x600, unless the source is higher resolution, in
+which case it expands to fill a 4/3 aspect.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<round>\fP
+Rounds up to make both width and height divisible by <r> (default: 1).
+.UNINDENT
+.TP
+.B \fBflip\fP
+Flips the image upside down.
+.TP
+.B \fBmirror\fP
+Mirrors the image on the Y axis.
+.TP
+.B \fBrotate[=0|90|180|270]\fP
+Rotates the image by a multiple of 90 degrees clock\-wise.
+.TP
+.B \fBscale[=w:h:param:param2:chr\-drop:noup:arnd\fP
+Scales the image with the software scaler (slow) and performs a YUV<\->RGB
+color space conversion (see also \fB\-\-sws\fP).
+.sp
+All parameters are optional.
+.INDENT 7.0
+.TP
+.B \fB<w>:<h>\fP
+scaled width/height (default: original width/height)
+.INDENT 7.0
+.TP
+.B 0
+scaled d_width/d_height
+.TP
+.B \-1
+original width/height
+.TP
+.B \-2
+Calculate w/h using the other dimension and the prescaled
+aspect ratio.
+.TP
+.B \-3
+Calculate w/h using the other dimension and the original
+aspect ratio.
+.TP
+.B \-(n+8)
+Like \-n above, but rounding the dimension to the closest
+multiple of 16.
+.UNINDENT
+.TP
+.B \fB<param>[:<param2>]\fP (see also \fB\-\-sws\fP)
+Set some scaling parameters depending on the type of scaler selected
+with \fB\-\-sws\fP:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+\-\-sws=2 (bicubic): B (blurring) and C (ringing)
+ 0.00:0.60 default
+ 0.00:0.75 VirtualDub\(aqs "precise bicubic"
+ 0.00:0.50 Catmull\-Rom spline
+ 0.33:0.33 Mitchell\-Netravali spline
+ 1.00:0.00 cubic B\-spline
+
+\-\-sws=7 (Gaussian): sharpness (0 (soft) \- 100 (sharp))
+
+\-\-sws=9 (Lanczos): filter length (1\-10)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<chr\-drop>\fP
+chroma skipping
+.INDENT 7.0
+.TP
+.B 0
+Use all available input lines for chroma (default).
+.TP
+.B 1
+Use only every 2. input line for chroma.
+.TP
+.B 2
+Use only every 4. input line for chroma.
+.TP
+.B 3
+Use only every 8. input line for chroma.
+.UNINDENT
+.TP
+.B \fB<noup>\fP
+Disallow upscaling past the original dimensions.
+.INDENT 7.0
+.TP
+.B 0
+Allow upscaling (default).
+.TP
+.B 1
+Disallow upscaling if one dimension exceeds its original value.
+.TP
+.B 2
+Disallow upscaling if both dimensions exceed their original values.
+.UNINDENT
+.TP
+.B \fB<arnd>\fP
+Accurate rounding for the vertical scaler, which may be faster or
+slower than the default rounding.
+.INDENT 7.0
+.TP
+.B no
+Disable accurate rounding (default).
+.TP
+.B yes
+Enable accurate rounding.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBdsize[=w:h:aspect\-method:r:aspect]\fP
+Changes the intended display aspect at an arbitrary point in the
+filter chain. Aspect can be given as a fraction (4/3) or floating point
+number (1.33). Note that this filter does \fInot\fP do any scaling itself; it
+just affects what later scalers (software or hardware) will do when
+auto\-scaling to the correct aspect.
+.INDENT 7.0
+.TP
+.B \fB<w>,<h>\fP
+New aspect ratio given by a display width and height. Unlike older mpv
+versions or MPlayer, this does not set the display size.
+.sp
+Can also be these special values:
+.INDENT 7.0
+.TP
+.B 0
+original display width and height
+.TP
+.B \-1
+original video width and height (default)
+.TP
+.B \-2
+Calculate w/h using the other dimension and the original display
+aspect ratio.
+.TP
+.B \-3
+Calculate w/h using the other dimension and the original video
+aspect ratio.
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBdsize=800:\-2\fP
+Specifies a display resolution of 800x600 for a 4/3 aspect
+video, or 800x450 for a 16/9 aspect video.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<aspect\-method>\fP
+Modifies width and height according to original aspect ratios.
+.INDENT 7.0
+.TP
+.B \-1
+Ignore original aspect ratio (default).
+.TP
+.B 0
+Keep display aspect ratio by using \fB<w>\fP and \fB<h>\fP as maximum
+resolution.
+.TP
+.B 1
+Keep display aspect ratio by using \fB<w>\fP and \fB<h>\fP as minimum
+resolution.
+.TP
+.B 2
+Keep video aspect ratio by using \fB<w>\fP and \fB<h>\fP as maximum
+resolution.
+.TP
+.B 3
+Keep video aspect ratio by using \fB<w>\fP and \fB<h>\fP as minimum
+resolution.
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fBdsize=800:600:0\fP
+Specifies a display resolution of at most 800x600, or smaller,
+in order to keep aspect.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<r>\fP
+Rounds up to make both width and height divisible by \fB<r>\fP
+(default: 1).
+.TP
+.B \fB<aspect>\fP
+Force an aspect ratio.
+.UNINDENT
+.TP
+.B \fBformat=fmt=<value>:colormatrix=<value>:...\fP
+Restricts the color space for the next filter without doing any conversion.
+Use together with the scale filter for a real conversion.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+For a list of available formats, see \fBformat=fmt=help\fP\&.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.TP
+.B \fB<fmt>\fP
+Format name, e.g. rgb15, bgr24, 420p, etc. (default: don\(aqt change).
+.TP
+.B \fB<outfmt>\fP
+Format name that should be substituted for the output. If they do not
+have the same bytes per pixel and chroma subsampling, it will fail.
+.TP
+.B \fB<colormatrix>\fP
+Controls the YUV to RGB color space conversion when playing video. There
+are various standards. Normally, BT.601 should be used for SD video, and
+BT.709 for HD video. (This is done by default.) Using incorrect color space
+results in slightly under or over saturated and shifted colors.
+.sp
+These options are not always supported. Different video outputs provide
+varying degrees of support. The \fBopengl\fP and \fBvdpau\fP video output
+drivers usually offer full support. The \fBxv\fP output can set the color
+space if the system video driver supports it, but not input and output
+levels. The \fBscale\fP video filter can configure color space and input
+levels, but only if the output format is RGB (if the video output driver
+supports RGB output, you can force this with \fB\-vf scale,format=rgba\fP).
+.sp
+If this option is set to \fBauto\fP (which is the default), the video\(aqs
+color space flag will be used. If that flag is unset, the color space
+will be selected automatically. This is done using a simple heuristic that
+attempts to distinguish SD and HD video. If the video is larger than
+1279x576 pixels, BT.709 (HD) will be used; otherwise BT.601 (SD) is
+selected.
+.sp
+Available color spaces are:
+.INDENT 7.0
+.TP
+.B auto
+automatic selection (default)
+.TP
+.B bt.601
+ITU\-R BT.601 (SD)
+.TP
+.B bt.709
+ITU\-R BT.709 (HD)
+.TP
+.B bt.2020\-ncl
+ITU\-R BT.2020 non\-constant luminance system
+.TP
+.B bt.2020\-cl
+ITU\-R BT.2020 constant luminance system
+.TP
+.B smpte\-240m
+SMPTE\-240M
+.UNINDENT
+.TP
+.B \fB<colorlevels>\fP
+YUV color levels used with YUV to RGB conversion. This option is only
+necessary when playing broken files which do not follow standard color
+levels or which are flagged wrong. If the video does not specify its
+color range, it is assumed to be limited range.
+.sp
+The same limitations as with \fB<colormatrix>\fP apply.
+.sp
+Available color ranges are:
+.INDENT 7.0
+.TP
+.B auto
+automatic selection (normally limited range) (default)
+.TP
+.B limited
+limited range (16\-235 for luma, 16\-240 for chroma)
+.TP
+.B full
+full range (0\-255 for both luma and chroma)
+.UNINDENT
+.TP
+.B \fB<primaries>\fP
+RGB primaries the source file was encoded with. Normally this should be set
+in the file header, but when playing broken or mistagged files this can be
+used to override the setting.
+.sp
+This option only affects video output drivers that perform color
+management, for example \fBopengl\fP with the \fBtarget\-prim\fP or
+\fBicc\-profile\fP suboptions set.
+.sp
+If this option is set to \fBauto\fP (which is the default), the video\(aqs
+primaries flag will be used. If that flag is unset, the color space will
+be selected automatically, using the following heuristics: If the
+\fB<colormatrix>\fP is set or determined as BT.2020 or BT.709, the
+corresponding primaries are used. Otherwise, if the video height is
+exactly 576 (PAL), BT.601\-625 is used. If it\(aqs exactly 480 or 486 (NTSC),
+BT.601\-525 is used. If the video resolution is anything else, BT.709 is
+used.
+.sp
+Available primaries are:
+.INDENT 7.0
+.TP
+.B auto
+automatic selection (default)
+.TP
+.B bt.601\-525
+ITU\-R BT.601 (SD) 525\-line systems (NTSC, SMPTE\-C)
+.TP
+.B bt.601\-625
+ITU\-R BT.601 (SD) 625\-line systems (PAL, SECAM)
+.TP
+.B bt.709
+ITU\-R BT.709 (HD) (same primaries as sRGB)
+.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
+.TP
+.B dci\-p3
+DCI\-P3 (Digital Cinema)
+.TP
+.B v\-gamut
+Panasonic V\-Gamut primaries
+.UNINDENT
+.TP
+.B \fB<gamma>\fP
+Gamma function the source file was encoded with. Normally this should be set
+in the file header, but when playing broken or mistagged files this can be
+used to override the setting.
+.sp
+This option only affects video output drivers that perform color management.
+.sp
+If this option is set to \fBauto\fP (which is the default), the gamma will
+be set to BT.1886 for YCbCr content, sRGB for RGB content and Linear for
+XYZ content.
+.sp
+Available gamma functions are:
+.INDENT 7.0
+.TP
+.B auto
+automatic selection (default)
+.TP
+.B bt.1886
+ITU\-R BT.1886 (EOTF corresponding to BT.601/BT.709/BT.2020)
+.TP
+.B srgb
+IEC 61966\-2\-4 (sRGB)
+.TP
+.B linear
+Linear light
+.TP
+.B gamma1.8
+Pure power curve (gamma 1.8)
+.TP
+.B gamma2.2
+Pure power curve (gamma 2.2)
+.TP
+.B gamma2.8
+Pure power curve (gamma 2.8)
+.TP
+.B prophoto
+ProPhoto RGB (ROMM) curve
+.TP
+.B pq
+ITU\-R BT.2100 PQ (Perceptual quantizer) curve
+.TP
+.B hlg
+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve
+.TP
+.B v\-log
+Panasonic V\-Log transfer curve
+.TP
+.B s\-log1
+Sony S\-Log1 transfer curve
+.TP
+.B s\-log2
+Sony S\-Log2 transfer curve
+.UNINDENT
+.TP
+.B \fB<sig\-peak>\fP
+Reference peak illumination for the video file, relative to the
+signal\(aqs reference white level. This is mostly interesting for HDR, but
+it can also be used tone map SDR content to simulate a different
+exposure. Normally inferred from tags such as MaxCLL or mastering
+metadata.
+.sp
+The default of 0.0 will default to the source\(aqs nominal peak luminance.
+.TP
+.B \fB<light>\fP
+.INDENT 7.0
+.INDENT 3.5
+Light type of the scene. This is mostly correctly inferred based on the
+gamma function, but it can be useful to override this when viewing raw
+camera footage (e.g. V\-Log), which is normally scene\-referred instead
+of display\-referred.
+.sp
+Available light types are:
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.TP
+.B auto
+Automatic selection (default)
+.TP
+.B display
+Display\-referred light (most content)
+.TP
+.B hlg
+Scene\-referred using the HLG OOTF (e.g. HLG content)
+.TP
+.B 709\-1886
+Scene\-referred using the BT709+BT1886 interaction
+.TP
+.B gamma1.2
+Scene\-referred using a pure power OOTF (gamma=1.2)
+.UNINDENT
+.TP
+.B \fB<stereo\-in>\fP
+Set the stereo mode the video is assumed to be encoded in. Takes the
+same values as the \fB\-\-video\-stereo\-mode\fP option.
+.TP
+.B \fB<stereo\-out>\fP
+Set the stereo mode the video should be displayed as. Takes the
+same values as the \fB\-\-video\-stereo\-mode\fP option.
+.TP
+.B \fB<rotate>\fP
+Set the rotation the video is assumed to be encoded with in degrees.
+The special value \fB\-1\fP uses the input format.
+.TP
+.B \fB<dw>\fP, \fB<dh>\fP
+Set the display size. Note that setting the display size such that
+the video is scaled in both directions instead of just changing the
+aspect ratio is an implementation detail, and might change later.
+.TP
+.B \fB<dar>\fP
+Set the display aspect ratio of the video frame. This is a float,
+but values such as \fB[16:9]\fP can be passed too (\fB[...]\fP for quoting
+to prevent the option parser from interpreting the \fB:\fP character).
+.TP
+.B \fB<spherical\-type>\fP
+Type of the spherical projection:
+.INDENT 7.0
+.TP
+.B auto
+As indicated by the file (default)
+.TP
+.B none
+Normal video
+.TP
+.B equirect
+Equirectangular
+.TP
+.B unknown
+Unknown projection
+.UNINDENT
+.TP
+.B \fB<spherical\-yaw>\fP, \fB<spherical\-pitch>\fP, \fB<spherical\-roll>\fP
+Reference angle in degree, if spherical video is used.
+.UNINDENT
+.TP
+.B \fBnoformat[=fmt]\fP
+Restricts the color space for the next filter without doing any conversion.
+Unlike the format filter, this will allow any color space except the one
+you specify.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+For a list of available formats, see \fBnoformat=fmt=help\fP\&.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.TP
+.B \fB<fmt>\fP
+Format name, e.g. rgb15, bgr24, 420p, etc. (default: 420p).
+.UNINDENT
+.TP
+.B \fBlavfi=graph[:sws\-flags[:o=opts]]\fP
+Filter video using FFmpeg\(aqs libavfilter.
+.INDENT 7.0
+.TP
+.B \fB<graph>\fP
+The libavfilter graph string. The filter must have a single video input
+pad and a single video output pad.
+.sp
+See \fI\%https://ffmpeg.org/ffmpeg\-filters.html\fP for syntax and available
+filters.
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+If you want to use the full filter syntax with this option, you have
+to quote the filter graph in order to prevent mpv\(aqs syntax and the
+filter graph syntax from clashing.
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB\-vf lavfi=[gradfun=20:30,vflip]\fP
+\fBgradfun\fP filter with nonsense parameters, followed by a
+\fBvflip\fP filter. (This demonstrates how libavfilter takes a
+graph and not just a single filter.) The filter graph string is
+quoted with \fB[\fP and \fB]\fP\&. This requires no additional quoting
+or escaping with some shells (like bash), while others (like
+zsh) require additional \fB"\fP quotes around the option string.
+.TP
+.B \fB\(aq\-\-vf=lavfi="gradfun=20:30,vflip"\(aq\fP
+Same as before, but uses quoting that should be safe with all
+shells. The outer \fB\(aq\fP quotes make sure that the shell does not
+remove the \fB"\fP quotes needed by mpv.
+.TP
+.B \fB\(aq\-\-vf=lavfi=graph="gradfun=radius=30:strength=20,vflip"\(aq\fP
+Same as before, but uses named parameters for everything.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB<sws\-flags>\fP
+If libavfilter inserts filters for pixel format conversion, this
+option gives the flags which should be passed to libswscale. This
+option is numeric and takes a bit\-wise combination of \fBSWS_\fP flags.
+.sp
+See \fBhttp://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/swscale.h\fP\&.
+.TP
+.B \fB<o>\fP
+Set AVFilterGraph options. These should be documented by FFmpeg.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B \fB\(aq\-\-vf=lavfi=yadif:o="threads=2,thread_type=slice"\(aq\fP
+forces a specific threading configuration.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBpullup[=jl:jr:jt:jb:sb:mp]\fP
+Pulldown reversal (inverse telecine) filter, capable of handling mixed
+hard\-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
+content. The \fBpullup\fP filter makes use of future context in making its
+decisions. It is stateless in the sense that it does not lock onto a pattern
+to follow, but it instead looks forward to the following fields in order to
+identify matches and rebuild progressive frames.
+.INDENT 7.0
+.TP
+.B \fBjl\fP, \fBjr\fP, \fBjt\fP, and \fBjb\fP
+These options set the amount of "junk" to ignore at the left, right,
+top, and bottom of the image, respectively. Left/right are in units of
+8 pixels, while top/bottom are in units of 2 lines. The default is 8
+pixels on each side.
+.TP
+.B \fBsb\fP (strict breaks)
+Setting this option to 1 will reduce the chances of \fBpullup\fP
+generating an occasional mismatched frame, but it may also cause an
+excessive number of frames to be dropped during high motion sequences.
+Conversely, setting it to \-1 will make \fBpullup\fP match fields more
+easily. This may help process video with slight blurring between the
+fields, but may also cause interlaced frames in the output.
+.TP
+.B \fBmp\fP (metric plane)
+This option may be set to \fBu\fP or \fBv\fP to use a chroma plane instead of the
+luma plane for doing \fBpullup\fP\(aqs computations. This may improve accuracy
+on very clean source material, but more likely will decrease accuracy,
+especially if there is chroma noise (rainbow effect) or any grayscale
+video. The main purpose of setting \fBmp\fP to a chroma plane is to reduce
+CPU load and make pullup usable in realtime on slow machines.
+.UNINDENT
+.TP
+.B \fByadif=[mode:interlaced\-only]\fP
+Yet another deinterlacing filter
+.INDENT 7.0
+.TP
+.B \fB<mode>\fP
+.INDENT 7.0
+.TP
+.B frame
+Output 1 frame for each frame.
+.TP
+.B field
+Output 1 frame for each field (default).
+.TP
+.B frame\-nospatial
+Like \fBframe\fP but skips spatial interlacing check.
+.TP
+.B field\-nospatial
+Like \fBfield\fP but skips spatial interlacing check.
+.UNINDENT
+.TP
+.B \fB<interlaced\-only>\fP
+.INDENT 7.0
+.TP
+.B no
+Deinterlace all frames.
+.TP
+.B yes
+Only deinterlace frames marked as interlaced (default).
+.UNINDENT
+.UNINDENT
+.sp
+This filter is automatically inserted when using the \fBd\fP key (or any
+other key that toggles the \fBdeinterlace\fP property or when using the
+\fB\-\-deinterlace\fP switch), assuming the video output does not have native
+deinterlacing support.
+.sp
+If you just want to set the default mode, put this filter and its options
+into \fB\-\-vf\-defaults\fP instead, and enable deinterlacing with \fBd\fP or
+\fB\-\-deinterlace\fP\&.
+.sp
+Also, note that the \fBd\fP key is stupid enough to insert a deinterlacer twice
+when inserting yadif with \fB\-\-vf\fP, so using the above methods is
+recommended.
+.TP
+.B \fBsub=[=bottom\-margin:top\-margin]\fP
+Moves subtitle rendering to an arbitrary point in the filter chain, or force
+subtitle rendering in the video filter as opposed to using video output OSD
+support.
+.INDENT 7.0
+.TP
+.B \fB<bottom\-margin>\fP
+Adds a black band at the bottom of the frame. The SSA/ASS renderer can
+place subtitles there (with \fB\-\-sub\-use\-margins\fP).
+.TP
+.B \fB<top\-margin>\fP
+Black band on the top for toptitles (with \fB\-\-sub\-use\-margins\fP).
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB\-\-vf=sub,eq\fP
+Moves sub rendering before the eq filter. This will put both
+subtitle colors and video under the influence of the video equalizer
+settings.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBstereo3d[=in:out]\fP
+Stereo3d converts between different stereoscopic image formats.
+.INDENT 7.0
+.TP
+.B \fB<in>\fP
+Stereoscopic image format of input. Possible values:
+.INDENT 7.0
+.TP
+.B \fBsbsl\fP or \fBside_by_side_left_first\fP
+side by side parallel (left eye left, right eye right)
+.TP
+.B \fBsbsr\fP or \fBside_by_side_right_first\fP
+side by side crosseye (right eye left, left eye right)
+.TP
+.B \fBabl\fP or \fBabove_below_left_first\fP
+above\-below (left eye above, right eye below)
+.TP
+.B \fBabr\fP or \fBabove_below_right_first\fP
+above\-below (right eye above, left eye below)
+.TP
+.B \fBab2l\fP or \fBabove_below_half_height_left_first\fP
+above\-below with half height resolution (left eye above, right eye
+below)
+.TP
+.B \fBab2r\fP or \fBabove_below_half_height_right_first\fP
+above\-below with half height resolution (right eye above, left eye
+below)
+.UNINDENT
+.TP
+.B \fB<out>\fP
+Stereoscopic image format of output. Possible values are all the input
+formats as well as:
+.INDENT 7.0
+.TP
+.B \fBarcg\fP or \fBanaglyph_red_cyan_gray\fP
+anaglyph red/cyan gray (red filter on left eye, cyan filter on
+right eye)
+.TP
+.B \fBarch\fP or \fBanaglyph_red_cyan_half_color\fP
+anaglyph red/cyan half colored (red filter on left eye, cyan filter
+on right eye)
+.TP
+.B \fBarcc\fP or \fBanaglyph_red_cyan_color\fP
+anaglyph red/cyan color (red filter on left eye, cyan filter on
+right eye)
+.TP
+.B \fBarcd\fP or \fBanaglyph_red_cyan_dubois\fP
+anaglyph red/cyan color optimized with the least\-squares
+projection of Dubois (red filter on left eye, cyan filter on right
+eye)
+.TP
+.B \fBagmg\fP or \fBanaglyph_green_magenta_gray\fP
+anaglyph green/magenta gray (green filter on left eye, magenta
+filter on right eye)
+.TP
+.B \fBagmh\fP or \fBanaglyph_green_magenta_half_color\fP
+anaglyph green/magenta half colored (green filter on left eye,
+magenta filter on right eye)
+.TP
+.B \fBagmc\fP or \fBanaglyph_green_magenta_color\fP
+anaglyph green/magenta colored (green filter on left eye, magenta
+filter on right eye)
+.TP
+.B \fBaybg\fP or \fBanaglyph_yellow_blue_gray\fP
+anaglyph yellow/blue gray (yellow filter on left eye, blue filter
+on right eye)
+.TP
+.B \fBaybh\fP or \fBanaglyph_yellow_blue_half_color\fP
+anaglyph yellow/blue half colored (yellow filter on left eye, blue
+filter on right eye)
+.TP
+.B \fBaybc\fP or \fBanaglyph_yellow_blue_color\fP
+anaglyph yellow/blue colored (yellow filter on left eye, blue
+filter on right eye)
+.TP
+.B \fBirl\fP or \fBinterleave_rows_left_first\fP
+Interleaved rows (left eye has top row, right eye starts on next
+row)
+.TP
+.B \fBirr\fP or \fBinterleave_rows_right_first\fP
+Interleaved rows (right eye has top row, left eye starts on next
+row)
+.TP
+.B \fBml\fP or \fBmono_left\fP
+mono output (left eye only)
+.TP
+.B \fBmr\fP or \fBmono_right\fP
+mono output (right eye only)
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBgradfun[=strength[:radius|:size=<size>]]\fP
+Fix the banding artifacts that are sometimes introduced into nearly flat
+regions by truncation to 8\-bit color depth. Interpolates the gradients that
+should go where the bands are, and dithers them.
+.INDENT 7.0
+.TP
+.B \fB<strength>\fP
+Maximum amount by which the filter will change any one pixel. Also the
+threshold for detecting nearly flat regions (default: 1.5).
+.TP
+.B \fB<radius>\fP
+Neighborhood to fit the gradient to. Larger radius makes for smoother
+gradients, but also prevents the filter from modifying pixels near
+detailed regions (default: disabled).
+.TP
+.B \fB<size>\fP
+size of the filter in percent of the image diagonal size. This is
+used to calculate the final radius size (default: 1).
+.UNINDENT
+.TP
+.B \fBvapoursynth=file:buffered\-frames:concurrent\-frames\fP
+Loads a VapourSynth filter script. This is intended for streamed
+processing: mpv actually provides a source filter, instead of using a
+native VapourSynth video source. The mpv source will answer frame
+requests only within a small window of frames (the size of this window
+is controlled with the \fBbuffered\-frames\fP parameter), and requests outside
+of that will return errors. As such, you can\(aqt use the full power of
+VapourSynth, but you can use certain filters.
+.sp
+If you just want to play video generated by a VapourSynth (i.e. using
+a native VapourSynth video source), it\(aqs better to use \fBvspipe\fP and a
+FIFO to feed the video to mpv. The same applies if the filter script
+requires random frame access (see \fBbuffered\-frames\fP parameter).
+.sp
+This filter is experimental. If it turns out that it works well and is
+used, it will be ported to libavfilter. Otherwise, it will be just removed.
+.INDENT 7.0
+.TP
+.B \fBfile\fP
+Filename of the script source. Currently, this is always a python
+script. The variable \fBvideo_in\fP is set to the mpv video source,
+and it is expected that the script reads video from it. (Otherwise,
+mpv will decode no video, and the video packet queue will overflow,
+eventually leading to audio being stopped.) The script is also
+expected to pass through timestamps using the \fB_DurationNum\fP and
+\fB_DurationDen\fP frame properties.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example:"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+import vapoursynth as vs
+core = vs.get_core()
+core.std.AddBorders(video_in, 10, 10, 20, 20).set_output()
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+The script will be reloaded on every seek. This is done to reset
+the filter properly on discontinuities.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBbuffered\-frames\fP
+Maximum number of decoded video frames that should be buffered before
+the filter (default: 4). This specifies the maximum number of frames
+the script can request in reverse direction.
+E.g. if \fBbuffered\-frames=5\fP, and the script just requested frame 15,
+it can still request frame 10, but frame 9 is not available anymore.
+If it requests frame 30, mpv will decode 15 more frames, and keep only
+frames 25\-30.
+.sp
+The actual number of buffered frames also depends on the value of the
+\fBconcurrent\-frames\fP option. Currently, both option values are
+multiplied to get the final buffer size.
+.sp
+(Normally, VapourSynth source filters must provide random access, but
+mpv was made for playback, and does not provide frame\-exact random
+access. The way this video filter works is a compromise to make simple
+filters work anyway.)
+.TP
+.B \fBconcurrent\-frames\fP
+Number of frames that should be requested in parallel. The
+level of concurrency depends on the filter and how quickly mpv can
+decode video to feed the filter. This value should probably be
+proportional to the number of cores on your machine. Most time,
+making it higher than the number of cores can actually make it
+slower.
+.sp
+By default, this uses the special value \fBauto\fP, which sets the option
+to the number of detected logical CPU cores.
+.UNINDENT
+.sp
+The following variables are defined by mpv:
+.INDENT 7.0
+.TP
+.B \fBvideo_in\fP
+The mpv video source as vapoursynth clip. Note that this has no length
+set, which confuses many filters. Using \fBTrim\fP on the clip with a
+high dummy length can turn it into a finite clip.
+.TP
+.B \fBvideo_in_dw\fP, \fBvideo_in_dh\fP
+Display size of the video. Can be different from video size if the
+video does not use square pixels (e.g. DVD).
+.TP
+.B \fBcontainer_fps\fP
+FPS value as reported by file headers. This value can be wrong or
+completely broken (e.g. 0 or NaN). Even if the value is correct,
+if another filter changes the real FPS (by dropping or inserting
+frames), the value of this variable might not be useful. Note that
+the \fB\-\-fps\fP command line option overrides this value.
+.sp
+Useful for some filters which insist on having a FPS.
+.TP
+.B \fBdisplay_fps\fP
+Refresh rate of the current display. Note that this value can be 0.
+.UNINDENT
+.TP
+.B \fBvapoursynth\-lazy\fP
+The same as \fBvapoursynth\fP, but doesn\(aqt load Python scripts. Instead, a
+custom backend using Lua and the raw VapourSynth API is used. The syntax
+is completely different, and absolutely no convenience features are
+provided. There\(aqs no type checking either, and you can trigger crashes.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example:"
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+video_out = invoke("morpho", "Open", {clip = video_in})
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The special variable \fBvideo_in\fP is the mpv video source, while the
+special variable \fBvideo_out\fP is used to read video from. The 1st argument
+is the plugin (queried with \fBgetPluginByNs\fP), the 2nd is the filter name,
+and the 3rd argument is a table with the arguments. Positional arguments
+are not supported. The types must match exactly. Since Lua is terrible and
+can\(aqt distinguish integers and floats, integer arguments must be prefixed
+with \fBi_\fP, in which case the prefix is removed and the argument is cast
+to an integer. Should the argument\(aqs name start with \fBi_\fP, you\(aqre out of
+luck.
+.sp
+Clips (VSNodeRef) are passed as light userdata, so trying to pass any
+other userdata type will result in hard crashes.
+.TP
+.B \fBvavpp\fP
+VA\-AP\-API video post processing. Works with \fB\-\-vo=vaapi\fP and \fB\-\-vo=opengl\fP
+only. Currently deinterlaces. This filter is automatically inserted if
+deinterlacing is requested (either using the \fBd\fP key, by default mapped to
+the command \fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option).
+.INDENT 7.0
+.TP
+.B \fBdeint=<method>\fP
+Select the deinterlacing algorithm.
+.INDENT 7.0
+.TP
+.B no
+Don\(aqt perform deinterlacing.
+.TP
+.B first\-field
+Show only first field.
+.TP
+.B bob
+bob deinterlacing (default).
+.TP
+.B weave, motion\-adaptive, motion\-compensated
+Advanced deinterlacing algorithms. Whether these actually work
+depends on the GPU hardware, the GPU drivers, driver bugs, and
+mpv bugs.
+.UNINDENT
+.TP
+.B \fB<interlaced\-only>\fP
+.INDENT 7.0
+.TP
+.B no
+Deinterlace all frames.
+.TP
+.B yes
+Only deinterlace frames marked as interlaced (default).
+.UNINDENT
+.TP
+.B \fBreversal\-bug=<yes|no>\fP
+.INDENT 7.0
+.TP
+.B no
+Use the API as it was interpreted by older Mesa drivers. While
+this interpretation was more obvious and inuitive, it was
+apparently wrong, and not shared by Intel driver developers.
+.TP
+.B yes
+Use Intel interpretation of surface forward and backwards
+references (default). This is what Intel drivers and newer Mesa
+drivers expect. Matters only for the advanced deinterlacing
+algorithms.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBvdpaupp\fP
+VDPAU video post processing. Works with \fB\-\-vo=vdpau\fP and \fB\-\-vo=opengl\fP
+only. This filter is automatically inserted if deinterlacing is requested
+(either using the \fBd\fP key, by default mapped to the command
+\fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option). When enabling
+deinterlacing, it is always preferred over software deinterlacer filters
+if the \fBvdpau\fP VO is used, and also if \fBopengl\fP is used and hardware
+decoding was activated at least once (i.e. vdpau was loaded).
+.INDENT 7.0
+.TP
+.B \fBsharpen=<\-1\-1>\fP
+For positive values, apply a sharpening algorithm to the video, for
+negative values a blurring algorithm (default: 0).
+.TP
+.B \fBdenoise=<0\-1>\fP
+Apply a noise reduction algorithm to the video (default: 0; no noise
+reduction).
+.TP
+.B \fBdeint=<yes|no>\fP
+Whether deinterlacing is enabled (default: no). If enabled, it will use
+the mode selected with \fBdeint\-mode\fP\&.
+.TP
+.B \fBdeint\-mode=<first\-field|bob|temporal|temporal\-spatial>\fP
+Select deinterlacing mode (default: temporal).
+.sp
+Note that there\(aqs currently a mechanism that allows the \fBvdpau\fP VO to
+change the \fBdeint\-mode\fP of auto\-inserted \fBvdpaupp\fP filters. To avoid
+confusion, it\(aqs recommended not to use the \fB\-\-vo=vdpau\fP suboptions
+related to filtering.
+.INDENT 7.0
+.TP
+.B first\-field
+Show only first field.
+.TP
+.B bob
+Bob deinterlacing.
+.TP
+.B temporal
+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
+with slow video hardware and/or high resolution.
+.TP
+.B temporal\-spatial
+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
+interpolation. Needs fast video hardware.
+.UNINDENT
+.TP
+.B \fBchroma\-deint\fP
+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
+Try to apply inverse telecine, needs motion adaptive temporal
+deinterlacing.
+.TP
+.B \fBinterlaced\-only=<yes|no>\fP
+If \fByes\fP (default), only deinterlace frames marked as interlaced.
+.TP
+.B \fBhqscaling=<0\-9>\fP
+.INDENT 7.0
+.TP
+.B 0
+Use default VDPAU scaling (default).
+.TP
+.B 1\-9
+Apply high quality VDPAU scaling (needs capable hardware).
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBd3d11vpp\fP
+Direct3D 11 video post processing. Currently requires D3D11 hardware
+decoding for use.
+.INDENT 7.0
+.TP
+.B \fBdeint=<yes|no>\fP
+Whether deinterlacing is enabled (default: no).
+.TP
+.B \fBinterlaced\-only=<yes|no>\fP
+If \fByes\fP (default), only deinterlace frames marked as interlaced.
+.TP
+.B \fBmode=<blend|bob|adaptive|mocomp|ivctc|none>\fP
+Tries to select a video processor with the given processing capability.
+If a video processor supports multiple capabilities, it is not clear
+which algorithm is actually selected. \fBnone\fP always falls back. On
+most if not all hardware, this option will probably do nothing, because
+a video processor usually supports all modes or none.
+.UNINDENT
+.TP
+.B \fBbuffer=<num>\fP
+Buffer \fB<num>\fP frames in the filter chain. This filter is probably pretty
+useless, except for debugging. (Note that this won\(aqt help to smooth out
+latencies with decoding, because the filter will never output a frame if
+the buffer isn\(aqt full, except on EOF.)
+.UNINDENT
+.SH ENCODING
+.sp
+You can encode files from one format/codec to another using this facility.
+.INDENT 0.0
+.TP
+.B \fB\-\-o=<filename>\fP
+Enables encoding mode and specifies the output file name.
+.TP
+.B \fB\-\-of=<format>\fP
+Specifies the output format (overrides autodetection by the file name
+extension of the file specified by \fB\-o\fP). This can be a comma separated
+list of possible formats to try. See \fB\-\-of=help\fP for a full list of
+supported formats.
+.TP
+.B \fB\-\-ofopts=<options>\fP
+Specifies the output format options for libavformat.
+See \fB\-\-ofopts=help\fP for a full list of supported options.
+.sp
+Options are managed in lists. There are a few commands to manage the
+options list.
+.INDENT 7.0
+.TP
+.B \fB\-\-ofopts\-add=<options1[,options2,...]>\fP
+Appends the options given as arguments to the options list.
+.TP
+.B \fB\-\-ofopts\-pre=<options1[,options2,...]>\fP
+Prepends the options given as arguments to the options list.
+.TP
+.B \fB\-\-ofopts\-del=<index1[,index2,...]>\fP
+Deletes the options at the given indexes. Index numbers start at 0,
+negative numbers address the end of the list (\-1 is the last).
+.TP
+.B \fB\-\-ofopts\-clr\fP
+Completely empties the options list.
+.UNINDENT
+.TP
+.B \fB\-\-ofps=<float value>\fP
+Specifies the output format time base (default: 24000). Low values like 25
+limit video fps by dropping frames.
+.TP
+.B \fB\-\-oautofps\fP
+Sets the output format time base to the guessed frame rate of the input
+video (simulates MEncoder behavior, useful for AVI; may cause frame drops).
+Note that not all codecs and not all formats support VFR encoding, and some
+which do have bugs when a target bitrate is specified \- use \fB\-\-ofps\fP or
+\fB\-\-oautofps\fP to force CFR encoding in these cases.
+.TP
+.B \fB\-\-omaxfps=<float value>\fP
+Specifies the minimum distance of adjacent frames (default: 0, which means
+unset). Content of lower frame rate is not readjusted to this frame rate;
+content of higher frame rate is decimated to this frame rate.
+.TP
+.B \fB\-\-oharddup\fP
+If set, the frame rate given by \fB\-\-ofps\fP is attained not by skipping time
+codes, but by duplicating frames (constant frame rate mode).
+.TP
+.B \fB\-\-oneverdrop\fP
+If set, frames are never dropped. Instead, time codes of video are
+readjusted to always increase. This may cause AV desync, though; to work
+around this, use a high\-fps time base using \fB\-\-ofps\fP and absolutely
+avoid \fB\-\-oautofps\fP\&.
+.TP
+.B \fB\-\-oac=<codec>\fP
+Specifies the output audio codec. This can be a comma separated list of
+possible codecs to try. See \fB\-\-oac=help\fP for a full list of supported
+codecs.
+.TP
+.B \fB\-\-oaoffset=<value>\fP
+Shifts audio data by the given time (in seconds) by adding/removing
+samples at the start.
+.TP
+.B \fB\-\-oacopts=<options>\fP
+Specifies the output audio codec options for libavcodec.
+See \fB\-\-oacopts=help\fP for a full list of supported options.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.TP
+.B "\fB\-\-oac=libmp3lame \-\-oacopts=b=128000\fP"
+selects 128 kbps MP3 encoding.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Options are managed in lists. There are a few commands to manage the
+options list.
+.INDENT 7.0
+.TP
+.B \fB\-\-oacopts\-add=<options1[,options2,...]>\fP
+Appends the options given as arguments to the options list.
+.TP
+.B \fB\-\-oacopts\-pre=<options1[,options2,...]>\fP
+Prepends the options given as arguments to the options list.
+.TP
+.B \fB\-\-oacopts\-del=<index1[,index2,...]>\fP
+Deletes the options at the given indexes. Index numbers start at 0,
+negative numbers address the end of the list (\-1 is the last).
+.TP
+.B \fB\-\-oacopts\-clr\fP
+Completely empties the options list.
+.UNINDENT
+.TP
+.B \fB\-\-oafirst\fP
+Force the audio stream to become the first stream in the output.
+By default, the order is unspecified.
+.TP
+.B \fB\-\-ovc=<codec>\fP
+Specifies the output video codec. This can be a comma separated list of
+possible codecs to try. See \fB\-\-ovc=help\fP for a full list of supported
+codecs.
+.TP
+.B \fB\-\-ovoffset=<value>\fP
+Shifts video data by the given time (in seconds) by shifting the pts
+values.
+.TP
+.B \fB\-\-ovcopts <options>\fP
+Specifies the output video codec options for libavcodec.
+See \-\-ovcopts=help for a full list of supported options.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.TP
+.B \fB"\-\-ovc=mpeg4 \-\-ovcopts=qscale=5"\fP
+selects constant quantizer scale 5 for MPEG\-4 encoding.
+.TP
+.B \fB"\-\-ovc=libx264 \-\-ovcopts=crf=23"\fP
+selects VBR quality factor 23 for H.264 encoding.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Options are managed in lists. There are a few commands to manage the
+options list.
+.INDENT 7.0
+.TP
+.B \fB\-\-ovcopts\-add=<options1[,options2,...]>\fP
+Appends the options given as arguments to the options list.
+.TP
+.B \fB\-\-ovcopts\-pre=<options1[,options2,...]>\fP
+Prepends the options given as arguments to the options list.
+.TP
+.B \fB\-\-ovcopts\-del=<index1[,index2,...]>\fP
+Deletes the options at the given indexes. Index numbers start at 0,
+negative numbers address the end of the list (\-1 is the last).
+.TP
+.B \fB\-\-ovcopts\-clr\fP
+Completely empties the options list.
+.UNINDENT
+.TP
+.B \fB\-\-ovfirst\fP
+Force the video stream to become the first stream in the output.
+By default, the order is unspecified.
+.TP
+.B \fB\-\-ocopyts\fP
+Copies input pts to the output video (not supported by some output
+container formats, e.g. AVI). Discontinuities are still fixed.
+By default, audio pts are set to playback time and video pts are
+synchronized to match audio pts, as some output formats do not support
+anything else.
+.TP
+.B \fB\-\-orawts\fP
+Copies input pts to the output video (not supported by some output
+container formats, e.g. AVI). In this mode, discontinuities are not fixed
+and all pts are passed through as\-is. Never seek backwards or use multiple
+input files in this mode!
+.TP
+.B \fB\-\-no\-ometadata\fP
+Turns off copying of metadata from input files to output files when
+encoding (which is enabled by default).
+.UNINDENT
+.SH COMMAND INTERFACE
+.sp
+The mpv core can be controlled with commands and properties. A number of ways
+to interact with the player use them: key bindings (\fBinput.conf\fP), OSD
+(showing information with properties), JSON IPC, the client API (\fBlibmpv\fP),
+and the classic slave mode.
+.SS input.conf
+.sp
+The input.conf file consists of a list of key bindings, for example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+s screenshot # take a screenshot with the s key
+LEFT seek 15 # map the left\-arrow key to seeking forward by 15 seconds
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Each line maps a key to an input command. Keys are specified with their literal
+value (upper case if combined with \fBShift\fP), or a name for special keys. For
+example, \fBa\fP maps to the \fBa\fP key without shift, and \fBA\fP maps to \fBa\fP
+with shift.
+.sp
+The file is located in the mpv configuration directory (normally at
+\fB~/.config/mpv/input.conf\fP depending on platform). The default bindings are
+defined here:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+https://github.com/mpv\-player/mpv/blob/master/etc/input.conf
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+A list of special keys can be obtained with
+.INDENT 0.0
+.INDENT 3.5
+\fBmpv \-\-input\-keylist\fP
+.UNINDENT
+.UNINDENT
+.sp
+In general, keys can be combined with \fBShift\fP, \fBCtrl\fP and \fBAlt\fP:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ctrl+q quit
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBmpv\fP can be started in input test mode, which displays key bindings and the
+commands they\(aqre bound to on the OSD, instead of executing the commands:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv \-\-input\-test \-\-force\-window \-\-idle
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+(Only closing the window will make \fBmpv\fP exit, pressing normal keys will
+merely display the binding, even if mapped to quit.)
+.SS General Input Command Syntax
+.sp
+\fB[Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] [<prefixes>] <command> (<argument>)* [; <command>]\fP
+.sp
+Note that by default, the right Alt key can be used to create special
+characters, and thus does not register as a modifier. The option
+\fB\-\-no\-input\-right\-alt\-gr\fP changes this behavior.
+.sp
+Newlines always start a new binding. \fB#\fP starts a comment (outside of quoted
+string arguments). To bind commands to the \fB#\fP key, \fBSHARP\fP can be used.
+.sp
+\fB<key>\fP is either the literal character the key produces (ASCII or Unicode
+character), or a symbolic name (as printed by \fB\-\-input\-keylist\fP).
+.sp
+\fB<section>\fP (braced with \fB{\fP and \fB}\fP) is the input section for this
+command.
+.sp
+Arguments are separated by whitespace. This applies even to string arguments.
+For this reason, string arguments should be quoted with \fB"\fP\&. Inside quotes,
+C\-style escaping can be used.
+.sp
+You can bind multiple commands to one key. For example:
+.nf
+a show\-text "command 1" ; show\-text "command 2"
+.fi
+.sp
+.sp
+It\(aqs also possible to bind a command to a sequence of keys:
+.nf
+a\-b\-c show\-text "command run after a, b, c have been pressed"
+.fi
+.sp
+.sp
+(This is not shown in the general command syntax.)
+.sp
+If \fBa\fP or \fBa\-b\fP or \fBb\fP are already bound, this will run the first command
+that matches, and the multi\-key command will never be called. Intermediate keys
+can be remapped to \fBignore\fP in order to avoid this issue. The maximum number
+of (non\-modifier) keys for combinations is currently 4.
+.SS List of Input Commands
+.INDENT 0.0
+.TP
+.B \fBignore\fP
+Use this to "block" keys that should be unbound, and do nothing. Useful for
+disabling default bindings, without disabling all bindings with
+\fB\-\-no\-input\-default\-bindings\fP\&.
+.TP
+.B \fBseek <seconds> [relative|absolute|absolute\-percent|relative\-percent|exact|keyframes]\fP
+Change the playback position. By default, seeks by a relative amount of
+seconds.
+.sp
+The second argument consists of flags controlling the seek mode:
+.INDENT 7.0
+.TP
+.B relative (default)
+Seek relative to current position (a negative value seeks backwards).
+.TP
+.B absolute
+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.
+.TP
+.B relative\-percent
+Seek relative to current position in percent.
+.TP
+.B keyframes
+Always restart playback at keyframe boundaries (fast).
+.TP
+.B exact
+Always do exact/hr/precise seeks (slow).
+.UNINDENT
+.sp
+Multiple flags can be combined, e.g.: \fBabsolute+keyframes\fP\&.
+.sp
+By default, \fBkeyframes\fP is used for relative seeks, and \fBexact\fP is used
+for absolute seeks.
+.sp
+Before mpv 0.9, the \fBkeyframes\fP and \fBexact\fP flags had to be passed as
+3rd parameter (essentially using a space instead of \fB+\fP). The 3rd
+parameter is still parsed, but is considered deprecated.
+.TP
+.B \fBrevert\-seek [mode]\fP
+Undoes the \fBseek\fP command, and some other commands that seek (but not
+necessarily all of them). Calling this command once will jump to the
+playback position before the seek. Calling it a second time undoes the
+\fBrevert\-seek\fP command itself. This only works within a single file.
+.sp
+The first argument is optional, and can change the behavior:
+.INDENT 7.0
+.TP
+.B mark
+Mark the current time position. The next normal \fBrevert\-seek\fP command
+will seek back to this point, no matter how many seeks happened since
+last time.
+.UNINDENT
+.sp
+Using it without any arguments gives you the default behavior.
+.TP
+.B \fBframe\-step\fP
+Play one frame, then pause. Does nothing with audio\-only playback.
+.TP
+.B \fBframe\-back\-step\fP
+Go back by one frame, then pause. Note that this can be very slow (it tries
+to be precise, not fast), and sometimes fails to behave as expected. How
+well this works depends on whether precise seeking works correctly (e.g.
+see the \fB\-\-hr\-seek\-demuxer\-offset\fP option). Video filters or other video
+post\-processing that modifies timing of frames (e.g. deinterlacing) should
+usually work, but might make backstepping silently behave incorrectly in
+corner cases. Using \fB\-\-hr\-seek\-framedrop=no\fP should help, although it
+might make precise seeking slower.
+.sp
+This does not work with audio\-only playback.
+.TP
+.B \fBset <property> "<value>"\fP
+Set the given property to the given value.
+.TP
+.B \fBadd <property> [<value>]\fP
+Add the given value to the property. On overflow or underflow, clamp the
+property to the maximum. If \fB<value>\fP is omitted, assume \fB1\fP\&.
+.TP
+.B \fBcycle <property> [up|down]\fP
+Cycle the given property. \fBup\fP and \fBdown\fP set the cycle direction. On
+overflow, set the property back to the minimum, on underflow set it to the
+maximum. If \fBup\fP or \fBdown\fP is omitted, assume \fBup\fP\&.
+.TP
+.B \fBmultiply <property> <factor>\fP
+Multiplies the value of a property with the numeric factor.
+.TP
+.B \fBscreenshot [subtitles|video|window|single|each\-frame]\fP
+Take a screenshot.
+.sp
+Multiple flags are available (some can be combined with \fB+\fP):
+.INDENT 7.0
+.TP
+.B <subtitles> (default)
+Save the video image, in its original resolution, and with subtitles.
+Some video outputs may still include the OSD in the output under certain
+circumstances.
+.TP
+.B <video>
+Like \fBsubtitles\fP, but typically without OSD or subtitles. The exact
+behavior depends on the selected video output.
+.TP
+.B <window>
+Save the contents of the mpv window. Typically scaled, with OSD and
+subtitles. The exact behavior depends on the selected video output, and
+if no support is available, this will act like \fBvideo\fP\&.
+.TP
+.B <each\-frame>
+Take a screenshot each frame. Issue this command again to stop taking
+screenshots. Note that you should disable frame\-dropping when using
+this mode \- or you might receive duplicate images in cases when a
+frame was dropped. This flag can be combined with the other flags,
+e.g. \fBvideo+each\-frame\fP\&.
+.UNINDENT
+.sp
+Older mpv versions required passing \fBsingle\fP and \fBeach\-frame\fP as
+second argument (and did not have flags). This syntax is still understood,
+but deprecated and might be removed in the future.
+.sp
+Setting the \fBasync\fP flag will make encoding and writing the actual image
+file asynchronous in most cases. (\fBeach\-frame\fP mode ignores this flag
+currently.) Requesting async screenshots too early or too often could lead
+to the same filenames being chosen, and overwriting each others in undefined
+order.
+.TP
+.B \fBscreenshot\-to\-file "<filename>" [subtitles|video|window]\fP
+Take a screenshot and save it to a given file. The format of the file will
+be guessed by the extension (and \fB\-\-screenshot\-format\fP is ignored \- the
+behavior when the extension is missing or unknown is arbitrary).
+.sp
+The second argument is like the first argument to \fBscreenshot\fP\&.
+.sp
+If the file already exists, it\(aqs overwritten.
+.sp
+Like all input command parameters, the filename is subject to property
+expansion as described in \fI\%Property Expansion\fP\&.
+.sp
+The \fBasync\fP flag has an effect on this command (see \fBscreenshot\fP
+command).
+.TP
+.B \fBplaylist\-next [weak|force]\fP
+Go to the next entry on the playlist.
+.INDENT 7.0
+.TP
+.B weak (default)
+If the last file on the playlist is currently played, do nothing.
+.TP
+.B force
+Terminate playback if there are no more files on the playlist.
+.UNINDENT
+.TP
+.B \fBplaylist\-prev [weak|force]\fP
+Go to the previous entry on the playlist.
+.INDENT 7.0
+.TP
+.B weak (default)
+If the first file on the playlist is currently played, do nothing.
+.TP
+.B force
+Terminate playback if the first file is being played.
+.UNINDENT
+.TP
+.B \fBloadfile "<file>" [replace|append|append\-play [options]]\fP
+Load the given file and play it.
+.sp
+Second argument:
+.INDENT 7.0
+.TP
+.B <replace> (default)
+Stop playback of the current file, and play the new file immediately.
+.TP
+.B <append>
+Append the file to the playlist.
+.TP
+.B <append\-play>
+Append the file, and if nothing is currently playing, start playback.
+(Always starts with the added file, even if the playlist was not empty
+before running this command.)
+.UNINDENT
+.sp
+The third argument is a list of options and values which should be set
+while the file is playing. It is of the form \fBopt1=value1,opt2=value2,..\fP\&.
+Not all options can be changed this way. Some options require a restart
+of the player.
+.TP
+.B \fBloadlist "<playlist>" [replace|append]\fP
+Load the given playlist file (like \fB\-\-playlist\fP).
+.TP
+.B \fBplaylist\-clear\fP
+Clear the playlist, except the currently played file.
+.TP
+.B \fBplaylist\-remove current|<index>\fP
+Remove the playlist entry at the given index. Index values start counting
+with 0. The special value \fBcurrent\fP removes the current entry. Note that
+removing the current entry also stops playback and starts playing the next
+entry.
+.TP
+.B \fBplaylist\-move <index1> <index2>\fP
+Move the playlist entry at index1, so that it takes the place of the
+entry index2. (Paradoxically, the moved playlist entry will not have
+the index value index2 after moving if index1 was lower than index2,
+because index2 refers to the target entry, not the index the entry
+will have after moving.)
+.TP
+.B \fBplaylist\-shuffle\fP
+Shuffle the playlist. This is similar to what is done on start if the
+\fB\-\-shuffle\fP option is used.
+.TP
+.B \fBrun "command" "arg1" "arg2" ...\fP
+Run the given command. Unlike in MPlayer/mplayer2 and earlier versions of
+mpv (0.2.x and older), this doesn\(aqt call the shell. Instead, the command
+is run directly, with each argument passed separately. Each argument is
+expanded like in \fI\%Property Expansion\fP\&. Note that there is a static limit
+of (as of this writing) 9 arguments (this limit could be raised on demand).
+.sp
+The program is run in a detached way. mpv doesn\(aqt wait until the command
+is completed, but continues playback right after spawning it.
+.sp
+To get the old behavior, use \fB/bin/sh\fP and \fB\-c\fP as the first two
+arguments.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+\fBrun "/bin/sh" "\-c" "echo ${title} > /tmp/playing"\fP
+.sp
+This is not a particularly good example, because it doesn\(aqt handle
+escaping, and a specially prepared file might allow an attacker to
+execute arbitrary shell commands. It is recommended to write a small
+shell script, and call that with \fBrun\fP\&.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBquit [<code>]\fP
+Exit the player. If an argument is given, it\(aqs used as process exit code.
+.TP
+.B \fBquit\-watch\-later [<code>]\fP
+Exit player, and store current playback position. Playing that file later
+will seek to the previous position on start. The (optional) argument is
+exactly as in the \fBquit\fP command.
+.TP
+.B \fBsub\-add "<file>" [<flags> [<title> [<lang>]]]\fP
+Load the given subtitle file. It is selected as current subtitle after
+loading.
+.sp
+The \fBflags\fP args is one of the following values:
+.sp
+<select>
+.INDENT 7.0
+.INDENT 3.5
+Select the subtitle immediately.
+.UNINDENT
+.UNINDENT
+.sp
+<auto>
+.INDENT 7.0
+.INDENT 3.5
+Don\(aqt select the subtitle. (Or in some special situations, let the
+default stream selection mechanism decide.)
+.UNINDENT
+.UNINDENT
+.sp
+<cached>
+.INDENT 7.0
+.INDENT 3.5
+Select the subtitle. If a subtitle with the same filename was already
+added, that one is selected, instead of loading a duplicate entry.
+(In this case, title/language are ignored, and if the was changed since
+it was loaded, these changes won\(aqt be reflected.)
+.UNINDENT
+.UNINDENT
+.sp
+The \fBtitle\fP argument sets the track title in the UI.
+.sp
+The \fBlang\fP argument sets the track language, and can also influence
+stream selection with \fBflags\fP set to \fBauto\fP\&.
+.TP
+.B \fBsub\-remove [<id>]\fP
+Remove the given subtitle track. If the \fBid\fP argument is missing, remove
+the current track. (Works on external subtitle files only.)
+.TP
+.B \fBsub\-reload [<id>]\fP
+Reload the given subtitle tracks. If the \fBid\fP argument is missing, reload
+the current track. (Works on external subtitle files only.)
+.sp
+This works by unloading and re\-adding the subtitle track.
+.TP
+.B \fBsub\-step <skip>\fP
+Change subtitle timing such, that the subtitle event after the next
+\fB<skip>\fP subtitle events is displayed. \fB<skip>\fP can be negative to step
+backwards.
+.TP
+.B \fBsub\-seek <skip>\fP
+Seek to the next (skip set to 1) or the previous (skip set to \-1) subtitle.
+This is similar to \fBsub\-step\fP, except that it seeks video and audio
+instead of adjusting the subtitle delay.
+.sp
+For embedded subtitles (like with Matroska), this works only with subtitle
+events that have already been displayed, or are within a short prefetch
+range.
+.TP
+.B \fBprint\-text "<string>"\fP
+Print text to stdout. The string can contain properties (see
+\fI\%Property Expansion\fP).
+.TP
+.B \fBshow\-text "<string>" [<duration>|\- [<level>]]\fP
+Show text on the OSD. The string can contain properties, which are expanded
+as described in \fI\%Property Expansion\fP\&. This can be used to show playback
+time, filename, and so on.
+.INDENT 7.0
+.TP
+.B <duration>
+The time in ms to show the message for. By default, it uses the same
+value as \fB\-\-osd\-duration\fP\&.
+.TP
+.B <level>
+The minimum OSD level to show the text at (see \fB\-\-osd\-level\fP).
+.UNINDENT
+.TP
+.B \fBexpand\-text "<string>"\fP
+Property\-expand the argument and return the expanded string. This can be
+used only through the client API or from a script using
+\fBmp.command_native\fP\&. (see \fI\%Property Expansion\fP).
+.TP
+.B \fBshow\-progress\fP
+Show the progress bar, the elapsed time and the total duration of the file
+on the OSD.
+.TP
+.B \fBwrite\-watch\-later\-config\fP
+Write the resume config file that the \fBquit\-watch\-later\fP command writes,
+but continue playback normally.
+.TP
+.B \fBstop\fP
+Stop playback and clear playlist. With default settings, this is
+essentially like \fBquit\fP\&. Useful for the client API: playback can be
+stopped without terminating the player.
+.TP
+.B \fBmouse <x> <y> [<button> [single|double]]\fP
+Send a mouse event with given coordinate (\fB<x>\fP, \fB<y>\fP).
+.sp
+Second argument:
+.INDENT 7.0
+.TP
+.B <button>
+The button number of clicked mouse button. This should be one of 0\-19.
+If \fB<button>\fP is omitted, only the position will be updated.
+.UNINDENT
+.sp
+Third argument:
+.INDENT 7.0
+.TP
+.B <single> (default)
+The mouse event represents regular single click.
+.TP
+.B <double>
+The mouse event represents double\-click.
+.UNINDENT
+.TP
+.B \fBkeypress <key_name>\fP
+Send a key event through mpv\(aqs input handler, triggering whatever
+behavior is configured to that key. \fBkey_name\fP uses the \fBinput.conf\fP
+naming scheme for keys and modifiers. Useful for the client API: key events
+can be sent to libmpv to handle internally.
+.TP
+.B \fBkeydown <key_name>\fP
+Similar to \fBkeypress\fP, but sets the \fBKEYDOWN\fP flag so that if the key is
+bound to a repeatable command, it will be run repeatedly with mpv\(aqs key
+repeat timing until the \fBkeyup\fP command is called.
+.TP
+.B \fBkeyup [<key_name>]\fP
+Set the \fBKEYUP\fP flag, stopping any repeated behavior that had been
+triggered. \fBkey_name\fP is optional. If \fBkey_name\fP is not given or is an
+empty string, \fBKEYUP\fP will be set on all keys. Otherwise, \fBKEYUP\fP will
+only be set on the key specified by \fBkey_name\fP\&.
+.TP
+.B \fBaudio\-add "<file>" [<flags> [<title> [<lang>]]]\fP
+Load the given audio file. See \fBsub\-add\fP command.
+.TP
+.B \fBaudio\-remove [<id>]\fP
+Remove the given audio track. See \fBsub\-remove\fP command.
+.TP
+.B \fBaudio\-reload [<id>]\fP
+Reload the given audio tracks. See \fBsub\-reload\fP command.
+.TP
+.B \fBrescan\-external\-files [<mode>]\fP
+Rescan external files according to the current \fB\-\-sub\-auto\fP and
+\fB\-\-audio\-file\-auto\fP settings. This can be used to auto\-load external
+files \fIafter\fP the file was loaded.
+.sp
+The \fBmode\fP argument is one of the following:
+.INDENT 7.0
+.TP
+.B <reselect> (default)
+Select the default audio and subtitle streams, which typically selects
+external files with the highest preference. (The implementation is not
+perfect, and could be improved on request.)
+.TP
+.B <keep\-selection>
+Do not change current track selections.
+.UNINDENT
+.UNINDENT
+.SS Input Commands that are Possibly Subject to Change
+.INDENT 0.0
+.TP
+.B \fBaf set|add|toggle|del|clr "filter1=params,filter2,..."\fP
+Change audio filter chain. See \fBvf\fP command.
+.TP
+.B \fBvf set|add|toggle|del|clr "filter1=params,filter2,..."\fP
+Change video filter chain.
+.sp
+The first argument decides what happens:
+.INDENT 7.0
+.TP
+.B set
+Overwrite the previous filter chain with the new one.
+.TP
+.B add
+Append the new filter chain to the previous one.
+.TP
+.B toggle
+Check if the given filter (with the exact parameters) is already
+in the video chain. If yes, remove the filter. If no, add the filter.
+(If several filters are passed to the command, this is done for
+each filter.)
+.sp
+A special variant is combining this with labels, and using \fB@name\fP
+without filter name and parameters as filter entry. This toggles the
+enable/disable flag.
+.TP
+.B del
+Remove the given filters from the video chain. Unlike in the other
+cases, the second parameter is a comma separated list of filter names
+or integer indexes. \fB0\fP would denote the first filter. Negative
+indexes start from the last filter, and \fB\-1\fP denotes the last
+filter.
+.TP
+.B clr
+Remove all filters. Note that like the other sub\-commands, this does
+not control automatically inserted filters.
+.UNINDENT
+.sp
+The argument is always needed. E.g. in case of \fBclr\fP use \fBvf clr ""\fP\&.
+.sp
+You can assign labels to filter by prefixing them with \fB@name:\fP (where
+\fBname\fP is a user\-chosen arbitrary identifier). Labels can be used to
+refer to filters by name in all of the filter chain modification commands.
+For \fBadd\fP, using an already used label will replace the existing filter.
+.sp
+The \fBvf\fP command shows the list of requested filters on the OSD after
+changing the filter chain. This is roughly equivalent to
+\fBshow\-text ${vf}\fP\&. Note that auto\-inserted filters for format conversion
+are not shown on the list, only what was requested by the user.
+.sp
+Normally, the commands will check whether the video chain is recreated
+successfully, and will undo the operation on failure. If the command is run
+before video is configured (can happen if the command is run immediately
+after opening a file and before a video frame is decoded), this check can\(aqt
+be run. Then it can happen that creating the video chain fails.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example for input.conf"
+.INDENT 0.0
+.IP \(bu 2
+\fBa vf set flip\fP turn video upside\-down on the \fBa\fP key
+.IP \(bu 2
+\fBb vf set ""\fP remove all video filters on \fBb\fP
+.IP \(bu 2
+\fBc vf toggle lavfi=gradfun\fP toggle debanding on \fBc\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example how to toggle disabled filters at runtime"
+.INDENT 0.0
+.IP \(bu 2
+Add something \fBvf\-add=@deband:!lavfi=[gradfun]\fP to \fBmpv.conf\fP\&. The
+\fB@deband:\fP is the label, and \fBdeband\fP is an arbitrary, user\-given
+name for this filter entry. The \fB!\fP before the filter name disables
+the filter by default. Everything after this is the normal filter name
+and the filter parameters.
+.IP \(bu 2
+Add \fBa vf toggle @deband\fP to \fBinput.conf\fP\&. This toggles the
+"disabled" flag for the filter identified with \fBdeband\fP\&.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBcycle\-values ["!reverse"] <property> "<value1>" "<value2>" ...\fP
+Cycle through a list of values. Each invocation of the command will set the
+given property to the next value in the list. The command maintains an
+internal counter which value to pick next, and which is initially 0. It is
+reset to 0 once the last value is reached.
+.sp
+The internal counter is associated using the property name and the value
+list. If multiple commands (bound to different keys) use the same name
+and value list, they will share the internal counter.
+.sp
+The special argument \fB!reverse\fP can be used to cycle the value list in
+reverse. Compared with a command that just lists the value in reverse, this
+command will actually share the internal counter with the forward\-cycling
+key binding (as long as the rest of the arguments are the same).
+.sp
+Note that there is a static limit of (as of this writing) 10 arguments
+(this limit could be raised on demand).
+.TP
+.B \fBenable\-section "<section>" [flags]\fP
+Enable all key bindings in the named input section.
+.sp
+The enabled input sections form a stack. Bindings in sections on the top of
+the stack are preferred to lower sections. This command puts the section
+on top of the stack. If the section was already on the stack, it is
+implicitly removed beforehand. (A section cannot be on the stack more than
+once.)
+.sp
+The \fBflags\fP parameter can be a combination (separated by \fB+\fP) of the
+following flags:
+.INDENT 7.0
+.TP
+.B <exclusive>
+All sections enabled before the newly enabled section are disabled.
+They will be re\-enabled as soon as all exclusive sections above them
+are removed. In other words, the new section shadows all previous
+sections.
+.TP
+.B <allow\-hide\-cursor>
+This feature can\(aqt be used through the public API.
+.TP
+.B <allow\-vo\-dragging>
+Same.
+.UNINDENT
+.TP
+.B \fBdisable\-section "<section>"\fP
+Disable the named input section. Undoes \fBenable\-section\fP\&.
+.TP
+.B \fBdefine\-section "<section>" "<contents>" [default|force]\fP
+Create a named input section, or replace the contents of an already existing
+input section. The \fBcontents\fP parameter uses the same syntax as the
+\fBinput.conf\fP file (except that using the section syntax in it is not
+allowed), including the need to separate bindings with a newline character.
+.sp
+If the \fBcontents\fP parameter is an empty string, the section is removed.
+.sp
+The section with the name \fBdefault\fP is the normal input section.
+.sp
+In general, input sections have to be enabled with the \fBenable\-section\fP
+command, or they are ignored.
+.sp
+The last parameter has the following meaning:
+.INDENT 7.0
+.TP
+.B <default> (also used if parameter omitted)
+Use a key binding defined by this section only if the user hasn\(aqt
+already bound this key to a command.
+.TP
+.B <force>
+Always bind a key. (The input section that was made active most recently
+wins if there are ambiguities.)
+.UNINDENT
+.sp
+This command can be used to dispatch arbitrary keys to a script or a client
+API user. If the input section defines \fBscript\-binding\fP commands, it is
+also possible to get separate events on key up/down, and relatively detailed
+information about the key state. The special key name \fBunmapped\fP can be
+used to match any unmapped key.
+.TP
+.B \fBoverlay\-add <id> <x> <y> "<file>" <offset> "<fmt>" <w> <h> <stride>\fP
+Add an OSD overlay sourced from raw data. This might be useful for scripts
+and applications controlling mpv, and which want to display things on top
+of the video window.
+.sp
+Overlays are usually displayed in screen resolution, but with some VOs,
+the resolution is reduced to that of the video\(aqs. You can read the
+\fBosd\-width\fP and \fBosd\-height\fP properties. At least with \fB\-\-vo\-xv\fP and
+anamorphic video (such as DVD), \fBosd\-par\fP should be read as well, and the
+overlay should be aspect\-compensated.
+.sp
+\fBid\fP is an integer between 0 and 63 identifying the overlay element. The
+ID can be used to add multiple overlay parts, update a part by using this
+command with an already existing ID, or to remove a part with
+\fBoverlay\-remove\fP\&. Using a previously unused ID will add a new overlay,
+while reusing an ID will update it.
+.sp
+\fBx\fP and \fBy\fP specify the position where the OSD should be displayed.
+.sp
+\fBfile\fP specifies the file the raw image data is read from. It can be
+either a numeric UNIX file descriptor prefixed with \fB@\fP (e.g. \fB@4\fP),
+or a filename. The file will be mapped into memory with \fBmmap()\fP,
+copied, and unmapped before the command returns (changed in mpv 0.18.1).
+.sp
+It is also possible to pass a raw memory address for use as bitmap memory
+by passing a memory address as integer prefixed with an \fB&\fP character.
+Passing the wrong thing here will crash the player. This mode might be
+useful for use with libmpv. The \fBoffset\fP parameter is simply added to the
+memory address (since mpv 0.8.0, ignored before).
+.sp
+\fBoffset\fP is the byte offset of the first pixel in the source file.
+(The current implementation always mmap\(aqs the whole file from position 0 to
+the end of the image, so large offsets should be avoided. Before mpv 0.8.0,
+the offset was actually passed directly to \fBmmap\fP, but it was changed to
+make using it easier.)
+.sp
+\fBfmt\fP is a string identifying the image format. Currently, only \fBbgra\fP
+is defined. This format has 4 bytes per pixels, with 8 bits per component.
+The least significant 8 bits are blue, and the most significant 8 bits
+are alpha (in little endian, the components are B\-G\-R\-A, with B as first
+byte). This uses premultiplied alpha: every color component is already
+multiplied with the alpha component. This means the numeric value of each
+component is equal to or smaller than the alpha component. (Violating this
+rule will lead to different results with different VOs: numeric overflows
+resulting from blending broken alpha values is considered something that
+shouldn\(aqt happen, and consequently implementations don\(aqt ensure that you
+get predictable behavior in this case.)
+.sp
+\fBw\fP, \fBh\fP, and \fBstride\fP specify the size of the overlay. \fBw\fP is the
+visible width of the overlay, while \fBstride\fP gives the width in bytes in
+memory. In the simple case, and with the \fBbgra\fP format, \fBstride==4*w\fP\&.
+In general, the total amount of memory accessed is \fBstride * h\fP\&.
+(Technically, the minimum size would be \fBstride * (h \- 1) + w * 4\fP, but
+for simplicity, the player will access all \fBstride * h\fP bytes.)
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+Before mpv 0.18.1, you had to do manual "double buffering" when updating
+an overlay by replacing it with a different memory buffer. Since mpv
+0.18.1, the memory is simply copied and doesn\(aqt reference any of the
+memory indicated by the command\(aqs arguments after the commend returns.
+If you want to use this command before mpv 0.18.1, reads the old docs
+to see how to handle this correctly.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBoverlay\-remove <id>\fP
+Remove an overlay added with \fBoverlay\-add\fP and the same ID. Does nothing
+if no overlay with this ID exists.
+.TP
+.B \fBscript\-message "<arg1>" "<arg2>" ...\fP
+Send a message to all clients, and pass it the following list of arguments.
+What this message means, how many arguments it takes, and what the arguments
+mean is fully up to the receiver and the sender. Every client receives the
+message, so be careful about name clashes (or use \fBscript\-message\-to\fP).
+.TP
+.B \fBscript\-message\-to "<target>" "<arg1>" "<arg2>" ...\fP
+Same as \fBscript\-message\fP, but send it only to the client named
+\fB<target>\fP\&. Each client (scripts etc.) has a unique name. For example,
+Lua scripts can get their name via \fBmp.get_script_name()\fP\&.
+.TP
+.B \fBscript\-binding "<name>"\fP
+Invoke a script\-provided key binding. This can be used to remap key
+bindings provided by external Lua scripts.
+.sp
+The argument is the name of the binding.
+.sp
+It can optionally be prefixed with the name of the script, using \fB/\fP as
+separator, e.g. \fBscript\-binding scriptname/bindingname\fP\&.
+.sp
+For completeness, here is how this command works internally. The details
+could change any time. On any matching key event, \fBscript\-message\-to\fP
+or \fBscript\-message\fP is called (depending on whether the script name is
+included), with the following arguments:
+.INDENT 7.0
+.IP 1. 3
+The string \fBkey\-binding\fP\&.
+.IP 2. 3
+The name of the binding (as established above).
+.IP 3. 3
+The key state as string (see below).
+.IP 4. 3
+The key name (since mpv 0.15.0).
+.UNINDENT
+.sp
+The key state consists of 2 letters:
+.INDENT 7.0
+.IP 1. 3
+One of \fBd\fP (key was pressed down), \fBu\fP (was released), \fBr\fP (key
+is still down, and was repeated; only if key repeat is enabled for this
+binding), \fBp\fP (key was pressed; happens if up/down can\(aqt be tracked).
+.IP 2. 3
+Whether the event originates from the mouse, either \fBm\fP (mouse button)
+or \fB\-\fP (something else).
+.UNINDENT
+.TP
+.B \fBab\-loop\fP
+Cycle through A\-B loop states. The first command will set the \fBA\fP point
+(the \fBab\-loop\-a\fP property); the second the \fBB\fP point, and the third
+will clear both points.
+.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.
+This command might be changed or removed in the future.
+.TP
+.B \fBscreenshot\-raw [subtitles|video|window]\fP
+Return a screenshot in memory. This can be used only through the client
+API. The MPV_FORMAT_NODE_MAP returned by this command has the \fBw\fP, \fBh\fP,
+\fBstride\fP fields set to obvious contents. The \fBformat\fP field is set to
+\fBbgr0\fP by default. This format is organized as \fBB8G8R8X8\fP (where \fBB\fP
+is the LSB). The contents of the padding \fBX\fP are undefined. The \fBdata\fP
+field is of type MPV_FORMAT_BYTE_ARRAY with the actual image data. The image
+is freed as soon as the result mpv_node is freed. As usual with client API
+semantics, you are not allowed to write to the image data.
+.TP
+.B \fBvf\-command "<label>" "<cmd>" "<args>"\fP
+Send a command to the filter with the given \fB<label>\fP\&. Use \fBall\fP to send
+it to all filters at once. The command and argument string is filter
+specific. Currently, this only works with the \fBlavfi\fP filter \- see
+the libavfilter documentation for which commands a filter supports.
+.sp
+Note that the \fB<label>\fP is a mpv filter label, not a libavfilter filter
+name.
+.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),
+\fBao\-reload\fP (experimental/internal).
+.SS Hooks
+.sp
+Hooks are synchronous events between player core and a script or similar. This
+applies to client API (including the Lua scripting interface). Normally,
+events are supposed to be asynchronous, and the hook API provides an awkward
+and obscure way to handle events that require stricter coordination. There are
+no API stability guarantees made. Not following the protocol exactly can make
+the player freeze randomly. Basically, nobody should use this API.
+.sp
+There are two special commands involved. Also, the client must listen for
+client messages (\fBMPV_EVENT_CLIENT_MESSAGE\fP in the C API).
+.INDENT 0.0
+.TP
+.B \fBhook\-add <hook\-name> <id> <priority>\fP
+Subscribe to the hook identified by the first argument (basically, the
+name of event). The \fBid\fP argument is an arbitrary integer chosen by the
+user. \fBpriority\fP is used to sort all hook handlers globally across all
+clients. Each client can register multiple hook handlers (even for the
+same hook\-name). Once the hook is registered, it cannot be unregistered.
+.sp
+When a specific event happens, all registered handlers are run serially.
+This uses a protocol every client has to follow explicitly. When a hook
+handler is run, a client message (\fBMPV_EVENT_CLIENT_MESSAGE\fP) is sent to
+the client which registered the hook. This message has the following
+arguments:
+.INDENT 7.0
+.IP 1. 3
+the string \fBhook_run\fP
+.IP 2. 3
+the \fBid\fP argument the hook was registered with as string (this can be
+used to correctly handle multiple hooks registered by the same client,
+as long as the \fBid\fP argument is unique in the client)
+.IP 3. 3
+something undefined, used by the hook mechanism to track hook execution
+(currently, it\(aqs the hook\-name, but this might change without warning)
+.UNINDENT
+.sp
+Upon receiving this message, the client can handle the event. While doing
+this, the player core will still react to requests, but playback will
+typically be stopped.
+.sp
+When the client is done, it must continue the core\(aqs hook execution by
+running the \fBhook\-ack\fP command.
+.TP
+.B \fBhook\-ack <string>\fP
+Run the next hook in the global chain of hooks. The argument is the 3rd
+argument of the client message that starts hook execution for the
+current client.
+.UNINDENT
+.sp
+The following hooks are currently defined:
+.INDENT 0.0
+.TP
+.B \fBon_load\fP
+Called when a file is to be opened, before anything is actually done.
+For example, you could read and write the \fBstream\-open\-filename\fP
+property to redirect an URL to something else (consider support for
+streaming sites which rarely give the user a direct media URL), or
+you could set per\-file options with by setting the property
+\fBfile\-local\-options/<option name>\fP\&. The player will wait until all
+hooks are run.
+.TP
+.B \fBon_preloaded\fP
+Called after a file has been opened, and before tracks are selected and
+decoders are created. This has some usefulness if an API users wants
+to select tracks manually, based on the set of available tracks. It\(aqs
+also useful to initialize \fB\-\-lavfi\-complex\fP in a specific way by API,
+without having to "probe" the available streams at first.
+.sp
+Note that this does not yet apply default track selection. Which operations
+exactly can be done and not be done, and what information is available and
+what is not yet available yet, is all subject to change.
+.TP
+.B \fBon_unload\fP
+Run before closing a file, and before actually uninitializing
+everything. It\(aqs not possible to resume playback in this state.
+.UNINDENT
+.SS Input Command Prefixes
+.sp
+These prefixes are placed between key name and the actual command. Multiple
+prefixes can be specified. They are separated by whitespace.
+.INDENT 0.0
+.TP
+.B \fBosd\-auto\fP
+Use the default behavior for this command. This is the default for
+\fBinput.conf\fP commands. Some libmpv/scripting/IPC APIs do not use this as
+default, but use \fBno\-osd\fP instead.
+.TP
+.B \fBno\-osd\fP
+Do not use any OSD for this command.
+.TP
+.B \fBosd\-bar\fP
+If possible, show a bar with this command. Seek commands will show the
+progress bar, property changing commands may show the newly set value.
+.TP
+.B \fBosd\-msg\fP
+If possible, show an OSD message with this command. Seek command show
+the current playback time, property changing commands show the newly set
+value as text.
+.TP
+.B \fBosd\-msg\-bar\fP
+Combine osd\-bar and osd\-msg.
+.TP
+.B \fBraw\fP
+Do not expand properties in string arguments. (Like \fB"${property\-name}"\fP\&.)
+This is the default for some libmpv/scripting/IPC APIs.
+.TP
+.B \fBexpand\-properties\fP
+All string arguments are expanded as described in \fI\%Property Expansion\fP\&.
+This is the default for \fBinput.conf\fP commands.
+.TP
+.B \fBrepeatable\fP
+For some commands, keeping a key pressed doesn\(aqt run the command repeatedly.
+This prefix forces enabling key repeat in any case.
+.TP
+.B \fBasync\fP
+Allow asynchronous execution (if possible). Note that only a few commands
+will support this (usually this is explicitly documented). Some commands
+are asynchronous by default (or rather, their effects might manifest
+after completion of the command). The semantics of this flag might change
+in the future. Set it only if you don\(aqt rely on the effects of this command
+being fully realized when it returns.
+.UNINDENT
+.sp
+All of the osd prefixes are still overridden by the global \fB\-\-osd\-level\fP
+settings.
+.SS Input Sections
+.sp
+Input sections group a set of bindings, and enable or disable them at once.
+In \fBinput.conf\fP, each key binding is assigned to an input section, rather
+than actually having explicit text sections.
+.sp
+See also: \fBenable\-section\fP and \fBdisable\-section\fP commands.
+.sp
+Predefined bindings:
+.INDENT 0.0
+.TP
+.B \fBdefault\fP
+Bindings without input section are implicitly assigned to this section. It
+is enabled by default during normal playback.
+.TP
+.B \fBencode\fP
+Section which is active in encoding mode. It is enabled exclusively, so
+that bindings in the \fBdefault\fP sections are ignored.
+.UNINDENT
+.SS Properties
+.sp
+Properties are used to set mpv options during runtime, or to query arbitrary
+information. They can be manipulated with the \fBset\fP/\fBadd\fP/\fBcycle\fP
+commands, and retrieved with \fBshow\-text\fP, or anything else that uses property
+expansion. (See \fI\%Property Expansion\fP\&.)
+.sp
+The property name is annotated with RW to indicate whether the property is
+generally writable.
+.sp
+If an option is referenced, the property will normally take/return exactly the
+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 \fBaudio\-speed\-correction\fP, \fBvideo\-speed\-correction\fP
+Factor multiplied with \fBspeed\fP at which the player attempts to play the
+file. Usually it\(aqs exactly 1. (Display sync mode will make this useful.)
+.sp
+OSD formatting will display it in the form of \fB+1.23456%\fP, with the number
+being \fB(raw \- 1) * 100\fP for the given raw property value.
+.TP
+.B \fBdisplay\-sync\-active\fP
+Return whether \fB\-\-video\-sync=display\fP is actually active.
+.TP
+.B \fBfilename\fP
+Currently played file, with path stripped. If this is an URL, try to undo
+percent encoding as well. (The result is not necessarily correct, but
+looks better for display purposes. Use the \fBpath\fP property to get an
+unmodified filename.)
+.sp
+This has a sub\-property:
+.INDENT 7.0
+.TP
+.B \fBfilename/no\-ext\fP
+Like the \fBfilename\fP property, but if the text contains a \fB\&.\fP, strip
+all text after the last \fB\&.\fP\&. Usually this removes the file extension.
+.UNINDENT
+.TP
+.B \fBfile\-size\fP
+Length in bytes of the source file/stream. (This is the same as
+\fB${stream\-end}\fP\&. For ordered chapters and such, the
+size of the currently played segment is returned.)
+.TP
+.B \fBestimated\-frame\-count\fP
+Total number of frames in current file.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This is only an estimate. (It\(aqs computed from two unreliable
+quantities: fps and stream length.)
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBestimated\-frame\-number\fP
+Number of current frame in current stream.
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+This is only an estimate. (It\(aqs computed from two unreliable
+quantities: fps and possibly rounded timestamps.)
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBpath\fP
+Full path of the currently played file. Usually this is exactly the same
+string you pass on the mpv command line or the \fBloadfile\fP command, even
+if it\(aqs a relative path. If you expect an absolute path, you will have to
+determine it yourself, for example by using the \fBworking\-directory\fP
+property.
+.TP
+.B \fBmedia\-title\fP
+If the currently played file has a \fBtitle\fP tag, use that.
+.sp
+Otherwise, if the media type is DVD, return the volume ID of DVD.
+.sp
+Otherwise, return the \fBfilename\fP property.
+.TP
+.B \fBfile\-format\fP
+Symbolic name of the file format. In some cases, this is a comma\-separated
+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 \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
+useless. It looks like this can be different from \fBpath\fP only when
+using e.g. ordered chapters.)
+.TP
+.B \fBstream\-pos\fP
+Raw byte position in source stream. Technically, this returns the position
+of the most recent packet passed to a decoder.
+.TP
+.B \fBstream\-end\fP
+Raw end position in bytes in source stream.
+.TP
+.B \fBduration\fP
+Duration of the current file in seconds. If the duration is unknown, the
+property is unavailable. Note that the file duration is not always exactly
+known, so this is an estimate.
+.sp
+This replaces the \fBlength\fP property, which was deprecated after the
+mpv 0.9 release. (The semantics are the same.)
+.TP
+.B \fBavsync\fP
+Last A/V synchronization difference. Unavailable if audio or video is
+disabled.
+.TP
+.B \fBtotal\-avsync\-change\fP
+Total A\-V sync correction done. Unavailable if audio or video is
+disabled.
+.TP
+.B \fBdecoder\-frame\-drop\-count\fP
+Video frames dropped by decoder, because video is too far behind audio (when
+using \fB\-\-framedrop=decoder\fP). Sometimes, this may be incremented in other
+situations, e.g. when video packets are damaged, or the decoder doesn\(aqt
+follow the usual rules. Unavailable if video is disabled.
+.sp
+\fBdrop\-frame\-count\fP is a deprecated alias.
+.TP
+.B \fBframe\-drop\-count\fP
+Frames dropped by VO (when using \fB\-\-framedrop=vo\fP).
+.sp
+\fBvo\-drop\-frame\-count\fP is a deprecated alias.
+.TP
+.B \fBmistimed\-frame\-count\fP
+Number of video frames that were not timed correctly in display\-sync mode
+for the sake of keeping A/V sync. This does not include external
+circumstances, such as video rendering being too slow or the graphics
+driver somehow skipping a vsync. It does not include rounding errors either
+(which can happen especially with bad source timestamps). For example,
+using the \fBdisplay\-desync\fP mode should never change this value from 0.
+.TP
+.B \fBvsync\-ratio\fP
+For how many vsyncs a frame is displayed on average. This is available if
+display\-sync is active only. For 30 FPS video on a 60 Hz screen, this will
+be 2. This is the moving average of what actually has been scheduled, so
+24 FPS on 60 Hz will never remain exactly on 2.5, but jitter depending on
+the last frame displayed.
+.TP
+.B \fBvo\-delayed\-frame\-count\fP
+Estimated number of frames delayed due to external circumstances in
+display\-sync mode. Note that in general, mpv has to guess that this is
+happening, and the guess can be inaccurate.
+.TP
+.B \fBpercent\-pos\fP (RW)
+Position in current file (0\-100). The advantage over using this instead of
+calculating it out of other properties is that it properly falls back to
+estimating the playback position from the byte position, if the file
+duration is not known.
+.TP
+.B \fBtime\-pos\fP (RW)
+Position in current file in seconds.
+.TP
+.B \fBtime\-start\fP
+Deprecated. Always returns 0. Before mpv 0.14, this used to return the start
+time of the file (could affect e.g. transport streams). See
+\fB\-\-rebase\-start\-time\fP option.
+.TP
+.B \fBtime\-remaining\fP
+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
+.B \fBplayback\-time\fP (RW)
+Position in current file in seconds. Unlike \fBtime\-pos\fP, the time is
+clamped to the range of the file. (Inaccurate file durations etc. could
+make it go out of range. Useful on attempts to seek outside of the file,
+as the seek target time is considered the current position during seeking.)
+.TP
+.B \fBchapter\fP (RW)
+Current chapter number. The number of the first chapter is 0.
+.TP
+.B \fBedition\fP (RW)
+Current MKV edition number. Setting this property to a different value will
+restart playback. The number of the first edition is 0.
+.TP
+.B \fBdisc\-titles\fP
+Number of BD/DVD titles.
+.sp
+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based edition
+index.
+.INDENT 7.0
+.TP
+.B \fBdisc\-titles/count\fP
+Number of titles.
+.TP
+.B \fBdisc\-titles/id\fP
+Title ID as integer. Currently, this is the same as the title index.
+.TP
+.B \fBdisc\-titles/length\fP
+Length in seconds. Can be unavailable in a number of cases (currently
+it works for libdvdnav only).
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each edition)
+ "id" MPV_FORMAT_INT64
+ "length" MPV_FORMAT_DOUBLE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBdisc\-title\-list\fP
+List of BD/DVD titles.
+.TP
+.B \fBdisc\-title\fP (RW)
+Current BD/DVD title number. Writing works only for \fBdvdnav://\fP and
+\fBbd://\fP (and aliases for these).
+.TP
+.B \fBchapters\fP
+Number of chapters.
+.TP
+.B \fBeditions\fP
+Number of MKV editions.
+.TP
+.B \fBedition\-list\fP
+List of editions, current entry marked. Currently, the raw property value
+is useless.
+.sp
+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based edition
+index.
+.INDENT 7.0
+.TP
+.B \fBedition\-list/count\fP
+Number of editions. If there are no editions, this can be 0 or 1 (1
+if there\(aqs a useless dummy edition).
+.TP
+.B \fBedition\-list/N/id\fP
+Edition ID as integer. Use this to set the \fBedition\fP property.
+Currently, this is the same as the edition index.
+.TP
+.B \fBedition\-list/N/default\fP
+\fByes\fP if this is the default edition, \fBno\fP otherwise.
+.TP
+.B \fBedition\-list/N/title\fP
+Edition title as stored in the file. Not always available.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each edition)
+ "id" MPV_FORMAT_INT64
+ "title" MPV_FORMAT_STRING
+ "default" MPV_FORMAT_FLAG
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBangle\fP (RW)
+Current DVD angle.
+.TP
+.B \fBmetadata\fP
+Metadata key/value pairs.
+.sp
+If the property is accessed with Lua\(aqs \fBmp.get_property_native\fP, this
+returns a table with metadata keys mapping to metadata values. If it is
+accessed with the client API, this returns a \fBMPV_FORMAT_NODE_MAP\fP,
+with tag keys mapping to tag values.
+.sp
+For OSD, it returns a formatted list. Trying to retrieve this property as
+a raw string doesn\(aqt work.
+.sp
+This has a number of sub\-properties:
+.INDENT 7.0
+.TP
+.B \fBmetadata/by\-key/<key>\fP
+Value of metadata entry \fB<key>\fP\&.
+.TP
+.B \fBmetadata/list/count\fP
+Number of metadata entries.
+.TP
+.B \fBmetadata/list/N/key\fP
+Key name of the Nth metadata entry. (The first entry is \fB0\fP).
+.TP
+.B \fBmetadata/list/N/value\fP
+Value of the Nth metadata entry.
+.TP
+.B \fBmetadata/<key>\fP
+Old version of \fBmetadata/by\-key/<key>\fP\&. Use is discouraged, because
+the metadata key string could conflict with other sub\-properties.
+.UNINDENT
+.sp
+The layout of this property might be subject to change. Suggestions are
+welcome how exactly this property should work.
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_MAP
+ (key and string value for each metadata entry)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBfiltered\-metadata\fP
+Like \fBmetadata\fP, but includes only fields listed in the \fB\-\-display\-tags\fP
+option. This is the same set of tags that is printed to the terminal.
+.TP
+.B \fBchapter\-metadata\fP
+Metadata of current chapter. Works similar to \fBmetadata\fP property. It
+also allows the same access methods (using sub\-properties).
+.sp
+Per\-chapter metadata is very rare. Usually, only the chapter name
+(\fBtitle\fP) is set.
+.sp
+For accessing other information, like chapter start, see the
+\fBchapter\-list\fP property.
+.TP
+.B \fBvf\-metadata/<filter\-label>\fP
+Metadata added by video filters. Accessed by the filter label,
+which, if not explicitly specified using the \fB@filter\-label:\fP syntax,
+will be \fB<filter\-name>NN\fP\&.
+.sp
+Works similar to \fBmetadata\fP property. It allows the same access
+methods (using sub\-properties).
+.sp
+An example of this kind of metadata are the cropping parameters
+added by \fB\-\-vf=lavfi=cropdetect\fP\&.
+.TP
+.B \fBaf\-metadata/<filter\-label>\fP
+Equivalent to \fBvf\-metadata/<filter\-label>\fP, but for audio filters.
+.TP
+.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
+be different \fBpause\fP in special situations, such as when the player
+pauses itself due to low network cache.
+.sp
+This also returns \fByes\fP if playback is restarting or if nothing is
+playing at all. In other words, it\(aqs only \fBno\fP if there\(aqs actually
+video playing. (Behavior since mpv 0.7.0.)
+.TP
+.B \fBcache\fP
+Network cache fill state (0\-100.0).
+.TP
+.B \fBcache\-size\fP (RW)
+Network cache size in KB. This is similar to \fB\-\-cache\fP\&. This allows
+setting the cache size at runtime. Currently, it\(aqs not possible to enable
+or disable the cache at runtime using this property, just to resize an
+existing cache.
+.sp
+This does not include the backbuffer size (changed after mpv 0.10.0).
+.sp
+Note that this tries to keep the cache contents as far as possible. To make
+this easier, the cache resizing code will allocate the new cache while the
+old cache is still allocated.
+.sp
+Don\(aqt use this when playing DVD or Blu\-ray.
+.TP
+.B \fBcache\-free\fP (R)
+Total free cache size in KB.
+.TP
+.B \fBcache\-used\fP (R)
+Total used cache size in KB.
+.TP
+.B \fBcache\-speed\fP (R)
+Current I/O read speed between the cache and the lower layer (like network).
+This gives the number bytes per seconds over a 1 second window (using
+the type \fBMPV_FORMAT_INT64\fP for the client API).
+.TP
+.B \fBcache\-idle\fP (R)
+Returns \fByes\fP if the cache is idle, which means the cache is filled as
+much as possible, and is currently not reading more data.
+.TP
+.B \fBdemuxer\-cache\-duration\fP
+Approximate duration of video buffered in the demuxer, in seconds. The
+guess is very unreliable, and often the property will not be available
+at all, even if data is buffered.
+.TP
+.B \fBdemuxer\-cache\-time\fP
+Approximate time of video buffered in the demuxer, in seconds. Same as
+\fBdemuxer\-cache\-duration\fP but returns the last timestamp of buffered
+data in demuxer.
+.TP
+.B \fBdemuxer\-cache\-idle\fP
+Returns \fByes\fP if the demuxer is idle, which means the demuxer cache is
+filled to the requested amount, and is currently not reading more data.
+.TP
+.B \fBdemuxer\-via\-network\fP
+Returns \fByes\fP if the stream demuxed via the main demuxer is most likely
+played via network. What constitutes "network" is not always clear, might
+be used for other types of untrusted streams, could be wrong in certain
+cases, and its definition might be changing. Also, external files (like
+separate audio files or streams) do not influence the value of this
+property (currently).
+.TP
+.B \fBdemuxer\-start\-time\fP (R)
+Returns the start time reported by the demuxer in fractional seconds.
+.TP
+.B \fBpaused\-for\-cache\fP
+Returns \fByes\fP when playback is paused because of waiting for the cache.
+.TP
+.B \fBcache\-buffering\-state\fP
+Return the percentage (0\-100) of the cache fill status until the player
+will unpause (related to \fBpaused\-for\-cache\fP).
+.TP
+.B \fBeof\-reached\fP
+Returns \fByes\fP if end of playback was reached, \fBno\fP otherwise. Note
+that this is usually interesting only if \fB\-\-keep\-open\fP is enabled,
+since otherwise the player will immediately play the next file (or exit
+or enter idle mode), and in these cases the \fBeof\-reached\fP property will
+logically be cleared immediately after it\(aqs set.
+.TP
+.B \fBseeking\fP
+Returns \fByes\fP if the player is currently seeking, or otherwise trying
+to restart playback. (It\(aqs possible that it returns \fByes\fP while a file
+is loaded, or when switching ordered chapter segments. This is because
+the same underlying code is used for seeking and resyncing.)
+.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 \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
+control. What this option does depends on the API. For example, on ALSA
+this usually changes system\-wide audio, while with PulseAudio this controls
+per\-application volume.
+.TP
+.B \fBao\-mute\fP (RW)
+Similar to \fBao\-volume\fP, but controls the mute state. May be unimplemented
+even if \fBao\-volume\fP works.
+.TP
+.B \fBaudio\-codec\fP
+Audio codec selected for decoding.
+.TP
+.B \fBaudio\-codec\-name\fP
+Audio codec.
+.TP
+.B \fBaudio\-params\fP
+Audio format as output by the audio decoder.
+This has a number of sub\-properties:
+.INDENT 7.0
+.TP
+.B \fBaudio\-params/format\fP
+The sample format as string. This uses the same names as used in other
+places of mpv.
+.TP
+.B \fBaudio\-params/samplerate\fP
+Samplerate.
+.TP
+.B \fBaudio\-params/channels\fP
+The channel layout as a string. This is similar to what the
+\fB\-\-audio\-channels\fP accepts.
+.TP
+.B \fBaudio\-params/hr\-channels\fP
+As \fBchannels\fP, but instead of the possibly cryptic actual layout
+sent to the audio device, return a hopefully more human readable form.
+(Usually only \fBaudio\-out\-params/hr\-channels\fP makes sense.)
+.TP
+.B \fBaudio\-params/channel\-count\fP
+Number of audio channels. This is redundant to the \fBchannels\fP field
+described above.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_MAP
+ "format" MPV_FORMAT_STRING
+ "samplerate" MPV_FORMAT_INT64
+ "channels" MPV_FORMAT_STRING
+ "channel\-count" MPV_FORMAT_INT64
+ "hr\-channels" MPV_FORMAT_STRING
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBaudio\-out\-params\fP
+Same as \fBaudio\-params\fP, but the format of the data written to the audio
+API.
+.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.
+.TP
+.B \fBcolormatrix\-input\-range\fP (R)
+See \fBcolormatrix\fP\&.
+.TP
+.B \fBcolormatrix\-primaries\fP (R)
+See \fBcolormatrix\fP\&.
+.TP
+.B \fBhwdec\fP (RW)
+Reflects the \fB\-\-hwdec\fP option.
+.sp
+Writing to it may change the currently used hardware decoder, if possible.
+(Internally, the player may reinitialize the decoder, and will perform a
+seek to refresh the video properly.) You can watch the other hwdec
+properties to see whether this was successful.
+.sp
+Unlike in mpv 0.9.x and before, this does not return the currently active
+hardware decoder. Since mpv 0.18.0, \fBhwdec\-current\fP is available for
+this purpose.
+.TP
+.B \fBhwdec\-current\fP
+Return the current hardware decoding in use. If decoding is active, return
+one of the values used by the \fBhwdec\fP option/property. \fBno\fP indicates
+software decoding. If no decoder is loaded, the property is unavailable.
+.TP
+.B \fBhwdec\-interop\fP
+This returns the currently loaded hardware decoding/output interop driver.
+This is known only once the VO has opened (and possibly later). With some
+VOs (like \fBopengl\fP), this might be never known in advance, but only when
+the decoder attempted to create the hw decoder successfully. (Using
+\fB\-\-opengl\-hwdec\-interop\fP can load it eagerly.) If there are multiple
+drivers loaded, they will be separated by \fB,\fP\&.
+.sp
+If no VO is active or no interop driver is known, this property is
+unavailable.
+.sp
+This does not necessarily use the same values as \fBhwdec\fP\&. There can be
+multiple interop drivers for the same hardware decoder, depending on
+platform and VO.
+.sp
+This is somewhat similar to the \fB\-\-opengl\-hwdec\-interop\fP option, but
+it returns the actually loaded backend, not the value of this option.
+.TP
+.B \fBvideo\-format\fP
+Video format as string.
+.TP
+.B \fBvideo\-codec\fP
+Video codec selected for decoding.
+.TP
+.B \fBwidth\fP, \fBheight\fP
+Video size. This uses the size of the video as decoded, or if no video
+frame has been decoded yet, the (possibly incorrect) container indicated
+size.
+.TP
+.B \fBvideo\-params\fP
+Video parameters, as output by the decoder (with overrides like aspect
+etc. applied). This has a number of sub\-properties:
+.INDENT 7.0
+.TP
+.B \fBvideo\-params/pixelformat\fP
+The pixel format as string. This uses the same names as used in other
+places of mpv.
+.TP
+.B \fBvideo\-params/average\-bpp\fP
+Average bits\-per\-pixel as integer. Subsampled planar formats use a
+different resolution, which is the reason this value can sometimes be
+odd or confusing. Can be unavailable with some formats.
+.TP
+.B \fBvideo\-params/plane\-depth\fP
+Bit depth for each color component as integer. This is only exposed
+for planar or single\-component formats, and is unavailable for other
+formats.
+.TP
+.B \fBvideo\-params/w\fP, \fBvideo\-params/h\fP
+Video size as integers, with no aspect correction applied.
+.TP
+.B \fBvideo\-params/dw\fP, \fBvideo\-params/dh\fP
+Video size as integers, scaled for correct aspect ratio.
+.TP
+.B \fBvideo\-params/aspect\fP
+Display aspect ratio as float.
+.TP
+.B \fBvideo\-params/par\fP
+Pixel aspect ratio.
+.TP
+.B \fBvideo\-params/colormatrix\fP
+The colormatrix in use as string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/colorlevels\fP
+The colorlevels as string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/primaries\fP
+The primaries in use as string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/gamma\fP
+The gamma function in use as string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/sig\-peak\fP
+The video file\(aqs tagged signal peak as float.
+.TP
+.B \fBvideo\-params/light\fP
+The light type in use as a string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/chroma\-location\fP
+Chroma location as string. (Exact values subject to change.)
+.TP
+.B \fBvideo\-params/rotate\fP
+Intended display rotation in degrees (clockwise).
+.TP
+.B \fBvideo\-params/stereo\-in\fP
+Source file stereo 3D mode. (See \fB\-\-video\-stereo\-mode\fP option.)
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_MAP
+ "pixelformat" MPV_FORMAT_STRING
+ "w" MPV_FORMAT_INT64
+ "h" MPV_FORMAT_INT64
+ "dw" MPV_FORMAT_INT64
+ "dh" MPV_FORMAT_INT64
+ "aspect" MPV_FORMAT_DOUBLE
+ "par" MPV_FORMAT_DOUBLE
+ "colormatrix" MPV_FORMAT_STRING
+ "colorlevels" MPV_FORMAT_STRING
+ "primaries" MPV_FORMAT_STRING
+ "gamma" MPV_FORMAT_STRING
+ "sig\-peak" MPV_FORMAT_DOUBLE
+ "light" MPV_FORMAT_STRING
+ "chroma\-location" MPV_FORMAT_STRING
+ "rotate" MPV_FORMAT_INT64
+ "stereo\-in" MPV_FORMAT_STRING
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBdwidth\fP, \fBdheight\fP
+Video display size. This is the video size after filters and aspect scaling
+have been applied. The actual video window size can still be different
+from this, e.g. if the user resized the video window manually.
+.sp
+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
+\fBvideo\-params\fP\&. Note that this is still not necessarily what the video
+window uses, since the user can change the window size, and all real VOs
+do their own scaling independently from the filter chain.
+.sp
+Has the same sub\-properties as \fBvideo\-params\fP\&.
+.TP
+.B \fBvideo\-frame\-info\fP
+Approximate information of the current frame. Note that if any of these
+are used on OSD, the information might be off by a few frames due to OSD
+redrawing and frame display being somewhat disconnected, and you might
+have to pause and force a redraw.
+.sp
+Sub\-properties:
+.sp
+\fBvideo\-frame\-info/picture\-type\fP
+\fBvideo\-frame\-info/interlaced\fP
+\fBvideo\-frame\-info/tff\fP
+\fBvideo\-frame\-info/repeat\fP
+.TP
+.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
+are used, this corresponds to decoder output.) This uses the average of
+the 10 past frame durations to calculate the FPS. It will be inaccurate
+if frame\-dropping is involved (such as when framedrop is explicitly
+enabled, or after precise seeking). Files with imprecise timestamps (such
+as Matroska) might lead to unstable results.
+.TP
+.B \fBwindow\-scale\fP (RW)
+Window size multiplier. Setting this will resize the video window to the
+values contained in \fBdwidth\fP and \fBdheight\fP multiplied with the value
+set with this property. Setting \fB1\fP will resize to original video size
+(or to be exact, the size the video filters output). \fB2\fP will set the
+double size, \fB0.5\fP halves the size.
+.TP
+.B \fBwindow\-minimized\fP
+Return whether the video window is minimized or not.
+.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.). 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
+of any display covered by the video, as retrieved by the underlying system
+APIs (e.g. xrandr on X11). It is not the measured FPS. It\(aqs not necessarily
+available on all platforms. Note that any of the listed facts may change
+any time without a warning.
+.TP
+.B \fBestimated\-display\-fps\fP
+Only available if display\-sync mode (as selected by \fB\-\-video\-sync\fP) is
+active. Returns the actual rate at which display refreshes seem to occur,
+measured by system time.
+.TP
+.B \fBvsync\-jitter\fP
+Estimated deviation factor of the vsync duration.
+.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
+\fBoverlay\-add\fP command. It gives you the actual OSD size, which can be
+different from the window size in some cases.
+.TP
+.B \fBosd\-par\fP
+Last known OSD display pixel aspect (can be 0).
+.TP
+.B \fBprogram\fP (W)
+Switch TS program (write\-only).
+.TP
+.B \fBdvb\-channel\fP (W)
+Pair of integers: card,channel of current DVB stream.
+Can be switched to switch to another channel on the same card.
+.TP
+.B \fBdvb\-channel\-name\fP (RW)
+Name of current DVB program.
+On write, a channel\-switch to the named channel on the same
+card is performed. Can also be used for channel switching.
+.TP
+.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 \fBtv\-brightness\fP, \fBtv\-contrast\fP, \fBtv\-saturation\fP, \fBtv\-hue\fP (RW)
+TV stuff.
+.TP
+.B \fBplaylist\-pos\fP (RW)
+Current position on playlist. The first entry is on position 0. Writing
+to the property will restart playback at the written entry.
+.TP
+.B \fBplaylist\-pos\-1\fP (RW)
+Same as \fBplaylist\-pos\fP, but 1\-based.
+.TP
+.B \fBplaylist\-count\fP
+Number of total playlist entries.
+.TP
+.B \fBplaylist\fP
+Playlist, current entry marked. Currently, the raw property value is
+useless.
+.sp
+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based playlist
+entry index.
+.INDENT 7.0
+.TP
+.B \fBplaylist/count\fP
+Number of playlist entries (same as \fBplaylist\-count\fP).
+.TP
+.B \fBplaylist/N/filename\fP
+Filename of the Nth entry.
+.TP
+.B \fBplaylist/N/current\fP, \fBplaylist/N/playing\fP
+\fByes\fP if this entry is currently playing (or being loaded).
+Unavailable or \fBno\fP otherwise. When changing files, \fBcurrent\fP and
+\fBplaying\fP can be different, because the currently playing file hasn\(aqt
+been unloaded yet; in this case, \fBcurrent\fP refers to the new
+selection. (Since mpv 0.7.0.)
+.TP
+.B \fBplaylist/N/title\fP
+Name of the Nth entry. Only available if the playlist file contains
+such fields, and only if mpv\(aqs parser supports it for the given
+playlist format.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each playlist entry)
+ "filename" MPV_FORMAT_STRING
+ "current" MPV_FORMAT_FLAG (might be missing; since mpv 0.7.0)
+ "playing" MPV_FORMAT_FLAG (same)
+ "title" MPV_FORMAT_STRING (optional)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBtrack\-list\fP
+List of audio/video/sub tracks, current entry marked. Currently, the raw
+property value is useless.
+.sp
+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based track
+index.
+.INDENT 7.0
+.TP
+.B \fBtrack\-list/count\fP
+Total number of tracks.
+.TP
+.B \fBtrack\-list/N/id\fP
+The ID as it\(aqs used for \fB\-sid\fP/\fB\-\-aid\fP/\fB\-\-vid\fP\&. This is unique
+within tracks of the same type (sub/audio/video), but otherwise not.
+.TP
+.B \fBtrack\-list/N/type\fP
+String describing the media type. One of \fBaudio\fP, \fBvideo\fP, \fBsub\fP\&.
+.TP
+.B \fBtrack\-list/N/src\-id\fP
+Track ID as used in the source file. Not always available.
+.TP
+.B \fBtrack\-list/N/title\fP
+Track title as it is stored in the file. Not always available.
+.TP
+.B \fBtrack\-list/N/lang\fP
+Track language as identified by the file. Not always available.
+.TP
+.B \fBtrack\-list/N/albumart\fP
+\fByes\fP if this is a video track that consists of a single picture,
+\fBno\fP or unavailable otherwise. This is used for video tracks that are
+really attached pictures in audio files.
+.TP
+.B \fBtrack\-list/N/default\fP
+\fByes\fP if the track has the default flag set in the file, \fBno\fP
+otherwise.
+.TP
+.B \fBtrack\-list/N/forced\fP
+\fByes\fP if the track has the forced flag set in the file, \fBno\fP
+otherwise.
+.TP
+.B \fBtrack\-list/N/codec\fP
+The codec name used by this track, for example \fBh264\fP\&. Unavailable
+in some rare cases.
+.TP
+.B \fBtrack\-list/N/external\fP
+\fByes\fP if the track is an external file, \fBno\fP otherwise. This is
+set for separate subtitle files.
+.TP
+.B \fBtrack\-list/N/external\-filename\fP
+The filename if the track is from an external file, unavailable
+otherwise.
+.TP
+.B \fBtrack\-list/N/selected\fP
+\fByes\fP if the track is currently decoded, \fBno\fP otherwise.
+.TP
+.B \fBtrack\-list/N/ff\-index\fP
+The stream index as usually used by the FFmpeg utilities. Note that
+this can be potentially wrong if a demuxer other than libavformat
+(\fB\-\-demuxer=lavf\fP) is used. For mkv files, the index will usually
+match even if the default (builtin) demuxer is used, but there is
+no hard guarantee.
+.TP
+.B \fBtrack\-list/N/decoder\-desc\fP
+If this track is being decoded, the human\-readable decoder name,
+.TP
+.B \fBtrack\-list/N/demux\-w\fP, \fBtrack\-list/N/demux\-h\fP
+Video size hint as indicated by the container. (Not always accurate.)
+.TP
+.B \fBtrack\-list/N/demux\-channel\-count\fP
+Number of audio channels as indicated by the container. (Not always
+accurate \- in particular, the track could be decoded as a different
+number of channels.)
+.TP
+.B \fBtrack\-list/N/demux\-channels\fP
+Channel layout as indicated by the container. (Not always accurate.)
+.TP
+.B \fBtrack\-list/N/demux\-samplerate\fP
+Audio sample rate as indicated by the container. (Not always accurate.)
+.TP
+.B \fBtrack\-list/N/demux\-fps\fP
+Video FPS as indicated by the container. (Not always accurate.)
+.TP
+.B \fBtrack\-list/N/audio\-channels\fP (deprecated)
+Deprecated alias for \fBtrack\-list/N/demux\-channel\-count\fP\&.
+.TP
+.B \fBtrack\-list/N/replaygain\-track\-peak\fP, \fBtrack\-list/N/replaygain\-track\-gain\fP
+Per\-track replaygain values. Only available for audio tracks with
+corresponding information stored in the source file.
+.TP
+.B \fBtrack\-list/N/replaygain\-album\-peak\fP, \fBtrack\-list/N/replaygain\-album\-gain\fP
+Per\-album replaygain values. If the file has per\-track but no per\-album
+information, the per\-album values will be copied from the per\-track
+values currently. It\(aqs possible that future mpv versions will make
+these properties unavailable instead in this case.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each track)
+ "id" MPV_FORMAT_INT64
+ "type" MPV_FORMAT_STRING
+ "src\-id" MPV_FORMAT_INT64
+ "title" MPV_FORMAT_STRING
+ "lang" MPV_FORMAT_STRING
+ "albumart" MPV_FORMAT_FLAG
+ "default" MPV_FORMAT_FLAG
+ "forced" MPV_FORMAT_FLAG
+ "selected" MPV_FORMAT_FLAG
+ "external" MPV_FORMAT_FLAG
+ "external\-filename" MPV_FORMAT_STRING
+ "codec" MPV_FORMAT_STRING
+ "ff\-index" MPV_FORMAT_INT64
+ "decoder\-desc" MPV_FORMAT_STRING
+ "demux\-w" MPV_FORMAT_INT64
+ "demux\-h" MPV_FORMAT_INT64
+ "demux\-channel\-count" MPV_FORMAT_INT64
+ "demux\-channels" MPV_FORMAT_STRING
+ "demux\-samplerate" MPV_FORMAT_INT64
+ "demux\-fps" MPV_FORMAT_DOUBLE
+ "audio\-channels" MPV_FORMAT_INT64
+ "replaygain\-track\-peak" MPV_FORMAT_DOUBLE
+ "replaygain\-track\-gain" MPV_FORMAT_DOUBLE
+ "replaygain\-album\-peak" MPV_FORMAT_DOUBLE
+ "replaygain\-album\-gain" MPV_FORMAT_DOUBLE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBchapter\-list\fP
+List of chapters, current entry marked. Currently, the raw property value
+is useless.
+.sp
+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based chapter
+index.
+.INDENT 7.0
+.TP
+.B \fBchapter\-list/count\fP
+Number of chapters.
+.TP
+.B \fBchapter\-list/N/title\fP
+Chapter title as stored in the file. Not always available.
+.TP
+.B \fBchapter\-list/N/time\fP
+Chapter start time in seconds as float.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each chapter)
+ "title" MPV_FORMAT_STRING
+ "time" MPV_FORMAT_DOUBLE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each filter entry)
+ "name" MPV_FORMAT_STRING
+ "label" MPV_FORMAT_STRING [optional]
+ "enabled" MPV_FORMAT_FLAG [optional]
+ "params" MPV_FORMAT_NODE_MAP [optional]
+ "key" MPV_FORMAT_STRING
+ "value" MPV_FORMAT_STRING
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+It\(aqs also possible to write the property using this format.
+.TP
+.B \fBseekable\fP
+Return whether it\(aqs generally possible to seek in the current file.
+.TP
+.B \fBpartially\-seekable\fP
+Return \fByes\fP if the current file is considered seekable, but only because
+the cache is active. This means small relative seeks may be fine, but larger
+seeks may fail anyway. Whether a seek will succeed or not is generally not
+known in advance.
+.sp
+If this property returns true, \fBseekable\fP will also return true.
+.TP
+.B \fBplayback\-abort\fP
+Return whether playback is stopped or is to be stopped. (Useful in obscure
+situations like during \fBon_load\fP hook processing, when the user can
+stop playback, but the script has to explicitly end processing.)
+.TP
+.B \fBcursor\-autohide\fP (RW)
+See \fB\-\-cursor\-autohide\fP\&. Setting this to a new value will always update
+the cursor, and reset the internal timer.
+.TP
+.B \fBosd\-sym\-cc\fP
+Inserts the current OSD symbol as opaque OSD control code (cc). This makes
+sense only with the \fBshow\-text\fP command or options which set OSD messages.
+The control code is implementation specific and is useless for anything else.
+.TP
+.B \fBosd\-ass\-cc\fP
+\fB${osd\-ass\-cc/0}\fP disables escaping ASS sequences of text in OSD,
+\fB${osd\-ass\-cc/1}\fP enables it again. By default, ASS sequences are
+escaped to avoid accidental formatting, and this property can disable
+this behavior. Note that the properties return an opaque OSD control
+code, which only makes sense for the \fBshow\-text\fP command or options
+which set OSD messages.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.INDENT 0.0
+.IP \(bu 2
+\fB\-\-osd\-status\-msg=\(aqThis is ${osd\-ass\-cc/0}{\e\eb1}bold text\(aq\fP
+.IP \(bu 2
+\fBshow\-text "This is ${osd\-ass\-cc/0}{\eb1}bold text"\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Any ASS override tags as understood by libass can be used.
+.sp
+Note that you need to escape the \fB\e\fP character, because the string is
+processed for C escape sequences before passing it to the OSD code.
+.sp
+A list of tags can be found here: \fI\%http://docs.aegisub.org/latest/ASS_Tags/\fP
+.TP
+.B \fBvo\-configured\fP
+Return whether the VO is configured right now. Usually this corresponds to
+whether the video window is visible. If the \fB\-\-force\-window\fP option is
+used, this is usually always returns \fByes\fP\&.
+.TP
+.B \fBvo\-passes\fP
+Contains introspection about the VO\(aqs active render passes and their
+execution times. Not implemented by all VOs.
+.sp
+This is further subdivided into two frame types, \fBvo\-passes/fresh\fP for
+fresh frames (which have to be uploaded, scaled, etc.) and
+\fBvo\-passes/redraw\fP for redrawn frames (which only have to be re\-painted).
+The number of passes for any given subtype can change from frame to frame,
+and should not be relied upon.
+.sp
+Each frame type has a number of further sub\-properties. Replace \fBTYPE\fP
+with the frame type, \fBN\fP with the 0\-based pass index, and \fBM\fP with the
+0\-based sample index.
+.INDENT 7.0
+.TP
+.B \fBvo\-passes/TYPE/count\fP
+Number of passes.
+.TP
+.B \fBvo\-passes/TYPE/N/desc\fP
+Human\-friendy description of the pass.
+.TP
+.B \fBvo\-passes/TYPE/N/last\fP
+Last measured execution time, in nanoseconds.
+.TP
+.B \fBvo\-passes/TYPE/N/avg\fP
+Average execution time of this pass, in nanoseconds. The exact
+timeframe varies, but it should generally be a handful of seconds.
+.TP
+.B \fBvo\-passes/TYPE/N/peak\fP
+The peak execution time (highest value) within this averaging range, in
+nanoseconds.
+.TP
+.B \fBvo\-passes/TYPE/N/count\fP
+The number of samples for this pass.
+.TP
+.B \fBvo\-passes/TYPE/N/samples/M\fP
+The raw execution time of a specific sample for this pass, in
+nanoseconds.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_MAP
+"TYPE" MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP
+ "desc" MPV_FORMAT_STRING
+ "last" MPV_FORMAT_INT64
+ "avg" MPV_FORMAT_INT64
+ "peak" MPV_FORMAT_INT64
+ "count" MPV_FORMAT_INT64
+ "samples" MPV_FORMAT_NODE_ARRAY
+ MP_FORMAT_INT64
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Note that directly accessing this structure via subkeys is not supported,
+the only access is through aforementioned \fBMPV_FORMAT_NODE\fP\&.
+.TP
+.B \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP, \fBsub\-bitrate\fP
+Bitrate values calculated on the packet level. This works by dividing the
+bit size of all packets between two keyframes by their presentation
+timestamp distance. (This uses the timestamps are stored in the file, so
+e.g. playback speed does not influence the returned values.) In particular,
+the video bitrate will update only per keyframe, and show the "past"
+bitrate. To make the property more UI friendly, updates to these properties
+are throttled in a certain way.
+.sp
+The unit is bits per second. OSD formatting turns these values in kilobits
+(or megabits, if appropriate), which can be prevented by using the
+raw property value, e.g. with \fB${=video\-bitrate}\fP\&.
+.sp
+Note that the accuracy of these properties is influenced by a few factors.
+If the underlying demuxer rewrites the packets on demuxing (done for some
+file formats), the bitrate might be slightly off. If timestamps are bad
+or jittery (like in Matroska), even constant bitrate streams might show
+fluctuating bitrate.
+.sp
+How exactly these values are calculated might change in the future.
+.sp
+In earlier versions of mpv, these properties returned a static (but bad)
+guess using a completely different method.
+.TP
+.B \fBpacket\-video\-bitrate\fP, \fBpacket\-audio\-bitrate\fP, \fBpacket\-sub\-bitrate\fP
+Old and deprecated properties for \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP,
+\fBsub\-bitrate\fP\&. They behave exactly the same, but return a value in
+kilobits. Also, they don\(aqt have any OSD formatting, though the same can be
+achieved with e.g. \fB${=video\-bitrate}\fP\&.
+.sp
+These properties shouldn\(aqt be used anymore.
+.TP
+.B \fBaudio\-device\-list\fP
+Return the list of discovered audio devices. This is mostly for use with
+the client API, and reflects what \fB\-\-audio\-device=help\fP with the command
+line player returns.
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each device entry)
+ "name" MPV_FORMAT_STRING
+ "description" MPV_FORMAT_STRING
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The \fBname\fP is what is to be passed to the \fB\-\-audio\-device\fP option (and
+often a rather cryptic audio API\-specific ID), while \fBdescription\fP is
+human readable free form text. The description is set to the device name
+(minus mpv\-specific \fB<driver>/\fP prefix) if no description is available
+or the description would have been an empty string.
+.sp
+The special entry with the name set to \fBauto\fP selects the default audio
+output driver and the default device.
+.sp
+The property can be watched with the property observation mechanism in
+the client API and in Lua scripts. (Technically, change notification is
+enabled the first time this property is read.)
+.TP
+.B \fBaudio\-device\fP (RW)
+Set the audio device. This directly reads/writes the \fB\-\-audio\-device\fP
+option, but on write accesses, the audio output will be scheduled for
+reloading.
+.sp
+Writing this property while no audio output is active will not automatically
+enable audio. (This is also true in the case when audio was disabled due to
+reinitialization failure after a previous write access to \fBaudio\-device\fP\&.)
+.sp
+This property also doesn\(aqt tell you which audio device is actually in use.
+.sp
+How these details are handled may change in the future.
+.TP
+.B \fBcurrent\-vo\fP
+Current video output driver (name as used with \fB\-\-vo\fP).
+.TP
+.B \fBcurrent\-ao\fP
+Current audio output driver (name as used with \fB\-\-ao\fP).
+.TP
+.B \fBaudio\-out\-detected\-device\fP
+Return the audio device selected by the AO driver (only implemented for
+some drivers: currently only \fBcoreaudio\fP).
+.TP
+.B \fBworking\-directory\fP
+Return the working directory of the mpv process. Can be useful for JSON IPC
+users, because the command line player usually works with relative paths.
+.TP
+.B \fBprotocol\-list\fP
+List of protocol prefixes potentially recognized by the player. They are
+returned without trailing \fB://\fP suffix (which is still always required).
+In some cases, the protocol will not actually be supported (consider
+\fBhttps\fP if ffmpeg is not compiled with TLS support).
+.TP
+.B \fBdecoder\-list\fP
+List of decoders supported. This lists decoders which can be passed to
+\fB\-\-vd\fP and \fB\-\-ad\fP\&.
+.INDENT 7.0
+.TP
+.B \fBfamily\fP
+Decoder driver. Usually \fBlavc\fP for libavcodec.
+.TP
+.B \fBcodec\fP
+Canonical codec name, which identifies the format the decoder can
+handle.
+.TP
+.B \fBdriver\fP
+The name of the decoder itself. Often, this is the same as \fBcodec\fP\&.
+Sometimes it can be different. It is used to distinguish multiple
+decoders for the same codec.
+.TP
+.B \fBdescription\fP
+Human readable description of the decoder and codec.
+.UNINDENT
+.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
+the following contents:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+MPV_FORMAT_NODE_ARRAY
+ MPV_FORMAT_NODE_MAP (for each decoder entry)
+ "family" MPV_FORMAT_STRING
+ "codec" MPV_FORMAT_STRING
+ "driver" MPV_FORMAT_STRING
+ "description" MPV_FORMAT_STRING
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBencoder\-list\fP
+List of libavcodec encoders. This has the same format as \fBdecoder\-list\fP\&.
+The encoder names (\fBdriver\fP entries) can be passed to \fB\-\-ovc\fP and
+\fB\-\-oac\fP (without the \fBlavc:\fP prefix required by \fB\-\-vd\fP and \fB\-\-ad\fP).
+.TP
+.B \fBmpv\-version\fP
+Return the mpv version/copyright string. Depending on how the binary was
+built, it might contain either a release version, or just a git hash.
+.TP
+.B \fBmpv\-configuration\fP
+Return the configuration arguments which were passed to the build system
+(typically the way \fB\&./waf configure ...\fP was invoked).
+.TP
+.B \fBffmpeg\-version\fP
+Return the contents of the \fBav_version_info()\fP API call. This is a string
+which identifies the build in some way, either through a release version
+number, or a git hash. This applies to Libav as well (the property is
+still named the same.) This property is unavailable if mpv is linked against
+older FFmpeg and Libav versions.
+.TP
+.B \fBoptions/<name>\fP (RW)
+Read\-only access to value of option \fB\-\-<name>\fP\&. Most options can be
+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
+property, the option is reset to its old value once the current file has
+stopped playing. Trying to write an option while no file is playing (or
+is being loaded) results in an error.
+.sp
+(Note that if an option is marked as file\-local, even \fBoptions/\fP will
+access the local value, and the \fBold\fP value, which will be restored on
+end of playback, cannot be read or written until end of playback.)
+.TP
+.B \fBoption\-info/<name>\fP
+Additional per\-option information.
+.sp
+This has a number of sub\-properties. Replace \fB<name>\fP with the name of
+a top\-level option. No guarantee of stability is given to any of these
+sub\-properties \- they may change radically in the feature.
+.INDENT 7.0
+.TP
+.B \fBoption\-info/<name>/name\fP
+Returns the name of the option.
+.TP
+.B \fBoption\-info/<name>/type\fP
+Return the name of the option type, like \fBString\fP or \fBInteger\fP\&.
+For many complex types, this isn\(aqt very accurate.
+.TP
+.B \fBoption\-info/<name>/set\-from\-commandline\fP
+Return \fByes\fP if the option was set from the mpv command line,
+\fBno\fP otherwise. What this is set to if the option is e.g. changed
+at runtime is left undefined (meaning it could change in the future).
+.TP
+.B \fBoption\-info/<name>/set\-locally\fP
+Return \fByes\fP if the option was set per\-file. This is the case with
+automatically loaded profiles, file\-dir configs, and other cases. It
+means the option value will be restored to the value before playback
+start when playback ends.
+.TP
+.B \fBoption\-info/<name>/default\-value\fP
+The default value of the option. May not always be available.
+.TP
+.B \fBoption\-info/<name>/min\fP, \fBoption\-info/<name>/max\fP
+Integer minimum and maximum values allowed for the option. Only
+available if the options are numeric, and the minimum/maximum has been
+set internally. It\(aqs also possible that only one of these is set.
+.TP
+.B \fBoption\-info/<name>/choices\fP
+If the option is a choice option, the possible choices. Choices that
+are integers may or may not be included (they can be implied by \fBmin\fP
+and \fBmax\fP). Note that options which behave like choice options, but
+are not actual choice options internally, may not have this info
+available.
+.UNINDENT
+.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 \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 \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 \fBplaylist\-pos\fP, \fBchapter\fP
+These properties behave different from the deprecated options with the same
+names.
+.TP
+.B \fBprofile\fP, \fBinclude\fP
+These are write\-only, and will perform actions as they are written to,
+exactly as if they were used on the mpv CLI commandline. Their only use is
+when using libmpv before \fBmpv_initialize()\fP, which in turn is probably
+only useful in encoding mode. Normal libmpv users should use other
+mechanisms, such as the \fBapply\-profile\fP command, and the
+\fBmpv_load_config_file\fP API function. Avoid these properties.
+.UNINDENT
+.SS Property Expansion
+.sp
+All string arguments to input commands as well as certain options (like
+\fB\-\-term\-playing\-msg\fP) are subject to property expansion. Note that property
+expansion does not work in places where e.g. numeric parameters are expected.
+(For example, the \fBadd\fP command does not do property expansion. The \fBset\fP
+command is an exception and not a general rule.)
+.INDENT 0.0
+.INDENT 3.5
+.IP "Example for input.conf"
+.INDENT 0.0
+.TP
+.B \fBi show\-text "Filename: ${filename}"\fP
+shows the filename of the current file when pressing the \fBi\fP key
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Within \fBinput.conf\fP, property expansion can be inhibited by putting the
+\fBraw\fP prefix in front of commands.
+.sp
+The following expansions are supported:
+.INDENT 0.0
+.TP
+.B \fB${NAME}\fP
+Expands to the value of the property \fBNAME\fP\&. If retrieving the property
+fails, expand to an error string. (Use \fB${NAME:}\fP with a trailing
+\fB:\fP to expand to an empty string instead.)
+If \fBNAME\fP is prefixed with \fB=\fP, expand to the raw value of the property
+(see section below).
+.TP
+.B \fB${NAME:STR}\fP
+Expands to the value of the property \fBNAME\fP, or \fBSTR\fP if the
+property cannot be retrieved. \fBSTR\fP is expanded recursively.
+.TP
+.B \fB${?NAME:STR}\fP
+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP is available.
+.TP
+.B \fB${!NAME:STR}\fP
+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP cannot be
+retrieved.
+.TP
+.B \fB${?NAME==VALUE:STR}\fP
+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP expands to a
+string equal to \fBVALUE\fP\&. You can prefix \fBNAME\fP with \fB=\fP in order to
+compare the raw value of a property (see section below). If the property
+is unavailable, or other errors happen when retrieving it, the value is
+never considered equal.
+Note that \fBVALUE\fP can\(aqt contain any of the characters \fB:\fP or \fB}\fP\&.
+Also, it is possible that escaping with \fB"\fP or \fB%\fP might be added in
+the future, should the need arise.
+.TP
+.B \fB${!NAME==VALUE:STR}\fP
+Same as with the \fB?\fP variant, but \fBSTR\fP is expanded if the value is
+not equal. (Using the same semantics as with \fB?\fP\&.)
+.TP
+.B \fB$$\fP
+Expands to \fB$\fP\&.
+.TP
+.B \fB$}\fP
+Expands to \fB}\fP\&. (To produce this character inside recursive
+expansion.)
+.TP
+.B \fB$>\fP
+Disable property expansion and special handling of \fB$\fP for the rest
+of the string.
+.UNINDENT
+.sp
+In places where property expansion is allowed, C\-style escapes are often
+accepted as well. Example:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+\fB\en\fP becomes a newline character
+.IP \(bu 2
+\fB\e\e\fP expands to \fB\e\fP
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SS Raw and Formatted Properties
+.sp
+Normally, properties are formatted as human\-readable text, meant to be
+displayed on OSD or on the terminal. It is possible to retrieve an unformatted
+(raw) value from a property by prefixing its name with \fB=\fP\&. These raw values
+can be parsed by other programs and follow the same conventions as the options
+associated with the properties.
+.INDENT 0.0
+.INDENT 3.5
+.IP "Examples"
+.INDENT 0.0
+.IP \(bu 2
+\fB${time\-pos}\fP expands to \fB00:14:23\fP (if playback position is at 14
+minutes 23 seconds)
+.IP \(bu 2
+\fB${=time\-pos}\fP expands to \fB863.4\fP (same time, plus 400 milliseconds \-
+milliseconds are normally not shown in the formatted case)
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Sometimes, the difference in amount of information carried by raw and formatted
+property values can be rather big. In some cases, raw values have more
+information, like higher precision than seconds with \fBtime\-pos\fP\&. Sometimes
+it is the other way around, e.g. \fBaid\fP shows track title and language in the
+formatted case, but only the track number if it is raw.
+.SH ON SCREEN CONTROLLER
+.sp
+The On Screen Controller (short: OSC) is a minimal GUI integrated with mpv to
+offer basic mouse\-controllability. It is intended to make interaction easier
+for new users and to enable precise and direct seeking.
+.sp
+The OSC is enabled by default if mpv was compiled with Lua support. It can be
+disabled entirely using the \fB\-\-osc=no\fP option.
+.SS Using the OSC
+.sp
+By default, the OSC will show up whenever the mouse is moved inside the
+player window and will hide if the mouse is not moved outside the OSC for
+0.5 seconds or if the mouse leaves the window.
+.SS The Interface
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
++\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
+| pl prev | pl next | title | cache |
++\-\-\-\-\-\-+\-\-+\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
+| play | skip | skip | time | seekbar | time | audio | sub | vol | fs |
+| | back | frwd | elapsed | | left | | | | |
++\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B pl prev
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+play previous file in playlist
+T}
+_
+T{
+right\-click
+T} T{
+show playlist
+T}
+_
+T{
+shift+L\-click
+T} T{
+show playlist
+T}
+_
+.TE
+.TP
+.B pl next
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+play next file in playlist
+T}
+_
+T{
+right\-click
+T} T{
+show playlist
+T}
+_
+T{
+shift+L\-click
+T} T{
+show playlist
+T}
+_
+.TE
+.TP
+.B title
+.nf
+Displays current media\-title, filename, or custom title
+.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 cache
+.nf
+Shows current cache fill status
+.fi
+.sp
+.TP
+.B play
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+toggle play/pause
+T}
+_
+.TE
+.TP
+.B skip back
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+go to beginning of chapter / previous chapter
+T}
+_
+T{
+right\-click
+T} T{
+show chapters
+T}
+_
+T{
+shift+L\-click
+T} T{
+show chapters
+T}
+_
+.TE
+.TP
+.B skip frwd
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+go to next chapter
+T}
+_
+T{
+right\-click
+T} T{
+show chapters
+T}
+_
+T{
+shift+L\-click
+T} T{
+show chapters
+T}
+_
+.TE
+.TP
+.B time elapsed
+.nf
+Shows current playback position timestamp
+.fi
+.sp
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+toggle displaying timecodes with milliseconds
+T}
+_
+.TE
+.TP
+.B seekbar
+.nf
+Indicates current playback position and position of chapters
+.fi
+.sp
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+seek to position
+T}
+_
+.TE
+.TP
+.B time left
+.nf
+Shows remaining playback time timestamp
+.fi
+.sp
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+toggle between total and remaining time
+T}
+_
+.TE
+.TP
+.B audio and sub
+.nf
+Displays selected track and amount of available tracks
+.fi
+.sp
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+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
+.TP
+.B vol
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+toggle mute
+T}
+_
+T{
+mouse wheel
+T} T{
+volume up/down
+T}
+_
+.TE
+.TP
+.B fs
+.TS
+center;
+|l|l|.
+_
+T{
+left\-click
+T} T{
+toggle fullscreen
+T}
+_
+.TE
+.UNINDENT
+.SS Key Bindings
+.sp
+These key bindings are active by default if nothing else is already bound to
+these keys. In case of collision, the function needs to be bound to a
+different key. See the \fI\%Script Commands\fP section.
+.TS
+center;
+|l|l|.
+_
+T{
+del
+T} T{
+Cycles visibility between never / auto (mouse\-move) / always
+T}
+_
+.TE
+.SS Configuration
+.sp
+The OSC offers limited configuration through a config file
+\fBlua\-settings/osc.conf\fP placed in mpv\(aqs user dir and through the
+\fB\-\-script\-opts\fP command\-line option. Options provided through the command\-line
+will override those from the config file.
+.SS Config Syntax
+.sp
+The config file must exactly follow the following syntax:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# this is a comment
+optionA=value1
+optionB=value2
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fB#\fP can only be used at the beginning of a line and there may be no
+spaces around the \fB=\fP or anywhere else.
+.SS Command\-line Syntax
+.sp
+To avoid collisions with other scripts, all options need to be prefixed with
+\fBosc\-\fP\&.
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+\-\-script\-opts=osc\-optionA=value1,osc\-optionB=value2
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Configurable Options
+.INDENT 0.0
+.TP
+.B \fBlayout\fP
+Default: bottombar
+.sp
+The layout for the OSC. Currently available are: box, slimbox,
+bottombar and topbar. Default pre\-0.21.0 was \(aqbox\(aq.
+.TP
+.B \fBseekbarstyle\fP
+Default: bar
+.sp
+Sets the style of the seekbar, slider (diamond marker), knob (circle
+marker with guide), or bar (fill).
+Default pre\-0.21.0 was \(aqslider\(aq.
+.TP
+.B \fBdeadzonesize\fP
+Default: 0.5
+.sp
+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.0 and 1.0, 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. Default pre\-0.21.0 was 0.
+.TP
+.B \fBminmousemove\fP
+Default: 0
+.sp
+Minimum amount of pixels the mouse has to move between ticks to make
+the OSC show up. Default pre\-0.21.0 was 3.
+.TP
+.B \fBshowwindowed\fP
+Default: yes
+.sp
+Enable the OSC when windowed
+.TP
+.B \fBshowfullscreen\fP
+Default: yes
+.sp
+Enable the OSC when fullscreen
+.TP
+.B \fBscalewindowed\fP
+Default: 1.0
+.sp
+Scale factor of the OSC when windowed.
+.TP
+.B \fBscalefullscreen\fP
+Default: 1.0
+.sp
+Scale factor of the OSC when fullscreen
+.TP
+.B \fBscaleforcedwindow\fP
+Default: 2.0
+.sp
+Scale factor of the OSC when rendered on a forced (dummy) window
+.TP
+.B \fBvidscale\fP
+Default: yes
+.sp
+Scale the OSC with the video
+\fBno\fP tries to keep the OSC size constant as much as the window size allows
+.TP
+.B \fBvalign\fP
+Default: 0.8
+.sp
+Vertical alignment, \-1 (top) to 1 (bottom)
+.TP
+.B \fBhalign\fP
+Default: 0.0
+.sp
+Horizontal alignment, \-1 (left) to 1 (right)
+.TP
+.B \fBbarmargin\fP
+Default: 0
+.sp
+Margin from bottom (bottombar) or top (topbar), in pixels
+.TP
+.B \fBboxalpha\fP
+Default: 80
+.sp
+Alpha of the background box, 0 (opaque) to 255 (fully transparent)
+.TP
+.B \fBhidetimeout\fP
+Default: 500
+.sp
+Duration in ms until the OSC hides if no mouse movement, must not be
+negative
+.TP
+.B \fBfadeduration\fP
+Default: 200
+.sp
+Duration of fade out in ms, 0 = no fade
+.TP
+.B \fBtitle\fP
+Default: ${media\-title}
+.sp
+String that supports property expansion that will be displayed as
+OSC title.
+ASS tags are escaped, and newlines and trailing slashes are stripped.
+.TP
+.B \fBtooltipborder\fP
+Default: 1
+.sp
+Size of the tooltip outline when using bottombar or topbar layouts
+.TP
+.B \fBtimetotal\fP
+Default: no
+.sp
+Show total time instead of time remaining
+.TP
+.B \fBtimems\fP
+Default: no
+.sp
+Display timecodes with milliseconds
+.TP
+.B \fBvisibility\fP
+Default: auto (auto hide/show on mouse move)
+.sp
+Also supports \fBnever\fP and \fBalways\fP
+.TP
+.B \fBboxmaxchars\fP
+Default: 80
+.sp
+Max chars for the osc title at the box layout. mpv does not measure the
+text width on screen and so it needs to limit it by number of chars. The
+default is conservative to allow wide fonts to be used without overflow.
+However, with many common fonts a bigger number can be used. YMMV.
+.UNINDENT
+.SS Script Commands
+.sp
+The OSC script listens to certain script commands. These commands can bound
+in \fBinput.conf\fP, or sent by other scripts.
+.INDENT 0.0
+.TP
+.B \fBosc\-message\fP
+Show a message on screen using the OSC. First argument is the message,
+second the duration in seconds.
+.TP
+.B \fBosc\-visibility\fP
+Controls visibility mode \fBnever\fP / \fBauto\fP (on mouse move) / \fBalways\fP
+and also \fBcycle\fP to cycle between the modes
+.UNINDENT
+.sp
+Example
+.sp
+You could put this into \fBinput.conf\fP to hide the OSC with the \fBa\fP key and
+to set auto mode (the default) with \fBb\fP:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+a script\-message osc\-visibility never
+b script\-message osc\-visibility auto
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fBosc\-playlist\fP, \fBosc\-chapterlist\fP, \fBosc\-tracklist\fP
+Shows a limited view of the respective type of list using the OSC. First
+argument is duration in seconds.
+.UNINDENT
+.SH LUA SCRIPTING
+.sp
+mpv can load Lua scripts. Scripts passed to the \fB\-\-script\fP option, or found in
+the \fBscripts\fP subdirectory of the mpv configuration directory (usually
+\fB~/.config/mpv/scripts/\fP) will be loaded on program start. mpv also appends the
+\fBscripts\fP subdirectory to the end of Lua\(aqs path so you can import scripts from
+there too. Since it\(aqs added to the end, don\(aqt name scripts you want to import
+the same as Lua libraries because they will be overshadowed by them.
+.sp
+mpv provides the built\-in module \fBmp\fP, which contains functions to send
+commands to the mpv core and to retrieve information about playback state, user
+settings, file information, and so on.
+.sp
+These scripts can be used to control mpv in a similar way to slave mode.
+Technically, the Lua code uses the client API internally.
+.SS Example
+.sp
+A script which leaves fullscreen mode when the player is paused:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function on_pause_change(name, value)
+ if value == true then
+ mp.set_property("fullscreen", "no")
+ end
+end
+mp.observe_property("pause", "bool", on_pause_change)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Details on the script initialization and lifecycle
+.sp
+Your script will be loaded by the player at program start from the \fBscripts\fP
+configuration subdirectory, or from a path specified with the \fB\-\-script\fP
+option. Some scripts are loaded internally (like \fB\-\-osc\fP). Each script runs in
+its own thread. Your script is first run "as is", and once that is done, the event loop
+is entered. This event loop will dispatch events received by mpv and call your
+own event handlers which you have registered with \fBmp.register_event\fP, or
+timers added with \fBmp.add_timeout\fP or similar.
+.sp
+When the player quits, all scripts will be asked to terminate. This happens via
+a \fBshutdown\fP event, which by default will make the event loop return. If your
+script got into an endless loop, mpv will probably behave fine during playback,
+but it won\(aqt terminate when quitting, because it\(aqs waiting on your script.
+.sp
+Internally, the C code will call the Lua function \fBmp_event_loop\fP after
+loading a Lua script. This function is normally defined by the default prelude
+loaded before your script (see \fBplayer/lua/defaults.lua\fP in the mpv sources).
+The event loop will wait for events and dispatch events registered with
+\fBmp.register_event\fP\&. It will also handle timers added with \fBmp.add_timeout\fP
+and similar (by waiting with a timeout).
+.sp
+Since mpv 0.6.0, the player will wait until the script is fully loaded before
+continuing normal operation. The player considers a script as fully loaded as
+soon as it starts waiting for mpv events (or it exits). In practice this means
+the player will more or less hang until the script returns from the main chunk
+(and \fBmp_event_loop\fP is called), or the script calls \fBmp_event_loop\fP or
+\fBmp.dispatch_events\fP directly. This is done to make it possible for a script
+to fully setup event handlers etc. before playback actually starts. In older
+mpv versions, this happened asynchronously.
+.SS mp functions
+.sp
+The \fBmp\fP module is preloaded, although it can be loaded manually with
+\fBrequire \(aqmp\(aq\fP\&. It provides the core client API.
+.INDENT 0.0
+.TP
+.B \fBmp.command(string)\fP
+Run the given command. This is similar to the commands used in input.conf.
+See \fI\%List of Input Commands\fP\&.
+.sp
+By default, this will show something on the OSD (depending on the command),
+as if it was used in \fBinput.conf\fP\&. See \fI\%Input Command Prefixes\fP how
+to influence OSD usage per command.
+.sp
+Returns \fBtrue\fP on success, or \fBnil, error\fP on error.
+.TP
+.B \fBmp.commandv(arg1, arg2, ...)\fP
+Similar to \fBmp.command\fP, but pass each command argument as separate
+parameter. This has the advantage that you don\(aqt have to care about
+quoting and escaping in some cases.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mp.command("loadfile " .. filename .. " append")
+mp.commandv("loadfile", filename, "append")
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+These two commands are equivalent, except that the first version breaks
+if the filename contains spaces or certain special characters.
+.sp
+Note that properties are \fInot\fP expanded. You can use either \fBmp.command\fP,
+the \fBexpand\-properties\fP prefix, or the \fBmp.get_property\fP family of
+functions.
+.sp
+Unlike \fBmp.command\fP, this will not use OSD by default either (except
+for some OSD\-specific commands).
+.TP
+.B \fBmp.command_native(table [,def])\fP
+Similar to \fBmp.commandv\fP, but pass the argument list as table. This has
+the advantage that in at least some cases, arguments can be passed as
+native types.
+.sp
+Returns a result table on success (usually empty), or \fBdef, error\fP on
+error. \fBdef\fP is the second parameter provided to the function, and is
+nil if it\(aqs missing.
+.TP
+.B \fBmp.get_property(name [,def])\fP
+Return the value of the given property as string. These are the same
+properties as used in input.conf. See \fI\%Properties\fP for a list of
+properties. The returned string is formatted similar to \fB${=name}\fP
+(see \fI\%Property Expansion\fP).
+.sp
+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
+second parameter provided to the function, and is nil if it\(aqs missing.
+.TP
+.B \fBmp.get_property_osd(name [,def])\fP
+Similar to \fBmp.get_property\fP, but return the property value formatted for
+OSD. This is the same string as printed with \fB${name}\fP when used in
+input.conf.
+.sp
+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
+second parameter provided to the function, and is an empty string if it\(aqs
+missing. Unlike \fBget_property()\fP, assigning the return value to a variable
+will always result in a string.
+.TP
+.B \fBmp.get_property_bool(name [,def])\fP
+Similar to \fBmp.get_property\fP, but return the property value as Boolean.
+.sp
+Returns a Boolean on success, or \fBdef, error\fP on error.
+.TP
+.B \fBmp.get_property_number(name [,def])\fP
+Similar to \fBmp.get_property\fP, but return the property value as number.
+.sp
+Note that while Lua does not distinguish between integers and floats,
+mpv internals do. This function simply request a double float from mpv,
+and mpv will usually convert integer property values to float.
+.sp
+Returns a number on success, or \fBdef, error\fP on error.
+.TP
+.B \fBmp.get_property_native(name [,def])\fP
+Similar to \fBmp.get_property\fP, but return the property value using the best
+Lua type for the property. Most time, this will return a string, Boolean,
+or number. Some properties (for example \fBchapter\-list\fP) are returned as
+tables.
+.sp
+Returns a value on success, or \fBdef, error\fP on error. Note that \fBnil\fP
+might be a possible, valid value too in some corner cases.
+.TP
+.B \fBmp.set_property(name, value)\fP
+Set the given property to the given string value. See \fBmp.get_property\fP
+and \fI\%Properties\fP for more information about properties.
+.sp
+Returns true on success, or \fBnil, error\fP on error.
+.TP
+.B \fBmp.set_property_bool(name, value)\fP
+Similar to \fBmp.set_property\fP, but set the given property to the given
+Boolean value.
+.TP
+.B \fBmp.set_property_number(name, value)\fP
+Similar to \fBmp.set_property\fP, but set the given property to the given
+numeric value.
+.sp
+Note that while Lua does not distinguish between integers and floats,
+mpv internals do. This function will test whether the number can be
+represented as integer, and if so, it will pass an integer value to mpv,
+otherwise a double float.
+.TP
+.B \fBmp.set_property_native(name, value)\fP
+Similar to \fBmp.set_property\fP, but set the given property using its native
+type.
+.sp
+Since there are several data types which cannot represented natively in
+Lua, this might not always work as expected. For example, while the Lua
+wrapper can do some guesswork to decide whether a Lua table is an array
+or a map, this would fail with empty tables. Also, there are not many
+properties for which it makes sense to use this, instead of
+\fBset_property\fP, \fBset_property_bool\fP, \fBset_property_number\fP\&.
+For these reasons, this function should probably be avoided for now, except
+for properties that use tables natively.
+.TP
+.B \fBmp.get_time()\fP
+Return the current mpv internal time in seconds as a number. This is
+basically the system time, with an arbitrary offset.
+.TP
+.B \fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
+Register callback to be run on a key binding. The binding will be mapped to
+the given \fBkey\fP, which is a string describing the physical key. This uses
+the same key names as in input.conf, and also allows combinations
+(e.g. \fBctrl+a\fP). If the key is empty or \fBnil\fP, no physical key is
+registered, but the user still can create own bindings (see below).
+.sp
+After calling this function, key presses will cause the function \fBfn\fP to
+be called (unless the user remapped the key with another binding).
+.sp
+The \fBname\fP argument should be a short symbolic string. It allows the user
+to remap the key binding via input.conf using the \fBscript\-message\fP
+command, and the name of the key binding (see below for
+an example). The name should be unique across other bindings in the same
+script \- if not, the previous binding with the same name will be
+overwritten. You can omit the name, in which case a random name is generated
+internally.
+.sp
+The last argument is used for optional flags. This is a table, which can
+have the following entries:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fBrepeatable\fP
+If set to \fBtrue\fP, enables key repeat for this specific binding.
+.TP
+.B \fBcomplex\fP
+If set to \fBtrue\fP, then \fBfn\fP is called on both key up and down
+events (as well as key repeat, if enabled), with the first
+argument being a table. This table has an \fBevent\fP entry, which
+is set to one of the strings \fBdown\fP, \fBrepeat\fP, \fBup\fP or
+\fBpress\fP (the latter if key up/down can\(aqt be tracked). It further
+has an \fBis_mouse\fP entry, which tells whether the event was caused
+by a mouse button.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Internally, key bindings are dispatched via the \fBscript\-message\-to\fP or
+\fBscript\-binding\fP input commands and \fBmp.register_script_message\fP\&.
+.sp
+Trying to map multiple commands to a key will essentially prefer a random
+binding, while the other bindings are not called. It is guaranteed that
+user defined bindings in the central input.conf are preferred over bindings
+added with this function (but see \fBmp.add_forced_key_binding\fP).
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function something_handler()
+ print("the key was pressed")
+end
+mp.add_key_binding("x", "something", something_handler)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This will print the message \fBthe key was pressed\fP when \fBx\fP was pressed.
+.sp
+The user can remap these key bindings. Then the user has to put the
+following into their input.conf to remap the command to the \fBy\fP key:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+y script\-binding something
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This will print the message when the key \fBy\fP is pressed. (\fBx\fP will
+still work, unless the user remaps it.)
+.sp
+You can also explicitly send a message to a named script only. Assume the
+above script was using the filename \fBfooscript.lua\fP:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+y script\-binding fooscript/something
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBmp.add_forced_key_binding(...)\fP
+This works almost the same as \fBmp.add_key_binding\fP, but registers the
+key binding in a way that will overwrite the user\(aqs custom bindings in their
+input.conf. (\fBmp.add_key_binding\fP overwrites default key bindings only,
+but not those by the user\(aqs input.conf.)
+.TP
+.B \fBmp.remove_key_binding(name)\fP
+Remove a key binding added with \fBmp.add_key_binding\fP or
+\fBmp.add_forced_key_binding\fP\&. Use the same name as you used when adding
+the bindings. It\(aqs not possible to remove bindings for which you omitted
+the name.
+.TP
+.B \fBmp.register_event(name, fn)\fP
+Call a specific function when an event happens. The event name is a string,
+and the function fn is a Lua function value.
+.sp
+Some events have associated data. This is put into a Lua table and passed
+as argument to fn. The Lua table by default contains a \fBname\fP field,
+which is a string containing the event name. If the event has an error
+associated, the \fBerror\fP field is set to a string describing the error,
+on success it\(aqs not set.
+.sp
+If multiple functions are registered for the same event, they are run in
+registration order, which the first registered function running before all
+the other ones.
+.sp
+Returns true if such an event exists, false otherwise.
+.sp
+See \fI\%Events\fP and \fI\%List of events\fP for details.
+.TP
+.B \fBmp.unregister_event(fn)\fP
+Undo \fBmp.register_event(..., fn)\fP\&. This removes all event handlers that
+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
+so be careful when dealing with closures.
+.TP
+.B \fBmp.observe_property(name, type, fn)\fP
+Watch a property for changes. If the property \fBname\fP is changed, then
+the function \fBfn(name)\fP will be called. \fBtype\fP can be \fBnil\fP, or be
+set to one of \fBnone\fP, \fBnative\fP, \fBbool\fP, \fBstring\fP, or \fBnumber\fP\&.
+\fBnone\fP is the same as \fBnil\fP\&. For all other values, the new value of
+the property will be passed as second argument to \fBfn\fP, using
+\fBmp.get_property_<type>\fP to retrieve it. This means if \fBtype\fP is for
+example \fBstring\fP, \fBfn\fP is roughly called as in
+\fBfn(name, mp.get_property_string(name))\fP\&.
+.sp
+If possible, change events are coalesced. If a property is changed a bunch
+of times in a row, only the last change triggers the change function. (The
+exact behavior depends on timing and other things.)
+.sp
+In some cases the function is not called even if the property changes.
+Whether this can happen depends on the property.
+.sp
+If the \fBtype\fP is \fBnone\fP or \fBnil\fP, sporadic property change events are
+possible. This means the change function \fBfn\fP can be called even if the
+property doesn\(aqt actually change.
+.TP
+.B \fBmp.unobserve_property(fn)\fP
+Undo \fBmp.observe_property(..., fn)\fP\&. This removes all property handlers
+that are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP
+comparison, so be careful when dealing with closures.
+.TP
+.B \fBmp.add_timeout(seconds, fn)\fP
+Call the given function fn when the given number of seconds has elapsed.
+Note that the number of seconds can be fractional. For now, the timer\(aqs
+resolution may be as low as 50 ms, although this will be improved in the
+future.
+.sp
+This is a one\-shot timer: it will be removed when it\(aqs fired.
+.sp
+Returns a timer object. See \fBmp.add_periodic_timer\fP for details.
+.TP
+.B \fBmp.add_periodic_timer(seconds, fn)\fP
+Call the given function periodically. This is like \fBmp.add_timeout\fP, but
+the timer is re\-added after the function fn is run.
+.INDENT 7.0
+.TP
+.B Returns a timer object. The timer object provides the following methods:
+.INDENT 7.0
+.TP
+.B \fBstop()\fP
+Disable the timer. Does nothing if the timer is already disabled.
+This will remember the current elapsed time when stopping, so that
+\fBresume()\fP essentially unpauses the timer.
+.TP
+.B \fBkill()\fP
+Disable the timer. Resets the elapsed time. \fBresume()\fP will
+restart the timer.
+.TP
+.B \fBresume()\fP
+Restart the timer. If the timer was disabled with \fBstop()\fP, this
+will resume at the time it was stopped. If the timer was disabled
+with \fBkill()\fP, or if it\(aqs a previously fired one\-shot timer (added
+with \fBadd_timeout()\fP), this starts the timer from the beginning,
+using the initially configured timeout.
+.TP
+.B \fBis_enabled()\fP
+Whether the timer is currently enabled or was previously disabled
+(e.g. by \fBstop()\fP or \fBkill()\fP).
+.TP
+.B \fBtimeout\fP (RW)
+This field contains the current timeout period. This value is not
+updated as time progresses. It\(aqs only used to calculate when the
+timer should fire next when the timer expires.
+.sp
+If you write this, you can call \fBt:kill() ; t:resume()\fP to reset
+the current timeout to the new one. (\fBt:stop()\fP won\(aqt use the
+new timeout.)
+.TP
+.B \fBoneshot\fP (RW)
+Whether the timer is periodic (\fBfalse\fP) or fires just once
+(\fBtrue\fP). This value is used when the timer expires (but before
+the timer callback function fn is run).
+.UNINDENT
+.UNINDENT
+.sp
+Note that these are method, and you have to call them using \fB:\fP instead
+of \fB\&.\fP (Refer to \fI\%http://www.lua.org/manual/5.2/manual.html#3.4.9\fP .)
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+seconds = 0
+timer = mp.add_periodic_timer(1, function()
+ print("called every second")
+ # stop it after 10 seconds
+ seconds = seconds + 1
+ if seconds >= 10 then
+ timer:kill()
+ end
+end)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBmp.get_opt(key)\fP
+Return a setting from the \fB\-\-script\-opts\fP option. It\(aqs up to the user and
+the script how this mechanism is used. Currently, all scripts can access
+this equally, so you should be careful about collisions.
+.TP
+.B \fBmp.get_script_name()\fP
+Return the name of the current script. The name is usually made of the
+filename of the script, with directory and file extension removed. If
+there are several scripts which would have the same name, it\(aqs made unique
+by appending a number.
+.INDENT 7.0
+.INDENT 3.5
+.IP "Example"
+.sp
+The script \fB/path/to/fooscript.lua\fP becomes \fBfooscript\fP\&.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBmp.osd_message(text [,duration])\fP
+Show an OSD message on the screen. \fBduration\fP is in seconds, and is
+optional (uses \fB\-\-osd\-duration\fP by default).
+.UNINDENT
+.SS Advanced mp functions
+.sp
+These also live in the \fBmp\fP module, but are documented separately as they
+are useful only in special situations.
+.INDENT 0.0
+.TP
+.B \fBmp.suspend()\fP
+This function has been deprecated in mpv 0.21.0 and does nothing starting
+with mpv 0.23.0 (no replacement).
+.TP
+.B \fBmp.resume()\fP
+This function has been deprecated in mpv 0.21.0 and does nothing starting
+with mpv 0.23.0 (no replacement).
+.TP
+.B \fBmp.resume_all()\fP
+This function has been deprecated in mpv 0.21.0 and does nothing starting
+with mpv 0.23.0 (no replacement).
+.TP
+.B \fBmp.get_wakeup_pipe()\fP
+Calls \fBmpv_get_wakeup_pipe()\fP and returns the read end of the wakeup
+pipe. (See \fBclient.h\fP for details.)
+.TP
+.B \fBmp.get_next_timeout()\fP
+Return the relative time in seconds when the next timer (\fBmp.add_timeout\fP
+and similar) expires. If there is no timer, return \fBnil\fP\&.
+.TP
+.B \fBmp.dispatch_events([allow_wait])\fP
+This can be used to run custom event loops. If you want to have direct
+control what the Lua script does (instead of being called by the default
+event loop), you can set the global variable \fBmp_event_loop\fP to your
+own function running the event loop. From your event loop, you should call
+\fBmp.dispatch_events()\fP to dequeue and dispatch mpv events.
+.sp
+If the \fBallow_wait\fP parameter is set to \fBtrue\fP, the function will block
+until the next event is received or the next timer expires. Otherwise (and
+this is the default behavior), it returns as soon as the event loop is
+emptied. It\(aqs strongly recommended to use \fBmp.get_next_timeout()\fP and
+\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.unregister_idle(fn)\fP
+Undo \fBmp.register_idle(fn)\fP\&. This removes all idle handlers that
+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
+so be careful when dealing with closures.
+.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,
+you can set the minimum log level of messages which should be received with
+the \fBlog\-message\fP event. See the description of this event for details.
+The level is a string, see \fBmsg.log\fP for allowed log levels.
+.TP
+.B \fBmp.register_script_message(name, fn)\fP
+This is a helper to dispatch \fBscript\-message\fP or \fBscript\-message\-to\fP
+invocations to Lua functions. \fBfn\fP is called if \fBscript\-message\fP or
+\fBscript\-message\-to\fP (with this script as destination) is run
+with \fBname\fP as first parameter. The other parameters are passed to \fBfn\fP\&.
+If a message with the given name is already registered, it\(aqs overwritten.
+.sp
+Used by \fBmp.add_key_binding\fP, so be careful about name collisions.
+.TP
+.B \fBmp.unregister_script_message(name)\fP
+Undo a previous registration with \fBmp.register_script_message\fP\&. Does
+nothing if the \fBname\fP wasn\(aqt registered.
+.UNINDENT
+.SS mp.msg functions
+.sp
+This module allows outputting messages to the terminal, and can be loaded
+with \fBrequire \(aqmp.msg\(aq\fP\&.
+.INDENT 0.0
+.TP
+.B \fBmsg.log(level, ...)\fP
+The level parameter is the message priority. It\(aqs a string and one of
+\fBfatal\fP, \fBerror\fP, \fBwarn\fP, \fBinfo\fP, \fBv\fP, \fBdebug\fP\&. The user\(aqs
+settings will determine which of these messages will be visible. Normally,
+all messages are visible, except \fBv\fP and \fBdebug\fP\&.
+.sp
+The parameters after that are all converted to strings. Spaces are inserted
+to separate multiple parameters.
+.sp
+You don\(aqt need to add newlines.
+.TP
+.B \fBmsg.fatal(...)\fP, \fBmsg.error(...)\fP, \fBmsg.warn(...)\fP, \fBmsg.info(...)\fP, \fBmsg.verbose(...)\fP, \fBmsg.debug(...)\fP
+All of these are shortcuts and equivalent to the corresponding
+\fBmsg.log(level, ...)\fP call.
+.UNINDENT
+.SS mp.options functions
+.sp
+mpv comes with a built\-in module to manage options from config\-files and the
+command\-line. All you have to do is to supply a table with default options to
+the read_options function. The function will overwrite the default values
+with values found in the config\-file and the command\-line (in that order).
+.INDENT 0.0
+.TP
+.B \fBoptions.read_options(table [, identifier])\fP
+A \fBtable\fP with key\-value pairs. The type of the default values is
+important for converting the values read from the config file or
+command\-line back. Do not use \fBnil\fP as a default value!
+.sp
+The \fBidentifier\fP is used to identify the config\-file and the command\-line
+options. These needs to unique to avoid collisions with other scripts.
+Defaults to \fBmp.get_script_name()\fP\&.
+.UNINDENT
+.sp
+Example implementation:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+require \(aqmp.options\(aq
+local options = {
+ optionA = "defaultvalueA",
+ optionB = \-0.5,
+ optionC = true,
+}
+read_options(options, "myscript")
+print(options.optionA)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The config file will be stored in \fBlua\-settings/identifier.conf\fP in mpv\(aqs user
+folder. Comment lines can be started with # and stray spaces are not removed.
+Boolean values will be represented with yes/no.
+.sp
+Example config:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+# comment
+optionA=Hello World
+optionB=9999
+optionC=no
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Command\-line options are read from the \fB\-\-script\-opts\fP parameter. To avoid
+collisions, all keys have to be prefixed with \fBidentifier\-\fP\&.
+.sp
+Example command\-line:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+\-\-script\-opts=myscript\-optionA=TEST,myscript\-optionB=0,myscript\-optionC=yes
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS mp.utils functions
+.sp
+This built\-in module provides generic helper functions for Lua, and have
+strictly speaking nothing to do with mpv or video/audio playback. They are
+provided for convenience. Most compensate for Lua\(aqs scarce standard library.
+.sp
+Be warned that any of these functions might disappear any time. They are not
+strictly part of the guaranteed API.
+.INDENT 0.0
+.TP
+.B \fButils.getcwd()\fP
+Returns the directory that mpv was launched from. On error, \fBnil, error\fP
+is returned.
+.TP
+.B \fButils.readdir(path [, filter])\fP
+Enumerate all entries at the given path on the filesystem, and return them
+as array. Each entry is a directory entry (without the path).
+The list is unsorted (in whatever order the operating system returns it).
+.sp
+If the \fBfilter\fP argument is given, it must be one of the following
+strings:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fBfiles\fP
+List regular files only. This excludes directories, special files
+(like UNIX device files or FIFOs), and dead symlinks. It includes
+UNIX symlinks to regular files.
+.TP
+.B \fBdirs\fP
+List directories only, or symlinks to directories. \fB\&.\fP and \fB\&..\fP
+are not included.
+.TP
+.B \fBnormal\fP
+Include the results of both \fBfiles\fP and \fBdirs\fP\&. (This is the
+default.)
+.TP
+.B \fBall\fP
+List all entries, even device files, dead symlinks, FIFOs, and the
+\fB\&.\fP and \fB\&..\fP entries.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+On error, \fBnil, error\fP is returned.
+.TP
+.B \fButils.split_path(path)\fP
+Split a path into directory component and filename component, and return
+them. The first return value is always the directory. The second return
+value is the trailing part of the path, the directory entry.
+.TP
+.B \fButils.join_path(p1, p2)\fP
+Return the concatenation of the 2 paths. Tries to be clever. For example,
+if \fB\(gap2\fP is an absolute path, p2 is returned without change.
+.TP
+.B \fButils.subprocess(t)\fP
+Runs an external process and waits until it exits. Returns process status
+and the captured output.
+.sp
+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. The first array entry is the executable. This
+can be either an absolute path, or a filename with no path
+components, in which case the \fBPATH\fP environment variable is
+used to resolve the executable. The other array elements are
+passed as command line arguments.
+.TP
+.B \fBcancellable\fP
+Optional. If set to \fBtrue\fP (default), then if the user stops
+playback or goes to the next file while the process is running,
+the process will be killed.
+.TP
+.B \fBmax_size\fP
+Optional. The maximum size in bytes of the data that can be captured
+from stdout. (Default: 16 MB.)
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The function returns a table as result with the following entries:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fBstatus\fP
+The raw exit status of the process. It will be negative on error.
+.TP
+.B \fBstdout\fP
+Captured output stream as string, limited to \fBmax_size\fP\&.
+.TP
+.B \fBerror\fP
+\fBnil\fP on success. The string \fBkilled\fP if the process was
+terminated in an unusual way. The string \fBinit\fP if the process
+could not be started.
+.sp
+On Windows, \fBkilled\fP is only returned when the process has been
+killed by mpv as a result of \fBcancellable\fP being set to \fBtrue\fP\&.
+.TP
+.B \fBkilled_by_us\fP
+Set to \fBtrue\fP if the process has been killed by mpv as a result
+of \fBcancellable\fP being set to \fBtrue\fP\&.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.TP
+.B \fButils.subprocess_detached(t)\fP
+Runs an external process and detaches it from mpv\(aqs control.
+.sp
+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
+error, returns \fBnil, error\fP\&. (Currently, \fBerror\fP is just a string
+reading \fBerror\fP, because there is no fine\-grained error reporting of any
+kind.)
+.sp
+The returned value uses similar conventions as \fBmp.get_property_native()\fP
+to distinguish empty objects and arrays.
+.sp
+If the \fBtrail\fP parameter is \fBtrue\fP (or any value equal to \fBtrue\fP),
+then trailing non\-whitespace text is tolerated by the function, and the
+trailing text is returned as 3rd return value. (The 3rd return value is
+always there, but with \fBtrail\fP set, no error is raised.)
+.TP
+.B \fButils.format_json(v)\fP
+Format the given Lua table (or value) as a JSON string and return it. On
+error, returns \fBnil, error\fP\&. (Errors usually only happen on value types
+incompatible with JSON.)
+.sp
+The argument value uses similar conventions as \fBmp.set_property_native()\fP
+to distinguish empty objects and arrays.
+.TP
+.B \fButils.to_string(v)\fP
+Turn the given value into a string. Formats tables and their contents. This
+doesn\(aqt do anything special; it is only needed because Lua is terrible.
+.UNINDENT
+.SS Events
+.sp
+Events are notifications from player core to scripts. You can register an
+event handler with \fBmp.register_event\fP\&.
+.sp
+Note that all scripts (and other parts of the player) receive events equally,
+and there\(aqs no such thing as blocking other scripts from receiving events.
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function my_fn(event)
+ print("start of playback!")
+end
+
+mp.register_event("file\-loaded", my_fn)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS List of events
+.INDENT 0.0
+.TP
+.B \fBstart\-file\fP
+Happens right before a new file is loaded. When you receive this, the
+player is loading the file (or possibly already done with it).
+.TP
+.B \fBend\-file\fP
+Happens after a file was unloaded. Typically, the player will load the
+next file right away, or quit if this was the last file.
+.sp
+The event has the \fBreason\fP field, which takes one of these values:
+.INDENT 7.0
+.TP
+.B \fBeof\fP
+The file has ended. This can (but doesn\(aqt have to) include
+incomplete files or broken network connections under
+circumstances.
+.TP
+.B \fBstop\fP
+Playback was ended by a command.
+.TP
+.B \fBquit\fP
+Playback was ended by sending the quit command.
+.TP
+.B \fBerror\fP
+An error happened. In this case, an \fBerror\fP field is present with
+the error string.
+.TP
+.B \fBredirect\fP
+Happens with playlists and similar. Details see
+\fBMPV_END_FILE_REASON_REDIRECT\fP in the C API.
+.TP
+.B \fBunknown\fP
+Unknown. Normally doesn\(aqt happen, unless the Lua API is out of sync
+with the C API. (Likewise, it could happen that your script gets
+reason strings that did not exist yet at the time your script was
+written.)
+.UNINDENT
+.TP
+.B \fBfile\-loaded\fP
+Happens after a file was loaded and begins playback.
+.TP
+.B \fBseek\fP
+Happens on seeking. (This might include cases when the player seeks
+internally, even without user interaction. This includes e.g. segment
+changes when playing ordered chapters Matroska files.)
+.TP
+.B \fBplayback\-restart\fP
+Start of playback after seek or after file was loaded.
+.TP
+.B \fBidle\fP
+Idle mode is entered. This happens when playback ended, and the player was
+started with \fB\-\-idle\fP or \fB\-\-force\-window\fP\&. This mode is implicitly ended
+when the \fBstart\-file\fP or \fBshutdown\fP events happen.
+.TP
+.B \fBtick\fP
+Called after a video frame was displayed. This is a hack, and you should
+avoid using it. Use timers instead and maybe watch pausing/unpausing events
+to avoid wasting CPU when the player is paused.
+.TP
+.B \fBshutdown\fP
+Sent when the player quits, and the script should terminate. Normally
+handled automatically. See \fI\%Details on the script initialization and lifecycle\fP\&.
+.TP
+.B \fBlog\-message\fP
+Receives messages enabled with \fBmp.enable_messages\fP\&. The message data
+is contained in the table passed as first parameter to the event handler.
+The table contains, in addition to the default event fields, the following
+fields:
+.INDENT 7.0
+.TP
+.B \fBprefix\fP
+The module prefix, identifies the sender of the message. This is what
+the terminal player puts in front of the message text when using the
+\fB\-\-v\fP option, and is also what is used for \fB\-\-msg\-level\fP\&.
+.TP
+.B \fBlevel\fP
+The log level as string. See \fBmsg.log\fP for possible log level names.
+Note that later versions of mpv might add new levels or remove
+(undocumented) existing ones.
+.TP
+.B \fBtext\fP
+The log message. The text will end with a newline character. Sometimes
+it can contain multiple lines.
+.UNINDENT
+.sp
+Keep in mind that these messages are meant to be hints for humans. You
+should not parse them, and prefix/level/text of messages might change
+any time.
+.TP
+.B \fBget\-property\-reply\fP
+Undocumented (not useful for Lua scripts).
+.TP
+.B \fBset\-property\-reply\fP
+Undocumented (not useful for Lua scripts).
+.TP
+.B \fBcommand\-reply\fP
+Undocumented (not useful for Lua scripts).
+.TP
+.B \fBclient\-message\fP
+Undocumented (used internally).
+.TP
+.B \fBvideo\-reconfig\fP
+Happens on video output or filter reconfig.
+.TP
+.B \fBaudio\-reconfig\fP
+Happens on audio output or filter reconfig.
+.UNINDENT
+.sp
+The following events also happen, but are deprecated: \fBtracks\-changed\fP,
+\fBtrack\-switched\fP, \fBpause\fP, \fBunpause\fP, \fBmetadata\-update\fP,
+\fBchapter\-change\fP\&. Use \fBmp.observe_property()\fP instead.
+.SS Extras
+.sp
+This documents experimental features, or features that are "too special" to
+guarantee a stable interface.
+.INDENT 0.0
+.TP
+.B \fBmp.add_hook(type, priority, fn)\fP
+Add a hook callback for \fBtype\fP (a string identifying a certain kind of
+hook). These hooks allow the player to call script functions and wait for
+their result (normally, the Lua scripting interface is asynchronous from
+the point of view of the player core). \fBpriority\fP is an arbitrary integer
+that allows ordering among hooks of the same kind. Using the value 50 is
+recommended as neutral default value. \fBfn\fP is the function that will be
+called during execution of the hook.
+.sp
+See \fI\%Hooks\fP for currently existing hooks and what they do \- only the hook
+list is interesting; handling hook execution is done by the Lua script
+function automatically.
+.UNINDENT
+.SH JAVASCRIPT
+.sp
+JavaScript support in mpv is near identical to its Lua support. Use this section
+as reference on differences and availability of APIs, but otherwise you should
+refer to the Lua documentation for API details and general scripting in mpv.
+.SS Example
+.sp
+JavaScript code which leaves fullscreen mode when the player is paused:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function on_pause_change(name, value) {
+ if (value == true)
+ mp.set_property("fullscreen", "no");
+}
+mp.observe_property("pause", "bool", on_pause_change);
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS Similarities with Lua
+.sp
+mpv tries to load a script file as JavaScript if it has a \fB\&.js\fP extension, but
+otherwise, the documented Lua options, script directories, loading, etc apply to
+JavaScript files too.
+.sp
+Script initialization and lifecycle is the same as with Lua, and most of the Lua
+functions at the modules \fBmp\fP, \fBmp.utils\fP and \fBmp.msg\fP are available to
+JavaScript with identical APIs \- including running commands, getting/setting
+properties, registering events/key\-bindings/property\-changes/hooks, etc.
+.SS Differences from Lua
+.sp
+No need to load modules. \fBmp\fP, \fBmp.utils\fP and \fBmp.msg\fP are preloaded, and
+you can use e.g. \fBvar cwd = mp.utils.getcwd();\fP without prior setup.
+\fBmp.options\fP is currently not implemented, but \fBmp.get_opt(...)\fP is.
+.sp
+Errors are slightly different. Where the Lua APIs return \fBnil\fP for error,
+the JavaScript ones return \fBundefined\fP\&. Where Lua returns \fBsomething, error\fP
+JavaScript returns only \fBsomething\fP \- and makes \fBerror\fP available via
+\fBmp.last_error()\fP\&. Note that only some of the functions have this additional
+\fBerror\fP value \- typically the same ones which have it in Lua.
+.sp
+Standard APIs are preferred. For instance \fBsetTimeout\fP and \fBJSON.stringify\fP
+are available, but \fBmp.add_timeout\fP and \fBmp.utils.format_json\fP are not.
+.sp
+No standard library. This means that interaction with anything outside of mpv is
+limited to the available APIs, typically via \fBmp.utils\fP\&. However, some file
+functions were added, and CommonJS \fBrequire\fP is available too \- where the
+loaded modules have the same privileges as normal scripts.
+.SS Language features \- ECMAScript 5
+.sp
+The scripting backend which mpv currently uses is MuJS \- a compatible minimal
+ES5 interpreter. As such, \fBString.substring\fP is implemented for instance,
+while the common but non\-standard \fBString.substr\fP is not. Please consult the
+MuJS pages on language features and platform support \- \fI\%http://mujs.com\fP .
+.SS Unsupported Lua APIs and their JS alternatives
+.sp
+\fBmp.add_timeout(seconds, fn)\fP JS: \fBid = setTimeout(fn, ms)\fP
+.sp
+\fBmp.add_periodic_timer(seconds, fn)\fP JS: \fBid = setInterval(fn, ms)\fP
+.sp
+\fBmp.register_idle(fn)\fP JS: \fBid = setTimeout(fn)\fP
+.sp
+\fBmp.unregister_idle(fn)\fP JS: \fBclearTimeout(id)\fP
+.sp
+\fButils.parse_json(str [, trail])\fP JS: \fBJSON.parse(str)\fP
+.sp
+\fButils.format_json(v)\fP JS: \fBJSON.stringify(v)\fP
+.sp
+\fButils.to_string(v)\fP see \fBdump\fP below.
+.sp
+\fBmp.suspend()\fP JS: none (deprecated).
+.sp
+\fBmp.resume()\fP JS: none (deprecated).
+.sp
+\fBmp.resume_all()\fP JS: none (deprecated).
+.sp
+\fBmp.get_next_timeout()\fP see event loop below.
+.sp
+\fBmp.dispatch_events([allow_wait])\fP see event loop below.
+.sp
+\fBmp.options\fP module is not implemented currently for JS.
+.SS Scripting APIs \- identical to Lua
+.sp
+(LE) \- Last\-Error, indicates that \fBmp.last_error()\fP can be used after the
+call to test for success (empty string) or failure (non empty reason string).
+Otherwise, where the Lua APIs return \fBnil\fP on error, JS returns \fBundefined\fP\&.
+.sp
+\fBmp.command(string)\fP (LE)
+.sp
+\fBmp.commandv(arg1, arg2, ...)\fP (LE)
+.sp
+\fBmp.command_native(table [,def])\fP (LE)
+.sp
+\fBmp.get_property(name [,def])\fP (LE)
+.sp
+\fBmp.get_property_osd(name [,def])\fP (LE)
+.sp
+\fBmp.get_property_bool(name [,def])\fP (LE)
+.sp
+\fBmp.get_property_number(name [,def])\fP (LE)
+.sp
+\fBmp.get_property_native(name [,def])\fP (LE)
+.sp
+\fBmp.set_property(name, value)\fP (LE)
+.sp
+\fBmp.set_property_bool(name, value)\fP (LE)
+.sp
+\fBmp.set_property_number(name, value)\fP (LE)
+.sp
+\fBmp.set_property_native(name, value)\fP (LE)
+.sp
+\fBmp.get_time()\fP
+.sp
+\fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
+.sp
+\fBmp.add_forced_key_binding(...)\fP
+.sp
+\fBmp.remove_key_binding(name)\fP
+.sp
+\fBmp.register_event(name, fn)\fP
+.sp
+\fBmp.unregister_event(fn)\fP
+.sp
+\fBmp.observe_property(name, type, fn)\fP
+.sp
+\fBmp.unobserve_property(fn)\fP
+.sp
+\fBmp.get_opt(key)\fP
+.sp
+\fBmp.get_script_name()\fP
+.sp
+\fBmp.osd_message(text [,duration])\fP
+.sp
+\fBmp.get_wakeup_pipe()\fP
+.sp
+\fBmp.enable_messages(level)\fP
+.sp
+\fBmp.register_script_message(name, fn)\fP
+.sp
+\fBmp.unregister_script_message(name)\fP
+.sp
+\fBmp.msg.log(level, ...)\fP
+.sp
+\fBmp.msg.fatal(...)\fP
+.sp
+\fBmp.msg.error(...)\fP
+.sp
+\fBmp.msg.warn(...)\fP
+.sp
+\fBmp.msg.info(...)\fP
+.sp
+\fBmp.msg.verbose(...)\fP
+.sp
+\fBmp.msg.debug(...)\fP
+.sp
+\fBmp.utils.getcwd()\fP (LE)
+.sp
+\fBmp.utils.readdir(path [, filter])\fP (LE)
+.sp
+\fBmp.utils.split_path(path)\fP
+.sp
+\fBmp.utils.join_path(p1, p2)\fP
+.sp
+\fBmp.utils.subprocess(t)\fP
+.sp
+\fBmp.utils.subprocess_detached(t)\fP
+.sp
+\fBmp.add_hook(type, priority, fn)\fP
+.SS Additional utilities
+.INDENT 0.0
+.TP
+.B \fBmp.last_error()\fP
+If used after an API call which updates last error, returns an empty string
+if the API call succeeded, or a non\-empty error reason string otherwise.
+.TP
+.B \fBError.stack\fP (string)
+When using \fBtry { ... } catch(e) { ... }\fP, then \fBe.stack\fP is the stack
+trace of the error \- if it was created using the \fBError(...)\fP constructor.
+.TP
+.B \fBprint\fP (global)
+A convenient alias to \fBmp.msg.info\fP\&.
+.TP
+.B \fBdump\fP (global)
+Like \fBprint\fP but also expands objects and arrays recursively.
+.TP
+.B \fBmp.utils.getenv(name)\fP
+Returns the value of the host environment variable \fBname\fP, or
+\fBundefined\fP if the variable is not defined.
+.TP
+.B \fBmp.utils.get_user_path(path)\fP
+Expands (mpv) meta paths like \fB~/x\fP, \fB~~/y\fP, \fB~~desktop/z\fP etc.
+\fBread_file\fP, \fBwrite_file\fP and \fBrequire\fP already use this internaly.
+.TP
+.B \fBmp.utils.read_file(fname [,max])\fP
+Returns the content of file \fBfname\fP as string. If \fBmax\fP is provided and
+not negative, limit the read to \fBmax\fP bytes.
+.TP
+.B \fBmp.utils.write_file(fname, str)\fP
+(Over)write file \fBfname\fP with text content \fBstr\fP\&. \fBfname\fP must be
+prefixed with \fBfile://\fP as simple protection against accidental arguments
+switch, e.g. \fBmp.utils.write_file("file://~/abc.txt", "hello world")\fP\&.
+.UNINDENT
+.sp
+Note: \fBread_file\fP and \fBwrite_file\fP throw on errors, allow text content only.
+.INDENT 0.0
+.TP
+.B \fBmp.get_time_ms()\fP
+Same as \fBmp.get_time()\fP but in ms instead of seconds.
+.TP
+.B \fBmp.get_script_file()\fP
+Returns the file name of the current script.
+.TP
+.B \fBexit()\fP (global)
+Make the script exit at the end of the current event loop iteration.
+Note: please reomve added key bindings before calling \fBexit()\fP\&.
+.TP
+.B \fBmp.utils.compile_js(fname, content_str)\fP
+Compiles the JS code \fBcontent_str\fP as file name \fBfname\fP (without loading
+anything from the filesystem), and returns it as a function. Very similar
+to a \fBFunction\fP constructor, but shows at stack traces as \fBfname\fP\&.
+.UNINDENT
+.SS Timers (global)
+.sp
+The standard HTML/node.js timers are available:
+.sp
+\fBid = setTimeout(fn [,duration [,arg1 [,arg2...]]])\fP
+.sp
+\fBid = setTimeout(code_string [,duration])\fP
+.sp
+\fBclearTimeout(id)\fP
+.sp
+\fBid = setInterval(fn [,duration [,arg1 [,arg2...]]])\fP
+.sp
+\fBid = setInterval(code_string [,duration])\fP
+.sp
+\fBclearInterval(id)\fP
+.sp
+\fBsetTimeout\fP and \fBsetInterval\fP return id, and later call \fBfn\fP (or execute
+\fBcode_string\fP) after \fBduration\fP ms. Interval also repeat every \fBduration\fP\&.
+.sp
+\fBduration\fP has a minimum and default value of 0, \fBcode_string\fP is
+a plain string which is evaluated as JS code, and \fB[,arg1 [,arg2..]]\fP are used
+as arguments (if provided) when calling back \fBfn\fP\&.
+.sp
+The \fBclear...(id)\fP functions cancel timer \fBid\fP, and are irreversible.
+.sp
+Note: timers always call back asynchronously, e.g. \fBsetTimeout(fn)\fP will never
+call \fBfn\fP before returning. \fBfn\fP will be called either at the end of this
+event loop iteration or at a later event loop iteration. This is true also for
+intervals \- which also never call back twice at the same event loop iteration.
+.sp
+Additionally, timers are processed after the event queue is empty, so it\(aqs valid
+to use \fBsetTimeout(fn)\fP instead of Lua\(aqs \fBmp.register_idle(fn)\fP\&.
+.SS CommonJS modules and \fBrequire(id)\fP
+.sp
+CommonJS Modules are a standard system where scripts can export common functions
+for use by other scripts. A module is a script which adds properties (functions,
+etc) to its invisible \fBexports\fP object, which another script can access by
+loading it with \fBrequire(module\-id)\fP \- which returns that \fBexports\fP object.
+.sp
+Modules and \fBrequire\fP are supported, standard compliant, and generally similar
+to node.js. However, most node.js modules won\(aqt run due to missing modules such
+as \fBfs\fP, \fBprocess\fP, etc, but some node.js modules with minimal dependencies
+do work. In general, this is for mpv modules and not a node.js replacement.
+.sp
+A \fB\&.js\fP file extension is always added to \fBid\fP, e.g. \fBrequire("./foo")\fP
+will load the file \fB\&./foo.js\fP and return its \fBexports\fP object.
+.sp
+An id is relative (to the script which \fBrequire\fP\(aqd it) if it starts with
+\fB\&./\fP or \fB\&../\fP\&. Otherwise, it\(aqs considered a "top\-level id" (CommonJS term).
+.sp
+Top level id is evaluated as absolute filesystem path if possible (e.g. \fB/x/y\fP
+or \fB~/x\fP). Otherwise, it\(aqs searched at \fBscripts/modules.js/\fP in mpv config
+dirs \- in normal config search order. E.g. \fBrequire("x")\fP is searched as file
+\fBx.js\fP at those dirs, and id \fBfoo/x\fP is searched as file \fBfoo/x.js\fP\&.
+.sp
+No \fBglobal\fP variable, but a module\(aqs \fBthis\fP at its top lexical scope is the
+global object \- also in strict mode. If you have a module which needs \fBglobal\fP
+as the global object, you could do \fBthis.global = this;\fP before \fBrequire\fP\&.
+.sp
+Functions and variables declared at a module don\(aqt pollute the global object.
+.SS The event loop
+.sp
+The event loop poll/dispatch mpv events as long as the queue is not empty, then
+processes the timers, then waits for the next event, and repeats this forever.
+.sp
+You could put this code at your script to replace the built\-in event loop, and
+also print every event which mpv sends to your script:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+function mp_event_loop() {
+ var wait = 0;
+ do {
+ var e = mp.wait_event(wait);
+ dump(e); // there could be a lot of prints...
+ if (e.event != "none") {
+ mp.dispatch_event(e);
+ wait = 0;
+ } else {
+ wait = mp.process_timers() / 1000;
+ }
+ } while (mp.keep_running);
+}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBmp_event_loop\fP is a name which mpv tries to call after the script loads.
+The internal implementation is similar to this (without \fBdump\fP though..).
+.sp
+\fBe = mp.wait_event(wait)\fP returns when the next mpv event arrives, or after
+\fBwait\fP seconds if positive and no mpv events arrived. \fBwait\fP value of 0
+returns immediately (with \fBe.event == "none"\fP if the queue is empty).
+.sp
+\fBmp.dispatch_event(e)\fP calls back the handlers registered for \fBe.event\fP,
+if there are such (event handlers, property observers, script messages, etc).
+.sp
+\fBmp.process_timers()\fP calls back the already\-added, non\-canceled due timers,
+and returns the duration in ms till the next due timer (possibly 0), or \-1 if
+there are no pending timers. Must not be called recursively.
+.sp
+Note: \fBexit()\fP is also registered for the \fBshutdown\fP event, and its
+implementation is a simple \fBmp.keep_running = false\fP\&.
+.SH JSON IPC
+.sp
+mpv can be controlled by external programs using the JSON\-based IPC protocol.
+It can be enabled by specifying the path to a unix socket or a named pipe using
+the option \fB\-\-input\-ipc\-server\fP\&. Clients can connect to this socket and send
+commands to the player or receive events from it.
+.sp
+\fBWARNING:\fP
+.INDENT 0.0
+.INDENT 3.5
+This is not intended to be a secure network protocol. It is explicitly
+insecure: there is no authentication, no encryption, and the commands
+themselves are insecure too. For example, the \fBrun\fP command is exposed,
+which can run arbitrary system commands. The use\-case is controlling the
+player locally. This is not different from the MPlayer slave protocol.
+.UNINDENT
+.UNINDENT
+.SS Socat example
+.sp
+You can use the \fBsocat\fP tool to send commands (and receive replies) from the
+shell. Assuming mpv was started with:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv file.mkv \-\-input\-ipc\-server=/tmp/mpvsocket
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Then you can control it using socat:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+> echo \(aq{ "command": ["get_property", "playback\-time"] }\(aq | socat \- /tmp/mpvsocket
+{"data":190.482000,"error":"success"}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+In this case, socat copies data between stdin/stdout and the mpv socket
+connection.
+.sp
+See the \fB\-\-idle\fP option how to make mpv start without exiting immediately or
+playing a file.
+.sp
+It\(aqs also possible to send input.conf style text\-only commands:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+> echo \(aqshow\-text ${playback\-time}\(aq | socat \- /tmp/mpvsocket
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+But you won\(aqt get a reply over the socket. (This particular command shows the
+playback time on the player\(aqs OSD.)
+.SS Command Prompt example
+.sp
+Unfortunately, it\(aqs not as easy to test the IPC protocol on Windows, since
+Windows ports of socat (in Cygwin and MSYS2) don\(aqt understand named pipes. In
+the absence of a simple tool to send and receive from bidirectional pipes, the
+\fBecho\fP command can be used to send commands, but not receive replies from the
+command prompt.
+.sp
+Assuming mpv was started with:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+mpv file.mkv \-\-input\-ipc\-server=\e\e.\epipe\empvsocket
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+You can send commands from a command prompt:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+echo show\-text ${playback\-time} >\e\e.\epipe\empvsocket
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+To be able to simultaneously read and write from the IPC pipe, like on Linux,
+it\(aqs necessary to write an external program that uses overlapped file I/O (or
+some wrapper like .NET\(aqs NamedPipeClientStream.)
+.SS Protocol
+.sp
+Clients can execute commands on the player by sending JSON messages of the
+following form:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["command_name", "param1", "param2", ...] }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+where \fBcommand_name\fP is the name of the command to be executed, followed by a
+list of parameters. Parameters must be formatted as native JSON values
+(integers, strings, booleans, ...). Every message \fBmust\fP be terminated with
+\fB\en\fP\&. Additionally, \fB\en\fP must not appear anywhere inside the message. In
+practice this means that messages should be minified before being sent to mpv.
+.sp
+mpv will then send back a reply indicating whether the command was run
+correctly, and an additional field holding the command\-specific return data (it
+can also be null).
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "error": "success", "data": null }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+mpv will also send events to clients with JSON messages of the following form:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "event": "event_name" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+where \fBevent_name\fP is the name of the event. Additional event\-specific fields
+can also be present. See \fI\%List of events\fP for a list of all supported events.
+.sp
+Because events can occur at any time, it may be difficult at times to determine
+which response goes with which command. Commands may optionally include a
+\fBrequest_id\fP which, if provided in the command request, will be copied
+verbatim into the response. mpv does not intrepret the \fBrequest_id\fP in any
+way; it is solely for the use of the requester.
+.sp
+For example, this request:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["get_property", "time\-pos"], "request_id": 100 }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Would generate this response:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "error": "success", "data": 1.468135, "request_id": 100 }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+All commands, replies, and events are separated from each other with a line
+break character (\fB\en\fP).
+.sp
+If the first character (after skipping whitespace) is not \fB{\fP, the command
+will be interpreted as non\-JSON text command, as they are used in input.conf
+(or \fBmpv_command_string()\fP in the client API). Additionally, lines starting
+with \fB#\fP and empty lines are ignored.
+.sp
+Currently, embedded 0 bytes terminate the current line, but you should not
+rely on this.
+.SS Commands
+.sp
+In addition to the commands described in \fI\%List of Input Commands\fP, a few
+extra commands can also be used as part of the protocol:
+.INDENT 0.0
+.TP
+.B \fBclient_name\fP
+Return the name of the client as string. This is the string \fBipc\-N\fP with
+N being an integer number.
+.TP
+.B \fBget_time_us\fP
+Return the current mpv internal time in microseconds as a number. This is
+basically the system time, with an arbitrary offset.
+.TP
+.B \fBget_property\fP
+Return the value of the given property. The value will be sent in the data
+field of the replay message.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["get_property", "volume"] }
+{ "data": 50.0, "error": "success" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBget_property_string\fP
+Like \fBget_property\fP, but the resulting data will always be a string.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["get_property_string", "volume"] }
+{ "data": "50.000000", "error": "success" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBset_property\fP
+Set the given property to the given value. See \fI\%Properties\fP for more
+information about properties.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["set_property", "pause", true] }
+{ "error": "success" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBset_property_string\fP
+Like \fBset_property\fP, but the argument value must be passed as string.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["set_property_string", "pause", "yes"] }
+{ "error": "success" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBobserve_property\fP
+Watch a property for changes. If the given property is changed, then an
+event of type \fBproperty\-change\fP will be generated
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["observe_property", 1, "volume"] }
+{ "error": "success" }
+{ "event": "property\-change", "id": 1, "data": 52.0, "name": "volume" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBWARNING:\fP
+.INDENT 7.0
+.INDENT 3.5
+If the connection is closed, the IPC client is destroyed internally,
+and the observed properties are unregistered. This happens for example
+when sending commands to a socket with separate \fBsocat\fP invocations.
+This can make it seem like property observation does not work. You must
+keep the IPC connection open to make it work.
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBobserve_property_string\fP
+Like \fBobserve_property\fP, but the resulting data will always be a string.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["observe_property_string", 1, "volume"] }
+{ "error": "success" }
+{ "event": "property\-change", "id": 1, "data": "52.000000", "name": "volume" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBunobserve_property\fP
+Undo \fBobserve_property\fP or \fBobserve_property_string\fP\&. This requires the
+numeric id passed to the observed command as argument.
+.sp
+Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+{ "command": ["unobserve_property", 1] }
+{ "error": "success" }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBrequest_log_messages\fP
+Enable output of mpv log messages. They will be received as events. The
+parameter to this command is the log\-level (see \fBmpv_request_log_messages\fP
+C API function).
+.sp
+Log message output is meant for humans only (mostly for debugging).
+Attempting to retrieve information by parsing these messages will just
+lead to breakages with future mpv releases. Instead, make a feature request,
+and ask for a proper event that returns the information you need.
+.TP
+.B \fBenable_event\fP, \fBdisable_event\fP
+Enables or disables the named event. Mirrors the \fBmpv_request_event\fP C
+API function. If the string \fBall\fP is used instead of an event name, all
+events are enabled or disabled.
+.sp
+By default, most events are enabled, and there is not much use for this
+command.
+.TP
+.B \fBget_version\fP
+Returns the client API version the C API of the remote mpv instance
+provides.
+.sp
+See also: \fBDOCS/client\-api\-changes.rst\fP\&.
+.UNINDENT
+.SS UTF\-8
+.sp
+Normally, all strings are in UTF\-8. Sometimes it can happen that strings are
+in some broken encoding (often happens with file tags and such, and filenames
+on many Unixes are not required to be in UTF\-8 either). This means that mpv
+sometimes sends invalid JSON. If that is a problem for the client application\(aqs
+parser, it should filter the raw data for invalid UTF\-8 sequences and perform
+the desired replacement, before feeding the data to its JSON parser.
+.sp
+mpv will not attempt to construct invalid UTF\-8 with broken escape sequences.
+.SH CHANGELOG
+.sp
+There is no real changelog, but you can look at the following things:
+.INDENT 0.0
+.IP \(bu 2
+The release changelog, which should contain most user\-visible changes,
+including new features and bug fixes:
+.sp
+\fI\%https://github.com/mpv\-player/mpv/releases\fP
+.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. (Not updated
+anymore.)
+.UNINDENT
+.SH EMBEDDING INTO OTHER PROGRAMS (LIBMPV)
+.sp
+mpv can be embedded into other programs as video/audio playback backend. The
+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 C PLUGINS
+.sp
+You can write C plugins for mpv. These use the libmpv API, although they do not
+use the libmpv library itself.
+.sp
+Currently, they must be explicitly enabled at build time with
+\fB\-\-enable\-cplugins\fP\&. They are available on Linux/BSD platforms only.
+.SS C plugins location
+.sp
+C plugins are put into the mpv scripts directory in its config directory
+(see the \fI\%FILES\fP section for details). They must have a \fB\&.so\fP file extension.
+They can also be explicitly loaded with the \fB\-\-script\fP option.
+.SS API
+.sp
+A C plugin must export the following function:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+int mpv_open_cplugin(mpv_handle *handle)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The plugin function will be called on loading time. This function does not
+return as long as your plugin is loaded (it runs in its own thread). The
+\fBhandle\fP will be deallocated as soon as the plugin function returns.
+.sp
+The return value is interpreted as error status. A value of \fB0\fP is
+interpreted as success, while \fB\-1\fP signals an error. In the latter case,
+the player prints an uninformative error message that loading failed.
+.sp
+Return values other than \fB0\fP and \fB\-1\fP are reserved, and trigger undefined
+behavior.
+.sp
+Within the plugin function, you can call libmpv API functions. The \fBhandle\fP
+is created by \fBmpv_create_client()\fP (or actually an internal equivalent),
+and belongs to you. You can call \fBmpv_wait_event()\fP to wait for things
+happening, and so on.
+.sp
+Note that the player might block until your plugin calls \fBmpv_wait_event()\fP
+for the first time. This gives you a chance to install initial hooks etc.
+before playback begins.
+.sp
+The details are quite similar to Lua scripts.
+.SS Linkage to libmpv
+.sp
+The current implementation requires that your plugins are \fBnot\fP linked against
+libmpv. What your plugins uses are not symbols from a libmpv binary, but
+symbols from the mpv host binary.
+.SS Examples
+.sp
+See:
+.INDENT 0.0
+.IP \(bu 2
+\fI\%https://github.com/mpv\-player/mpv\-examples/tree/master/cplugins\fP
+.UNINDENT
+.SH ENVIRONMENT VARIABLES
+.sp
+There are a number of environment variables that can be used to control the
+behavior of mpv.
+.INDENT 0.0
+.TP
+.B \fBHOME\fP, \fBXDG_CONFIG_HOME\fP
+Used to determine mpv config directory. If \fBXDG_CONFIG_HOME\fP is not set,
+\fB$HOME/.config/mpv\fP is used.
+.sp
+\fB$HOME/.mpv\fP is always added to the list of config search paths with a
+lower priority.
+.TP
+.B \fBXDG_CONFIG_DIRS\fP
+If set, XDG\-style system configuration directories are used. Otherwise,
+the UNIX convention (\fBPREFIX/etc/mpv/\fP) is used.
+.TP
+.B \fBMPV_HOME\fP
+Directory where mpv looks for user settings. Overrides \fBHOME\fP, and mpv
+will try to load the config file as \fB$MPV_HOME/mpv.conf\fP\&.
+.TP
+.B \fBMPV_VERBOSE\fP (see also \fB\-v\fP and \fB\-\-msg\-level\fP)
+Set the initial verbosity level across all message modules (default: 0).
+This is an integer, and the resulting verbosity corresponds to the number
+of \fB\-\-v\fP options passed to the command line.
+.TP
+.B \fBMPV_LEAK_REPORT\fP
+If set to \fB1\fP, enable internal talloc leak reporting.
+.TP
+.B \fBLADSPA_PATH\fP
+Specifies the search path for LADSPA plugins. If it is unset, fully
+qualified path names must be used.
+.TP
+.B \fBDISPLAY\fP
+Standard X11 display name to use.
+.TP
+.B FFmpeg/Libav:
+This library accesses various environment variables. However, they are not
+centrally documented, and documenting them is not our job. Therefore, this
+list is incomplete.
+.sp
+Notable environment variables:
+.INDENT 7.0
+.TP
+.B \fBhttp_proxy\fP
+URL to proxy for \fBhttp://\fP and \fBhttps://\fP URLs.
+.TP
+.B \fBno_proxy\fP
+List of domain patterns for which no proxy should be used.
+List entries are separated by \fB,\fP\&. Patterns can include \fB*\fP\&.
+.UNINDENT
+.TP
+.B libdvdcss:
+.INDENT 7.0
+.TP
+.B \fBDVDCSS_CACHE\fP
+Specify a directory in which to store title key values. This will
+speed up descrambling of DVDs which are in the cache. The
+\fBDVDCSS_CACHE\fP directory is created if it does not exist, and a
+subdirectory is created named after the DVD\(aqs title or manufacturing
+date. If \fBDVDCSS_CACHE\fP is not set or is empty, libdvdcss will use
+the default value which is \fB${HOME}/.dvdcss/\fP under Unix and
+the roaming application data directory (\fB%APPDATA%\fP) under
+Windows. The special value "off" disables caching.
+.TP
+.B \fBDVDCSS_METHOD\fP
+Sets the authentication and decryption method that libdvdcss will use
+to read scrambled discs. Can be one of \fBtitle\fP, \fBkey\fP or \fBdisc\fP\&.
+.INDENT 7.0
+.TP
+.B key
+is the default method. libdvdcss will use a set of calculated
+player keys to try to get the disc key. This can fail if the drive
+does not recognize any of the player keys.
+.TP
+.B disc
+is a fallback method when key has failed. Instead of using player
+keys, libdvdcss will crack the disc key using a brute force
+algorithm. This process is CPU intensive and requires 64 MB of
+memory to store temporary data.
+.TP
+.B title
+is the fallback when all other methods have failed. It does not
+rely on a key exchange with the DVD drive, but rather uses a crypto
+attack to guess the title key. On rare cases this may fail because
+there is not enough encrypted data on the disc to perform a
+statistical attack, but on the other hand it is the only way to
+decrypt a DVD stored on a hard disc, or a DVD with the wrong region
+on an RPC2 drive.
+.UNINDENT
+.TP
+.B \fBDVDCSS_RAW_DEVICE\fP
+Specify the raw device to use. Exact usage will depend on your
+operating system, the Linux utility to set up raw devices is raw(8)
+for instance. Please note that on most operating systems, using a raw
+device requires highly aligned buffers: Linux requires a 2048 bytes
+alignment (which is the size of a DVD sector).
+.TP
+.B \fBDVDCSS_VERBOSE\fP
+Sets the libdvdcss verbosity level.
+.INDENT 7.0
+.TP
+.B 0
+Outputs no messages at all.
+.TP
+.B 1
+Outputs error messages to stderr.
+.TP
+.B 2
+Outputs error messages and debug messages to stderr.
+.UNINDENT
+.TP
+.B \fBDVDREAD_NOKEYS\fP
+Skip retrieving all keys on startup. Currently disabled.
+.TP
+.B \fBHOME\fP
+FIXME: Document this.
+.UNINDENT
+.UNINDENT
+.SH EXIT CODES
+.sp
+Normally \fBmpv\fP returns 0 as exit code after finishing playback successfully.
+If errors happen, the following exit codes can be returned:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B 1
+Error initializing mpv. This is also returned if unknown options are
+passed to mpv.
+.TP
+.B 2
+The file passed to mpv couldn\(aqt be played. This is somewhat fuzzy:
+currently, playback of a file is considered to be successful if
+initialization was mostly successful, even if playback fails
+immediately after initialization.
+.TP
+.B 3
+There were some files that could be played, and some files which
+couldn\(aqt (using the definition of success from above).
+.TP
+.B 4
+Quit due to a signal, Ctrl+c in a VO window (by default), or from the
+default quit key bindings in encoding mode.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Note that quitting the player manually will always lead to exit code 0,
+overriding the exit code that would be returned normally. Also, the \fBquit\fP
+input command can take an exit code: in this case, that exit code is returned.
+.SH FILES
+.sp
+For Windows\-specifics, see \fI\%FILES ON WINDOWS\fP section.
+.INDENT 0.0
+.TP
+.B \fB/usr/local/etc/mpv/mpv.conf\fP
+mpv system\-wide settings (depends on \fB\-\-prefix\fP passed to configure \- mpv
+in default configuration will use \fB/usr/local/etc/mpv/\fP as config
+directory, while most Linux distributions will set it to \fB/etc/mpv/\fP).
+.TP
+.B \fB~/.config/mpv/mpv.conf\fP
+mpv user settings (see \fI\%CONFIGURATION FILES\fP section)
+.TP
+.B \fB~/.config/mpv/input.conf\fP
+key bindings (see \fI\%INPUT.CONF\fP section)
+.TP
+.B \fB~/.config/mpv/fonts.conf\fP
+Fontconfig fonts.conf that is customized for mpv. You should include system
+fonts.conf in this file or mpv would not know about fonts that you already
+have in the system.
+.sp
+Only available when libass is built with fontconfig.
+.TP
+.B \fB~/.config/mpv/subfont.ttf\fP
+fallback subtitle font
+.TP
+.B \fB~/.config/mpv/fonts/\fP
+Font files in this directory are used by mpv/libass for subtitles. Useful
+if you do not want to install fonts to your system. Note that files in this
+directory are loaded into memory before being used by mpv. If you have a
+lot of fonts, consider using fonts.conf (see above) to include additional
+fonts, which is more memory\-efficient.
+.TP
+.B \fB~/.config/mpv/scripts/\fP
+All files in this directory are loaded as if they were passed to the
+\fB\-\-script\fP option. They are loaded in alphabetical order, and sub\-directories
+and files with no \fB\&.lua\fP extension are ignored. The \fB\-\-load\-scripts=no\fP
+option disables loading these files.
+.TP
+.B \fB~/.config/mpv/watch_later/\fP
+Contains temporary config files needed for resuming playback of files with
+the watch later feature. See for example the \fBQ\fP key binding, or the
+\fBquit\-watch\-later\fP input command.
+.sp
+Each file is a small config file which is loaded if the corresponding media
+file is loaded. It contains the playback position and some (not necessarily
+all) settings that were changed during playback. The filenames are hashed
+from the full paths of the media files. It\(aqs in general not possible to
+extract the media filename from this hash. However, you can set the
+\fB\-\-write\-filename\-in\-watch\-later\-config\fP option, and the player will
+add the media filename to the contents of the resume config file.
+.TP
+.B \fB~/.config/mpv/lua\-settings/osc.conf\fP
+This is loaded by the OSC script. See the \fI\%ON SCREEN CONTROLLER\fP docs
+for details.
+.sp
+Other files in this directory are specific to the corresponding scripts
+as well, and the mpv core doesn\(aqt touch them.
+.UNINDENT
+.sp
+Note that the environment variables \fB$XDG_CONFIG_HOME\fP and \fB$MPV_HOME\fP can
+override the standard directory \fB~/.config/mpv/\fP\&.
+.sp
+Also, the old config location at \fB~/.mpv/\fP is still read, and if the XDG
+variant does not exist, will still be preferred.
+.SH FILES ON WINDOWS
+.sp
+On win32 (if compiled with MinGW, but not Cygwin), the default config file
+locations are different. They are generally located under \fB%APPDATA%/mpv/\fP\&.
+For example, the path to mpv.conf is \fB%APPDATA%/mpv/mpv.conf\fP, which maps to
+a system and user\-specific path, for example
+.INDENT 0.0
+.INDENT 3.5
+\fBC:\eusers\eUSERNAME\eAppData\eRoaming\empv\empv.conf\fP
+.UNINDENT
+.UNINDENT
+.sp
+You can find the exact path by running \fBecho %APPDATA%\empv\empv.conf\fP in cmd.exe.
+.sp
+Other config files (such as \fBinput.conf\fP) are in the same directory. See the
+\fI\%FILES\fP section above.
+.sp
+The environment variable \fB$MPV_HOME\fP completely overrides these, like on
+UNIX.
+.sp
+If a directory named \fBportable_config\fP next to the mpv.exe exists, all
+config will be loaded from this directory only. Watch later config files are
+written to this directory as well. (This exists on Windows only and is redundant
+with \fB$MPV_HOME\fP\&. However, since Windows is very scripting unfriendly, a
+wrapper script just setting \fB$MPV_HOME\fP, like you could do it on other
+systems, won\(aqt work. \fBportable_config\fP is provided for convenience to get
+around this restriction.)
+.sp
+Config files located in the same directory as \fBmpv.exe\fP are loaded with
+lower priority. Some config files are loaded only once, which means that
+e.g. of 2 \fBinput.conf\fP files located in two config directories, only the
+one from the directory with higher priority will be loaded.
+.sp
+A third config directory with the lowest priority is the directory named \fBmpv\fP
+in the same directory as \fBmpv.exe\fP\&. This used to be the directory with the
+highest priority, but is now discouraged to use and might be removed in the
+future.
+.sp
+Note that mpv likes to mix \fB/\fP and \fB\e\fP path separators for simplicity.
+kernel32.dll accepts this, but cmd.exe does not.
+.SH COPYRIGHT
+GPLv2+
+.\" Generated by docutils manpage writer.
+.
diff --git a/pkg/mpv/patch/0002-Add-generated-man-page.patch b/pkg/mpv/patch/0002-Add-generated-man-page.patch
@@ -1,15223 +0,0 @@
-From 8df10cc1adebc9c3551a043eeb20ccc0efd59227 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
-
-This requires python and rst2man to generate.
-
-$ rst2man.py --strip-elements-with-class=contents DOCS/man/mpv.rst DOCS/man/mpv.1
----
- DOCS/man/mpv.1 | 15201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 15201 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 0000000000..e698e6bdd4
---- /dev/null
-+++ b/DOCS/man/mpv.1
-@@ -0,0 +1,15201 @@
-+.\" Man page generated from reStructuredText.
-+.
-+.TH MPV 1 "" "" "multimedia"
-+.SH NAME
-+mpv \- a media player
-+.
-+.nr rst2man-indent-level 0
-+.
-+.de1 rstReportMargin
-+\\$1 \\n[an-margin]
-+level \\n[rst2man-indent-level]
-+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-+-
-+\\n[rst2man-indent0]
-+\\n[rst2man-indent1]
-+\\n[rst2man-indent2]
-+..
-+.de1 INDENT
-+.\" .rstReportMargin pre:
-+. RS \\$1
-+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
-+. nr rst2man-indent-level +1
-+.\" .rstReportMargin post:
-+..
-+.de UNINDENT
-+. RE
-+.\" indent \\n[an-margin]
-+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
-+.nr rst2man-indent-level -1
-+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
-+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
-+..
-+.SH SYNOPSIS
-+.nf
-+\fBmpv\fP [options] [file|URL|PLAYLIST|\-]
-+\fBmpv\fP [options] files
-+.fi
-+.sp
-+.SH DESCRIPTION
-+.sp
-+\fBmpv\fP is a media player based on MPlayer and mplayer2. It supports a wide variety of video
-+file formats, audio and video codecs, and subtitle types. Special input URL
-+types are available to read input from a variety of sources other than disk
-+files. Depending on platform, a variety of different video and audio output
-+methods are supported.
-+.sp
-+Usage examples to get you started quickly can be found at the end of this man
-+page.
-+.SH INTERACTIVE CONTROL
-+.sp
-+mpv has a fully configurable, command\-driven control layer which allows you
-+to control mpv using keyboard, mouse, or remote control (there is no
-+LIRC support \- configure remotes as input devices instead).
-+.sp
-+See the \fB\-\-input\-\fP options for ways to customize it.
-+.sp
-+The following listings are not necessarily complete. See \fBetc/input.conf\fP for
-+a list of default bindings. User \fBinput.conf\fP files and Lua scripts can
-+define additional key bindings.
-+.SS Keyboard Control
-+.INDENT 0.0
-+.TP
-+.B LEFT and RIGHT
-+Seek backward/forward 5 seconds. Shift+arrow does a 1 second exact seek
-+(see \fB\-\-hr\-seek\fP).
-+.TP
-+.B UP and DOWN
-+Seek forward/backward 1 minute. Shift+arrow does a 5 second exact seek (see
-+\fB\-\-hr\-seek\fP).
-+.TP
-+.B Ctrl+LEFT and Ctrl+RIGHT
-+Seek to the previous/next subtitle. Subject to some restrictions and
-+might not always work; see \fBsub\-seek\fP command.
-+.TP
-+.B [ and ]
-+Decrease/increase current playback speed by 10%.
-+.TP
-+.B { and }
-+Halve/double current playback speed.
-+.TP
-+.B BACKSPACE
-+Reset playback speed to normal.
-+.TP
-+.B < and >
-+Go backward/forward in the playlist.
-+.TP
-+.B ENTER
-+Go forward in the playlist.
-+.TP
-+.B p / SPACE
-+Pause (pressing again unpauses).
-+.TP
-+.B \&.
-+Step forward. Pressing once will pause, every consecutive press will
-+play one frame and then go into pause mode again.
-+.UNINDENT
-+.INDENT 0.0
-+.TP
-+.B ,
-+Step backward. Pressing once will pause, every consecutive press will
-+play one frame in reverse and then go into pause mode again.
-+.TP
-+.B q
-+Stop playing and quit.
-+.TP
-+.B Q
-+Like \fBq\fP, but store the current playback position. Playing the same file
-+later will resume at the old playback position if possible.
-+.TP
-+.B / and *
-+Decrease/increase volume.
-+.TP
-+.B 9 and 0
-+Decrease/increase volume.
-+.TP
-+.B m
-+Mute sound.
-+.TP
-+.B _
-+Cycle through the available video tracks.
-+.TP
-+.B #
-+Cycle through the available audio tracks.
-+.TP
-+.B f
-+Toggle fullscreen (see also \fB\-\-fs\fP).
-+.TP
-+.B ESC
-+Exit fullscreen mode.
-+.TP
-+.B T
-+Toggle stay\-on\-top (see also \fB\-\-ontop\fP).
-+.TP
-+.B w and e
-+Decrease/increase pan\-and\-scan range.
-+.TP
-+.B o (also P)
-+Show progression bar, elapsed time and total duration on the OSD.
-+.TP
-+.B O
-+Toggle OSD states between normal and playback time/duration.
-+.TP
-+.B v
-+Toggle subtitle visibility.
-+.TP
-+.B j and J
-+Cycle through the available subtitles.
-+.TP
-+.B x and z
-+Adjust subtitle delay by +/\- 0.1 seconds.
-+.TP
-+.B l
-+Set/clear A\-B loop points. See \fBab\-loop\fP command for details.
-+.TP
-+.B L
-+Toggle infinite looping.
-+.TP
-+.B Ctrl + and Ctrl \-
-+Adjust audio delay (A/V sync) by +/\- 0.1 seconds.
-+.TP
-+.B u
-+Switch between applying no style overrides to SSA/ASS subtitles, and
-+overriding them almost completely with the normal subtitle style. See
-+\fB\-\-sub\-ass\-override\fP for more info.
-+.TP
-+.B V
-+Toggle subtitle VSFilter aspect compatibility mode. See
-+\fB\-\-sub\-ass\-vsfilter\-aspect\-compat\fP for more info.
-+.TP
-+.B r and t
-+Move subtitles up/down.
-+.TP
-+.B s
-+Take a screenshot.
-+.TP
-+.B S
-+Take a screenshot, without subtitles. (Whether this works depends on VO
-+driver support.)
-+.TP
-+.B Ctrl s
-+Take a screenshot, as the window shows it (with subtitles, OSD, and scaled
-+video).
-+.TP
-+.B PGUP and PGDWN
-+Seek to the beginning of the previous/next chapter. In most cases,
-+"previous" will actually go to the beginning of the current chapter; see
-+\fB\-\-chapter\-seek\-threshold\fP\&.
-+.TP
-+.B Shift+PGUP and Shift+PGDWN
-+Seek backward or forward by 10 minutes. (This used to be mapped to
-+PGUP/PGDWN without Shift.)
-+.TP
-+.B d
-+Activate/deactivate deinterlacer.
-+.TP
-+.B A
-+Cycle aspect ratio override.
-+.UNINDENT
-+.sp
-+(The following keys are valid only when using a video output that supports the
-+corresponding adjustment, or the software equalizer (\fB\-\-vf=eq\fP).)
-+.INDENT 0.0
-+.TP
-+.B 1 and 2
-+Adjust contrast.
-+.TP
-+.B 3 and 4
-+Adjust brightness.
-+.TP
-+.B 5 and 6
-+Adjust gamma.
-+.TP
-+.B 7 and 8
-+Adjust saturation.
-+.TP
-+.B Alt+0 (and command+0 on OSX)
-+Resize video window to half its original size.
-+.TP
-+.B Alt+1 (and command+1 on OSX)
-+Resize video window to its original size.
-+.TP
-+.B Alt+2 (and command+2 on OSX)
-+Resize video window to double its original size.
-+.TP
-+.B command + f (OSX only)
-+Toggle fullscreen (see also \fB\-\-fs\fP).
-+.UNINDENT
-+.sp
-+(The following keys are valid if you have a keyboard with multimedia keys.)
-+.INDENT 0.0
-+.TP
-+.B PAUSE
-+Pause.
-+.TP
-+.B STOP
-+Stop playing and quit.
-+.TP
-+.B PREVIOUS and NEXT
-+Seek backward/forward 1 minute.
-+.UNINDENT
-+.sp
-+If you miss some older key bindings, look at \fBetc/restore\-old\-bindings.conf\fP
-+in the mpv git repository.
-+.SS Mouse Control
-+.INDENT 0.0
-+.TP
-+.B button 3 and button 4
-+Seek backward/forward 1 minute.
-+.TP
-+.B button 5 and button 6
-+Decrease/increase volume.
-+.UNINDENT
-+.SH USAGE
-+.sp
-+Command line arguments starting with \fB\-\fP are interpreted as options,
-+everything else as filenames or URLs. All options except \fIflag\fP options (or
-+choice options which include \fByes\fP) require a parameter in the form
-+\fB\-\-option=value\fP\&.
-+.sp
-+One exception is the lone \fB\-\fP (without anything else), which means media data
-+will be read from stdin. Also, \fB\-\-\fP (without anything else) will make the
-+player interpret all following arguments as filenames, even if they start with
-+\fB\-\fP\&. (To play a file named \fB\-\fP, you need to use \fB\&./\-\fP\&.)
-+.sp
-+Every \fIflag\fP option has a \fIno\-flag\fP counterpart, e.g. the opposite of the
-+\fB\-\-fs\fP option is \fB\-\-no\-fs\fP\&. \fB\-\-fs=yes\fP is same as \fB\-\-fs\fP, \fB\-\-fs=no\fP
-+is the same as \fB\-\-no\-fs\fP\&.
-+.sp
-+If an option is marked as \fI(XXX only)\fP, it will only work in combination with
-+the \fIXXX\fP option or if \fIXXX\fP is compiled in.
-+.SS Legacy option syntax
-+.sp
-+The \fB\-\-option=value\fP syntax is not strictly enforced, and the alternative
-+legacy syntax \fB\-option value\fP and \fB\-\-option value\fP will also work. This is
-+mostly for compatibility with MPlayer. Using these should be avoided. Their
-+semantics can change any time in the future.
-+.sp
-+For example, the alternative syntax will consider an argument following the
-+option a filename. \fBmpv \-fs no\fP will attempt to play a file named \fBno\fP,
-+because \fB\-\-fs\fP is a flag option that requires no parameter. If an option
-+changes and its parameter becomes optional, then a command line using the
-+alternative syntax will break.
-+.sp
-+Currently, the parser makes no difference whether an option starts with \fB\-\-\fP
-+or a single \fB\-\fP\&. This might also change in the future, and \fB\-\-option value\fP
-+might always interpret \fBvalue\fP as filename in order to reduce ambiguities.
-+.SS Escaping spaces and other special characters
-+.sp
-+Keep in mind that the shell will partially parse and mangle the arguments you
-+pass to mpv. For example, you might need to quote or escape options and
-+filenames:
-+.INDENT 0.0
-+.INDENT 3.5
-+\fBmpv "filename with spaces.mkv" \-\-title="window title"\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+It gets more complicated if the suboption parser is involved. The suboption
-+parser puts several options into a single string, and passes them to a
-+component at once, instead of using multiple options on the level of the
-+command line.
-+.sp
-+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, assume the hypothetical \fBfoo\fP filter can take multiple options:
-+.INDENT 0.0
-+.INDENT 3.5
-+\fBmpv test.mkv \-\-vf=foo:option1=value1:option2:option3=value3,bar\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+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\-\-vf=foo:option1="option value with spaces",bar\(aq\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Shells may actually strip some quotes from the string passed to the commandline,
-+so the example quotes the string twice, ensuring that mpv receives the \fB"\fP
-+quotes.
-+.sp
-+The \fB[...]\fP form of quotes wraps everything between \fB[\fP and \fB]\fP\&. It\(aqs
-+useful with shells that don\(aqt interpret these characters in the middle of
-+an argument (like bash). These quotes are balanced (since mpv 0.9.0): the \fB[\fP
-+and \fB]\fP nest, and the quote terminates on the last \fB]\fP that has no matching
-+\fB[\fP within the string. (For example, \fB[a[b]c]\fP results in \fBa[b]c\fP\&.)
-+.sp
-+The fixed\-length quoting syntax is intended for use with external
-+scripts and programs.
-+.sp
-+It is started with \fB%\fP and has the following format:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+%n%string_of_length_n
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Examples"
-+.sp
-+\fBmpv \(aq\-\-vf=foo:option1=%11%quoted text\(aq test.avi\fP
-+.sp
-+Or in a script:
-+.sp
-+\fBmpv \-\-vf=foo:option1=%\(gaexpr length "$NAME"\(ga%"$NAME" test.avi\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Suboptions passed to the client API are also subject to escaping. Using
-+\fBmpv_set_option_string()\fP is exactly like passing \fB\-\-name=data\fP to the
-+command line (but without shell processing of the string). Some options
-+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.
-+.SS Paths
-+.sp
-+Some care must be taken when passing arbitrary paths and filenames to mpv. For
-+example, paths starting with \fB\-\fP will be interpreted as options. Likewise,
-+if a path contains the sequence \fB://\fP, the string before that might be
-+interpreted as protocol prefix, even though \fB://\fP can be part of a legal
-+UNIX path. To avoid problems with arbitrary paths, you should be sure that
-+absolute paths passed to mpv start with \fB/\fP, and prefix relative paths with
-+\fB\&./\fP\&.
-+.sp
-+Using the \fBfile://\fP pseudo\-protocol is discouraged, because it involves
-+strange URL unescaping rules.
-+.sp
-+The name \fB\-\fP itself is interpreted as stdin, and will cause mpv to disable
-+console controls. (Which makes it suitable for playing data piped to stdin.)
-+.sp
-+The special argument \fB\-\-\fP can be used to stop mpv from interpreting the
-+following arguments as options.
-+.sp
-+When using the client API, you should strictly avoid using \fBmpv_command_string\fP
-+for invoking the \fBloadfile\fP command, and instead prefer e.g. \fBmpv_command\fP
-+to avoid the need for filename escaping.
-+.sp
-+For paths passed to suboptions, the situation is further complicated by the
-+need to escape special characters. To work this around, the path can be
-+additionally wrapped in the fixed\-length syntax, e.g. \fB%n%string_of_length_n\fP
-+(see above).
-+.sp
-+Some mpv options interpret paths starting with \fB~\fP\&. Currently, the prefix
-+\fB~~/\fP expands to the mpv configuration directory (usually \fB~/.config/mpv/\fP).
-+\fB~/\fP expands to the user\(aqs home directory. (The trailing \fB/\fP is always
-+required.) There are the following paths as well:
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+Name
-+T} T{
-+Meaning
-+T}
-+_
-+T{
-+\fB~~home/\fP
-+T} T{
-+same as \fB~~/\fP
-+T}
-+_
-+T{
-+\fB~~global/\fP
-+T} T{
-+the global config path, if available (not on win32)
-+T}
-+_
-+T{
-+\fB~~osxbundle/\fP
-+T} T{
-+the OSX bundle resource path (OSX only)
-+T}
-+_
-+T{
-+\fB~~desktop/\fP
-+T} T{
-+the path to the desktop (win32, OSX)
-+T}
-+_
-+.TE
-+.SS Per\-File Options
-+.sp
-+When playing multiple files, any option given on the command line usually
-+affects all files. Example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-a file1.mkv \-\-b file2.mkv \-\-c
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+File
-+T} T{
-+Active options
-+T}
-+_
-+T{
-+file1.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-c\fP
-+T}
-+_
-+T{
-+file2.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-c\fP
-+T}
-+_
-+.TE
-+.sp
-+(This is different from MPlayer and mplayer2.)
-+.sp
-+Also, if any option is changed at runtime (via input commands), they are not
-+reset when a new file is played.
-+.sp
-+Sometimes, it is useful to change options per\-file. This can be achieved by
-+adding the special per\-file markers \fB\-\-{\fP and \fB\-\-}\fP\&. (Note that you must
-+escape these on some shells.) Example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-a file1.mkv \-\-b \-\-\e{ \-\-c file2.mkv \-\-d file3.mkv \-\-e \-\-\e} file4.mkv \-\-f
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+File
-+T} T{
-+Active options
-+T}
-+_
-+T{
-+file1.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-f\fP
-+T}
-+_
-+T{
-+file2.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
-+T}
-+_
-+T{
-+file3.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-f \-\-c \-\-d \-\-e\fP
-+T}
-+_
-+T{
-+file4.mkv
-+T} T{
-+\fB\-\-a \-\-b \-\-f\fP
-+T}
-+_
-+.TE
-+.sp
-+Additionally, any file\-local option changed at runtime is reset when the current
-+file stops playing. If option \fB\-\-c\fP is changed during playback of
-+\fBfile2.mkv\fP, it is reset when advancing to \fBfile3.mkv\fP\&. This only affects
-+file\-local options. The option \fB\-\-a\fP is never reset here.
-+.SS List Options
-+.sp
-+Some options which store lists of option values can have action suffixes. For
-+example, you can set a \fB,\fP\-separated list of filters with \fB\-\-vf\fP, but the
-+option also allows you to append filters with \fB\-\-vf\-append\fP\&.
-+.sp
-+Options for filenames do not use \fB,\fP as separator, but \fB:\fP (Unix) or \fB;\fP
-+(Windows).
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+Suffix
-+T} T{
-+Meaning
-+T}
-+_
-+T{
-+\-add
-+T} T{
-+Append 1 or more items (may become alias for \-append)
-+T}
-+_
-+T{
-+\-append
-+T} T{
-+Append single item (avoids need for escaping)
-+T}
-+_
-+T{
-+\-clr
-+T} T{
-+Clear the option
-+T}
-+_
-+T{
-+\-del
-+T} T{
-+Delete an existing item by integer index
-+T}
-+_
-+T{
-+\-pre
-+T} T{
-+Prepend 1 or more items
-+T}
-+_
-+T{
-+\-set
-+T} T{
-+Set a list of items
-+T}
-+_
-+.TE
-+.sp
-+Although some operations allow specifying multiple \fB,\fP\-separated items, using
-+this is strongly discouraged and deprecated, except for \fB\-set\fP\&.
-+.sp
-+Without suffix, the action taken is normally \fB\-set\fP\&.
-+.sp
-+Some options (like \fB\-\-sub\-file\fP, \fB\-\-audio\-file\fP, \fB\-\-opengl\-shader\fP) are
-+aliases for the proper option with \fB\-append\fP action. For example,
-+\fB\-\-sub\-file\fP is an alias for \fB\-\-sub\-files\-append\fP\&.
-+.SS Playing DVDs
-+.sp
-+DVDs can be played with the \fBdvd://[title]\fP syntax. The optional
-+title specifier is a number which selects between separate video
-+streams on the DVD. If no title is given (\fBdvd://\fP) then the longest
-+title is selected automatically by the library. This is usually what
-+you want. mpv does not support DVD menus.
-+.sp
-+DVDs which have been copied on to a hard drive or other mounted
-+filesystem (by e.g. the \fBdvdbackup\fP tool) are accommodated by
-+specifying the path to the local copy: \fB\-\-dvd\-device=PATH\fP\&.
-+Alternatively, running \fBmpv PATH\fP should auto\-detect a DVD directory
-+tree and play the longest title.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+DVD library choices
-+.sp
-+mpv uses a different default DVD library than MPlayer. MPlayer
-+uses libdvdread by default, and mpv uses libdvdnav by default.
-+Both libraries are developed in parallel, but libdvdnav is
-+intended to support more sophisticated DVD features such as menus
-+and multi\-angle playback. mpv uses libdvdnav for files specified
-+as either \fBdvd://...\fP or \fBdvdnav://...\fP\&. To use libdvdread,
-+which will produce behavior more like MPlayer, specify
-+\fBdvdread://...\fP instead. Some users have experienced problems
-+when using libdvdnav, in which playback gets stuck in a DVD menu
-+stream. These problems are reported to go away when auto\-selecting
-+the title (\fBdvd://\fP rather than \fBdvd://1\fP) or when using
-+libdvdread (e.g. \fBdvdread://0\fP). There are also outstanding bugs
-+in libdvdnav with seeking backwards and forwards in a video
-+stream. Specify \fBdvdread://...\fP to fix such problems.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+DVD subtitles
-+.sp
-+DVDs use image\-based subtitles. Image subtitles are implemented as
-+a bitmap video stream which can be superimposed over the main
-+movie. mpv\(aqs subtitle styling and positioning options and keyboard
-+shortcuts generally do not work with image\-based subtitles.
-+Exceptions include options like \fB\-\-stretch\-dvd\-subs\fP and
-+\fB\-\-stretch\-image\-subs\-to\-screen\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.SH CONFIGURATION FILES
-+.SS Location and Syntax
-+.sp
-+You can put all of the options in configuration files which will be read every
-+time mpv is run. The system\-wide configuration file \(aqmpv.conf\(aq is in your
-+configuration directory (e.g. \fB/etc/mpv\fP or \fB/usr/local/etc/mpv\fP), the
-+user\-specific one is \fB~/.config/mpv/mpv.conf\fP\&. For details and platform
-+specifics (in particular Windows paths) see the \fI\%FILES\fP section.
-+.sp
-+User\-specific options override system\-wide options and options given on the
-+command line override either. The syntax of the configuration files is
-+\fBoption=value\fP\&. Everything after a \fI#\fP is considered a comment. Options
-+that work without values can be enabled by setting them to \fIyes\fP and disabled by
-+setting them to \fIno\fP\&. Even suboptions can be specified in this way.
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Example configuration file"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+# Use opengl video output by default.
-+vo=opengl
-+# Use quotes for text that can contain spaces:
-+status\-msg="Time: ${time\-pos}"
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.SS Escaping spaces and special characters
-+.sp
-+This is done like with command line options. The shell is not involved here,
-+but option values still need to be quoted as a whole if it contains certain
-+characters like spaces. A config entry can be quoted with \fB"\fP,
-+as well as with the fixed\-length syntax (\fB%n%\fP) mentioned before. This is like
-+passing the exact contents of the quoted string as command line option. C\-style
-+escapes are currently _not_ interpreted on this level, although some options do
-+this manually. (This is a mess and should probably be changed at some point.)
-+.SS Putting Command Line Options into the Configuration File
-+.sp
-+Almost all command line options can be put into the configuration file. Here
-+is a small guide:
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+Option
-+T} T{
-+Configuration file entry
-+T}
-+_
-+T{
-+\fB\-\-flag\fP
-+T} T{
-+\fBflag\fP
-+T}
-+_
-+T{
-+\fB\-opt val\fP
-+T} T{
-+\fBopt=val\fP
-+T}
-+_
-+T{
-+\fB\-\-opt=val\fP
-+T} T{
-+\fBopt=val\fP
-+T}
-+_
-+T{
-+\fB\-opt "has spaces"\fP
-+T} T{
-+\fBopt="has spaces"\fP
-+T}
-+_
-+.TE
-+.SS File\-specific Configuration Files
-+.sp
-+You can also write file\-specific configuration files. If you wish to have a
-+configuration file for a file called \(aqvideo.avi\(aq, create a file named
-+\(aqvideo.avi.conf\(aq with the file\-specific options in it and put it in
-+\fB~/.config/mpv/\fP\&. You can also put the configuration file in the same directory
-+as the file to be played. Both require you to set the \fB\-\-use\-filedir\-conf\fP
-+option (either on the command line or in your global config file). If a
-+file\-specific configuration file is found in the same directory, no
-+file\-specific configuration is loaded from \fB~/.config/mpv\fP\&. In addition, the
-+\fB\-\-use\-filedir\-conf\fP option enables directory\-specific configuration files.
-+For this, mpv first tries to load a mpv.conf from the same directory
-+as the file played and then tries to load any file\-specific configuration.
-+.SS Profiles
-+.sp
-+To ease working with different configurations, profiles can be defined in the
-+configuration files. A profile starts with its name in square brackets,
-+e.g. \fB[my\-profile]\fP\&. All following options will be part of the profile. A
-+description (shown by \fB\-\-profile=help\fP) can be defined with the
-+\fBprofile\-desc\fP option. To end the profile, start another one or use the
-+profile name \fBdefault\fP to continue with normal options.
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Example mpv config file with profiles"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+# normal top\-level option
-+fullscreen=yes
-+
-+# a profile that can be enabled with \-\-profile=big\-cache
-+[big\-cache]
-+cache=123400
-+demuxer\-readahead\-secs=20
-+
-+[slow]
-+profile\-desc="some profile name"
-+# reference a builtin profile
-+profile=opengl\-hq
-+
-+[fast]
-+vo=vdpau
-+
-+# using a profile again extends it
-+[slow]
-+framedrop=no
-+# you can also include other profiles
-+profile=big\-cache
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.SS Auto profiles
-+.sp
-+Some profiles are loaded automatically. The following example demonstrates this:
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Auto profile loading"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+[protocol.dvd]
-+profile\-desc="profile for dvd:// streams"
-+alang=en
-+
-+[extension.flv]
-+profile\-desc="profile for .flv files"
-+vf=flip
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+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).
-+.sp
-+This feature is very limited, and there are no other auto profiles.
-+.SH TAKING SCREENSHOTS
-+.sp
-+Screenshots of the currently played file can be taken using the \(aqscreenshot\(aq
-+input mode command, which is by default bound to the \fBs\fP key. Files named
-+\fBmpv\-shotNNNN.jpg\fP will be saved in the working directory, using the first
-+available number \- no files will be overwritten. In pseudo\-GUI mode, the
-+screenshot will be saved somewhere else. See \fI\%PSEUDO GUI MODE\fP\&.
-+.sp
-+A screenshot will usually contain the unscaled video contents at the end of the
-+video filter chain and subtitles. By default, \fBS\fP takes screenshots without
-+subtitles, while \fBs\fP includes subtitles.
-+.sp
-+Unlike with MPlayer, the \fBscreenshot\fP video filter is not required. This
-+filter was never required in mpv, and has been removed.
-+.SH TERMINAL STATUS LINE
-+.sp
-+During playback, mpv shows the playback status on the terminal. It looks like
-+something like this:
-+.INDENT 0.0
-+.INDENT 3.5
-+\fBAV: 00:03:12 / 00:24:25 (13%) A\-V: \-0.000\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The status line can be overridden with the \fB\-\-term\-status\-msg\fP option.
-+.sp
-+The following is a list of things that can show up in the status line. Input
-+properties, that can be used to get the same information manually, are also
-+listed.
-+.INDENT 0.0
-+.IP \(bu 2
-+\fBAV:\fP or \fBV:\fP (video only) or \fBA:\fP (audio only)
-+.IP \(bu 2
-+The current time position in \fBHH:MM:SS\fP format (\fBplayback\-time\fP property)
-+.IP \(bu 2
-+The total file duration (absent if unknown) (\fBlength\fP property)
-+.IP \(bu 2
-+Playback speed, e.g. \(ga\(ga x2.0\(ga\(ga. Only visible if the speed is not normal. This
-+is the user\-requested speed, and not the actual speed (usually they should
-+be the same, unless playback is too slow). (\fBspeed\fP property.)
-+.IP \(bu 2
-+Playback percentage, e.g. \fB(13%)\fP\&. How much of the file has been played.
-+Normally calculated out of playback position and duration, but can fallback
-+to other methods (like byte position) if these are not available.
-+(\fBpercent\-pos\fP property.)
-+.IP \(bu 2
-+The audio/video sync as \fBA\-V: 0.000\fP\&. This is the difference between
-+audio and video time. Normally it should be 0 or close to 0. If it\(aqs growing,
-+it might indicate a playback problem. (\fBavsync\fP property.)
-+.IP \(bu 2
-+Total A/V sync change, e.g. \fBct: \-0.417\fP\&. Normally invisible. Can show up
-+if there is audio "missing", or not enough frames can be dropped. Usually
-+this will indicate a problem. (\fBtotal\-avsync\-change\fP property.)
-+.IP \(bu 2
-+Encoding state in \fB{...}\fP, only shown in encoding mode.
-+.IP \(bu 2
-+Display sync state. If display sync is active (\fBdisplay\-sync\-active\fP
-+property), this shows \fBDS: 2.500/13\fP, where the first number is average
-+number of vsyncs per video frame (e.g. 2.5 when playing 24Hz videos on 60Hz
-+screens), which might jitter if the ratio doesn\(aqt round off, or there are
-+mistimed frames (\fBvsync\-ratio\fP), and the second number of estimated number
-+of vsyncs which took too long (\fBvo\-delayed\-frame\-count\fP property). The
-+latter is a heuristic, as it\(aqs generally not possible to determine this with
-+certainty.
-+.IP \(bu 2
-+Dropped frames, e.g. \fBDropped: 4\fP\&. Shows up only if the count is not 0. Can
-+grow if the video framerate is higher than that of the display, or if video
-+rendering is too slow. May also be incremented on "hiccups" and when the video
-+frame couldn\(aqt be displayed on time. (\fBvo\-drop\-frame\-count\fP property.)
-+If the decoder drops frames, the number of decoder\-dropped frames is appended
-+to the display as well, e.g.: \fBDropped: 4/34\fP\&. This happens only if
-+decoder frame dropping is enabled with the \fB\-\-framedrop\fP options.
-+(\fBdrop\-frame\-count\fP property.)
-+.IP \(bu 2
-+Cache state, e.g. \fBCache: 2s+134KB\fP\&. Visible if the stream cache is enabled.
-+The first value shows the amount of video buffered in the demuxer in seconds,
-+the second value shows \fIadditional\fP data buffered in the stream cache in
-+kilobytes. (\fBdemuxer\-cache\-duration\fP and \fBcache\-used\fP properties.)
-+.UNINDENT
-+.SH PROTOCOLS
-+.sp
-+\fBhttp://...\fP, \fBhttps://\fP, ...
-+.INDENT 0.0
-+.INDENT 3.5
-+Many network protocols are supported, but the protocol prefix must always
-+be specified. mpv will never attempt to guess whether a filename is
-+actually a network address. A protocol prefix is always required.
-+.sp
-+Note that not all prefixes are documented here. Undocumented prefixes are
-+either aliases to documented protocols, or are just redirections to
-+protocols implemented and documented in FFmpeg.
-+.sp
-+\fBdata:\fP is supported in FFmpeg (not in Libav), but needs to be in the
-+format \fBdata://\fP\&. This is done to avoid ambiguity with filenames. You
-+can also prefix it with \fBlavf://\fP or \fBffmpeg://\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBytdl://...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+By default, the youtube\-dl hook script (enabled by default for mpv CLI)
-+only looks at http URLs. Prefixing an URL with \fBytdl://\fP forces it to
-+be always processed by the script. This can also be used to invoke special
-+youtube\-dl functionality like playing a video by ID or invoking search.
-+.sp
-+Keep in mind that you can\(aqt pass youtube\-dl command line options by this,
-+and you have to use \fB\-\-ytdl\-raw\-options\fP instead.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fB\-\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play data from stdin.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBsmb://PATH\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play a path from Samba share.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBbd://[title][/device]\fP \fB\-\-bluray\-device=PATH\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play a Blu\-ray disc. Currently, this does not accept ISO files. Instead,
-+you must mount the ISO file as filesystem, and point \fB\-\-bluray\-device\fP
-+to the mounted directory directly.
-+.sp
-+\fBtitle\fP can be: \fBlongest\fP or \fBfirst\fP (selects the default
-+playlist); \fBmpls/<number>\fP (selects <number>.mpls playlist);
-+\fB<number>\fP (select playlist with the same index). You can list
-+the available playlists with \fB\-\-msg\-level=bd=v\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBdvd://[title|[starttitle]\-endtitle][/device]\fP \fB\-\-dvd\-device=PATH\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play a DVD. DVD menus are not supported. If no title is given, the longest
-+title is auto\-selected.
-+.sp
-+\fBdvdnav://\fP is an old alias for \fBdvd://\fP and does exactly the same
-+thing.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBdvdread://...:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play a DVD using the old libdvdread code. This is what MPlayer and
-+older mpv versions use for \fBdvd://\fP\&. Use is discouraged. It\(aqs
-+provided only for compatibility and for transition, and to work
-+around outstanding dvdnav bugs (see "DVD library choices" above).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBtv://[channel][/input_id]\fP \fB\-\-tv\-...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Analogue TV via V4L. Also useful for webcams. (Linux only.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBpvr://\fP \fB\-\-pvr\-...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+PVR. (Linux only.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBdvb://[cardnumber@]channel\fP \fB\-\-dvbin\-...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Digital TV via DVB. (Linux only.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBmf://[filemask|@listfile]\fP \fB\-\-mf\-...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play a series of images as video.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBcdda://[device]\fP \fB\-\-cdrom\-device=PATH\fP \fB\-\-cdda\-...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Play CD.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBlavf://...\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Access any FFmpeg/Libav libavformat protocol. Basically, this passed the
-+string after the \fB//\fP directly to libavformat.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBav://type:options\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+This is intended for using libavdevice inputs. \fBtype\fP is the libavdevice
-+demuxer name, and \fBoptions\fP is the (pseudo\-)filename passed to the
-+demuxer.
-+.sp
-+For example, \fBmpv av://lavfi:mandelbrot\fP makes use of the libavfilter
-+wrapper included in libavdevice, and will use the \fBmandelbrot\fP source
-+filter to generate input data.
-+.sp
-+\fBavdevice://\fP is an alias.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBfile://PATH\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+A local path as URL. Might be useful in some special use\-cases. Note that
-+\fBPATH\fP itself should start with a third \fB/\fP to make the path an
-+absolute path.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBfd://123\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Read data from the given file descriptor (for example 123). This is similar
-+to piping data to stdin via \fB\-\fP, but can use an arbitrary file descriptor.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBfdclose://123\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Like \fBfd://\fP, but the file descriptor is closed after use. When using this
-+you need to ensure that the same fd URL will only be used once.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBedl://[edl specification as in edl\-mpv.rst]\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Stitch together parts of multiple files and play them.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBnull://\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Simulate an empty file. If opened for writing, it will discard all data.
-+The \fBnull\fP demuxer will specifically pass autoprobing if this protocol
-+is used (while it\(aqs not automatically invoked for empty files).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBmemory://data\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Use the \fBdata\fP part as source data.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBhex://data\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+Like \fBmemory://\fP, but the string is interpreted as hexdump.
-+.UNINDENT
-+.UNINDENT
-+.SH PSEUDO GUI MODE
-+.sp
-+mpv has no official GUI, other than the OSC (\fI\%ON SCREEN CONTROLLER\fP), which
-+is not a full GUI and is not meant to be. However, to compensate for the lack
-+of expected GUI behavior, mpv will in some cases start with some settings
-+changed to behave slightly more like a GUI mode.
-+.sp
-+Currently this happens only in the following cases:
-+.INDENT 0.0
-+.IP \(bu 2
-+if started using the \fBmpv.desktop\fP file on Linux (e.g. started from menus
-+or file associations provided by desktop environments)
-+.IP \(bu 2
-+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
-+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 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
-+[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
-+\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
-+.TP
-+.B \fB\-\-alang=<languagecode[,languagecode,...]>\fP
-+Specify a priority list of audio languages to use. Different container
-+formats employ different language codes. DVDs use ISO 639\-1 two\-letter
-+language codes, Matroska, MPEG\-TS and NUT use ISO 639\-2 three\-letter
-+language codes, while OGM uses a free\-form identifier. See also \fB\-\-aid\fP\&.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fBmpv dvd://1 \-\-alang=hu,en\fP chooses the Hungarian language track
-+on a DVD and falls back on English if Hungarian is not available.
-+.IP \(bu 2
-+\fBmpv \-\-alang=jpn example.mkv\fP plays a Matroska file with Japanese
-+audio.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-slang=<languagecode[,languagecode,...]>\fP
-+Specify a priority list of subtitle languages to use. Different container
-+formats employ different language codes. DVDs use ISO 639\-1 two letter
-+language codes, Matroska uses ISO 639\-2 three letter language codes while
-+OGM uses a free\-form identifier. See also \fB\-\-sid\fP\&.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fBmpv dvd://1 \-\-slang=hu,en\fP chooses the Hungarian subtitle track on
-+a DVD and falls back on English if Hungarian is not available.
-+.IP \(bu 2
-+\fBmpv \-\-slang=jpn example.mkv\fP plays a Matroska file with Japanese
-+subtitles.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-aid=<ID|auto|no>\fP
-+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
-+\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
-+stream index is relatively arbitrary, but useful when interacting with
-+other software using FFmpeg (consider \fBffprobe\fP).
-+.sp
-+Note that with external tracks (added with \fB\-\-sub\-files\fP and similar
-+options), there will be streams with duplicate IDs. In this case, the
-+first stream in order is selected.
-+.TP
-+.B \fB\-\-edition=<ID|auto>\fP
-+(Matroska files only)
-+Specify the edition (set of chapters) to use, where 0 is the first. If set
-+to \fBauto\fP (the default), mpv will choose the first edition declared as a
-+default, or if there is no default, the first edition defined.
-+.TP
-+.B \fB\-\-track\-auto\-selection=<yes|no>\fP
-+Enable the default track auto\-selection (default: yes). Enabling this will
-+make the player select streams according to \fB\-\-aid\fP, \fB\-\-alang\fP, and
-+others. If it is disabled, no tracks are selected. In addition, the player
-+will not exit if no tracks are selected, and wait instead (this wait mode
-+is similar to pausing, but the pause option is not set).
-+.sp
-+This is useful with \fB\-\-lavfi\-complex\fP: you can start playback in this
-+mode, and then set select tracks at runtime by setting the filter graph.
-+Note that if \fB\-\-lavfi\-complex\fP is set before playback is started, the
-+referenced tracks are always selected.
-+.UNINDENT
-+.SS Playback Control
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-start=<relative time>\fP
-+Seek to given time position.
-+.sp
-+The general format for absolute times is \fB[[hh:]mm:]ss[.ms]\fP\&. If the time
-+is given with a prefix of \fB+\fP or \fB\-\fP, the seek is relative from the start
-+or end of the file. (Since mpv 0.14, the start of the file is always
-+considered 0.)
-+.sp
-+\fBpp%\fP seeks to percent position pp (0\-100).
-+.sp
-+\fB#c\fP seeks to chapter number c. (Chapters start from 1.)
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-start=+56\fP, \fB\-\-start=+00:56\fP
-+Seeks to the start time + 56 seconds.
-+.TP
-+.B \fB\-\-start=\-56\fP, \fB\-\-start=\-00:56\fP
-+Seeks to the end time \- 56 seconds.
-+.TP
-+.B \fB\-\-start=01:10:00\fP
-+Seeks to 1 hour 10 min.
-+.TP
-+.B \fB\-\-start=50%\fP
-+Seeks to the middle of the file.
-+.TP
-+.B \fB\-\-start=30 \-\-end=40\fP
-+Seeks to 30 seconds, plays 10 seconds, and exits.
-+.TP
-+.B \fB\-\-start=\-3:20 \-\-length=10\fP
-+Seeks to 3 minutes and 20 seconds before the end of the file, plays
-+10 seconds, and exits.
-+.TP
-+.B \fB\-\-start=\(aq#2\(aq \-\-end=\(aq#4\(aq\fP
-+Plays chapters 2 and 3, and exits.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-end=<time>\fP
-+Stop at given absolute time. Use \fB\-\-length\fP if the time should be relative
-+to \fB\-\-start\fP\&. See \fB\-\-start\fP for valid option values and examples.
-+.TP
-+.B \fB\-\-length=<relative time>\fP
-+Stop after a given time relative to the start time.
-+See \fB\-\-start\fP for valid option values and examples.
-+.TP
-+.B \fB\-\-rebase\-start\-time=<yes|no>\fP
-+Whether to move the file start time to \fB00:00:00\fP (default: yes). This
-+is less awkward for files which start at a random timestamp, such as
-+transport streams. On the other hand, if there are timestamp resets, the
-+resulting behavior can be rather weird. For this reason, and in case you
-+are actually interested in the real timestamps, this behavior can be
-+disabled with \fBno\fP\&.
-+.TP
-+.B \fB\-\-speed=<0.01\-100>\fP
-+Slow down or speed up playback by the factor given as parameter.
-+.sp
-+If \fB\-\-audio\-pitch\-correction\fP (on by default) is used, playing with a
-+speed higher than normal automatically inserts the \fBscaletempo\fP audio
-+filter.
-+.TP
-+.B \fB\-\-pause\fP
-+Start the player in paused state.
-+.TP
-+.B \fB\-\-shuffle\fP
-+Play files in random order.
-+.TP
-+.B \fB\-\-chapter=<start[\-end]>\fP
-+Specify which chapter to start playing at. Optionally specify which
-+chapter to end playing at.
-+.sp
-+See also: \fB\-\-start\fP\&.
-+.TP
-+.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 \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\-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
-+no format is detected, it will be treated as list of files, separated by
-+newline characters. Note that XML playlist formats are not supported.)
-+.sp
-+You can play playlists directly and without this option, however, this
-+option disables any security mechanisms that might be in place. You may
-+also need this option to load plaintext files as playlist.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+The way mpv uses playlist files via \fB\-\-playlist\fP is not safe against
-+maliciously constructed files. Such files may trigger harmful actions.
-+This has been the case for all mpv and MPlayer versions, but
-+unfortunately this fact was not well documented earlier, and some people
-+have even misguidedly recommended use of \fB\-\-playlist\fP with untrusted
-+sources. Do NOT use \fB\-\-playlist\fP with random internet sources or files
-+you do not trust!
-+.sp
-+Playlist can contain entries using other protocols, such as local files,
-+or (most severely), special protocols like \fBavdevice://\fP, which are
-+inherently unsafe.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-chapter\-merge\-threshold=<number>\fP
-+Threshold for merging almost consecutive ordered chapter parts in
-+milliseconds (default: 100). Some Matroska files with ordered chapters
-+have inaccurate chapter end timestamps, causing a small gap between the
-+end of one chapter and the start of the next one when they should match.
-+If the end of one playback part is less than the given threshold away from
-+the start of the next one then keep playing video normally over the
-+chapter change instead of doing a seek.
-+.TP
-+.B \fB\-\-chapter\-seek\-threshold=<seconds>\fP
-+Distance in seconds from the beginning of a chapter within which a backward
-+chapter seek will go to the previous chapter (default: 5.0). Past this
-+threshold, a backward chapter seek will go to the beginning of the current
-+chapter instead. A negative value means always go back to the previous
-+chapter.
-+.TP
-+.B \fB\-\-hr\-seek=<no|absolute|yes>\fP
-+Select when to use precise seeks that are not limited to keyframes. Such
-+seeks require decoding video from the previous keyframe up to the target
-+position and so can take some time depending on decoding performance. For
-+some video formats, precise seeks are disabled. This option selects the
-+default choice to use for seeks; it is possible to explicitly override that
-+default in the definition of key bindings and in input commands.
-+.INDENT 7.0
-+.TP
-+.B no
-+Never use precise seeks.
-+.TP
-+.B absolute
-+Use precise seeks if the seek is to an absolute position in the
-+file, such as a chapter seek, but not for relative seeks like
-+the default behavior of arrow keys (default).
-+.TP
-+.B yes
-+Use precise seeks whenever possible.
-+.TP
-+.B always
-+Same as \fByes\fP (for compatibility).
-+.UNINDENT
-+.TP
-+.B \fB\-\-hr\-seek\-demuxer\-offset=<seconds>\fP
-+This option exists to work around failures to do precise seeks (as in
-+\fB\-\-hr\-seek\fP) caused by bugs or limitations in the demuxers for some file
-+formats. Some demuxers fail to seek to a keyframe before the given target
-+position, going to a later position instead. The value of this option is
-+subtracted from the time stamp given to the demuxer. Thus, if you set this
-+option to 1.5 and try to do a precise seek to 60 seconds, the demuxer is
-+told to seek to time 58.5, which hopefully reduces the chance that it
-+erroneously goes to some time later than 60 seconds. The downside of
-+setting this option is that precise seeks become slower, as video between
-+the earlier demuxer position and the real target may be unnecessarily
-+decoded.
-+.TP
-+.B \fB\-\-hr\-seek\-framedrop=<yes|no>\fP
-+Allow the video decoder to drop frames during seek, if these frames are
-+before the seek target. If this is enabled, precise seeking can be faster,
-+but if you\(aqre using video filters which modify timestamps or add new
-+frames, it can lead to precise seeking skipping the target frame. This
-+e.g. can break frame backstepping when deinterlacing is enabled.
-+.sp
-+Default: \fByes\fP
-+.TP
-+.B \fB\-\-index=<mode>\fP
-+Controls how to seek in files. Note that if the index is missing from a
-+file, it will be built on the fly by default, so you don\(aqt need to change
-+this. But it might help with some broken files.
-+.INDENT 7.0
-+.TP
-+.B default
-+use an index if the file has one, or build it if missing
-+.TP
-+.B recreate
-+don\(aqt read or use the file\(aqs index
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This option only works if the underlying media supports seeking
-+(i.e. not with stdin, pipe, etc).
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-load\-unsafe\-playlists\fP
-+Load URLs from playlists which are considered unsafe (default: no). This
-+includes special protocols and anything that doesn\(aqt refer to normal files.
-+Local files and HTTP links on the other hand are always considered safe.
-+.sp
-+Note that \fB\-\-playlist\fP always loads all entries, so you use that instead
-+if you really have the need for this functionality.
-+.TP
-+.B \fB\-\-access\-references=<yes|no>\fP
-+Follow any references in the file being opened (default: yes). Disabling
-+this is helpful if the file is automatically scanned (e.g. thumbnail
-+generation). If the thumbnail scanner for example encounters a playlist
-+file, which contains network URLs, and the scanner should not open these,
-+enabling this option will prevent it. This option also disables ordered
-+chapters, mov reference files, opening of archives, and a number of other
-+features.
-+.sp
-+On older FFmpeg versions, this will not work in some cases. Some FFmpeg
-+demuxers might not respect this option.
-+.sp
-+This option does not prevent opening of paired subtitle files and such. Use
-+\fB\-\-autoload\-files=no\fP to prevent this.
-+.sp
-+This option does not always work if you open non\-files (for example using
-+\fBdvd://directory\fP would open a whole bunch of files in the given
-+directory). Prefixing the filename with \fB\&./\fP if it doesn\(aqt start with
-+a \fB/\fP will avoid this.
-+.TP
-+.B \fB\-\-loop\-playlist=<N|inf|force|no>\fP, \fB\-\-loop\-playlist\fP
-+Loops playback \fBN\fP times. A value of \fB1\fP plays it one time (default),
-+\fB2\fP two times, etc. \fBinf\fP means forever. \fBno\fP is the same as \fB1\fP and
-+disables looping. If several files are specified on command line, the
-+entire playlist is looped. \fB\-\-loop\-playlist\fP is the same as
-+\fB\-\-loop\-playlist=inf\fP\&.
-+.sp
-+The \fBforce\fP mode is like \fBinf\fP, but does not skip playlist entries
-+which have been marked as failing. This means the player might waste CPU
-+time trying to loop a file that doesn\(aqt exist. But it might be useful for
-+playing webradios under very bad network conditions.
-+.TP
-+.B \fB\-\-loop\-file=<N|inf|no>\fP, \fB\-\-loop=<N|inf|no>\fP
-+Loop a single file N times. \fBinf\fP means forever, \fBno\fP means normal
-+playback. For compatibility, \fB\-\-loop\-file\fP and \fB\-\-loop\-file=yes\fP are
-+also accepted, and are the same as \fB\-\-loop\-file=inf\fP\&.
-+.sp
-+The difference to \fB\-\-loop\-playlist\fP is that this doesn\(aqt loop the playlist,
-+just the file itself. If the playlist contains only a single file, the
-+difference between the two option is that this option performs a seek on
-+loop, instead of reloading the file.
-+.sp
-+\fB\-\-loop\fP is an alias for this option.
-+.TP
-+.B \fB\-\-ab\-loop\-a=<time>\fP, \fB\-\-ab\-loop\-b=<time>\fP
-+Set loop points. If playback passes the \fBb\fP timestamp, it will seek to
-+the \fBa\fP timestamp. Seeking past the \fBb\fP point doesn\(aqt loop (this is
-+intentional).
-+.sp
-+If both options are set to \fBno\fP, looping is disabled. Otherwise, the
-+start/end of the file is used if one of the options is set to \fBno\fP\&.
-+.sp
-+The loop\-points can be adjusted at runtime with the corresponding
-+properties. See also \fBab\-loop\fP command.
-+.TP
-+.B \fB\-\-ordered\-chapters\fP, \fB\-\-no\-ordered\-chapters\fP
-+Enabled by default.
-+Disable support for Matroska ordered chapters. mpv will not load or
-+search for video segments from other files, and will also ignore any
-+chapter order specified for the main file.
-+.TP
-+.B \fB\-\-ordered\-chapters\-files=<playlist\-file>\fP
-+Loads the given file as playlist, and tries to use the files contained in
-+it as reference files when opening a Matroska file that uses ordered
-+chapters. This overrides the normal mechanism for loading referenced
-+files by scanning the same directory the main file is located in.
-+.sp
-+Useful for loading ordered chapter files that are not located on the local
-+filesystem, or if the referenced files are in different directories.
-+.sp
-+Note: a playlist can be as simple as a text file containing filenames
-+separated by newlines.
-+.TP
-+.B \fB\-\-chapters\-file=<filename>\fP
-+Load chapters from this file, instead of using the chapter metadata found
-+in the main file.
-+.sp
-+This accepts a media file (like mkv) or even a pseudo\-format like ffmetadata
-+and uses its chapters to replace the current file\(aqs chapters. This doesn\(aqt
-+work with OGM or XML chapters directly.
-+.TP
-+.B \fB\-\-sstep=<sec>\fP
-+Skip <sec> seconds after every frame.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Without \fB\-\-hr\-seek\fP, skipping will snap to keyframes.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-stop\-playback\-on\-init\-failure=<yes|no>\fP
-+Stop playback if either audio or video fails to initialize. Currently,
-+the default behavior is \fBno\fP for the command line player, but \fByes\fP
-+for libmpv. With \fBno\fP, playback will continue in video\-only or audio\-only
-+mode if one of them fails. This doesn\(aqt affect playback of audio\-only or
-+video\-only files.
-+.UNINDENT
-+.SS Program Behavior
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-help\fP, \fB\-\-h\fP
-+Show short summary of options.
-+.sp
-+You can also pass a string to this option, which will list all top\-level
-+options which contain the string in the name, e.g. \fB\-\-h=scale\fP for all
-+options that contain the word \fBscale\fP\&. The special string \fB*\fP lists
-+all top\-level options.
-+.TP
-+.B \fB\-v\fP
-+Increment verbosity level, one level for each \fB\-v\fP found on the command
-+line.
-+.TP
-+.B \fB\-\-version, \-V\fP
-+Print version string and exit.
-+.TP
-+.B \fB\-\-no\-config\fP
-+Do not load default configuration files. This prevents loading of both the
-+user\-level and system\-wide \fBmpv.conf\fP and \fBinput.conf\fP files. Other
-+configuration files are blocked as well, such as resume playback files.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Files explicitly requested by command line options, like
-+\fB\-\-include\fP or \fB\-\-use\-filedir\-conf\fP, will still be loaded.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See also: \fB\-\-config\-dir\fP\&.
-+.TP
-+.B \fB\-\-list\-options\fP
-+Prints all available options.
-+.TP
-+.B \fB\-\-list\-properties\fP
-+Print a list of the available properties.
-+.TP
-+.B \fB\-\-list\-protocols\fP
-+Print a list of the supported protocols.
-+.TP
-+.B \fB\-\-log\-file=<path>\fP
-+Opens the given path for writing, and print log messages to it. Existing
-+files will be truncated. The log level always corresponds to \fB\-v\fP,
-+regardless of terminal verbosity levels.
-+.TP
-+.B \fB\-\-config\-dir=<path>\fP
-+Force a different configuration directory. If this is set, the given
-+directory is used to load configuration files, and all other configuration
-+directories are ignored. This means the global mpv configuration directory
-+as well as per\-user directories are ignored, and overrides through
-+environment variables (\fBMPV_HOME\fP) are also ignored.
-+.sp
-+Note that the \fB\-\-no\-config\fP option takes precedence over this option.
-+.TP
-+.B \fB\-\-save\-position\-on\-quit\fP
-+Always save the current playback position on quit. When this file is
-+played again later, the player will seek to the old playback position on
-+start. This does not happen if playback of a file is stopped in any other
-+way than quitting. For example, going to the next file in the playlist
-+will not save the position, and start playback at beginning the next time
-+the file is played.
-+.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
-+opening. The file will contain raw samples, each with a timestamp. To
-+make this file into a readable, the script \fBTOOLS/stats\-conv.py\fP can be
-+used (which currently displays it as a graph).
-+.sp
-+This option is useful for debugging only.
-+.TP
-+.B \fB\-\-idle=<no|yes|once>\fP
-+Makes mpv wait idly instead of quitting when there is no file to play.
-+Mostly useful in input mode, where mpv can be controlled through input
-+commands.
-+.sp
-+\fBonce\fP will only idle at start and let the player close once the
-+first playlist has finished playing back.
-+.TP
-+.B \fB\-\-include=<configuration\-file>\fP
-+Specify configuration file to be parsed after the default ones.
-+.TP
-+.B \fB\-\-load\-scripts=<yes|no>\fP
-+If set to \fBno\fP, don\(aqt auto\-load scripts from the \fBscripts\fP
-+configuration subdirectory (usually \fB~/.config/mpv/scripts/\fP).
-+(Default: \fByes\fP)
-+.TP
-+.B \fB\-\-script=<filename>\fP
-+Load a Lua script. You can load multiple scripts by separating them with
-+commas (\fB,\fP).
-+.TP
-+.B \fB\-\-script\-opts=key1=value1,key2=value2,...\fP
-+Set options for scripts. A script can query an option by key. If an
-+option is used and what semantics the option value has depends entirely on
-+the loaded scripts. Values not claimed by any scripts are ignored.
-+.TP
-+.B \fB\-\-merge\-files\fP
-+Pretend that all files passed to mpv are concatenated into a single, big
-+file. This uses timeline/EDL support internally.
-+.TP
-+.B \fB\-\-no\-resume\-playback\fP
-+Do not restore playback position from the \fBwatch_later\fP configuration
-+subdirectory (usually \fB~/.config/mpv/watch_later/\fP).
-+See \fBquit\-watch\-later\fP input command.
-+.TP
-+.B \fB\-\-profile=<profile1,profile2,...>\fP
-+Use the given profile(s), \fB\-\-profile=help\fP displays a list of the
-+defined profiles.
-+.TP
-+.B \fB\-\-reset\-on\-next\-file=<all|option1,option2,...>\fP
-+Normally, mpv will try to keep all settings when playing the next file on
-+the playlist, even if they were changed by the user during playback. (This
-+behavior is the opposite of MPlayer\(aqs, which tries to reset all settings
-+when starting next file.)
-+.sp
-+Default: Do not reset anything.
-+.sp
-+This can be changed with this option. It accepts a list of options, and
-+mpv will reset the value of these options on playback start to the initial
-+value. The initial value is either the default value, or as set by the
-+config file or command line.
-+.sp
-+In some cases, this might not work as expected. For example, \fB\-\-volume\fP
-+will only be reset if it is explicitly set in the config file or the
-+command line.
-+.sp
-+The special name \fBall\fP resets as many options as possible.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-reset\-on\-next\-file=pause\fP
-+Reset pause mode when switching to the next file.
-+.IP \(bu 2
-+\fB\-\-reset\-on\-next\-file=fullscreen,speed\fP
-+Reset fullscreen and playback speed settings if they were changed
-+during playback.
-+.IP \(bu 2
-+\fB\-\-reset\-on\-next\-file=all\fP
-+Try to reset all settings that were changed during playback.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-write\-filename\-in\-watch\-later\-config\fP
-+Prepend the watch later config files with the name of the file they refer
-+to. This is simply written as comment on the top of the file.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This option may expose privacy\-sensitive information and is thus
-+disabled by default.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-ignore\-path\-in\-watch\-later\-config\fP
-+Ignore path (i.e. use filename only) when using watch later feature.
-+.TP
-+.B \fB\-\-show\-profile=<profile>\fP
-+Show the description and content of a profile.
-+.TP
-+.B \fB\-\-use\-filedir\-conf\fP
-+Look for a file\-specific configuration file in the same directory as the
-+file that is being played. See \fI\%File\-specific Configuration Files\fP\&.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+May be dangerous if playing from untrusted media.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-ytdl\fP, \fB\-\-no\-ytdl\fP
-+Enable the youtube\-dl hook\-script. It will look at the input URL, and will
-+play the video located on the website. This works with many streaming sites,
-+not just the one that the script is named after. This requires a recent
-+version of youtube\-dl to be installed on the system. (Enabled by default,
-+except when the client API / libmpv is used.)
-+.sp
-+If the script can\(aqt do anything with an URL, it will do nothing.
-+.sp
-+The \fIexclude\fP script option accepts a \fB|\fP\-separated list of URL patterns
-+which mpv should not use with youtube\-dl. The patterns are matched after
-+the \fBhttp(s)://\fP part of the URL.
-+.sp
-+\fB^\fP matches the beginning of the URL, \fB$\fP matches its end, and you
-+should use \fB%\fP before any of the characters \fB^$()%|,.[]*+\-?\fP to match
-+that character.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq^youtube%.com\(aq\fP
-+will exclude any URL that starts with \fBhttp://youtube.com\fP or
-+\fBhttps://youtube.com\fP\&.
-+.IP \(bu 2
-+\fB\-\-script\-opts=ytdl_hook\-exclude=\(aq%.mkv$|%.mp4$\(aq\fP
-+will exclude any URL that ends with \fB\&.mkv\fP or \fB\&.mp4\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See more lua patterns here: \fI\%https://www.lua.org/manual/5.1/manual.html#5.4.1\fP
-+.TP
-+.B \fB\-\-ytdl\-format=<best|worst|mp4|webm|...>\fP
-+Video format/quality that is directly passed to youtube\-dl. The possible
-+values are specific to the website and the video, for a given url the
-+available formats can be found with the command
-+\fByoutube\-dl \-\-list\-formats URL\fP\&. See youtube\-dl\(aqs documentation for
-+available aliases.
-+(Default: youtube\-dl\(aqs default, currently \fBbestvideo+bestaudio/best\fP)
-+.TP
-+.B \fB\-\-ytdl\-raw\-options=<key>=<value>[,<key>=<value>[,...]]\fP
-+Pass arbitrary options to youtube\-dl. Parameter and argument should be
-+passed as a key\-value pair. Options without argument must include \fB=\fP\&.
-+.sp
-+There is no sanity checking so it\(aqs possible to break things (i.e.
-+passing invalid parameters to youtube\-dl).
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-ytdl\-raw\-options=username=user,password=pass\fP
-+.IP \(bu 2
-+\fB\-\-ytdl\-raw\-options=force\-ipv6=\fP
-+.UNINDENT
-+.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=<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=<...>\fP
-+Specify a priority list of video decoders to be used, according to their
-+family and name. See \fB\-\-ad\fP for further details. Both of these options
-+use the same syntax and semantics; the only difference is that they
-+operate on different codec lists.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+See \fB\-\-vd=help\fP for a full list of available decoders.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
-+Specify a list of video filters to apply to the video stream. See
-+\fI\%VIDEO FILTERS\fP for details and descriptions of the available filters.
-+The option variants \fB\-\-vf\-add\fP, \fB\-\-vf\-pre\fP, \fB\-\-vf\-del\fP and
-+\fB\-\-vf\-clr\fP exist to modify a previously specified list, but you
-+should not need these for typical use.
-+.TP
-+.B \fB\-\-untimed\fP
-+Do not sleep when outputting video frames. Useful for benchmarks when used
-+with \fB\-\-no\-audio.\fP
-+.TP
-+.B \fB\-\-framedrop=<mode>\fP
-+Skip displaying some frames to maintain A/V sync on slow systems, or
-+playing high framerate video on video outputs that have an upper framerate
-+limit.
-+.sp
-+The argument selects the drop methods, and can be one of the following:
-+.INDENT 7.0
-+.TP
-+.B <no>
-+Disable any framedropping.
-+.TP
-+.B <vo>
-+Drop late frames on video output (default). This still decodes and
-+filters all frames, but doesn\(aqt render them on the VO. It tries to query
-+the display FPS (X11 only, not correct on multi\-monitor systems), or
-+assumes infinite display FPS if that fails. Drops are indicated in
-+the terminal status line as \fBDropped:\fP field. If the decoder is too slow,
-+in theory all frames would have to be dropped (because all frames are
-+too late) \- to avoid this, frame dropping stops if the effective
-+framerate is below 10 FPS.
-+.TP
-+.B <decoder>
-+Old, decoder\-based framedrop mode. (This is the same as \fB\-\-framedrop=yes\fP
-+in mpv 0.5.x and before.) This tells the decoder to skip frames (unless
-+they are needed to decode future frames). May help with slow systems,
-+but can produce unwatchable choppy output, or even freeze the display
-+completely. Not recommended.
-+The \fB\-\-vd\-lavc\-framedrop\fP option controls what frames to drop.
-+.TP
-+.B <decoder+vo>
-+Enable both modes. Not recommended.
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB\-\-vo=vdpau\fP has its own code for the \fBvo\fP framedrop mode. Slight
-+differences to other VOs are possible.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-display\-fps=<fps>\fP
-+Set the display FPS used with the \fB\-\-video\-sync=display\-*\fP modes. By
-+default, a detected value is used. Keep in mind that setting an incorrect
-+value (even if slightly incorrect) can ruin video playback. On multi\-monitor
-+systems, there is a chance that the detected value is from the wrong
-+monitor.
-+.sp
-+Set this option only if you have reason to believe the automatically
-+determined value is wrong.
-+.TP
-+.B \fB\-\-hwdec=<api>\fP
-+Specify the hardware video decoding API that should be used if possible.
-+Whether hardware decoding is actually done depends on the video codec. If
-+hardware decoding is not possible, mpv will fall back on software decoding.
-+.sp
-+\fB<api>\fP can be one of the following:
-+.INDENT 7.0
-+.TP
-+.B no
-+always use software decoding (default)
-+.TP
-+.B auto
-+enable best hw decoder (see below)
-+.TP
-+.B yes
-+exactly the same as \fBauto\fP
-+.TP
-+.B auto\-copy
-+enable best hw decoder with copy\-back (see below)
-+.TP
-+.B vdpau
-+requires \fB\-\-vo=vdpau\fP or \fB\-\-vo=opengl\fP (Linux only)
-+.TP
-+.B vdpau\-copy
-+copies video back into system RAM (Linux with some GPUs only)
-+.TP
-+.B vaapi
-+requires \fB\-\-vo=opengl\fP or \fB\-\-vo=vaapi\fP (Linux only)
-+.TP
-+.B vaapi\-copy
-+copies video back into system RAM (Linux with Intel GPUs only)
-+.TP
-+.B videotoolbox
-+requires \fB\-\-vo=opengl\fP (OS X 10.8 and up),
-+or \fB\-\-vo=opengl\-cb\fP (iOS 9.0 and up)
-+.TP
-+.B videotoolbox\-copy
-+copies video back into system RAM (OS X 10.8 or iOS 9.0 and up)
-+.TP
-+.B dxva2
-+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\fP with \fB\-\-opengl\-backend=angle\fP
-+(Windows 8+ only)
-+.TP
-+.B d3d11va\-copy
-+copies video back to system RAM (Windows 8+ only)
-+.TP
-+.B mediacodec
-+copies video back to system RAM (Android only)
-+.TP
-+.B rpi
-+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
-+available method. This still depends what VO you are using. For example,
-+if you are not using \fB\-\-vo=vdpau\fP or \fB\-\-vo=opengl\fP, vdpau decoding will
-+never be enabled. Also note that if the first found method doesn\(aqt actually
-+work, it will always fall back to software decoding, instead of trying the
-+next method (might matter on some Linux systems).
-+.sp
-+\fBauto\-copy\fP selects only modes that copy the video data back to system
-+memory after decoding. Currently, this selects only one of the following
-+modes: \fBvaapi\-copy\fP, \fBdxva2\-copy\fP, \fBd3d11va\-copy\fP, \fBmediacodec\fP\&.
-+If none of these work, hardware decoding is disabled. This mode is always
-+guaranteed to incur no additional loss compared to software decoding, and
-+will allow CPU processing with video filters.
-+.sp
-+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\-\-opengl\-backend=x11\fP, but the vaapi/GLX interop is
-+said to be slower than \fBvaapi\-copy\fP\&.
-+.sp
-+The \fBcuda\fP and \fBcuda\-copy\fP modes provides deinterlacing in 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 (or leave the option unset) to not attempt any
-+deinterlacing. \fBcuda\fP should always be preferred unless the \fBopengl\fP
-+vo is not being used or filters are required.
-+.sp
-+Most video filters will not work with hardware decoding as they are
-+primarily implemented on the CPU. Some exceptions are \fBvdpaupp\fP,
-+\fBvdpaurb\fP and \fBvavpp\fP\&. See \fI\%VIDEO FILTERS\fP for more details.
-+.sp
-+The \fB\&...\-copy\fP modes (e.g. \fBdxva2\-copy\fP) allow you to use hardware
-+decoding with any VO, backend or filter. Because these copy the decoded
-+video back to system RAM, they\(aqre likely less efficient than the direct
-+modes (like e.g. \fBdxva2\fP), and probably not more efficient than software
-+decoding except for some codecs (e.g. HEVC).
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+When using this switch, hardware decoding is still only done for some
-+codecs. See \fB\-\-hwdec\-codecs\fP to enable hardware decoding for more
-+codecs.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Quality reduction with hardware decoding"
-+.sp
-+In theory, hardware decoding does not reduce video quality (at least
-+for the codecs h264 and HEVC). However, due to restrictions in video
-+output APIs, as well as bugs in the actual hardware decoders, there can
-+be some loss, or even blatantly incorrect results.
-+.sp
-+In some cases, RGB conversion is forced, which means the RGB conversion
-+is performed by the hardware decoding API, instead of the OpenGL code
-+used by \fB\-\-vo=opengl\fP\&. This means certain colorspaces may not display
-+correctly, and certain filtering (such as debanding) cannot be applied
-+in an ideal way. This will also usually force the use of low quality
-+chroma scalers instead of the one specified by \fB\-\-cscale\fP\&. In other
-+cases, hardware decoding can also reduce the bit depth of the decoded
-+image, which can introduce banding or precision loss for 10\-bit files.
-+.sp
-+\fBvdpau\fP is usually safe. If deinterlacing enabled (or the \fBvdpaupp\fP
-+video filter is active in general), it forces RGB conversion. The latter
-+currently does not treat certain colorspaces like BT.2020 correctly
-+(which is mostly a mpv\-specific restriction). The \fBvdpauprb\fP video
-+filter retrieves image data without RGB conversion and is safe (but
-+precludes use of vdpau postprocessing).
-+.sp
-+\fBvaapi\fP is safe if the \fBvaapi\-egl\fP backend is indicated in the
-+logs. If \fBvaapi\-glx\fP is indicated, and the video colorspace is either
-+BT.601 or BT.709, a forced, low\-quality but correct RGB conversion is
-+performed. Otherwise, the result will be totally incorrect.
-+.sp
-+\fBd3d11va\fP is usually safe (if used with ANGLE builds that support
-+\fBEGL_KHR_stream path\fP \- otherwise, it converts to RGB), except that
-+10 bit input (HEVC main 10 profiles) will be rounded down to 8 bits,
-+which results in reduced quality.
-+.sp
-+\fBdxva2\fP is not safe. It appears to always use BT.601 for forced RGB
-+conversion, but actual behavior depends on the GPU drivers. Some drivers
-+appear to convert to limited range RGB, which gives a faded appearance.
-+In addition to driver\-specific behavior, global system settings might
-+affect this additionally. This can give incorrect results even with
-+completely ordinary video sources.
-+.sp
-+\fBrpi\fP always uses the hardware overlay renderer, even with
-+\fB\-\-vo=opengl\fP\&.
-+.sp
-+\fBcuda\fP should be safe, but it has been reported to corrupt the
-+timestamps causing glitched, flashing frames on some files. It can also
-+sometimes cause massive framedrops for unknown reasons. Caution is
-+advised.
-+.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.) should hopefully be safe, although they can still
-+cause random decoding issues. At the very least, they shouldn\(aqt affect
-+the colors of the image.
-+.sp
-+In particular, \fBauto\-copy\fP will only select "safe" modes
-+(although potentially slower than other methods), but there\(aqs still no
-+guarantee the chosen hardware decoder will actually work correctly.
-+.sp
-+In general, it\(aqs very strongly advised to avoid hardware decoding
-+unless \fBabsolutely\fP necessary, i.e. if your CPU is insufficient to
-+decode the file in questions. If you run into any weird decoding issues,
-+frame glitches or discoloration, and you have \fB\-\-hwdec\fP turned on,
-+the first thing you should try is disabling it.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-opengl\-hwdec\-interop=<name>\fP
-+This is useful for the \fBopengl\fP and \fBopengl\-cb\fP VOs for creating the
-+hardware decoding OpenGL interop context, but without actually enabling
-+hardware decoding itself (like \fB\-\-hwdec\fP does).
-+.sp
-+If set to an empty string (default), the \fB\-\-hwdec\fP option is used.
-+.sp
-+For \fBopengl\fP, if set, do not create the interop context on demand, but
-+when the VO is created.
-+.sp
-+For \fBopengl\-cb\fP, if set, load the interop context as soon as the OpenGL
-+context is created. Since \fBopengl\-cb\fP has no on\-demand loading, this
-+allows enabling hardware decoding at runtime at all, without having
-+to temporarily set the \fBhwdec\fP option just during OpenGL context
-+initialization with \fBmpv_opengl_cb_init_gl()\fP\&.
-+.sp
-+See \fB\-\-opengl\-hwdec\-interop=help\fP for accepted values. This lists the
-+interop backend, with the \fB\-\-hwdec\fP alias after it in \fB[...]\fP\&. Consider
-+all values except the proper interop backend name, \fBauto\fP, and \fBno\fP as
-+silently deprecated and subject to change. Also, if you use this in
-+application code (e.g. via libmpv), any value other than \fBauto\fP and \fBno\fP
-+should be avoided, as backends can change.
-+.sp
-+Currently the option sets a single value. It is possible that the option
-+type changes to a list in the future.
-+.sp
-+The old alias \fB\-\-hwdec\-preload\fP has different behavior if the option value
-+is \fBno\fP\&.
-+.TP
-+.B \fB\-\-videotoolbox\-format=<name>\fP
-+Set the internal pixel format used by \fB\-\-hwdec=videotoolbox\fP on OSX. The
-+choice of the format can influence performance considerably. On the other
-+hand, there doesn\(aqt appear to be a good way to detect the best format for
-+the given hardware. \fBnv12\fP, the default, works better on modern hardware,
-+while \fBuyvy422\fP appears to be better for old hardware. \fByuv420p\fP also
-+works.
-+Since mpv 0.25.0, \fBno\fP is an accepted value, which lets the decoder pick
-+the format on newer FFmpeg versions (will use \fBnv12\fP on older versions).
-+.TP
-+.B \fB\-\-panscan=<0.0\-1.0>\fP
-+Enables pan\-and\-scan functionality (cropping the sides of e.g. a 16:9
-+video to make it fit a 4:3 display without black bands). The range
-+controls how much of the image is cropped. May not work with all video
-+output drivers.
-+.sp
-+This option has no effect if \fB\-\-video\-unscaled\fP option is used.
-+.TP
-+.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
-+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
-+.sp
-+But note that handling of these special values might change in the future.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\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\-\-video\-aspect\-method=<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).
-+.INDENT 7.0
-+.TP
-+.B container
-+Strictly prefer the container aspect ratio. This is apparently
-+the default behavior with VLC, at least with Matroska. Note that
-+if the container has no aspect ratio set, the behavior is the
-+same as with bitstream.
-+.TP
-+.B bitstream
-+Strictly prefer the bitstream aspect ratio, unless the bitstream
-+aspect ratio is not set. This is apparently the default behavior
-+with XBMC/kodi, at least with Matroska.
-+.UNINDENT
-+.sp
-+The current default for mpv is \fBcontainer\fP\&.
-+.sp
-+Normally you should not set this. Try the various choices if you encounter
-+video that has the wrong aspect ratio in mpv, but seems to be correct in
-+other players.
-+.TP
-+.B \fB\-\-video\-unscaled=<no|yes|downscale\-big>\fP
-+Disable scaling of the video. If the window is larger than the video,
-+black bars are added. Otherwise, the video is cropped, unless the option
-+is set to \fBdownscale\-big\fP, in which case the video is fit to window. The
-+video still can be influenced by the other \fB\-\-video\-...\fP options. This
-+option disables the effect of \fB\-\-panscan\fP\&.
-+.sp
-+Note that the scaler algorithm may still be used, even if the video isn\(aqt
-+scaled. For example, this can influence chroma conversion. The video will
-+also still be scaled in one dimension if the source uses non\-square pixels
-+(e.g. anamorphic widescreen DVDs).
-+.sp
-+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
-+.TP
-+.B \fB\-\-video\-pan\-x=<value>\fP, \fB\-\-video\-pan\-y=<value>\fP
-+Moves the displayed video rectangle by the given value in the X or Y
-+direction. The unit is in fractions of the size of the scaled video (the
-+full size, even if parts of the video are not visible due to panscan or
-+other options).
-+.sp
-+For example, displaying a 1280x720 video fullscreen on a 1680x1050 screen
-+with \fB\-\-video\-pan\-x=\-0.1\fP would move the video 168 pixels to the left
-+(making 128 pixels of the source video invisible).
-+.sp
-+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
-+.TP
-+.B \fB\-\-video\-rotate=<0\-359|no>\fP
-+Rotate the video clockwise, in degrees. Currently supports 90° steps only.
-+If \fBno\fP is given, the video is never rotated, even if the file has
-+rotation metadata. (The rotation value is added to the rotation metadata,
-+which means the value \fB0\fP would rotate the video according to the
-+rotation metadata.)
-+.TP
-+.B \fB\-\-video\-stereo\-mode=<no|mode>\fP
-+Set the stereo 3D output mode (default: \fBmono\fP). This is done by inserting
-+the \fBstereo3d\fP conversion filter.
-+.sp
-+The pseudo\-mode \fBno\fP disables automatic conversion completely.
-+.sp
-+The mode \fBmono\fP is an alias to \fBml\fP, which refers to the left frame in
-+2D. This is the default, which means mpv will try to show 3D movies in 2D,
-+instead of the mangled 3D image not intended for consumption (such as
-+showing the left and right frame side by side, etc.).
-+.sp
-+Use \fB\-\-video\-stereo\-mode=help\fP to list all available modes. Check with
-+the \fBstereo3d\fP filter documentation to see what the names mean. Note that
-+some names refer to modes not supported by \fBstereo3d\fP \- these modes can
-+appear in files, but can\(aqt be handled properly by mpv.
-+.TP
-+.B \fB\-\-video\-zoom=<value>\fP
-+Adjust the video display scale factor by the given value. The parameter is
-+given log 2. For example, \fB\-\-video\-zoom=0\fP is unscaled,
-+\fB\-\-video\-zoom=1\fP is twice the size, \fB\-\-video\-zoom=\-2\fP is one fourth of
-+the size, and so on.
-+.sp
-+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
-+.TP
-+.B \fB\-\-video\-align\-x=<\-1\-1>\fP, \fB\-\-video\-align\-y=<\-1\-1>\fP
-+Moves the video rectangle within the black borders, which are usually added
-+to pad the video to screen if video and screen aspect ratios are different.
-+\fB\-\-video\-align\-y=\-1\fP would move the video to the top of the screen
-+(leaving a border only on the bottom), a value of \fB0\fP centers it
-+(default), and a value of \fB1\fP would put the video at the bottom of the
-+screen.
-+.sp
-+If video and screen aspect match perfectly, these options do nothing.
-+.sp
-+This option is disabled if the \fB\-\-no\-keepaspect\fP option is used.
-+.TP
-+.B \fB\-\-correct\-pts\fP, \fB\-\-no\-correct\-pts\fP
-+\fB\-\-no\-correct\-pts\fP switches mpv to a mode where video timing is
-+determined using a fixed framerate value (either using the \fB\-\-fps\fP
-+option, or using file information). Sometimes, files with very broken
-+timestamps can be played somewhat well in this mode. Note that video
-+filters, subtitle rendering and audio synchronization can be completely
-+broken in this mode.
-+.TP
-+.B \fB\-\-fps=<float>\fP
-+Override video framerate. Useful if the original value is wrong or missing.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Works in \fB\-\-no\-correct\-pts\fP mode only.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-deinterlace=<yes|no>\fP
-+Enable or disable interlacing (default: no).
-+Interlaced video shows ugly comb\-like artifacts, which are visible on
-+fast movement. Enabling this typically inserts the yadif video filter in
-+order to deinterlace the video, or lets the video output apply deinterlacing
-+if supported.
-+.sp
-+This behaves exactly like the \fBdeinterlace\fP input property (usually
-+mapped to \fBd\fP).
-+.sp
-+Keep in mind that this \fBwill\fP conflict with manually inserted
-+deinterlacing filters, unless you take care. (Since mpv 0.27.0, even the
-+hardware deinterlace filters will conflict. Also since that version,
-+\fB\-\-deinterlace=auto\fP was removed, which used to mean that the default
-+interlacing option of possibly inserted video filters was used.)
-+.TP
-+.B \fB\-\-frames=<number>\fP
-+Play/convert only first \fB<number>\fP video frames, then quit.
-+.sp
-+\fB\-\-frames=0\fP loads the file, but immediately quits before initializing
-+playback. (Might be useful for scripts which just want to determine some
-+file properties.)
-+.sp
-+For audio\-only playback, any value greater than 0 will quit playback
-+immediately after initialization. The value 0 works as with video.
-+.TP
-+.B \fB\-\-video\-output\-levels=<outputlevels>\fP
-+RGB color levels used with YUV to RGB conversion. Normally, output devices
-+such as PC monitors use full range color levels. However, some TVs and
-+video monitors expect studio RGB levels. Providing full range output to a
-+device expecting studio level input results in crushed blacks and whites,
-+the reverse in dim gray blacks and dim whites.
-+.sp
-+Not all VOs support this option. Some will silently ignore it.
-+.sp
-+Available color ranges are:
-+.INDENT 7.0
-+.TP
-+.B auto
-+automatic selection (equals to full range) (default)
-+.TP
-+.B limited
-+limited range (16\-235 per component), studio levels
-+.TP
-+.B full
-+full range (0\-255 per component), PC levels
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+It is advisable to use your graphics driver\(aqs color range option
-+instead, if available.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-hwdec\-codecs=<codec1,codec2,...|all>\fP
-+Allow hardware decoding for a given list of codecs only. The special value
-+\fBall\fP always allows all codecs.
-+.sp
-+You can get the list of allowed codecs with \fBmpv \-\-vd=help\fP\&. Remove the
-+prefix, e.g. instead of \fBlavc:h264\fP use \fBh264\fP\&.
-+.sp
-+By default, this is set to \fBh264,vc1,wmv3,hevc,mpeg2video,vp9\fP\&. Note that
-+the hardware acceleration special codecs like \fBh264_vdpau\fP are not
-+relevant anymore, and in fact have been removed from Libav in this form.
-+.sp
-+This is usually only needed with broken GPUs, where a codec is reported
-+as supported, but decoding causes more problems than it solves.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-hwdec=vdpau \-\-vo=vdpau \-\-hwdec\-codecs=h264,mpeg2video\fP
-+Enable vdpau decoding for h264 and mpeg2 only.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-vd\-lavc\-check\-hw\-profile=<yes|no>\fP
-+Check hardware decoder profile (default: yes). If \fBno\fP is set, the
-+highest profile of the hardware decoder is unconditionally selected, and
-+decoding is forced even if the profile of the video is higher than that.
-+The result is most likely broken decoding, but may also help if the
-+detected or reported profiles are somehow incorrect.
-+.TP
-+.B \fB\-\-vd\-lavc\-software\-fallback=<yes|no|N>\fP
-+Fallback to software decoding if the hardware\-accelerated decoder fails
-+(default: 3). If this is a number, then fallback will be triggered if
-+N frames fail to decode in a row. 1 is equivalent to \fByes\fP\&.
-+.TP
-+.B \fB\-\-vd\-lavc\-dr=<yes|no>\fP
-+Enable direct rendering (default: no). If this is set to \fByes\fP, the
-+video will be decoded directly to GPU video memory (or staging buffers).
-+This can speed up video upload, and may help with large resolutions or
-+slow hardware. This works only with the following VOs:
-+.INDENT 7.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.IP \(bu 2
-+\fBopengl\fP: requires at least OpenGL 4.4.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+(In particular, this can\(aqt be made work with \fBopengl\-cb\fP\&.)
-+.sp
-+Using video filters of any kind that write to the image data (or output
-+newly allocated frames) will silently disable the DR code path.
-+.sp
-+There are some corner cases that will result in undefined behavior (crashes
-+and other strange behavior) if this option is enabled. These are pending
-+towards being fixed properly at a later point.
-+.TP
-+.B \fB\-\-vd\-lavc\-bitexact\fP
-+Only use bit\-exact algorithms in all decoding steps (for codec testing).
-+.TP
-+.B \fB\-\-vd\-lavc\-fast\fP (MPEG\-2, MPEG\-4, and H.264 only)
-+Enable optimizations which do not comply with the format specification and
-+potentially cause problems, like simpler dequantization, simpler motion
-+compensation, assuming use of the default quantization matrix, assuming YUV
-+4:2:0 and skipping a few checks to detect damaged bitstreams.
-+.TP
-+.B \fB\-\-vd\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
-+Pass AVOptions to libavcodec decoder. Note, a patch to make the \fBo=\fP
-+unneeded and pass all unknown options through the AVOption system is
-+welcome. A full list of AVOptions can be found in the FFmpeg manual.
-+.sp
-+Some options which used to be direct options can be set with this
-+mechanism, like \fBbug\fP, \fBgray\fP, \fBidct\fP, \fBec\fP, \fBvismv\fP,
-+\fBskip_top\fP (was \fBst\fP), \fBskip_bottom\fP (was \fBsb\fP), \fBdebug\fP\&.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fB\-\-vd\-lavc\-o=debug=pict\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-vd\-lavc\-show\-all=<yes|no>\fP
-+Show even broken/corrupt frames (default: no). If this option is set to
-+no, libavcodec won\(aqt output frames that were either decoded before an
-+initial keyframe was decoded, or frames that are recognized as corrupted.
-+.TP
-+.B \fB\-\-vd\-lavc\-skiploopfilter=<skipvalue> (H.264 only)\fP
-+Skips the loop filter (AKA deblocking) during H.264 decoding. Since
-+the filtered frame is supposed to be used as reference for decoding
-+dependent frames, this has a worse effect on quality than not doing
-+deblocking on e.g. MPEG\-2 video. But at least for high bitrate HDTV,
-+this provides a big speedup with little visible quality loss.
-+.sp
-+\fB<skipvalue>\fP can be one of the following:
-+.INDENT 7.0
-+.TP
-+.B none
-+Never skip.
-+.TP
-+.B default
-+Skip useless processing steps (e.g. 0 size packets in AVI).
-+.TP
-+.B nonref
-+Skip frames that are not referenced (i.e. not used for
-+decoding other frames, the error cannot "build up").
-+.TP
-+.B bidir
-+Skip B\-Frames.
-+.TP
-+.B nonkey
-+Skip all frames except keyframes.
-+.TP
-+.B all
-+Skip all frames.
-+.UNINDENT
-+.TP
-+.B \fB\-\-vd\-lavc\-skipidct=<skipvalue> (MPEG\-1/2 only)\fP
-+Skips the IDCT step. This degrades quality a lot in almost all cases
-+(see skiploopfilter for available skip values).
-+.TP
-+.B \fB\-\-vd\-lavc\-skipframe=<skipvalue>\fP
-+Skips decoding of frames completely. Big speedup, but jerky motion and
-+sometimes bad artifacts (see skiploopfilter for available skip values).
-+.TP
-+.B \fB\-\-vd\-lavc\-framedrop=<skipvalue>\fP
-+Set framedropping mode used with \fB\-\-framedrop\fP (see skiploopfilter for
-+available skip values).
-+.TP
-+.B \fB\-\-vd\-lavc\-threads=<N>\fP
-+Number of threads to use for decoding. Whether threading is actually
-+supported depends on codec (default: 0). 0 means autodetect number of cores
-+on the machine and use that, up to the maximum of 16. You can set more than
-+16 threads manually.
-+.UNINDENT
-+.SS Audio
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-audio\-pitch\-correction=<yes|no>\fP
-+If this is enabled (default), playing with a speed different from normal
-+automatically inserts the \fBscaletempo\fP audio filter. For details, see
-+audio filter section.
-+.TP
-+.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. 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. The list of audio devices
-+can be retrieved by API by using the \fBaudio\-device\-list\fP property.
-+.sp
-+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
-+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
-+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
-+is useful in combination with \fB\-\-audio\-device\fP: instead of causing an
-+error if the selected device does not exist, the client API user (or a
-+Lua script) could let playback continue normally, and check the
-+\fBcurrent\-ao\fP and \fBaudio\-device\-list\fP properties to make high\-level
-+decisions about how to continue.
-+.TP
-+.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
-+\fI\%AUDIO FILTERS\fP for details and descriptions of the available filters.
-+The option variants \fB\-\-af\-add\fP, \fB\-\-af\-pre\fP, \fB\-\-af\-del\fP and
-+\fB\-\-af\-clr\fP exist to modify a previously specified list, but you
-+should not need these for typical use.
-+.TP
-+.B \fB\-\-audio\-spdif=<codecs>\fP
-+List of codecs for which compressed audio passthrough should be used. This
-+works for both classic S/PDIF and HDMI.
-+.sp
-+Possible codecs are \fBac3\fP, \fBdts\fP, \fBdts\-hd\fP\&. Multiple codecs can be
-+specified by separating them with \fB,\fP\&. \fBdts\fP refers to low bitrate DTS
-+core, while \fBdts\-hd\fP refers to DTS MA (receiver and OS support varies).
-+If both \fBdts\fP and \fBdts\-hd\fP are specified, it behaves equivalent to
-+specifying \fBdts\-hd\fP only.
-+.sp
-+In earlier mpv versions you could use \fB\-\-ad\fP to force the spdif wrapper.
-+This does not work anymore.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Warning"
-+.sp
-+There is not much reason to use this. HDMI supports uncompressed
-+multichannel PCM, and mpv supports lossless DTS\-HD decoding via
-+FFmpeg\(aqs new DCA decoder (based on libdcadec).
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-ad=<decoder1,decoder2,...[\-]>\fP
-+Specify a priority list of audio decoders to be used, according to their
-+decoder name. When determining which decoder to use, the first decoder that
-+matches the audio format is selected. If that is unavailable, the next
-+decoder is used. Finally, it tries all other decoders that are not
-+explicitly selected or rejected by the option.
-+.sp
-+\fB\-\fP at the end of the list suppresses fallback on other available
-+decoders not on the \fB\-\-ad\fP list. \fB+\fP in front of an entry forces the
-+decoder. Both of these should not normally be used, because they break
-+normal decoder auto\-selection! Both of these methods are deprecated.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-ad=mp3float\fP
-+Prefer the FFmpeg/Libav \fBmp3float\fP decoder over all other MP3
-+decoders.
-+.TP
-+.B \fB\-\-ad=help\fP
-+List all available decoders.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Warning"
-+.sp
-+Enabling compressed audio passthrough (AC3 and DTS via SPDIF/HDMI) with
-+this option is not possible. Use \fB\-\-audio\-spdif\fP instead.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-volume=<value>\fP
-+Set the startup volume. 0 means silence, 100 means no volume reduction or
-+amplification. Negative values can be passed for compatibility, but are
-+treated as 0.
-+.sp
-+Since mpv 0.18.1, this always controls the internal mixer (aka "softvol").
-+.TP
-+.B \fB\-\-replaygain=<no|track|album>\fP
-+Adjust volume gain according to the track\-gain or album\-gain replaygain
-+value stored in the file metadata (default: no replaygain).
-+.TP
-+.B \fB\-\-replaygain\-preamp=<db>\fP
-+Pre\-amplification gain in dB to apply to the selected replaygain gain
-+(default: 0).
-+.TP
-+.B \fB\-\-replaygain\-clip=<yes|no>\fP
-+Prevent clipping caused by replaygain by automatically lowering the
-+gain (default). Use \fB\-\-replaygain\-clip=no\fP to disable this.
-+.TP
-+.B \fB\-\-replaygain\-fallback=<db>\fP
-+Gain in dB to apply if the file has no replay gain tags. This option
-+is always applied if the replaygain logic is somehow inactive. If this
-+is applied, no other replaygain options are applied.
-+.TP
-+.B \fB\-\-balance=<value>\fP
-+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
-+.B \fB\-\-audio\-delay=<sec>\fP
-+Audio delay in seconds (positive or negative float value). Positive values
-+delay the audio, and negative values delay the video.
-+.TP
-+.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
-+.B \fB\-\-softvol=<no|yes|auto>\fP
-+Deprecated/unfunctional. Before mpv 0.18.1, this used to control whether
-+to use the volume controls of the audio output driver or the internal mpv
-+volume filter.
-+.sp
-+The current behavior is that softvol is always enabled, i.e. as if this
-+option is set to \fByes\fP\&. The other behaviors are not available anymore,
-+although \fBauto\fP almost matches current behavior in most cases.
-+.sp
-+The \fBno\fP behavior is still partially available through the \fBao\-volume\fP
-+and \fBao\-mute\fP properties. But there are no options to reset these.
-+.TP
-+.B \fB\-\-audio\-demuxer=<[+]name>\fP
-+Use this audio demuxer type when using \fB\-\-audio\-file\fP\&. Use a \(aq+\(aq before
-+the name to force it; this will skip some checks. Give the demuxer name as
-+printed by \fB\-\-audio\-demuxer=help\fP\&.
-+.TP
-+.B \fB\-\-ad\-lavc\-ac3drc=<level>\fP
-+Select the Dynamic Range Compression level for AC\-3 audio streams.
-+\fB<level>\fP is a float value ranging from 0 to 1, where 0 means no
-+compression (which is the default) and 1 means full compression (make loud
-+passages more silent and vice versa). Values up to 6 are also accepted, but
-+are purely experimental. This option only shows an effect if the AC\-3 stream
-+contains the required range compression information.
-+.sp
-+The standard mandates that DRC is enabled by default, but mpv (and some
-+other players) ignore this for the sake of better audio quality.
-+.TP
-+.B \fB\-\-ad\-lavc\-downmix=<yes|no>\fP
-+Whether to request audio channel downmixing from the decoder (default: yes).
-+Some decoders, like AC\-3, AAC and DTS, can remix audio on decoding. The
-+requested number of output channels is set with the \fB\-\-audio\-channels\fP option.
-+Useful for playing surround audio on a stereo system.
-+.TP
-+.B \fB\-\-ad\-lavc\-threads=<0\-16>\fP
-+Number of threads to use for decoding. Whether threading is actually
-+supported depends on codec. As of this writing, it\(aqs supported for some
-+lossless codecs only. 0 means autodetect number of cores on the
-+machine and use that, up to the maximum of 16 (default: 1).
-+.TP
-+.B \fB\-\-ad\-lavc\-o=<key>=<value>[,<key>=<value>[,...]]\fP
-+Pass AVOptions to libavcodec decoder. Note, a patch to make the o=
-+unneeded and pass all unknown options through the AVOption system is
-+welcome. A full list of AVOptions can be found in the FFmpeg manual.
-+.TP
-+.B \fB\-\-ad\-spdif\-dtshd=<yes|no>\fP, \fB\-\-dtshd\fP, \fB\-\-no\-dtshd\fP
-+If DTS is passed through, use DTS\-HD.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Warning"
-+.sp
-+This and enabling passthrough via \fB\-\-ad\fP are deprecated in favor of
-+using \fB\-\-audio\-spdif=dts\-hd\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-audio\-channels=<auto\-safe|auto|layouts>\fP
-+Control which audio channels are output (e.g. surround vs. stereo). There
-+are the following possibilities:
-+.INDENT 7.0
-+.IP \(bu 2
-+.INDENT 2.0
-+.TP
-+.B \fB\-\-audio\-channels=auto\-safe\fP
-+Use the system\(aqs preferred channel layout. If there is none (such
-+as when accessing a hardware device instead of the system mixer),
-+force stereo. Some audio outputs might simply accept any layout and
-+do downmixing on their own.
-+.sp
-+This is the default.
-+.UNINDENT
-+.IP \(bu 2
-+.INDENT 2.0
-+.TP
-+.B \fB\-\-audio\-channels=auto\fP
-+Send the audio device whatever it accepts, preferring the audio\(aqs
-+original channel layout. Can cause issues with HDMI (see the warning
-+below).
-+.UNINDENT
-+.IP \(bu 2
-+.INDENT 2.0
-+.TP
-+.B \fB\-\-audio\-channels=layout1,layout2,...\fP
-+List of \fB,\fP\-separated channel layouts which should be allowed.
-+Technically, this only adjusts the filter chain output to the best
-+matching layout in the list, and passes the result to the audio API.
-+It\(aqs possible that the audio API will select a different channel
-+layout.
-+.sp
-+Using this mode is recommended for direct hardware output, especially
-+over HDMI (see HDMI warning below).
-+.UNINDENT
-+.IP \(bu 2
-+.INDENT 2.0
-+.TP
-+.B \fB\-\-audio\-channels=stereo\fP
-+Force a plain stereo downmix. This is a special\-case of the previous
-+item. (See paragraphs below for implications.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+If a list of layouts is given, each item can be either an explicit channel
-+layout name (like \fB5.1\fP), or a channel number. Channel numbers refer to
-+default layouts, e.g. 2 channels refer to stereo, 6 refers to 5.1.
-+.sp
-+See \fB\-\-audio\-channels=help\fP output for defined default layouts. This also
-+lists speaker names, which can be used to express arbitrary channel
-+layouts (e.g. \fBfl\-fr\-lfe\fP is 2.1).
-+.sp
-+If the list of channel layouts has only 1 item, the decoder is asked to
-+produce according output. This sometimes triggers decoder\-downmix, which
-+might be different from the normal mpv downmix. (Only some decoders support
-+remixing audio, like AC\-3, AAC or DTS. You can use \fB\-\-ad\-lavc\-downmix=no\fP
-+to make the decoder always output its native layout.) One consequence is
-+that \fB\-\-audio\-channels=stereo\fP triggers decoder downmix, while \fBauto\fP
-+or \fBauto\-safe\fP never will, even if they end up selecting stereo. This
-+happens because the decision whether to use decoder downmix happens long
-+before the audio device is opened.
-+.sp
-+If the channel layout of the media file (i.e. the decoder) and the AO\(aqs
-+channel layout don\(aqt match, mpv will attempt to insert a conversion filter.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Warning"
-+.sp
-+Using \fBauto\fP can cause issues when using audio over HDMI. The OS will
-+typically report all channel layouts that _can_ go over HDMI, even if
-+the receiver does not support them. If a receiver gets an unsupported
-+channel layout, random things can happen, such as dropping the
-+additional channels, or adding noise.
-+.sp
-+You are recommended to set an explicit whitelist of the layouts you
-+want. For example, most A/V receivers connected via HDMI and that can
-+do 7.1 would be served by: \fB\-\-audio\-channels=7.1,5.1,stereo\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-audio\-normalize\-downmix=<yes|no>\fP
-+Enable/disable normalization if surround audio is downmixed to stereo
-+(default: no). If this is disabled, downmix can cause clipping. If it\(aqs
-+enabled, the output might be too silent. It depends on the source audio.
-+.sp
-+Technically, this changes the \fBnormalize\fP suboption of the
-+\fBlavrresample\fP audio filter, which performs the downmixing.
-+.sp
-+If downmix happens outside of mpv for some reason, this has no effect.
-+.TP
-+.B \fB\-\-audio\-display=<no|attachment>\fP
-+Setting this option to \fBattachment\fP (default) will display image
-+attachments (e.g. album cover art) when playing audio files. It will
-+display the first image found, and additional images are available as
-+video tracks.
-+.sp
-+Setting this option to \fBno\fP disables display of video entirely when
-+playing audio files.
-+.sp
-+This option has no influence on files with normal video tracks.
-+.TP
-+.B \fB\-\-audio\-files=<files>\fP
-+Play audio from an external file while viewing a video.
-+.sp
-+This is a list option. See \fI\%List Options\fP for details.
-+.TP
-+.B \fB\-\-audio\-file=<file>\fP
-+CLI/config file only alias for \fB\-\-audio\-files\-append\fP\&. Each use of this
-+option will add a new audio track. The details are similar to how
-+\fB\-\-sub\-file\fP works.
-+.TP
-+.B \fB\-\-audio\-format=<format>\fP
-+Select the sample format used for output from the audio filter layer to
-+the sound card. The values that \fB<format>\fP can adopt are listed below in
-+the description of the \fBformat\fP audio filter.
-+.TP
-+.B \fB\-\-audio\-samplerate=<Hz>\fP
-+Select the output sample rate to be used (of course sound cards have
-+limits on this). If the sample frequency selected is different from that
-+of the current media, the lavrresample audio filter will be inserted into
-+the audio filter layer to compensate for the difference.
-+.TP
-+.B \fB\-\-gapless\-audio=<no|yes|weak>\fP
-+Try to play consecutive audio files with no silence or disruption at the
-+point of file change. Default: \fBweak\fP\&.
-+.INDENT 7.0
-+.TP
-+.B no
-+Disable gapless audio.
-+.TP
-+.B yes
-+The audio device is opened using parameters chosen for the first
-+file played and is then kept open for gapless playback. This
-+means that if the first file for example has a low sample rate, then
-+the following files may get resampled to the same low sample rate,
-+resulting in reduced sound quality. If you play files with different
-+parameters, consider using options such as \fB\-\-audio\-samplerate\fP
-+and \fB\-\-audio\-format\fP to explicitly select what the shared output
-+format will be.
-+.TP
-+.B weak
-+Normally, the audio device is kept open (using the format it was
-+first initialized with). If the audio format the decoder output
-+changes, the audio device is closed and reopened. This means that
-+you will normally get gapless audio with files that were encoded
-+using the same settings, but might not be gapless in other cases.
-+(Unlike with \fByes\fP, you don\(aqt have to worry about corner cases
-+like the first file setting a very low quality output format, and
-+ruining the playback of higher quality files that follow.)
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This feature is implemented in a simple manner and relies on audio
-+output device buffering to continue playback while moving from one file
-+to another. If playback of the new file starts slowly, for example
-+because it is played from a remote network location or because you have
-+specified cache settings that require time for the initial cache fill,
-+then the buffered audio may run out before playback of the new file
-+can start.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-initial\-audio\-sync\fP, \fB\-\-no\-initial\-audio\-sync\fP
-+When starting a video file or after events such as seeking, mpv will by
-+default modify the audio stream to make it start from the same timestamp
-+as video, by either inserting silence at the start or cutting away the
-+first samples. Disabling this option makes the player behave like older
-+mpv versions did: video and audio are both started immediately even if
-+their start timestamps differ, and then video timing is gradually adjusted
-+if necessary to reach correct synchronization later.
-+.TP
-+.B \fB\-\-volume\-max=<100.0\-1000.0>\fP, \fB\-\-softvol\-max=<...>\fP
-+Set the maximum amplification level in percent (default: 130). A value of
-+130 will allow you to adjust the volume up to about double the normal level.
-+.sp
-+\fB\-\-softvol\-max\fP is a deprecated alias and should not be used.
-+.TP
-+.B \fB\-\-audio\-file\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-audio\-file\-auto\fP
-+Load additional audio files matching the video filename. The parameter
-+specifies how external audio files are matched.
-+.INDENT 7.0
-+.TP
-+.B no
-+Don\(aqt automatically load external audio files (default).
-+.TP
-+.B exact
-+Load the media filename with audio file extension.
-+.TP
-+.B fuzzy
-+Load all audio files containing media filename.
-+.TP
-+.B all
-+Load all audio files in the current and \fB\-\-audio\-file\-paths\fP
-+directories.
-+.UNINDENT
-+.TP
-+.B \fB\-\-audio\-file\-paths=<path1:path2:...>\fP
-+Equivalent to \fB\-\-sub\-file\-paths\fP option, but for auto\-loaded audio files.
-+.TP
-+.B \fB\-\-audio\-client\-name=<name>\fP
-+The application name the player reports to the audio API. Can be useful
-+if you want to force a different audio profile (e.g. with PulseAudio),
-+or to set your own application name when using libmpv.
-+.TP
-+.B \fB\-\-audio\-buffer=<seconds>\fP
-+Set the audio output minimum buffer. The audio device might actually create
-+a larger buffer if it pleases. If the device creates a smaller buffer,
-+additional audio is buffered in an additional software buffer.
-+.sp
-+Making this larger will make soft\-volume and other filters react slower,
-+introduce additional issues on playback speed change, and block the
-+player on audio format changes. A smaller buffer might lead to audio
-+dropouts.
-+.sp
-+This option should be used for testing only. If a non\-default value helps
-+significantly, the mpv developers should be contacted.
-+.sp
-+Default: 0.2 (200 ms).
-+.TP
-+.B \fB\-\-audio\-stream\-silence=<yes|no>\fP
-+Cash\-grab consumer audio hardware (such as A/V receivers) often ignore
-+initial audio sent over HDMI. This can happen every time audio over HDMI
-+is stopped and resumed. In order to compensate for this, you can enable
-+this option to not to stop and restart audio on seeks, and fill the gaps
-+with silence. Likewise, when pausing playback, audio is not stopped, and
-+silence is played while paused. Note that if no audio track is selected,
-+the audio device will still be closed immediately.
-+.sp
-+Not all AOs support this.
-+.TP
-+.B \fB\-\-audio\-wait\-open=<secs>\fP
-+This makes sense for use with \fB\-\-audio\-stream\-silence=yes\fP\&. If this option
-+is given, the player will wait for the given amount of seconds after opening
-+the audio device before sending actual audio data to it. Useful if your
-+expensive hardware discards the first 1 or 2 seconds of audio data sent to
-+it. If \fB\-\-audio\-stream\-silence=yes\fP is not set, this option will likely
-+just waste time.
-+.UNINDENT
-+.SS Subtitles
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+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\-\-sub\-ass\-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\-\-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\&.
-+.TP
-+.B \fB\-\-sub\-delay=<sec>\fP
-+Delays subtitles by \fB<sec>\fP seconds. Can be negative.
-+.TP
-+.B \fB\-\-sub\-files=<file\-list>\fP
-+Add a subtitle file to the list of external subtitles.
-+.sp
-+If you use \fB\-\-sub\-file\fP only once, this subtitle file is displayed by
-+default.
-+.sp
-+If \fB\-\-sub\-file\fP is used multiple times, the subtitle to use can be
-+switched at runtime by cycling subtitle tracks. It\(aqs possible to show
-+two subtitles at once: use \fB\-\-sid\fP to select the first subtitle index,
-+and \fB\-\-secondary\-sid\fP to select the second index. (The index is printed
-+on the terminal output after the \fB\-\-sid=\fP in the list of streams.)
-+.sp
-+This is a list option. See \fI\%List Options\fP for details.
-+.TP
-+.B \fB\-\-secondary\-sid=<ID|auto|no>\fP
-+Select a secondary subtitle stream. This is similar to \fB\-\-sid\fP\&. If a
-+secondary subtitle is selected, it will be rendered as toptitle (i.e. on
-+the top of the screen) alongside the normal subtitle, and provides a way
-+to render two subtitles at once.
-+.sp
-+There are some caveats associated with this feature. For example, bitmap
-+subtitles will always be rendered in their usual position, so selecting a
-+bitmap subtitle as secondary subtitle will result in overlapping subtitles.
-+Secondary subtitles are never shown on the terminal if video is disabled.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Styling and interpretation of any formatting tags is disabled for the
-+secondary subtitle. Internally, the same mechanism as \fB\-\-no\-sub\-ass\fP
-+is used to strip the styling.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+If the main subtitle stream contains formatting tags which display the
-+subtitle at the top of the screen, it will overlap with the secondary
-+subtitle. To prevent this, you could use \fB\-\-no\-sub\-ass\fP to disable
-+styling in the main subtitle stream.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-scale=<0\-100>\fP
-+Factor for the text subtitle font size (default: 1).
-+.sp
-+\fBNOTE:\fP
-+.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\-font\-size\fP instead.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-scale\-by\-window=<yes|no>\fP
-+Whether to scale subtitles with the window size (default: yes). If this is
-+disabled, changing the window size won\(aqt change the subtitle font size.
-+.sp
-+Like \fB\-\-sub\-scale\fP, this can break ASS subtitles.
-+.TP
-+.B \fB\-\-sub\-scale\-with\-window=<yes|no>\fP
-+Make the subtitle font size relative to the window, instead of the video.
-+This is useful if you always want the same font size, even if the video
-+doesn\(aqt cover the window fully, e.g. because screen aspect and window
-+aspect mismatch (and the player adds black bars).
-+.sp
-+Default: yes.
-+.sp
-+This option is misnamed. The difference to the confusingly similar sounding
-+option \fB\-\-sub\-scale\-by\-window\fP is that \fB\-\-sub\-scale\-with\-window\fP still
-+scales with the approximate window size, while the other option disables
-+this scaling.
-+.sp
-+Affects plain text subtitles only (or ASS if \fB\-\-sub\-ass\-override\fP is set
-+high enough).
-+.TP
-+.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
-+Default: no.
-+.TP
-+.B \fB\-\-embeddedfonts\fP, \fB\-\-no\-embeddedfonts\fP
-+Use fonts embedded in Matroska container files and ASS scripts (default:
-+enabled). These fonts can be used for SSA/ASS subtitle rendering.
-+.TP
-+.B \fB\-\-sub\-pos=<0\-100>\fP
-+Specify the position of subtitles on the screen. The value is the vertical
-+position of the subtitle in % of the screen height.
-+.sp
-+\fBNOTE:\fP
-+.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\-margin\-y\fP instead.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-speed=<0.1\-10.0>\fP
-+Multiply the subtitle event timestamps with the given value. Can be used
-+to fix the playback speed for frame\-based subtitle formats. Affects text
-+subtitles only.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fB\-\-sub\-speed=25/23.976\fP plays frame based subtitles which have been
-+loaded assuming a framerate of 23.976 at 25 FPS.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.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\-\-sub\-ass\-force\-style=FontName=Arial,Default.Bold=1\fP
-+.IP \(bu 2
-+\fB\-\-sub\-ass\-force\-style=PlayResY=768\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Using this option may lead to incorrect subtitle rendering.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-ass\-hinting=<none|light|normal|native>\fP
-+Set font hinting type. <type> can be:
-+.INDENT 7.0
-+.TP
-+.B none
-+no hinting (default)
-+.TP
-+.B light
-+FreeType autohinter, light mode
-+.TP
-+.B normal
-+FreeType autohinter, normal mode
-+.TP
-+.B native
-+font native hinter
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Warning"
-+.sp
-+Enabling hinting can lead to mispositioned text (in situations it\(aqs
-+supposed to match up video background), or reduce the smoothness
-+of animations with some badly authored ASS scripts. It is recommended
-+to not use this option, unless really needed.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-ass\-line\-spacing=<value>\fP
-+Set line spacing value for SSA/ASS renderer.
-+.TP
-+.B \fB\-\-sub\-ass\-shaper=<simple|complex>\fP
-+Set the text layout engine used by libass.
-+.INDENT 7.0
-+.TP
-+.B simple
-+uses Fribidi only, fast, doesn\(aqt render some languages correctly
-+.TP
-+.B complex
-+uses HarfBuzz, slower, wider language support
-+.UNINDENT
-+.sp
-+\fBcomplex\fP is the default. If libass hasn\(aqt been compiled against HarfBuzz,
-+libass silently reverts to \fBsimple\fP\&.
-+.TP
-+.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.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Using this option may lead to incorrect subtitle rendering.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-ass\-override=<yes|no|force|scale|strip>\fP
-+Control whether user style overrides should be applied. Note that all of
-+these overrides try to be somewhat smart about figuring out whether or not
-+a subtitle is considered a "sign".
-+.INDENT 7.0
-+.TP
-+.B no
-+Render subtitles as specified by the subtitle scripts, without
-+overrides.
-+.TP
-+.B yes
-+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
-+.B force
-+Like \fByes\fP, but also force all \fB\-\-sub\-*\fP options. Can break
-+rendering easily.
-+.TP
-+.B scale
-+Like \fByes\fP, but also apply \fB\-\-sub\-scale\fP\&.
-+.TP
-+.B strip
-+Radically strip all ASS tags and styles from the subtitle. This
-+is equivalent to the old \fB\-\-no\-ass\fP / \fB\-\-no\-sub\-ass\fP options.
-+.UNINDENT
-+.TP
-+.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
-+Default: no.
-+.TP
-+.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\-\-sub\-ass\-override\fP is set high enough).
-+.sp
-+Default: yes.
-+.sp
-+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\-\-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.
-+.sp
-+The renderer historically most commonly used for the SSA/ASS subtitle
-+formats, VSFilter, had questionable behavior that resulted in subtitles
-+being stretched too if the video was stored in anamorphic format that
-+required scaling for display. This behavior is usually undesirable and
-+newer VSFilter versions may behave differently. However, many existing
-+scripts compensate for the stretching by modifying things in the opposite
-+direction. Thus, if such scripts are displayed "correctly", they will not
-+appear as intended. This switch enables emulation of the old VSFilter
-+behavior (undesirable but expected by many existing scripts).
-+.sp
-+Enabled by default.
-+.TP
-+.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.
-+.sp
-+Note that this uses the actual video resolution for calculating the
-+offset scale factor, not what the video filter chain or the video output
-+use.
-+.TP
-+.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
-+(BT.709), VSFilter was still converting RGB colors to BT.601, rendered
-+them into the video frame, and handled the frame to the video output, which
-+would use BT.709 for conversion to RGB. The result were mangled subtitle
-+colors. Later on, bad hacks were added on top of the ASS format to control
-+how colors are to be mangled.
-+.INDENT 7.0
-+.TP
-+.B basic
-+Handle only BT.601\->BT.709 mangling, if the subtitles seem to
-+indicate that this is required (default).
-+.TP
-+.B full
-+Handle the full \fBYCbCr Matrix\fP header with all video color spaces
-+supported by libass and mpv. This might lead to bad breakages in
-+corner cases and is not strictly needed for compatibility
-+(hopefully), which is why this is not default.
-+.TP
-+.B force\-601
-+Force BT.601\->BT.709 mangling, regardless of subtitle headers
-+or video color space.
-+.TP
-+.B no
-+Disable color mangling completely. All colors are RGB.
-+.UNINDENT
-+.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\-\-sub\-ass\-override\fP
-+option doesn\(aqt affect how this option is interpreted.
-+.TP
-+.B \fB\-\-stretch\-dvd\-subs=<yes|no>\fP
-+Stretch DVD subtitles when playing anamorphic videos for better looking
-+fonts on badly mastered DVDs. This switch has no effect when the
-+video is stored with square pixels \- which for DVD input cannot be the case
-+though.
-+.sp
-+Many studios tend to use bitmap fonts designed for square pixels when
-+authoring DVDs, causing the fonts to look stretched on playback on DVD
-+players. This option fixes them, however at the price of possibly
-+misaligning some subtitles (e.g. sign translations).
-+.sp
-+Disabled by default.
-+.TP
-+.B \fB\-\-stretch\-image\-subs\-to\-screen=<yes|no>\fP
-+Stretch DVD and other image subtitles to the screen, ignoring the video
-+margins. This has a similar effect as \fB\-\-sub\-use\-margins\fP for text
-+subtitles, except that the text itself will be stretched, not only just
-+repositioned. (At least in general it is unavoidable, as an image bitmap
-+can in theory consist of a single bitmap covering the whole screen, and
-+the player won\(aqt know where exactly the text parts are located.)
-+.sp
-+This option does not display subtitles correctly. Use with care.
-+.sp
-+Disabled by default.
-+.TP
-+.B \fB\-\-image\-subs\-video\-resolution=<yes|no>\fP
-+Override the image subtitle resolution with the video resolution
-+(default: no). Normally, the subtitle canvas is fit into the video canvas
-+(e.g. letterboxed). Setting this option uses the video size as subtitle
-+canvas size. Can be useful to test broken subtitles, which often happen
-+when the video was trancoded, while attempting to keep the old subtitles.
-+.TP
-+.B \fB\-\-sub\-ass\fP, \fB\-\-no\-sub\-ass\fP
-+Render ASS subtitles natively (enabled by default).
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This has been deprecated by \fB\-\-sub\-ass\-override=strip\fP\&. You also
-+may need \fB\-\-embeddedfonts=no\fP to get the same behavior. Also,
-+using \fB\-\-sub\-ass\-override=style\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\-\fP options instead.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Using \fB\-\-no\-sub\-ass\fP may lead to incorrect or completely broken
-+rendering of ASS/SSA subtitles. It can sometimes be useful to forcibly
-+override the styling of ASS subtitles, but should be avoided in general.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-auto=<no|exact|fuzzy|all>\fP, \fB\-\-no\-sub\-auto\fP
-+Load additional subtitle files matching the video filename. The parameter
-+specifies how external subtitle files are matched. \fBexact\fP is enabled by
-+default.
-+.INDENT 7.0
-+.TP
-+.B no
-+Don\(aqt automatically load external subtitle files.
-+.TP
-+.B exact
-+Load the media filename with subtitle file extension (default).
-+.TP
-+.B fuzzy
-+Load all subs containing media filename.
-+.TP
-+.B all
-+Load all subs in the current and \fB\-\-sub\-file\-paths\fP directories.
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-codepage=<codepage>\fP
-+You can use this option to specify the subtitle codepage. uchardet will be
-+used to guess the charset. (If mpv was not compiled with uchardet, then
-+\fButf\-8\fP is the effective default.)
-+.sp
-+The default value for this option is \fBauto\fP, which enables autodetection.
-+.sp
-+The following steps are taken to determine the final codepage, in order:
-+.INDENT 7.0
-+.IP \(bu 2
-+if the specific codepage has a \fB+\fP, use that codepage
-+.IP \(bu 2
-+if the data looks like UTF\-8, assume it is UTF\-8
-+.IP \(bu 2
-+if \fB\-\-sub\-codepage\fP is set to a specific codepage, use that
-+.IP \(bu 2
-+run uchardet, and if successful, use that
-+.IP \(bu 2
-+otherwise, use \fBUTF\-8\-BROKEN\fP
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-sub\-codepage=latin2\fP Use Latin 2 if input is not UTF\-8.
-+.IP \(bu 2
-+\fB\-\-sub\-codepage=+cp1250\fP Always force recoding to cp1250.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The pseudo codepage \fBUTF\-8\-BROKEN\fP is used internally. If it\(aqs set,
-+subtitles are interpreted as UTF\-8 with "Latin 1" as fallback for bytes
-+which are not valid UTF\-8 sequences. iconv is never involved in this mode.
-+.sp
-+This option changed in mpv 0.23.0. Support for the old syntax was fully
-+removed in mpv 0.24.0.
-+.TP
-+.B \fB\-\-sub\-fix\-timing=<yes|no>\fP
-+Adjust subtitle timing is to remove minor gaps or overlaps between
-+subtitles (if the difference is smaller than 210 ms, the gap or overlap
-+is removed).
-+.TP
-+.B \fB\-\-sub\-forced\-only\fP
-+Display only forced subtitles for the DVD subtitle stream selected by e.g.
-+\fB\-\-slang\fP\&.
-+.TP
-+.B \fB\-\-sub\-fps=<rate>\fP
-+Specify the framerate of the subtitle file (default: video fps). Affects
-+text subtitles only.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB<rate>\fP > video fps speeds the subtitles up for frame\-based
-+subtitle files and slows them down for time\-based ones.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See also: \fB\-\-sub\-speed\fP\&.
-+.TP
-+.B \fB\-\-sub\-gauss=<0.0\-3.0>\fP
-+Apply Gaussian blur to image subtitles (default: 0). This can help to make
-+pixelated DVD/Vobsubs look nicer. A value other than 0 also switches to
-+software subtitle scaling. Might be slow.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Never applied to text subtitles.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-gray\fP
-+Convert image subtitles to grayscale. Can help to make yellow DVD/Vobsubs
-+look nicer.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Never applied to text subtitles.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-sub\-paths=<path1:path2:...>\fP
-+Deprecated, use \fB\-\-sub\-file\-paths\fP\&.
-+.TP
-+.B \fB\-\-sub\-file\-paths=<path\-list>\fP
-+Specify extra directories to search for subtitles matching the video.
-+Multiple directories can be separated by ":" (";" on Windows).
-+Paths can be relative or absolute. Relative paths are interpreted relative
-+to video file directory.
-+If the file is a URL, only absolute paths and \fBsub\fP configuration
-+subdirectory will be scanned.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+Assuming that \fB/path/to/video/video.avi\fP is played and
-+\fB\-\-sub\-file\-paths=sub:subtitles\fP is specified, mpv
-+searches for subtitle files in these directories:
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB/path/to/video/\fP
-+.IP \(bu 2
-+\fB/path/to/video/sub/\fP
-+.IP \(bu 2
-+\fB/path/to/video/subtitles/\fP
-+.IP \(bu 2
-+the \fBsub\fP configuration subdirectory (usually \fB~/.config/mpv/sub/\fP)
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+This is a list option. See \fI\%List Options\fP for details.
-+.TP
-+.B \fB\-\-sub\-visibility\fP, \fB\-\-no\-sub\-visibility\fP
-+Can be used to disable display of subtitles, but still select and decode
-+them.
-+.TP
-+.B \fB\-\-sub\-clear\-on\-seek\fP
-+(Obscure, rarely useful.) Can be used to play broken mkv files with
-+duplicate ReadOrder fields. ReadOrder is the first field in a
-+Matroska\-style ASS subtitle packets. It should be unique, and libass
-+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=\(aqComic Sans MS\(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\-justify=<auto|left|center|right>\fP
-+Control how multi line subs are justified irrespective of where they
-+are aligned (default: \fBauto\fP which justifies as defined by
-+\fB\-\-sub\-align\-y\fP).
-+Left justification is recommended to make the subs easier to read
-+as it is easier for the eyes.
-+.TP
-+.B \fB\-\-sub\-ass\-justify=<yes|no>\fP
-+Applies justification as defined by \fB\-\-sub\-justify\fP on ASS subtitles
-+if \fB\-\-sub\-ass\-override\fP is not set to \fBno\fP\&.
-+Default: \fBno\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.
-+.TP
-+.B \fB\-\-sub\-filter\-sdh=<yes|no>\fP
-+Applies filter removing subtitle additions for the deaf or hard\-of\-hearing (SDH).
-+This is intended for English, but may in part work for other languages too.
-+The intention is that it can be always enabled so may not remove
-+all parts added.
-+It removes speaker labels (like MAN:), upper case text in parentheses and
-+any text in brackets.
-+.sp
-+Default: \fBno\fP\&.
-+.TP
-+.B \fB\-\-sub\-filter\-sdh\-harder=<yes|no>\fP
-+Do harder SDH filtering (if enabled by \fB\-\-sub\-filter\-sdh\fP).
-+Will also remove speaker labels and text within parentheses using both
-+lower and upper case letters.
-+.sp
-+Default: \fBno\fP\&.
-+.UNINDENT
-+.SS Window
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-title=<string>\fP
-+Set the window title. This is used for the video window, and if possible,
-+also sets the audio stream title.
-+.sp
-+Properties are expanded. (See \fI\%Property Expansion\fP\&.)
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+There is a danger of this causing significant CPU usage, depending on
-+the properties used. Changing the window title is often a slow
-+operation, and if the title changes every frame, playback can be ruined.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-screen=<default|0\-32>\fP
-+In multi\-monitor configurations (i.e. a single desktop that spans across
-+multiple displays), this option tells mpv which screen to display the
-+video on.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Note (X11)"
-+.sp
-+This option does not work properly with all window managers. In these
-+cases, you can try to use \fB\-\-geometry\fP to position the window
-+explicitly. It\(aqs also possible that the window manager provides native
-+features to control which screens application windows should use.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See also \fB\-\-fs\-screen\fP\&.
-+.TP
-+.B \fB\-\-fullscreen\fP, \fB\-\-fs\fP
-+Fullscreen playback.
-+.TP
-+.B \fB\-\-fs\-screen=<all|current|0\-32>\fP
-+In multi\-monitor configurations (i.e. a single desktop that spans across
-+multiple displays), this option tells mpv which screen to go fullscreen to.
-+If \fBdefault\fP is provided mpv will fallback on using the behavior
-+depending on what the user provided with the \fBscreen\fP option.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Note (X11)"
-+.sp
-+This option does works properly only with window managers which
-+understand the EWMH \fB_NET_WM_FULLSCREEN_MONITORS\fP hint.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Note (OS X)"
-+.sp
-+\fBall\fP does not work on OS X and will behave like \fBcurrent\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See also \fB\-\-screen\fP\&.
-+.TP
-+.B \fB\-\-keep\-open=<yes|no|always>\fP
-+Do not terminate when playing or seeking beyond the end of the file, and
-+there is not next file to be played (and \fB\-\-loop\fP is not used).
-+Instead, pause the player. When trying to seek beyond end of the file, the
-+player will attempt to seek to the last frame.
-+.sp
-+Normally, this will act like \fBset pause yes\fP on EOF, unless the
-+\fB\-\-keep\-open\-pause=no\fP option is set.
-+.sp
-+The following arguments can be given:
-+.INDENT 7.0
-+.TP
-+.B no
-+If the current file ends, go to the next file or terminate.
-+(Default.)
-+.TP
-+.B yes
-+Don\(aqt terminate if the current file is the last playlist entry.
-+Equivalent to \fB\-\-keep\-open\fP without arguments.
-+.TP
-+.B always
-+Like \fByes\fP, but also applies to files before the last playlist
-+entry. This means playback will never automatically advance to
-+the next file.
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This option is not respected when using \fB\-\-frames\fP\&. Explicitly
-+skipping to the next file if the binding uses \fBforce\fP will terminate
-+playback as well.
-+.sp
-+Also, if errors or unusual circumstances happen, the player can quit
-+anyway.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Since mpv 0.6.0, this doesn\(aqt pause if there is a next file in the playlist,
-+or the playlist is looped. Approximately, this will pause when the player
-+would normally exit, but in practice there are corner cases in which this
-+is not the case (e.g. \fBmpv \-\-keep\-open file.mkv /dev/null\fP will play
-+file.mkv normally, then fail to open \fB/dev/null\fP, then exit). (In
-+mpv 0.8.0, \fBalways\fP was introduced, which restores the old behavior.)
-+.TP
-+.B \fB\-\-keep\-open\-pause=<yes|no>\fP
-+If set to \fBno\fP, instead of pausing when \fB\-\-keep\-open\fP is active, just
-+stop at end of file and continue playing forward when you seek backwards
-+until end where it stops again. Default: \fByes\fP\&.
-+.TP
-+.B \fB\-\-image\-display\-duration=<seconds|inf>\fP
-+If the current file is an image, play the image for the given amount of
-+seconds (default: 1). \fBinf\fP means the file is kept open forever (until
-+the user stops playback manually).
-+.sp
-+Unlike \fB\-\-keep\-open\fP, the player is not paused, but simply continues
-+playback until the time has elapsed. (It should not use any resources
-+during "playback".)
-+.sp
-+This affects image files, which are defined as having only 1 video frame
-+and no audio. The player may recognize certain non\-images as images, for
-+example if \fB\-\-length\fP is used to reduce the length to 1 frame, or if
-+you seek to the last frame.
-+.sp
-+This option does not affect the framerate used for \fBmf://\fP or
-+\fB\-\-merge\-files\fP\&. For that, use \fB\-\-mf\-fps\fP instead.
-+.TP
-+.B \fB\-\-force\-window=<yes|no|immediate>\fP
-+Create a video output window even if there is no video. This can be useful
-+when pretending that mpv is a GUI application. Currently, the window
-+always has the size 640x480, and is subject to \fB\-\-geometry\fP,
-+\fB\-\-autofit\fP, and similar options.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+The window is created only after initialization (to make sure default
-+window placement still works if the video size is different from the
-+\fB\-\-force\-window\fP default window size). This can be a problem if
-+initialization doesn\(aqt work perfectly, such as when opening URLs with
-+bad network connection, or opening broken video files. The \fBimmediate\fP
-+mode can be used to create the window always on program start, but this
-+may cause other issues.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-taskbar\-progress\fP, \fB\-\-no\-taskbar\-progress\fP
-+(Windows only)
-+Enable/disable playback progress rendering in taskbar (Windows 7 and above).
-+.sp
-+Enabled by default.
-+.TP
-+.B \fB\-\-snap\-window\fP
-+(Windows only) Snap the player window to screen edges.
-+.TP
-+.B \fB\-\-ontop\fP
-+Makes the player window stay on top of other windows.
-+.sp
-+On Windows, if combined with fullscreen mode, this causes mpv to be
-+treated as exclusive fullscreen window that bypasses the Desktop Window
-+Manager.
-+.TP
-+.B \fB\-\-ontop\-level=<window|system|level>\fP
-+(OS X only)
-+Sets the level of an ontop window (default: window).
-+.INDENT 7.0
-+.TP
-+.B window
-+On top of all other windows.
-+.TP
-+.B system
-+On top of system elements like Taskbar, Menubar and Dock.
-+.TP
-+.B level
-+A level as integer.
-+.UNINDENT
-+.TP
-+.B \fB\-\-border\fP, \fB\-\-no\-border\fP
-+Play video with window border and decorations. Since this is on by
-+default, use \fB\-\-no\-border\fP to disable the standard window decorations.
-+.TP
-+.B \fB\-\-fit\-border\fP, \fB\-\-no\-fit\-border\fP
-+(Windows only) Fit the whole window with border and decorations on the
-+screen. Since this is on by default, use \fB\-\-no\-fit\-border\fP to make mpv
-+try to only fit client area with video on the screen. This behavior only
-+applied to window/video with size exceeding size of the screen.
-+.TP
-+.B \fB\-\-on\-all\-workspaces\fP
-+(X11 only)
-+Show the video window on all virtual desktops.
-+.TP
-+.B \fB\-\-geometry=<[W[xH]][+\-x+\-y]>\fP, \fB\-\-geometry=<x:y>\fP
-+Adjust the initial window position or size. \fBW\fP and \fBH\fP set the window
-+size in pixels. \fBx\fP and \fBy\fP set the window position, measured in pixels
-+from the top\-left corner of the screen to the top\-left corner of the image
-+being displayed. If a percentage sign (\fB%\fP) is given after the argument,
-+it turns the value into a percentage of the screen size in that direction.
-+Positions are specified similar to the standard X11 \fB\-\-geometry\fP option
-+format, in which e.g. +10\-50 means "place 10 pixels from the left border and
-+50 pixels from the lower border" and "\-\-20+\-10" means "place 20 pixels
-+beyond the right and 10 pixels beyond the top border".
-+.sp
-+If an external window is specified using the \fB\-\-wid\fP option, this
-+option is ignored.
-+.sp
-+The coordinates are relative to the screen given with \fB\-\-screen\fP for the
-+video output drivers that fully support \fB\-\-screen\fP\&.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Generally only supported by GUI VOs. Ignored for encoding.
-+.UNINDENT
-+.UNINDENT
-+.\" admonition: Note (OS X)
-+.\"
-+.\" On Mac OS X the origin of the screen coordinate system is located on the
-+.\" bottom-left corner. For instance, ``0:0`` will place the window at the
-+.\" bottom-left of the screen.
-+.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Note (X11)"
-+.sp
-+This option does not work properly with all window managers.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB50:40\fP
-+Places the window at x=50, y=40.
-+.TP
-+.B \fB50%:50%\fP
-+Places the window in the middle of the screen.
-+.TP
-+.B \fB100%:100%\fP
-+Places the window at the bottom right corner of the screen.
-+.TP
-+.B \fB50%\fP
-+Sets the window width to half the screen width. Window height is set
-+so that the window has the video aspect ratio.
-+.TP
-+.B \fB50%x50%\fP
-+Forces the window width and height to half the screen width and
-+height. Will show black borders to compensate for the video aspect
-+ratio (with most VOs and without \fB\-\-no\-keepaspect\fP).
-+.TP
-+.B \fB50%+10+10\fP
-+Sets the window to half the screen widths, and positions it 10
-+pixels below/left of the top left corner of the screen.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See also \fB\-\-autofit\fP and \fB\-\-autofit\-larger\fP for fitting the window into
-+a given size without changing aspect ratio.
-+.TP
-+.B \fB\-\-autofit=<[W[xH]]>\fP
-+Set the initial window size to a maximum size specified by \fBWxH\fP, without
-+changing the window\(aqs aspect ratio. The size is measured in pixels, or if
-+a number is followed by a percentage sign (\fB%\fP), in percents of the
-+screen size.
-+.sp
-+This option never changes the aspect ratio of the window. If the aspect
-+ratio mismatches, the window\(aqs size is reduced until it fits into the
-+specified size.
-+.sp
-+Window position is not taken into account, nor is it modified by this
-+option (the window manager still may place the window differently depending
-+on size). Use \fB\-\-geometry\fP to change the window position. Its effects
-+are applied after this option.
-+.sp
-+See \fB\-\-geometry\fP for details how this is handled with multi\-monitor
-+setups.
-+.sp
-+Use \fB\-\-autofit\-larger\fP instead if you just want to limit the maximum size
-+of the window, rather than always forcing a window size.
-+.sp
-+Use \fB\-\-geometry\fP if you want to force both window width and height to a
-+specific size.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Generally only supported by GUI VOs. Ignored for encoding.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB70%\fP
-+Make the window width 70% of the screen size, keeping aspect ratio.
-+.TP
-+.B \fB1000\fP
-+Set the window width to 1000 pixels, keeping aspect ratio.
-+.TP
-+.B \fB70%x60%\fP
-+Make the window as large as possible, without being wider than 70%
-+of the screen width, or higher than 60% of the screen height.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-autofit\-larger=<[W[xH]]>\fP
-+This option behaves exactly like \fB\-\-autofit\fP, except the window size is
-+only changed if the window would be larger than the specified size.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fB90%x80%\fP
-+If the video is larger than 90% of the screen width or 80% of the
-+screen height, make the window smaller until either its width is 90%
-+of the screen, or its height is 80% of the screen.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-autofit\-smaller=<[W[xH]]>\fP
-+This option behaves exactly like \fB\-\-autofit\fP, except that it sets the
-+minimum size of the window (just as \fB\-\-autofit\-larger\fP sets the maximum).
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fB500x500\fP
-+Make the window at least 500 pixels wide and 500 pixels high
-+(depending on the video aspect ratio, the width or height will be
-+larger than 500 in order to keep the aspect ratio the same).
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-window\-scale=<factor>\fP
-+Resize the video window to a multiple (or fraction) of the video size. This
-+option is applied before \fB\-\-autofit\fP and other options are applied (so
-+they override this option).
-+.sp
-+For example, \fB\-\-window\-scale=0.5\fP would show the window at half the
-+video size.
-+.TP
-+.B \fB\-\-cursor\-autohide=<number|no|always>\fP
-+Make mouse cursor automatically hide after given number of milliseconds.
-+\fBno\fP will disable cursor autohide. \fBalways\fP means the cursor will stay
-+hidden.
-+.TP
-+.B \fB\-\-cursor\-autohide\-fs\-only\fP
-+If this option is given, the cursor is always visible in windowed mode. In
-+fullscreen mode, the cursor is shown or hidden according to
-+\fB\-\-cursor\-autohide\fP\&.
-+.TP
-+.B \fB\-\-no\-fixed\-vo\fP, \fB\-\-fixed\-vo\fP
-+\fB\-\-no\-fixed\-vo\fP enforces closing and reopening the video window for
-+multiple files (one (un)initialization for each file).
-+.TP
-+.B \fB\-\-force\-rgba\-osd\-rendering\fP
-+Change how some video outputs render the OSD and text subtitles. This
-+does not change appearance of the subtitles and only has performance
-+implications. For VOs which support native ASS rendering (like \fBvdpau\fP,
-+\fBopengl\fP, \fBdirect3d\fP), this can be slightly faster or slower,
-+depending on GPU drivers and hardware. For other VOs, this just makes
-+rendering slower.
-+.TP
-+.B \fB\-\-force\-window\-position\fP
-+Forcefully move mpv\(aqs video output window to default location whenever
-+there is a change in video parameters, video stream or file. This used to
-+be the default behavior. Currently only affects X11 VOs.
-+.UNINDENT
-+.sp
-+\fB\-\-heartbeat\-cmd=<command>\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+\fBWARNING:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+This option is redundant with Lua scripting. Further, it shouldn\(aqt be
-+needed for disabling screensaver anyway, since mpv will call
-+\fBxdg\-screensaver\fP when using X11 backend. As a consequence this
-+option has been deprecated with no direct replacement.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Command that is executed every 30 seconds during playback via \fIsystem()\fP \-
-+i.e. using the shell. The time between the commands can be customized with
-+the \fB\-\-heartbeat\-interval\fP option. The command is not run while playback
-+is paused.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+mpv uses this command without any checking. It is your responsibility to
-+ensure it does not cause security problems (e.g. make sure to use full
-+paths if "." is in your path like on Windows). It also only works when
-+playing video (i.e. not with \fB\-\-no\-video\fP but works with
-+\fB\-\-vo=null\fP).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+This can be "misused" to disable screensavers that do not support the
-+proper X API (see also \fB\-\-stop\-screensaver\fP). If you think this is too
-+complicated, ask the author of the screensaver program to support the
-+proper X APIs. Note that the \fB\-\-stop\-screensaver\fP does not influence the
-+heartbeat code at all.
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Example for xscreensaver"
-+.sp
-+\fBmpv \-\-heartbeat\-cmd="xscreensaver\-command \-deactivate" file\fP
-+.UNINDENT
-+.UNINDENT
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Example for GNOME screensaver"
-+.sp
-+\fBmpv \-\-heartbeat\-cmd="gnome\-screensaver\-command \-\-deactivate" file\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-heartbeat\-interval=<sec>\fP
-+Time between \fB\-\-heartbeat\-cmd\fP invocations in seconds (default: 30).
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This does not affect the normal screensaver operation in any way.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-no\-keepaspect\fP, \fB\-\-keepaspect\fP
-+\fB\-\-no\-keepaspect\fP will always stretch the video to window size, and will
-+disable the window manager hints that force the window aspect ratio.
-+(Ignored in fullscreen mode.)
-+.TP
-+.B \fB\-\-no\-keepaspect\-window\fP, \fB\-\-keepaspect\-window\fP
-+\fB\-\-keepaspect\-window\fP (the default) will lock the window size to the
-+video aspect. \fB\-\-no\-keepaspect\-window\fP disables this behavior, and will
-+instead add black bars if window aspect and video aspect mismatch. Whether
-+this actually works depends on the VO backend.
-+(Ignored in fullscreen mode.)
-+.TP
-+.B \fB\-\-monitoraspect=<ratio>\fP
-+Set the aspect ratio of your monitor or TV screen. A value of 0 disables a
-+previous setting (e.g. in the config file). Overrides the
-+\fB\-\-monitorpixelaspect\fP setting if enabled.
-+.sp
-+See also \fB\-\-monitorpixelaspect\fP and \fB\-\-video\-aspect\fP\&.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-monitoraspect=4:3\fP or \fB\-\-monitoraspect=1.3333\fP
-+.IP \(bu 2
-+\fB\-\-monitoraspect=16:9\fP or \fB\-\-monitoraspect=1.7777\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-hidpi\-window\-scale\fP, \fB\-\-no\-hidpi\-window\-scale\fP
-+(OS X and X11 only)
-+Scale the window size according to the backing scale factor (default: yes).
-+On regular HiDPI resolutions the window opens with double the size but appears
-+as having the same size as on none\-HiDPI resolutions. This is the default OS X
-+behavior.
-+.TP
-+.B \fB\-\-native\-fs\fP, \fB\-\-no\-native\-fs\fP
-+(OS X only)
-+Uses the native fullscreen mechanism of the OS (default: yes).
-+.TP
-+.B \fB\-\-monitorpixelaspect=<ratio>\fP
-+Set the aspect of a single pixel of your monitor or TV screen (default:
-+1). A value of 1 means square pixels (correct for (almost?) all LCDs). See
-+also \fB\-\-monitoraspect\fP and \fB\-\-video\-aspect\fP\&.
-+.TP
-+.B \fB\-\-stop\-screensaver\fP, \fB\-\-no\-stop\-screensaver\fP
-+Turns off the screensaver (or screen blanker and similar mechanisms) at
-+startup and turns it on again on exit (default: yes). The screensaver is
-+always re\-enabled when the player is paused.
-+.sp
-+This is not supported on all video outputs or platforms. Sometimes it is
-+implemented, but does not work (known to happen with GNOME). You might be
-+able to work around this using \fB\-\-heartbeat\-cmd\fP instead.
-+.TP
-+.B \fB\-\-wid=<ID>\fP
-+This tells mpv to attach to an existing window. If a VO is selected that
-+supports this option, it will use that window for video output. mpv will
-+scale the video to the size of this window, and will add black bars to
-+compensate if the aspect ratio of the video is different.
-+.sp
-+On X11, the ID is interpreted as a \fBWindow\fP on X11. Unlike
-+MPlayer/mplayer2, mpv always creates its own window, and sets the wid
-+window as parent. The window will always be resized to cover the parent
-+window fully. The value \fB0\fP is interpreted specially, and mpv will
-+draw directly on the root window.
-+.sp
-+On win32, the ID is interpreted as \fBHWND\fP\&. Pass it as value cast to
-+\fBintptr_t\fP\&. mpv will create its own window, and set the wid window as
-+parent, like with X11.
-+.sp
-+On OSX/Cocoa, the ID is interpreted as \fBNSView*\fP\&. Pass it as value cast
-+to \fBintptr_t\fP\&. mpv will create its own sub\-view. Because OSX does not
-+support window embedding of foreign processes, this works only with libmpv,
-+and will crash when used from the command line.
-+.TP
-+.B \fB\-\-no\-window\-dragging\fP
-+Don\(aqt move the window when clicking on it and moving the mouse pointer.
-+.TP
-+.B \fB\-\-x11\-name\fP
-+Set the window class name for X11\-based video output methods.
-+.TP
-+.B \fB\-\-x11\-netwm=<yes|no|auto>\fP
-+(X11 only)
-+Control the use of NetWM protocol features.
-+.sp
-+This may or may not help with broken window managers. This provides some
-+functionality that was implemented by the now removed \fB\-\-fstype\fP option.
-+Actually, it is not known to the developers to which degree this option
-+was needed, so feedback is welcome.
-+.sp
-+Specifically, \fByes\fP will force use of NetWM fullscreen support, even if
-+not advertised by the WM. This can be useful for WMs that are broken on
-+purpose, like XMonad. (XMonad supposedly doesn\(aqt advertise fullscreen
-+support, because Flash uses it. Apparently, applications which want to
-+use fullscreen anyway are supposed to either ignore the NetWM support hints,
-+or provide a workaround. Shame on XMonad for deliberately breaking X
-+protocols (as if X isn\(aqt bad enough already).
-+.sp
-+By default, NetWM support is autodetected (\fBauto\fP).
-+.sp
-+This option might be removed in the future.
-+.TP
-+.B \fB\-\-x11\-bypass\-compositor=<yes|no|fs\-only|never>\fP
-+If set to \fByes\fP, then ask the compositor to unredirect the mpv window
-+(default: \fBfs\-only\fP). This uses the \fB_NET_WM_BYPASS_COMPOSITOR\fP hint.
-+.sp
-+\fBfs\-only\fP asks the window manager to disable the compositor only in
-+fullscreen mode.
-+.sp
-+\fBno\fP sets \fB_NET_WM_BYPASS_COMPOSITOR\fP to 0, which is the default value
-+as declared by the EWMH specification, i.e. no change is done.
-+.sp
-+\fBnever\fP asks the window manager to never disable the compositor.
-+.UNINDENT
-+.SS Disc Devices
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-cdrom\-device=<path>\fP
-+Specify the CD\-ROM device (default: \fB/dev/cdrom\fP).
-+.TP
-+.B \fB\-\-dvd\-device=<path>\fP
-+Specify the DVD device or .iso filename (default: \fB/dev/dvd\fP). You can
-+also specify a directory that contains files previously copied directly
-+from a DVD (with e.g. vobcopy).
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fBmpv dvd:// \-\-dvd\-device=/path/to/dvd/\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-bluray\-device=<path>\fP
-+(Blu\-ray only)
-+Specify the Blu\-ray disc location. Must be a directory with Blu\-ray
-+structure.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fBmpv bd:// \-\-bluray\-device=/path/to/bd/\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-cdda\-...\fP
-+These options can be used to tune the CD Audio reading feature of mpv.
-+.TP
-+.B \fB\-\-cdda\-speed=<value>\fP
-+Set CD spin speed.
-+.TP
-+.B \fB\-\-cdda\-paranoia=<0\-2>\fP
-+Set paranoia level. Values other than 0 seem to break playback of
-+anything but the first track.
-+.INDENT 7.0
-+.TP
-+.B 0
-+disable checking (default)
-+.TP
-+.B 1
-+overlap checking only
-+.TP
-+.B 2
-+full data correction and verification
-+.UNINDENT
-+.TP
-+.B \fB\-\-cdda\-sector\-size=<value>\fP
-+Set atomic read size.
-+.TP
-+.B \fB\-\-cdda\-overlap=<value>\fP
-+Force minimum overlap search during verification to <value> sectors.
-+.TP
-+.B \fB\-\-cdda\-toc\-bias\fP
-+Assume that the beginning offset of track 1 as reported in the TOC
-+will be addressed as LBA 0. Some discs need this for getting track
-+boundaries correctly.
-+.TP
-+.B \fB\-\-cdda\-toc\-offset=<value>\fP
-+Add \fB<value>\fP sectors to the values reported when addressing tracks.
-+May be negative.
-+.TP
-+.B \fB\-\-cdda\-skip=<yes|no>\fP
-+(Never) accept imperfect data reconstruction.
-+.TP
-+.B \fB\-\-cdda\-cdtext=<yes|no>\fP
-+Print CD text. This is disabled by default, because it ruins performance
-+with CD\-ROM drives for unknown reasons.
-+.TP
-+.B \fB\-\-dvd\-speed=<speed>\fP
-+Try to limit DVD speed (default: 0, no change). DVD base speed is 1385
-+kB/s, so an 8x drive can read at speeds up to 11080 kB/s. Slower speeds
-+make the drive more quiet. For watching DVDs, 2700 kB/s should be quiet and
-+fast enough. mpv resets the speed to the drive default value on close.
-+Values of at least 100 mean speed in kB/s. Values less than 100 mean
-+multiples of 1385 kB/s, i.e. \fB\-\-dvd\-speed=8\fP selects 11080 kB/s.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+You need write access to the DVD device to change the speed.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-dvd\-angle=<ID>\fP
-+Some DVDs contain scenes that can be viewed from multiple angles.
-+This option tells mpv which angle to use (default: 1).
-+.UNINDENT
-+.SS Equalizer
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-brightness=<\-100\-100>\fP
-+Adjust the brightness of the video signal (default: 0). Not supported by
-+all video output drivers.
-+.TP
-+.B \fB\-\-contrast=<\-100\-100>\fP
-+Adjust the contrast of the video signal (default: 0). Not supported by all
-+video output drivers.
-+.TP
-+.B \fB\-\-saturation=<\-100\-100>\fP
-+Adjust the saturation of the video signal (default: 0). You can get
-+grayscale output with this option. Not supported by all video output
-+drivers.
-+.TP
-+.B \fB\-\-gamma=<\-100\-100>\fP
-+Adjust the gamma of the video signal (default: 0). Not supported by all
-+video output drivers.
-+.TP
-+.B \fB\-\-hue=<\-100\-100>\fP
-+Adjust the hue of the video signal (default: 0). You can get a colored
-+negative of the image with this option. Not supported by all video output
-+drivers.
-+.UNINDENT
-+.SS Demuxer
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-demuxer=<[+]name>\fP
-+Force demuxer type. Use a \(aq+\(aq before the name to force it; this will skip
-+some checks. Give the demuxer name as printed by \fB\-\-demuxer=help\fP\&.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-analyzeduration=<value>\fP
-+Maximum length in seconds to analyze the stream properties.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-probe\-info=<yes|no|auto>\fP
-+Whether to probe stream information (default: auto). Technically, this
-+controls whether libavformat\(aqs \fBavformat_find_stream_info()\fP function
-+is called. Usually it\(aqs safer to call it, but it can also make startup
-+slower.
-+.sp
-+The \fBauto\fP choice (the default) tries to skip this for a few know\-safe
-+whitelisted formats, while calling it for everything else.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-probescore=<1\-100>\fP
-+Minimum required libavformat probe score. Lower values will require
-+less data to be loaded (makes streams start faster), but makes file
-+format detection less reliable. Can be used to force auto\-detected
-+libavformat demuxers, even if libavformat considers the detection not
-+reliable enough. (Default: 26.)
-+.TP
-+.B \fB\-\-demuxer\-lavf\-allow\-mimetype=<yes|no>\fP
-+Allow deriving the format from the HTTP MIME type (default: yes). Set
-+this to no in case playing things from HTTP mysteriously fails, even
-+though the same files work from local disk.
-+.sp
-+This is default in order to reduce latency when opening HTTP streams.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-format=<name>\fP
-+Force a specific libavformat demuxer.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-hacks=<yes|no>\fP
-+By default, some formats will be handled differently from other formats
-+by explicitly checking for them. Most of these compensate for weird or
-+imperfect behavior from libavformat demuxers. Passing \fBno\fP disables
-+these. For debugging and testing only.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-genpts\-mode=<no|lavf>\fP
-+Mode for deriving missing packet PTS values from packet DTS. \fBlavf\fP
-+enables libavformat\(aqs \fBgenpts\fP option. \fBno\fP disables it. This used
-+to be enabled by default, but then it was deemed as not needed anymore.
-+Enabling this might help with timestamp problems, or make them worse.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-o=<key>=<value>[,<key>=<value>[,...]]\fP
-+Pass AVOptions to libavformat demuxer.
-+.sp
-+Note, a patch to make the \fIo=\fP unneeded and pass all unknown options
-+through the AVOption system is welcome. A full list of AVOptions can
-+be found in the FFmpeg manual. Note that some options may conflict
-+with mpv options.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fB\-\-demuxer\-lavf\-o=fflags=+ignidx\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-demuxer\-lavf\-probesize=<value>\fP
-+Maximum amount of data to probe during the detection phase. In the
-+case of MPEG\-TS this value identifies the maximum number of TS packets
-+to scan.
-+.TP
-+.B \fB\-\-demuxer\-lavf\-buffersize=<value>\fP
-+Size of the stream read buffer allocated for libavformat in bytes
-+(default: 32768). Lowering the size could lower latency. Note that
-+libavformat might reallocate the buffer internally, or not fully use all
-+of it.
-+.TP
-+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll=<yes|index|no>\fP, \fB\-\-mkv\-subtitle\-preroll\fP
-+Try harder to show embedded soft subtitles when seeking somewhere. Normally,
-+it can happen that the subtitle at the seek target is not shown due to how
-+some container file formats are designed. The subtitles appear only if
-+seeking before or exactly to the position a subtitle first appears. To
-+make this worse, subtitles are often timed to appear a very small amount
-+before the associated video frame, so that seeking to the video frame
-+typically does not demux the subtitle at that position.
-+.sp
-+Enabling this option makes the demuxer start reading data a bit before the
-+seek target, so that subtitles appear correctly. Note that this makes
-+seeking slower, and is not guaranteed to always work. It only works if the
-+subtitle is close enough to the seek target.
-+.sp
-+Works with the internal Matroska demuxer only. Always enabled for absolute
-+and hr\-seeks, and this option changes behavior with relative or imprecise
-+seeks only.
-+.sp
-+You can use the \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\fP option to specify
-+how much data the demuxer should pre\-read at most in order to find subtitle
-+packets that may overlap. Setting this to 0 will effectively disable this
-+preroll mechanism. Setting a very large value can make seeking very slow,
-+and an extremely large value would completely reread the entire file from
-+start to seek target on every seek \- seeking can become slower towards the
-+end of the file. The details are messy, and the value is actually rounded
-+down to the cluster with the previous video keyframe.
-+.sp
-+Some files, especially files muxed with newer mkvmerge versions, have
-+information embedded that can be used to determine what subtitle packets
-+overlap with a seek target. In these cases, mpv will reduce the amount
-+of data read to a minimum. (Although it will still read \fIall\fP data between
-+the cluster that contains the first wanted subtitle packet, and the seek
-+target.) If the \fBindex\fP choice (which is the default) is specified, then
-+prerolling will be done only if this information is actually available. If
-+this method is used, the maximum amount of data to skip can be additionally
-+controlled by \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index\fP (it still uses
-+the value of the option without \fB\-index\fP if that is higher).
-+.sp
-+See also \fB\-\-hr\-seek\-demuxer\-offset\fP option. This option can achieve a
-+similar effect, but only if hr\-seek is active. It works with any demuxer,
-+but makes seeking much slower, as it has to decode audio and video data
-+instead of just skipping over it.
-+.sp
-+\fB\-\-mkv\-subtitle\-preroll\fP is a deprecated alias.
-+.TP
-+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs=<value>\fP
-+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
-+.TP
-+.B \fB\-\-demuxer\-mkv\-subtitle\-preroll\-secs\-index=<value>\fP
-+See \fB\-\-demuxer\-mkv\-subtitle\-preroll\fP\&.
-+.TP
-+.B \fB\-\-demuxer\-mkv\-probe\-video\-duration=<yes|no|full>\fP
-+When opening the file, seek to the end of it, and check what timestamp the
-+last video packet has, and report that as file duration. This is strictly
-+for compatibility with Haali only. In this mode, it\(aqs possible that opening
-+will be slower (especially when playing over http), or that behavior with
-+broken files is much worse. So don\(aqt use this option.
-+.sp
-+The \fByes\fP mode merely uses the index and reads a small number of blocks
-+from the end of the file. The \fBfull\fP mode actually traverses the entire
-+file and can make a reliable estimate even without an index present (such
-+as partial files).
-+.TP
-+.B \fB\-\-demuxer\-rawaudio\-channels=<value>\fP
-+Number of channels (or channel layout) if \fB\-\-demuxer=rawaudio\fP is used
-+(default: stereo).
-+.TP
-+.B \fB\-\-demuxer\-rawaudio\-format=<value>\fP
-+Sample format for \fB\-\-demuxer=rawaudio\fP (default: s16le).
-+Use \fB\-\-demuxer\-rawaudio\-format=help\fP to get a list of all formats.
-+.TP
-+.B \fB\-\-demuxer\-rawaudio\-rate=<value>\fP
-+Sample rate for \fB\-\-demuxer=rawaudio\fP (default: 44 kHz).
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-fps=<value>\fP
-+Rate in frames per second for \fB\-\-demuxer=rawvideo\fP (default: 25.0).
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-w=<value>\fP, \fB\-\-demuxer\-rawvideo\-h=<value>\fP
-+Image dimension in pixels for \fB\-\-demuxer=rawvideo\fP\&.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+Play a raw YUV sample:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv sample\-720x576.yuv \-\-demuxer=rawvideo \e
-+\-\-demuxer\-rawvideo\-w=720 \-\-demuxer\-rawvideo\-h=576
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-format=<value>\fP
-+Color space (fourcc) in hex or string for \fB\-\-demuxer=rawvideo\fP
-+(default: \fBYV12\fP).
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-mp\-format=<value>\fP
-+Color space by internal video format for \fB\-\-demuxer=rawvideo\fP\&. Use
-+\fB\-\-demuxer\-rawvideo\-mp\-format=help\fP for a list of possible formats.
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-codec=<value>\fP
-+Set the video codec instead of selecting the rawvideo codec when using
-+\fB\-\-demuxer=rawvideo\fP\&. This uses the same values as codec names in
-+\fB\-\-vd\fP (but it does not accept decoder names).
-+.TP
-+.B \fB\-\-demuxer\-rawvideo\-size=<value>\fP
-+Frame size in bytes when using \fB\-\-demuxer=rawvideo\fP\&.
-+.TP
-+.B \fB\-\-demuxer\-max\-bytes=<bytes>\fP
-+This controls how much the demuxer is allowed to buffer ahead. The demuxer
-+will normally try to read ahead as much as necessary, or as much is
-+requested with \fB\-\-demuxer\-readahead\-secs\fP\&. The option can be used to
-+restrict the maximum readahead. This limits excessive readahead in case of
-+broken files or desynced playback. The demuxer will stop reading additional
-+packets as soon as one of the limits is reached. (The limits still can be
-+slightly overstepped due to technical reasons.)
-+.sp
-+Set these limits higher if you get a packet queue overflow warning, and
-+you think normal playback would be possible with a larger packet queue.
-+.sp
-+See \fB\-\-list\-options\fP for defaults and value range.
-+.TP
-+.B \fB\-\-demuxer\-max\-packets=<packets>\fP
-+Quite similar \fB\-\-demuxer\-max\-bytes=<bytes>\fP\&. Deprecated, because the
-+other option does basically the same job. Since mpv 0.25.0, the code
-+tries to account for per\-packet overhead, which is why this option becomes
-+rather pointless.
-+.TP
-+.B \fB\-\-demuxer\-thread=<yes|no>\fP
-+Run the demuxer in a separate thread, and let it prefetch a certain amount
-+of packets (default: yes). Having this enabled may lead to smoother
-+playback, but on the other hand can add delays to seeking or track
-+switching.
-+.TP
-+.B \fB\-\-demuxer\-readahead\-secs=<seconds>\fP
-+If \fB\-\-demuxer\-thread\fP is enabled, this controls how much the demuxer
-+should buffer ahead in seconds (default: 1). As long as no packet has
-+a timestamp difference higher than the readahead amount relative to the
-+last packet returned to the decoder, the demuxer keeps reading.
-+.sp
-+Note that the \fB\-\-cache\-secs\fP option will override this value if a cache
-+is enabled, and the value is larger.
-+.sp
-+(This value tends to be fuzzy, because many file formats don\(aqt store linear
-+timestamps.)
-+.TP
-+.B \fB\-\-prefetch\-playlist=<yes|no>\fP
-+Prefetch next playlist entry while playback of the current entry is ending
-+(default: no). This merely opens the URL of the next playlist entry as soon
-+as the current URL is fully read.
-+.sp
-+This does \fBnot\fP work with URLs resolved by the \fByoutube\-dl\fP wrapper,
-+and it won\(aqt.
-+.sp
-+This does not affect HLS (\fB\&.m3u8\fP URLs) \- HLS prefetching depends on the
-+demuxer cache settings and is on by default.
-+.sp
-+This can give subtly wrong results if per\-file options are used, or if
-+options are changed in the time window between prefetching start and next
-+file played.
-+.sp
-+This can occasionally make wrong prefetching decisions. For example, it
-+can\(aqt predict whether you go backwards in the playlist, and assumes you
-+won\(aqt edit the playlist.
-+.sp
-+Highly experimental.
-+.TP
-+.B \fB\-\-force\-seekable=<yes|no>\fP
-+If the player thinks that the media is not seekable (e.g. playing from a
-+pipe, or it\(aqs an http stream with a server that doesn\(aqt support range
-+requests), seeking will be disabled. This option can forcibly enable it.
-+For seeks within the cache, there\(aqs a good chance of success.
-+.UNINDENT
-+.SS Input
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-native\-keyrepeat\fP
-+Use system settings for keyrepeat delay and rate, instead of
-+\fB\-\-input\-ar\-delay\fP and \fB\-\-input\-ar\-rate\fP\&. (Whether this applies
-+depends on the VO backend and how it handles keyboard input. Does not
-+apply to terminal input.)
-+.TP
-+.B \fB\-\-input\-ar\-delay\fP
-+Delay in milliseconds before we start to autorepeat a key (0 to disable).
-+.TP
-+.B \fB\-\-input\-ar\-rate\fP
-+Number of key presses to generate per second on autorepeat.
-+.TP
-+.B \fB\-\-input\-conf=<filename>\fP
-+Specify input configuration file other than the default location in the mpv
-+configuration directory (usually \fB~/.config/mpv/input.conf\fP).
-+.TP
-+.B \fB\-\-no\-input\-default\-bindings\fP
-+Disable mpv default (built\-in) key bindings.
-+.TP
-+.B \fB\-\-input\-cmdlist\fP
-+Prints all commands that can be bound to keys.
-+.TP
-+.B \fB\-\-input\-doubleclick\-time=<milliseconds>\fP
-+Time in milliseconds to recognize two consecutive button presses as a
-+double\-click (default: 300).
-+.TP
-+.B \fB\-\-input\-keylist\fP
-+Prints all keys that can be bound to commands.
-+.TP
-+.B \fB\-\-input\-key\-fifo\-size=<2\-65000>\fP
-+Specify the size of the FIFO that buffers key events (default: 7). If it
-+is too small, some events may be lost. The main disadvantage of setting it
-+to a very large value is that if you hold down a key triggering some
-+particularly slow command then the player may be unresponsive while it
-+processes all the queued commands.
-+.TP
-+.B \fB\-\-input\-test\fP
-+Input test mode. Instead of executing commands on key presses, mpv
-+will show the keys and the bound commands on the OSD. Has to be used
-+with a dummy video, and the normal ways to quit the player will not
-+work (key bindings that normally quit will be shown on OSD only, just
-+like any other binding). See \fI\%INPUT.CONF\fP\&.
-+.TP
-+.B \fB\-\-input\-file=<filename>\fP
-+Read commands from the given file. Mostly useful with a FIFO. Since
-+mpv 0.7.0 also understands JSON commands (see \fI\%JSON IPC\fP), but you can\(aqt
-+get replies or events. Use \fB\-\-input\-ipc\-server\fP for something
-+bi\-directional. On MS Windows, JSON commands are not available.
-+.sp
-+This can also specify a direct file descriptor with \fBfd://N\fP (UNIX only).
-+In this case, JSON replies will be written if the FD is writable.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+When the given file is a FIFO mpv opens both ends, so you can do several
-+\fIecho "seek 10" > mp_pipe\fP and the pipe will stay valid.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-input\-terminal\fP, \fB\-\-no\-input\-terminal\fP
-+\fB\-\-no\-input\-terminal\fP prevents the player from reading key events from
-+standard input. Useful when reading data from standard input. This is
-+automatically enabled when \fB\-\fP is found on the command line. There are
-+situations where you have to set it manually, e.g. if you open
-+\fB/dev/stdin\fP (or the equivalent on your system), use stdin in a playlist
-+or intend to read from stdin later on via the loadfile or loadlist input
-+commands.
-+.TP
-+.B \fB\-\-input\-ipc\-server=<filename>\fP
-+Enable the IPC support and create the listening socket at the given path.
-+.sp
-+On Linux and Unix, the given path is a regular filesystem path. On Windows,
-+named pipes are used, so the path refers to the pipe namespace
-+(\fB\e\e.\epipe\e<name>\fP). If the \fB\e\e.\epipe\e\fP prefix is missing, mpv will add
-+it automatically before creating the pipe, so
-+\fB\-\-input\-ipc\-server=/tmp/mpv\-socket\fP and
-+\fB\-\-input\-ipc\-server=\e\e.\epipe\etmp\empv\-socket\fP are equivalent for IPC on
-+Windows.
-+.sp
-+See \fI\%JSON IPC\fP for details.
-+.TP
-+.B \fB\-\-input\-appleremote=<yes|no>\fP
-+(OS X only)
-+Enable/disable Apple Remote support. Enabled by default (except for libmpv).
-+.TP
-+.B \fB\-\-input\-cursor\fP, \fB\-\-no\-input\-cursor\fP
-+Permit mpv to receive pointer events reported by the video output
-+driver. Necessary to use the OSC, or to select the buttons in DVD menus.
-+Support depends on the VO in use.
-+.TP
-+.B \fB\-\-input\-media\-keys=<yes|no>\fP
-+(OS X and Windows only)
-+Enable/disable media keys support. Enabled by default (except for libmpv).
-+.TP
-+.B \fB\-\-input\-right\-alt\-gr\fP, \fB\-\-no\-input\-right\-alt\-gr\fP
-+(Cocoa and Windows only)
-+Use the right Alt key as Alt Gr to produce special characters. If disabled,
-+count the right Alt as an Alt modifier key. Enabled by default.
-+.TP
-+.B \fB\-\-input\-vo\-keyboard=<yes|no>\fP
-+Disable all keyboard input on for VOs which can\(aqt participate in proper
-+keyboard input dispatching. May not affect all VOs. Generally useful for
-+embedding only.
-+.sp
-+On X11, a sub\-window with input enabled grabs all keyboard input as long
-+as it is 1. a child of a focused window, and 2. the mouse is inside of
-+the sub\-window. It can steal away all keyboard input from the
-+application embedding the mpv window, and on the other hand, the mpv
-+window will receive no input if the mouse is outside of the mpv window,
-+even though mpv has focus. Modern toolkits work around this weird X11
-+behavior, but naively embedding foreign windows breaks it.
-+.sp
-+The only way to handle this reasonably is using the XEmbed protocol, which
-+was designed to solve these problems. GTK provides \fBGtkSocket\fP, which
-+supports XEmbed. Qt doesn\(aqt seem to provide anything working in newer
-+versions.
-+.sp
-+If the embedder supports XEmbed, input should work with default settings
-+and with this option disabled. Note that \fBinput\-default\-bindings\fP is
-+disabled by default in libmpv as well \- it should be enabled if you want
-+the mpv default key bindings.
-+.sp
-+(This option was renamed from \fB\-\-input\-x11\-keyboard\fP\&.)
-+.UNINDENT
-+.SS OSD
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-osc\fP, \fB\-\-no\-osc\fP
-+Whether to load the on\-screen\-controller (default: yes).
-+.TP
-+.B \fB\-\-no\-osd\-bar\fP, \fB\-\-osd\-bar\fP
-+Disable display of the OSD bar. This will make some things (like seeking)
-+use OSD text messages instead of the bar.
-+.sp
-+You can configure this on a per\-command basis in input.conf using \fBosd\-\fP
-+prefixes, see \fBInput command prefixes\fP\&. If you want to disable the OSD
-+completely, use \fB\-\-osd\-level=0\fP\&.
-+.TP
-+.B \fB\-\-osd\-duration=<time>\fP
-+Set the duration of the OSD messages in ms (default: 1000).
-+.TP
-+.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"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-osd\-font=\(aqBitstream Vera Sans\(aq\fP
-+.IP \(bu 2
-+\fB\-\-osd\-font=\(aqComic Sans MS\(aq\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-osd\-font\-size=<size>\fP
-+Specify the OSD font size. See \fB\-\-sub\-font\-size\fP for details.
-+.sp
-+Default: 55.
-+.TP
-+.B \fB\-\-osd\-msg1=<string>\fP
-+Show this string as message on OSD with OSD level 1 (visible by default).
-+The message will be visible by default, and as long no other message
-+covers it, and the OSD level isn\(aqt changed (see \fB\-\-osd\-level\fP).
-+Expands properties; see \fI\%Property Expansion\fP\&.
-+.TP
-+.B \fB\-\-osd\-msg2=<string>\fP
-+Similar as \fB\-\-osd\-msg1\fP, but for OSD level 2. If this is an empty string
-+(default), then the playback time is shown.
-+.TP
-+.B \fB\-\-osd\-msg3=<string>\fP
-+Similar as \fB\-\-osd\-msg1\fP, but for OSD level 3. If this is an empty string
-+(default), then the playback time, duration, and some more information is
-+shown.
-+.sp
-+This is also used for the \fBshow\-progress\fP command (by default mapped to
-+\fBP\fP), or in some non\-default cases when seeking.
-+.sp
-+\fB\-\-osd\-status\-msg\fP is a legacy equivalent (but with a minor difference).
-+.TP
-+.B \fB\-\-osd\-status\-msg=<string>\fP
-+Show a custom string during playback instead of the standard status text.
-+This overrides the status text used for \fB\-\-osd\-level=3\fP, when using the
-+\fBshow\-progress\fP command (by default mapped to \fBP\fP), or in some
-+non\-default cases when seeking. Expands properties. See
-+\fI\%Property Expansion\fP\&.
-+.sp
-+This option has been replaced with \fB\-\-osd\-msg3\fP\&. The only difference is
-+that this option implicitly includes \fB${osd\-sym\-cc}\fP\&. This option is
-+ignored if \fB\-\-osd\-msg3\fP is not empty.
-+.TP
-+.B \fB\-\-osd\-playing\-msg=<string>\fP
-+Show a message on OSD when playback starts. The string is expanded for
-+properties, e.g. \fB\-\-osd\-playing\-msg=\(aqfile: ${filename}\(aq\fP will show the
-+message \fBfile:\fP followed by a space and the currently played filename.
-+.sp
-+See \fI\%Property Expansion\fP\&.
-+.TP
-+.B \fB\-\-osd\-bar\-align\-x=<\-1\-1>\fP
-+Position of the OSD bar. \-1 is far left, 0 is centered, 1 is far right.
-+Fractional values (like 0.5) are allowed.
-+.TP
-+.B \fB\-\-osd\-bar\-align\-y=<\-1\-1>\fP
-+Position of the OSD bar. \-1 is top, 0 is centered, 1 is bottom.
-+Fractional values (like 0.5) are allowed.
-+.TP
-+.B \fB\-\-osd\-bar\-w=<1\-100>\fP
-+Width of the OSD bar, in percentage of the screen width (default: 75).
-+A value of 50 means the bar is half the screen wide.
-+.TP
-+.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
-+See \fB\-\-osd\-color\fP\&. Color used for OSD text background.
-+.TP
-+.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
-+Format text on bold.
-+.TP
-+.B \fB\-\-osd\-italic=<yes|no>\fP
-+Format text on italic.
-+.TP
-+.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 is
-+specified (or more exactly: when that option is not set to completely
-+transparent).
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.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
-+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
-+to see the exact timestamp of a video frame.
-+.TP
-+.B \fB\-\-osd\-level=<0\-3>\fP
-+Specifies which mode the OSD should start in.
-+.INDENT 7.0
-+.TP
-+.B 0
-+OSD completely disabled (subtitles only)
-+.TP
-+.B 1
-+enabled (shows up only on user interaction)
-+.TP
-+.B 2
-+enabled + current time visible by default
-+.TP
-+.B 3
-+enabled + \fB\-\-osd\-status\-msg\fP (current time and status by default)
-+.UNINDENT
-+.TP
-+.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>\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.
-+.sp
-+Default: 22.
-+.TP
-+.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
-+Vertical position (default: \fBtop\fP).
-+Details see \fB\-\-osd\-align\-x\fP\&.
-+.TP
-+.B \fB\-\-osd\-scale=<factor>\fP
-+OSD font size multiplier, multiplied with \fB\-\-osd\-font\-size\fP value.
-+.TP
-+.B \fB\-\-osd\-scale\-by\-window=<yes|no>\fP
-+Whether to scale the OSD with the window size (default: yes). If this is
-+disabled, \fB\-\-osd\-font\-size\fP and other OSD options that use scaled pixels
-+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>\fP
-+See \fB\-\-sub\-color\fP\&. Color used for OSD shadow.
-+.TP
-+.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>\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
-+.TP
-+.B \fB\-\-screenshot\-format=<type>\fP
-+Set the image file type used for saving screenshots.
-+.sp
-+Available choices:
-+.INDENT 7.0
-+.TP
-+.B png
-+PNG
-+.TP
-+.B jpg
-+JPEG (default)
-+.TP
-+.B jpeg
-+JPEG (alias for jpg)
-+.UNINDENT
-+.TP
-+.B \fB\-\-screenshot\-tag\-colorspace=<yes|no>\fP
-+Tag screenshots with the appropriate colorspace.
-+.sp
-+Note that not all formats are supported.
-+.sp
-+Default: \fBno\fP\&.
-+.TP
-+.B \fB\-\-screenshot\-high\-bit\-depth=<yes|no>\fP
-+If possible, write screenshots with a bit depth similar to the source
-+video (default: yes). This is interesting in particular for PNG, as this
-+sometimes triggers writing 16 bit PNGs with huge file sizes.
-+.TP
-+.B \fB\-\-screenshot\-template=<template>\fP
-+Specify the filename template used to save screenshots. The template
-+specifies the filename without file extension, and can contain format
-+specifiers, which will be substituted when taking a screenshot.
-+By default, the template is \fBmpv\-shot%n\fP, which results in filenames like
-+\fBmpv\-shot0012.png\fP for example.
-+.sp
-+The template can start with a relative or absolute path, in order to
-+specify a directory location where screenshots should be saved.
-+.sp
-+If the final screenshot filename points to an already existing file, the
-+file will not be overwritten. The screenshot will either not be saved, or if
-+the template contains \fB%n\fP, saved using different, newly generated
-+filename.
-+.sp
-+Allowed format specifiers:
-+.INDENT 7.0
-+.TP
-+.B \fB%[#][0X]n\fP
-+A sequence number, padded with zeros to length X (default: 04). E.g.
-+passing the format \fB%04n\fP will yield \fB0012\fP on the 12th screenshot.
-+The number is incremented every time a screenshot is taken or if the
-+file already exists. The length \fBX\fP must be in the range 0\-9. With
-+the optional # sign, mpv will use the lowest available number. For
-+example, if you take three screenshots\-\-0001, 0002, 0003\-\-and delete
-+the first two, the next two screenshots will not be 0004 and 0005, but
-+0001 and 0002 again.
-+.TP
-+.B \fB%f\fP
-+Filename of the currently played video.
-+.TP
-+.B \fB%F\fP
-+Same as \fB%f\fP, but strip the file extension, including the dot.
-+.TP
-+.B \fB%x\fP
-+Directory path of the currently played video. If the video is not on
-+the filesystem (but e.g. \fBhttp://\fP), this expand to an empty string.
-+.TP
-+.B \fB%X{fallback}\fP
-+Same as \fB%x\fP, but if the video file is not on the filesystem, return
-+the fallback string inside the \fB{...}\fP\&.
-+.TP
-+.B \fB%p\fP
-+Current playback time, in the same format as used in the OSD. The
-+result is a string of the form "HH:MM:SS". For example, if the video is
-+at the time position 5 minutes and 34 seconds, \fB%p\fP will be replaced
-+with "00:05:34".
-+.TP
-+.B \fB%P\fP
-+Similar to \fB%p\fP, but extended with the playback time in milliseconds.
-+It is formatted as "HH:MM:SS.mmm", with "mmm" being the millisecond
-+part of the playback time.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This is a simple way for getting unique per\-frame timestamps. (Frame
-+numbers would be more intuitive, but are not easily implementable
-+because container formats usually use time stamps for identifying
-+frames.)
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB%wX\fP
-+Specify the current playback time using the format string \fBX\fP\&.
-+\fB%p\fP is like \fB%wH:%wM:%wS\fP, and \fB%P\fP is like \fB%wH:%wM:%wS.%wT\fP\&.
-+.INDENT 7.0
-+.TP
-+.B Valid format specifiers:
-+.INDENT 7.0
-+.TP
-+.B \fB%wH\fP
-+hour (padded with 0 to two digits)
-+.TP
-+.B \fB%wh\fP
-+hour (not padded)
-+.TP
-+.B \fB%wM\fP
-+minutes (00\-59)
-+.TP
-+.B \fB%wm\fP
-+total minutes (includes hours, unlike \fB%wM\fP)
-+.TP
-+.B \fB%wS\fP
-+seconds (00\-59)
-+.TP
-+.B \fB%ws\fP
-+total seconds (includes hours and minutes)
-+.TP
-+.B \fB%wf\fP
-+like \fB%ws\fP, but as float
-+.TP
-+.B \fB%wT\fP
-+milliseconds (000\-999)
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB%tX\fP
-+Specify the current local date/time using the format \fBX\fP\&. This format
-+specifier uses the UNIX \fBstrftime()\fP function internally, and inserts
-+the result of passing "%X" to \fBstrftime\fP\&. For example, \fB%tm\fP will
-+insert the number of the current month as number. You have to use
-+multiple \fB%tX\fP specifiers to build a full date/time string.
-+.TP
-+.B \fB%{prop[:fallback text]}\fP
-+Insert the value of the input property \(aqprop\(aq. E.g. \fB%{filename}\fP is
-+the same as \fB%f\fP\&. If the property does not exist or is not available,
-+an error text is inserted, unless a fallback is specified.
-+.TP
-+.B \fB%%\fP
-+Replaced with the \fB%\fP character itself.
-+.UNINDENT
-+.TP
-+.B \fB\-\-screenshot\-directory=<path>\fP
-+Store screenshots in this directory. This path is joined with the filename
-+generated by \fB\-\-screenshot\-template\fP\&. If the template filename is already
-+absolute, the directory is ignored.
-+.sp
-+If the directory does not exist, it is created on the first screenshot. If
-+it is not a directory, an error is generated when trying to write a
-+screenshot.
-+.sp
-+This option is not set by default, and thus will write screenshots to the
-+directory from which mpv was started. In pseudo\-gui mode
-+(see \fI\%PSEUDO GUI MODE\fP), this is set to the desktop.
-+.TP
-+.B \fB\-\-screenshot\-jpeg\-quality=<0\-100>\fP
-+Set the JPEG quality level. Higher means better quality. The default is 90.
-+.TP
-+.B \fB\-\-screenshot\-jpeg\-source\-chroma=<yes|no>\fP
-+Write JPEG files with the same chroma subsampling as the video
-+(default: yes). If disabled, the libjpeg default is used.
-+.TP
-+.B \fB\-\-screenshot\-png\-compression=<0\-9>\fP
-+Set the PNG compression level. Higher means better compression. This will
-+affect the file size of the written screenshot file and the time it takes
-+to write a screenshot. Too high compression might occupy enough CPU time to
-+interrupt playback. The default is 7.
-+.TP
-+.B \fB\-\-screenshot\-png\-filter=<0\-5>\fP
-+Set the filter applied prior to PNG compression. 0 is none, 1 is "sub", 2 is
-+"up", 3 is "average", 4 is "Paeth", and 5 is "mixed". This affects the level
-+of compression that can be achieved. For most images, "mixed" achieves the
-+best compression ratio, hence it is the default.
-+.UNINDENT
-+.SS Software Scaler
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-sws\-scaler=<name>\fP
-+Specify the software scaler algorithm to be used with \fB\-\-vf=scale\fP\&. This
-+also affects video output drivers which lack hardware acceleration,
-+e.g. \fBx11\fP\&. See also \fB\-\-vf=scale\fP\&.
-+.sp
-+To get a list of available scalers, run \fB\-\-sws\-scaler=help\fP\&.
-+.sp
-+Default: \fBbicubic\fP\&.
-+.TP
-+.B \fB\-\-sws\-lgb=<0\-100>\fP
-+Software scaler Gaussian blur filter (luma). See \fB\-\-sws\-scaler\fP\&.
-+.TP
-+.B \fB\-\-sws\-cgb=<0\-100>\fP
-+Software scaler Gaussian blur filter (chroma). See \fB\-\-sws\-scaler\fP\&.
-+.TP
-+.B \fB\-\-sws\-ls=<\-100\-100>\fP
-+Software scaler sharpen filter (luma). See \fB\-\-sws\-scaler\fP\&.
-+.TP
-+.B \fB\-\-sws\-cs=<\-100\-100>\fP
-+Software scaler sharpen filter (chroma). See \fB\-\-sws\-scaler\fP\&.
-+.TP
-+.B \fB\-\-sws\-chs=<h>\fP
-+Software scaler chroma horizontal shifting. See \fB\-\-sws\-scaler\fP\&.
-+.TP
-+.B \fB\-\-sws\-cvs=<v>\fP
-+Software scaler chroma vertical shifting. See \fB\-\-sws\-scaler\fP\&.
-+.UNINDENT
-+.SS Terminal
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-quiet\fP
-+Make console output less verbose; in particular, prevents the status line
-+(i.e. AV: 3.4 (00:00:03.37) / 5320.6 ...) from being displayed.
-+Particularly useful on slow terminals or broken ones which do not properly
-+handle carriage return (i.e. \fB\er\fP).
-+.sp
-+See also: \fB\-\-really\-quiet\fP and \fB\-\-msg\-level\fP\&.
-+.TP
-+.B \fB\-\-really\-quiet\fP
-+Display even less output and status messages than with \fB\-\-quiet\fP\&.
-+.TP
-+.B \fB\-\-no\-terminal\fP, \fB\-\-terminal\fP
-+Disable any use of the terminal and stdin/stdout/stderr. This completely
-+silences any message output.
-+.sp
-+Unlike \fB\-\-really\-quiet\fP, this disables input and terminal initialization
-+as well.
-+.TP
-+.B \fB\-\-no\-msg\-color\fP
-+Disable colorful console output on terminals.
-+.TP
-+.B \fB\-\-msg\-level=<module1=level1,module2=level2,...>\fP
-+Control verbosity directly for each module. The \fBall\fP module changes the
-+verbosity of all the modules not explicitly specified on the command line.
-+.sp
-+Run mpv with \fB\-\-msg\-level=all=trace\fP to see all messages mpv outputs. You
-+can use the module names printed in the output (prefixed to each line in
-+\fB[...]\fP) to limit the output to interesting modules.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Some messages are printed before the command line is parsed and are
-+therefore not affected by \fB\-\-msg\-level\fP\&. To control these messages,
-+you have to use the \fBMPV_VERBOSE\fP environment variable; see
-+\fI\%ENVIRONMENT VARIABLES\fP for details.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Available levels:
-+.INDENT 7.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.TP
-+.B no
-+complete silence
-+.TP
-+.B fatal
-+fatal messages only
-+.TP
-+.B error
-+error messages
-+.TP
-+.B warn
-+warning messages
-+.TP
-+.B info
-+informational messages
-+.TP
-+.B status
-+status messages (default)
-+.TP
-+.B v
-+verbose messages
-+.TP
-+.B debug
-+debug messages
-+.TP
-+.B trace
-+very noisy debug messages
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-msg\-level=ao/sndio=no
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Completely silences the output of ao_sndio, which uses the log
-+prefix \fB[ao/sndio]\fP\&.
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-msg\-level=all=warn,ao/alsa=error
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Only show warnings or worse, and let the ao_alsa output show errors
-+only.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.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
-+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.
-+(Disabled by default.)
-+.TP
-+.B \fB\-\-term\-osd\-bar\-chars=<string>\fP
-+Customize the \fB\-\-term\-osd\-bar\fP feature. The string is expected to
-+consist of 5 characters (start, left space, position indicator,
-+right space, end). You can use Unicode characters, but note that double\-
-+width characters will not be treated correctly.
-+.sp
-+Default: \fB[\-+\-]\fP\&.
-+.TP
-+.B \fB\-\-term\-playing\-msg=<string>\fP
-+Print out a string after starting playback. The string is expanded for
-+properties, e.g. \fB\-\-term\-playing\-msg=\(aqfile: ${filename}\(aq\fP will print the string
-+\fBfile:\fP followed by a space and the currently played filename.
-+.sp
-+See \fI\%Property Expansion\fP\&.
-+.TP
-+.B \fB\-\-term\-status\-msg=<string>\fP
-+Print out a custom string during playback instead of the standard status
-+line. Expands properties. See \fI\%Property Expansion\fP\&.
-+.TP
-+.B \fB\-\-msg\-module\fP
-+Prepend module name to each console message.
-+.TP
-+.B \fB\-\-msg\-time\fP
-+Prepend timing information to each console message.
-+.UNINDENT
-+.SS TV
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-tv\-...\fP
-+These options tune various properties of the TV capture module. For
-+watching TV with mpv, use \fBtv://\fP or \fBtv://<channel_number>\fP or
-+even \fBtv://<channel_name>\fP (see option \fBtv\-channels\fP for \fBchannel_name\fP
-+below) as a media URL. You can also use \fBtv:///<input_id>\fP to start
-+watching a video from a composite or S\-Video input (see option \fBinput\fP for
-+details).
-+.TP
-+.B \fB\-\-tv\-device=<value>\fP
-+Specify TV device (default: \fB/dev/video0\fP).
-+.TP
-+.B \fB\-\-tv\-channel=<value>\fP
-+Set tuner to <value> channel.
-+.TP
-+.B \fB\-\-no\-tv\-audio\fP
-+no sound
-+.TP
-+.B \fB\-\-tv\-automute=<0\-255> (v4l and v4l2 only)\fP
-+If signal strength reported by device is less than this value, audio
-+and video will be muted. In most cases automute=100 will be enough.
-+Default is 0 (automute disabled).
-+.TP
-+.B \fB\-\-tv\-driver=<value>\fP
-+See \fB\-\-tv=driver=help\fP for a list of compiled\-in TV input drivers.
-+available: dummy, v4l2 (default: autodetect)
-+.TP
-+.B \fB\-\-tv\-input=<value>\fP
-+Specify input (default: 0 (TV), see console output for available
-+inputs).
-+.TP
-+.B \fB\-\-tv\-freq=<value>\fP
-+Specify the frequency to set the tuner to (e.g. 511.250). Not
-+compatible with the channels parameter.
-+.TP
-+.B \fB\-\-tv\-outfmt=<value>\fP
-+Specify the output format of the tuner with a preset value supported
-+by the V4L driver (YV12, UYVY, YUY2, I420) or an arbitrary format given
-+as hex value.
-+.TP
-+.B \fB\-\-tv\-width=<value>\fP
-+output window width
-+.TP
-+.B \fB\-\-tv\-height=<value>\fP
-+output window height
-+.TP
-+.B \fB\-\-tv\-fps=<value>\fP
-+framerate at which to capture video (frames per second)
-+.TP
-+.B \fB\-\-tv\-buffersize=<value>\fP
-+maximum size of the capture buffer in megabytes (default: dynamical)
-+.TP
-+.B \fB\-\-tv\-norm=<value>\fP
-+See the console output for a list of all available norms.
-+.sp
-+See also: \fB\-\-tv\-normid\fP\&.
-+.TP
-+.B \fB\-\-tv\-normid=<value> (v4l2 only)\fP
-+Sets the TV norm to the given numeric ID. The TV norm depends on the
-+capture card. See the console output for a list of available TV norms.
-+.TP
-+.B \fB\-\-tv\-chanlist=<value>\fP
-+available: argentina, australia, china\-bcast, europe\-east,
-+europe\-west, france, ireland, italy, japan\-bcast, japan\-cable,
-+newzealand, russia, southafrica, us\-bcast, us\-cable, us\-cable\-hrc
-+.TP
-+.B \fB\-\-tv\-channels=<chan>\-<name>[=<norm>],<chan>\-<name>[=<norm>],...\fP
-+Set names for channels.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+If <chan> is an integer greater than 1000, it will be treated as
-+frequency (in kHz) rather than channel name from frequency table.
-+Use _ for spaces in names (or play with quoting ;\-) ). The channel
-+names will then be written using OSD, and the input commands
-+\fBtv_step_channel\fP, \fBtv_set_channel\fP and \fBtv_last_channel\fP
-+will be usable for a remote control. Not compatible with
-+the \fBfrequency\fP parameter.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+The channel number will then be the position in the \(aqchannels\(aq
-+list, beginning with 1.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.sp
-+\fBtv://1\fP, \fBtv://TV1\fP, \fBtv_set_channel 1\fP,
-+\fBtv_set_channel TV1\fP
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-tv\-[brightness|contrast|hue|saturation]=<\-100\-100>\fP
-+Set the image equalizer on the card.
-+.TP
-+.B \fB\-\-tv\-audiorate=<value>\fP
-+Set input audio sample rate.
-+.TP
-+.B \fB\-\-tv\-forceaudio\fP
-+Capture audio even if there are no audio sources reported by v4l.
-+.TP
-+.B \fB\-\-tv\-alsa\fP
-+Capture from ALSA.
-+.TP
-+.B \fB\-\-tv\-amode=<0\-3>\fP
-+Choose an audio mode:
-+.INDENT 7.0
-+.TP
-+.B 0
-+mono
-+.TP
-+.B 1
-+stereo
-+.TP
-+.B 2
-+language 1
-+.TP
-+.B 3
-+language 2
-+.UNINDENT
-+.TP
-+.B \fB\-\-tv\-forcechan=<1\-2>\fP
-+By default, the count of recorded audio channels is determined
-+automatically by querying the audio mode from the TV card. This option
-+allows forcing stereo/mono recording regardless of the amode option
-+and the values returned by v4l. This can be used for troubleshooting
-+when the TV card is unable to report the current audio mode.
-+.TP
-+.B \fB\-\-tv\-adevice=<value>\fP
-+Set an audio device. <value> should be \fB/dev/xxx\fP for OSS and a
-+hardware ID for ALSA. You must replace any \(aq:\(aq by a \(aq.\(aq in the
-+hardware ID for ALSA.
-+.TP
-+.B \fB\-\-tv\-audioid=<value>\fP
-+Choose an audio output of the capture card, if it has more than one.
-+.TP
-+.B \fB\-\-tv\-[volume|bass|treble|balance]=<0\-100>\fP
-+These options set parameters of the mixer on the video capture card.
-+They will have no effect, if your card does not have one. For v4l2 50
-+maps to the default value of the control, as reported by the driver.
-+.TP
-+.B \fB\-\-tv\-gain=<0\-100>\fP
-+Set gain control for video devices (usually webcams) to the desired
-+value and switch off automatic control. A value of 0 enables automatic
-+control. If this option is omitted, gain control will not be modified.
-+.TP
-+.B \fB\-\-tv\-immediatemode=<bool>\fP
-+A value of 0 means capture and buffer audio and video together. A
-+value of 1 (default) means to do video capture only and let the audio
-+go through a loopback cable from the TV card to the sound card.
-+.TP
-+.B \fB\-\-tv\-mjpeg\fP
-+Use hardware MJPEG compression (if the card supports it). When using
-+this option, you do not need to specify the width and height of the
-+output window, because mpv will determine it automatically from
-+the decimation value (see below).
-+.TP
-+.B \fB\-\-tv\-decimation=<1|2|4>\fP
-+choose the size of the picture that will be compressed by hardware
-+MJPEG compression:
-+.INDENT 7.0
-+.TP
-+.B 1
-+full size
-+.INDENT 7.0
-+.IP \(bu 2
-+704x576 PAL
-+.IP \(bu 2
-+704x480 NTSC
-+.UNINDENT
-+.TP
-+.B 2
-+medium size
-+.INDENT 7.0
-+.IP \(bu 2
-+352x288 PAL
-+.IP \(bu 2
-+352x240 NTSC
-+.UNINDENT
-+.TP
-+.B 4
-+small size
-+.INDENT 7.0
-+.IP \(bu 2
-+176x144 PAL
-+.IP \(bu 2
-+176x120 NTSC
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-tv\-quality=<0\-100>\fP
-+Choose the quality of the JPEG compression (< 60 recommended for full
-+size).
-+.TP
-+.B \fB\-\-tv\-scan\-autostart\fP
-+Begin channel scanning immediately after startup (default: disabled).
-+.TP
-+.B \fB\-\-tv\-scan\-period=<0.1\-2.0>\fP
-+Specify delay in seconds before switching to next channel (default:
-+0.5). Lower values will cause faster scanning, but can detect inactive
-+TV channels as active.
-+.TP
-+.B \fB\-\-tv\-scan\-threshold=<1\-100>\fP
-+Threshold value for the signal strength (in percent), as reported by
-+the device (default: 50). A signal strength higher than this value will
-+indicate that the currently scanning channel is active.
-+.UNINDENT
-+.SS Cache
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-cache=<kBytes|yes|no|auto>\fP
-+Set the size of the cache in kilobytes, disable it with \fBno\fP, or
-+automatically enable it if needed with \fBauto\fP (default: \fBauto\fP).
-+With \fBauto\fP, the cache will usually be enabled for network streams,
-+using the size set by \fB\-\-cache\-default\fP\&. With \fByes\fP, the cache will
-+always be enabled with the size set by \fB\-\-cache\-default\fP (unless the
-+stream cannot be cached, or \fB\-\-cache\-default\fP disables caching).
-+.sp
-+May be useful when playing files from slow media, but can also have
-+negative effects, especially with file formats that require a lot of
-+seeking, such as MP4.
-+.sp
-+Note that half the cache size will be used to allow fast seeking back. This
-+is also the reason why a full cache is usually not reported as 100% full.
-+The cache fill display does not include the part of the cache reserved for
-+seeking back. The actual maximum percentage will usually be the ratio
-+between readahead and backbuffer sizes.
-+.TP
-+.B \fB\-\-cache\-default=<kBytes|no>\fP
-+Set the size of the cache in kilobytes (default: 75000 KB). Using \fBno\fP
-+will not automatically enable the cache e.g. when playing from a network
-+stream. Note that using \fB\-\-cache\fP will always override this option.
-+.TP
-+.B \fB\-\-cache\-initial=<kBytes>\fP
-+Playback will start when the cache has been filled up with this many
-+kilobytes of data (default: 0).
-+.TP
-+.B \fB\-\-cache\-seek\-min=<kBytes>\fP
-+If a seek is to be made to a position within \fB<kBytes>\fP of the cache
-+size from the current position, mpv will wait for the cache to be
-+filled to this position rather than performing a stream seek (default:
-+500).
-+.sp
-+This matters for small forward seeks. With slow streams (especially HTTP
-+streams) there is a tradeoff between skipping the data between current
-+position and seek destination, or performing an actual seek. Depending
-+on the situation, either of these might be slower than the other method.
-+This option allows control over this.
-+.TP
-+.B \fB\-\-cache\-backbuffer=<kBytes>\fP
-+Size of the cache back buffer (default: 75000 KB). This will add to the total
-+cache size, and reserved the amount for seeking back. The reserved amount
-+will not be used for readahead, and instead preserves already read data to
-+enable fast seeking back.
-+.TP
-+.B \fB\-\-cache\-file=<TMP|path>\fP
-+Create a cache file on the filesystem.
-+.sp
-+There are two ways of using this:
-+.INDENT 7.0
-+.IP 1. 3
-+Passing a path (a filename). The file will always be overwritten. When
-+the general cache is enabled, this file cache will be used to store
-+whatever is read from the source stream.
-+.sp
-+This will always overwrite the cache file, and you can\(aqt use an existing
-+cache file to resume playback of a stream. (Technically, mpv wouldn\(aqt
-+even know which blocks in the file are valid and which not.)
-+.sp
-+The resulting file will not necessarily contain all data of the source
-+stream. For example, if you seek, the parts that were skipped over are
-+never read and consequently are not written to the cache. The skipped over
-+parts are filled with zeros. This means that the cache file doesn\(aqt
-+necessarily correspond to a full download of the source stream.
-+.sp
-+Both of these issues could be improved if there is any user interest.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 3.0
-+.INDENT 3.5
-+Causes random corruption when used with ordered chapters or
-+with \fB\-\-audio\-file\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.IP 2. 3
-+Passing the string \fBTMP\fP\&. This will not be interpreted as filename.
-+Instead, an invisible temporary file is created. It depends on your
-+C library where this file is created (usually \fB/tmp/\fP), and whether
-+filename is visible (the \fBtmpfile()\fP function is used). On some
-+systems, automatic deletion of the cache file might not be guaranteed.
-+.sp
-+If you want to use a file cache, this mode is recommended, because it
-+doesn\(aqt break ordered chapters or \fB\-\-audio\-file\fP\&. These modes open
-+multiple cache streams, and using the same file for them obviously
-+clashes.
-+.UNINDENT
-+.sp
-+See also: \fB\-\-cache\-file\-size\fP\&.
-+.TP
-+.B \fB\-\-cache\-file\-size=<kBytes>\fP
-+Maximum size of the file created with \fB\-\-cache\-file\fP\&. For read accesses
-+above this size, the cache is simply not used.
-+.sp
-+Keep in mind that some use\-cases, like playing ordered chapters with cache
-+enabled, will actually create multiple cache files, each of which will
-+use up to this much disk space.
-+.sp
-+(Default: 1048576, 1 GB.)
-+.TP
-+.B \fB\-\-no\-cache\fP
-+Turn off input stream caching. See \fB\-\-cache\fP\&.
-+.TP
-+.B \fB\-\-cache\-secs=<seconds>\fP
-+How many seconds of audio/video to prefetch if the cache is active. This
-+overrides the \fB\-\-demuxer\-readahead\-secs\fP option if and only if the cache
-+is enabled and the value is larger. (Default: 10.)
-+.TP
-+.B \fB\-\-cache\-pause\fP, \fB\-\-no\-cache\-pause\fP
-+Whether the player should automatically pause when the cache runs low,
-+and unpause once more data is available ("buffering").
-+.UNINDENT
-+.SS Network
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-user\-agent=<string>\fP
-+Use \fB<string>\fP as user agent for HTTP streaming.
-+.TP
-+.B \fB\-\-cookies\fP, \fB\-\-no\-cookies\fP
-+Support cookies when making HTTP requests. Disabled by default.
-+.TP
-+.B \fB\-\-cookies\-file=<filename>\fP
-+Read HTTP cookies from <filename>. The file is assumed to be in Netscape
-+format.
-+.TP
-+.B \fB\-\-http\-header\-fields=<field1,field2>\fP
-+Set custom HTTP fields when accessing HTTP stream.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-http\-header\-fields=\(aqField1: value1\(aq,\(aqField2: value2\(aq \e
-+http://localhost:1234
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Will generate HTTP request:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+GET / HTTP/1.0
-+Host: localhost:1234
-+User\-Agent: MPlayer
-+Icy\-MetaData: 1
-+Field1: value1
-+Field2: value2
-+Connection: close
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-tls\-ca\-file=<filename>\fP
-+Certificate authority database file for use with TLS. (Silently fails with
-+older FFmpeg or Libav versions.)
-+.TP
-+.B \fB\-\-tls\-verify\fP
-+Verify peer certificates when using TLS (e.g. with \fBhttps://...\fP).
-+(Silently fails with older FFmpeg or Libav versions.)
-+.TP
-+.B \fB\-\-tls\-cert\-file\fP
-+A file containing a certificate to use in the handshake with the
-+peer.
-+.TP
-+.B \fB\-\-tls\-key\-file\fP
-+A file containing the private key for the certificate.
-+.TP
-+.B \fB\-\-referrer=<string>\fP
-+Specify a referrer path or URL for HTTP requests.
-+.TP
-+.B \fB\-\-network\-timeout=<seconds>\fP
-+Specify the network timeout in seconds. This affects at least HTTP. The
-+special value 0 (default) uses the FFmpeg/Libav defaults. If a protocol
-+is used which does not support timeouts, this option is silently ignored.
-+.TP
-+.B \fB\-\-rtsp\-transport=<lavf|udp|tcp|http>\fP
-+Select RTSP transport method (default: tcp). This selects the underlying
-+network transport when playing \fBrtsp://...\fP URLs. The value \fBlavf\fP
-+leaves the decision to libavformat.
-+.TP
-+.B \fB\-\-hls\-bitrate=<no|min|max|<rate>>\fP
-+If HLS streams are played, this option controls what streams are selected
-+by default. The option allows the following parameters:
-+.INDENT 7.0
-+.TP
-+.B no
-+Don\(aqt do anything special. Typically, this will simply pick the
-+first audio/video streams it can find.
-+.TP
-+.B min
-+Pick the streams with the lowest bitrate.
-+.TP
-+.B max
-+Same, but highest bitrate. (Default.)
-+.UNINDENT
-+.sp
-+Additionally, if the option is a number, the stream with the highest rate
-+equal or below the option value is selected.
-+.sp
-+The bitrate as used is sent by the server, and there\(aqs no guarantee it\(aqs
-+actually meaningful.
-+.UNINDENT
-+.SS DVB
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-dvbin\-card=<1\-4>\fP
-+Specifies using card number 1\-4 (default: 1).
-+.TP
-+.B \fB\-\-dvbin\-file=<filename>\fP
-+Instructs mpv to read the channels list from \fB<filename>\fP\&. The default is
-+in the mpv configuration directory (usually \fB~/.config/mpv\fP) with the
-+filename \fBchannels.conf.{sat,ter,cbl,atsc}\fP (based on your card type) or
-+\fBchannels.conf\fP as a last resort.
-+For DVB\-S/2 cards, a VDR 1.7.x format channel list is recommended
-+as it allows tuning to DVB\-S2 channels, enabling subtitles and
-+decoding the PMT (which largely improves the demuxing).
-+Classic mplayer format channel lists are still supported (without
-+these improvements), and for other card types, only limited VDR
-+format channel list support is implemented (patches welcome).
-+For channels with dynamic PID switching or incomplete
-+\fBchannels.conf\fP, \fB\-\-dvbin\-full\-transponder\fP or the magic PID
-+\fB8192\fP are recommended.
-+.TP
-+.B \fB\-\-dvbin\-timeout=<1\-30>\fP
-+Maximum number of seconds to wait when trying to tune a frequency before
-+giving up (default: 30).
-+.TP
-+.B \fB\-\-dvbin\-full\-transponder=<yes|no>\fP
-+Apply no filters on program PIDs, only tune to frequency and pass full
-+transponder to demuxer.
-+The player frontend selects the streams from the full TS in this case,
-+so the program which is shown initially may not match the chosen channel.
-+Switching between the programs is possible by cycling the \fBprogram\fP
-+property.
-+This is useful to record multiple programs on a single transponder,
-+or to work around issues in the \fBchannels.conf\fP\&.
-+It is also recommended to use this for channels which switch PIDs
-+on\-the\-fly, e.g. for regional news.
-+.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\-\-scale=<filter>\fP
-+The filter function to use when upscaling video.
-+.INDENT 7.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 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-scale=help
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.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\-\-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\-\-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\-\-scale\-param1=<value>\fP, \fB\-\-scale\-param2=<value>\fP, \fB\-\-cscale\-param1=<value>\fP, \fB\-\-cscale\-param2=<value>\fP, \fB\-\-dscale\-param1=<value>\fP, \fB\-\-dscale\-param2=<value>\fP, \fB\-\-tscale\-param1=<value>\fP, \fB\-\-tscale\-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, \fB\-\-scale\-wblur=<value>\fP, \fB\-\-cscale\-blur=<value>\fP, \fB\-\-cscale\-wblur=<value>\fP, \fB\-\-dscale\-blur=<value>\fP, \fB\-\-dscale\-wblur=<value>\fP, \fB\-\-tscale\-blur=<value>\fP, \fB\-\-tscale\-wblur=<value>\fP
-+Kernel/window scaling factor (also known as a blur factor). Decreasing this
-+makes the result sharper, increasing it makes it blurrier (default 0). If
-+set to 0, the kernel\(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\-clamp=<0.0\-1.0>\fP, \fB\-\-cscale\-clamp\fP, \fB\-\-dscale\-clamp\fP, \fB\-\-tscale\-clamp\fP
-+Specifies a weight bias to multiply into negative coefficients. Specifying
-+\fB\-\-scale\-clamp=1\fP has the effect of removing negative weights completely,
-+thus effectively clamping the value range to [0\-1]. Values between 0.0 and
-+1.0 can be specified to apply only a moderate diminishment of negative
-+weights. This is especially useful for \fB\-\-tscale\fP, where it reduces
-+excessive ringing artifacts in the temporal domain (which typically
-+manifest themselves as short flashes or fringes of black, mostly around
-+moving edges) in exchange for potentially adding more blur. The default for
-+\fB\-\-tscale\-clamp\fP is 1.0, the others default to 0.0.
-+.TP
-+.B \fB\-\-scale\-cutoff=<value>\fP, \fB\-\-cscale\-cutoff=<value>\fP, \fB\-\-dscale\-cutoff=<value>\fP
-+Cut off the filter kernel prematurely once the value range drops below
-+this threshold. Doing so allows more aggressive pruning of skippable
-+coefficients by disregarding parts of the LUT which are effectively zeroed
-+out by the window function. Only affects polar (EWA) filters. The default
-+is 0.001 for each, which is perceptually transparent but provides a 10%\-20%
-+speedup, depending on the exact radius and filter kernel chosen.
-+.TP
-+.B \fB\-\-scale\-taper=<value>\fP, \fB\-\-scale\-wtaper=<value>\fP, \fB\-\-dscale\-taper=<value>\fP, \fB\-\-dscale\-wtaper=<value>\fP, \fB\-\-cscale\-taper=<value>\fP, \fB\-\-cscale\-wtaper=<value>\fP, \fB\-\-tscale\-taper=<value>\fP, \fB\-\-tscale\-wtaper=<value>\fP
-+Kernel/window taper factor. Increasing this flattens the filter function.
-+Value range is 0 to 1. A value of 0 (the default) means no flattening, a
-+value of 1 makes the filter completely flat (equivalent to a box function).
-+Values in between mean that some portion will be flat and the actual filter
-+function will be squeezed into the space in between.
-+.TP
-+.B \fB\-\-scale\-radius=<value>\fP, \fB\-\-cscale\-radius=<value>\fP, \fB\-\-dscale\-radius=<value>\fP, \fB\-\-tscale\-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, \fB\-\-cscale\-antiring=<value>\fP, \fB\-\-dscale\-antiring=<value>\fP, \fB\-\-tscale\-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, nor does it affect any polar (EWA) scalers.
-+.TP
-+.B \fB\-\-scale\-window=<window>\fP, \fB\-\-cscale\-window=<window>\fP, \fB\-\-dscale\-window=<window>\fP, \fB\-\-tscale\-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, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-cscale\-wparam=<window>\fP, \fB\-\-tscale\-wparam=<window>\fP
-+(Advanced users only) Configure the parameter for the window function given
-+by \fB\-\-scale\-window\fP etc. 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\-\-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. This option
-+has no effect on HDR content.
-+.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\-\-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. It should also only be used with an \fB\-\-opengl\-fbo\-format\fP
-+that has at least 16 bit precision.
-+.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\-\-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.
-+.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\-\-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\-\-opengl\-shaders=<file\-list>\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. Each use of the option will
-+add another file to the internal list of shaders (see \fI\%List Options\fP).
-+.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 section of metadata, along with the non\-metadata lines after it,
-+defines a single block. There are currently two types of blocks, HOOKs and
-+TEXTUREs.
-+.sp
-+A \fBTEXTURE\fP block can set the following options:
-+.INDENT 7.0
-+.TP
-+.B TEXTURE <name> (required)
-+The name of this texture. Hooks can then bind the texture under this
-+name using BIND. This must be the first option of the texture block.
-+.TP
-+.B SIZE <width> [<height>] [<depth>] (required)
-+The dimensions of the texture. The height and depth are optional. The
-+type of texture (1D, 2D or 3D) depends on the number of components
-+specified.
-+.TP
-+.B FORMAT <name> (required)
-+The texture format for the samples. Supported texture formats are listed
-+in debug logging when the \fBopengl\fP VO is initialized (look for
-+\fBTexture formats:\fP). Usually, this follows OpenGL naming conventions.
-+For example, \fBrgb16\fP provides 3 channels with normalized 16 bit
-+components. One oddity are float formats: for example, \fBrgba16f\fP has
-+16 bit internal precision, but the texture data is provided as 32 bit
-+floats, and the driver converts the data on texture upload.
-+.sp
-+Although format names follow a common naming convention, not all of them
-+are available on all hardware, drivers, GL versions, and so on.
-+.TP
-+.B FILTER <LINEAR|NEAREST>
-+The min/magnification filter used when sampling from this texture.
-+.TP
-+.B BORDER <CLAMP|REPEAT|MIRROR>
-+The border wrapping mode used when sampling from this texture.
-+.UNINDENT
-+.sp
-+Following the metadata is a string of bytes in hexadecimal notation that
-+define the raw texture data, corresponding to the format specified by
-+\fIFORMAT\fP, on a single line with no extra whitespace.
-+.sp
-+A \fBHOOK\fP block can set the following options:
-+.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 DESC <title>
-+User\-friendly description of the pass. This is the name used when
-+representing this shader in the list of passes for property
-+\fIvo\-passes\fP\&.
-+.TP
-+.B BIND <name>
-+Loads a texture (either coming from mpv or from a \fBTEXTURE\fP block)
-+and makes it available to the pass. When binding textures from mpv,
-+this will also set up macros to facilitate accessing it properly. See
-+below for a list. 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 (such as MAIN.width or CHROMA.height),
-+OUTPUT, or NATIVE_CROPPED (size of an input texture cropped after
-+pan\-and\-scan, video\-align\-x/y, video\-pan\-x/y, etc. and possibly
-+prescaled). By default, these are set to HOOKED.w and HOOKED.h,
-+espectively.
-+.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.
-+.TP
-+.B COMPUTE <bw> <bh> [<tw> <th>]
-+Specifies that this shader should be treated as a compute shader, with
-+the block size bw and bh. The compute shader will be dispatched with
-+however many blocks are necessary to completely tile over the output.
-+Within each block, there will bw tw*th threads, forming a single work
-+group. In other words: tw and th specify the work group size, which can
-+be different from the block size. So for example, a compute shader with
-+bw, bh = 32 and tw, th = 8 running on a 500x500 texture would dispatch
-+16x16 blocks (rounded up), each with 8x8 threads.
-+.sp
-+Compute shaders in mpv are treated a bit different from fragment
-+shaders. Instead of defining a \fBvec4 hook\fP that produces an output
-+sample, you directly define \fBvoid hook\fP which writes to a fixed
-+writeonly image unit named \fBout_image\fP (this is bound by mpv) using
-+\fIimageStore\fP\&. To help translate texture coordinates in the absence of
-+vertices, mpv provides a special function \fBNAME_map(id)\fP to map from
-+the texel space of the output image to the texture coordinates for all
-+bound textures. In particular, \fBNAME_pos\fP is equivalent to
-+\fBNAME_map(gl_GlobalInvocationID)\fP, although using this only really
-+makes sense if (tw,th) == (bw,bh).
-+.UNINDENT
-+.sp
-+Each bound mpv 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 float NAME_mul
-+The coefficient that needs to be multiplied into the texture contents
-+in order to normalize it to the 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
-+Normally, users should use either NAME_tex or NAME_texOff to read from the
-+texture. For some shaders however , it can be better for performance to do
-+custom sampling from NAME_raw, in which case care needs to be taken to
-+respect NAME_mul and NAME_rot.
-+.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 input_size
-+The size in pixels of the input image (possibly cropped and prescaled).
-+.TP
-+.B vec2 target_size
-+The size in pixels of the visible part of the scaled (and possibly
-+cropped) image.
-+.TP
-+.B vec2 tex_offset
-+Texture offset introduced by user shaders or options like panscan, video\-align\-x/y, video\-pan\-x/y.
-+.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\-\-opengl\-shader=<file>\fP
-+CLI/config file only alias for \fB\-\-opengl\-shaders\-append\fP\&.
-+.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\-\-angle\-d3d11\-feature\-level=<11_0|10_1|10_0|9_3>\fP
-+Selects a specific feature level when using the ANGLE backend with D3D11.
-+By default, the highest available feature level is used. This option can be
-+used to select a lower feature level, which is mainly useful for debugging.
-+Note that OpenGL ES 3.0 is only supported at feature level 10_1 or higher.
-+Most extended OpenGL features will not work at lower feature levels
-+(similar to \fB\-\-opengl\-dumb\-mode\fP).
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-d3d11\-warp=<yes|no|auto>\fP
-+Use WARP (Windows Advanced Rasterization Platform) when using the ANGLE
-+backend with D3D11 (default: auto). This is a high performance software
-+renderer. By default, it is used when the Direct3D hardware does not
-+support Direct3D 11 feature level 9_3. While the extended OpenGL features
-+will work with WARP, they can be very slow.
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-egl\-windowing=<yes|no|auto>\fP
-+Use ANGLE\(aqs built in EGL windowing functions to create a swap chain
-+(default: auto). If this is set to \fBno\fP and the D3D11 renderer is in use,
-+ANGLE\(aqs built in swap chain will not be used and a custom swap chain that
-+is optimized for video rendering will be created instead. If set to
-+\fBauto\fP, a custom swap chain will be used for D3D11 and the built in swap
-+chain will be used for D3D9. This option is mainly for debugging purposes,
-+in case the custom swap chain has poor performance or does not work.
-+.sp
-+If set to \fByes\fP, the \fB\-\-angle\-max\-frame\-latency\fP,
-+\fB\-\-angle\-swapchain\-length\fP and \fB\-\-angle\-flip\fP options will have no
-+effect.
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-flip=<yes|no>\fP
-+Enable flip\-model presentation, which avoids unnecessarily copying the
-+backbuffer by sharing surfaces with the DWM (default: yes). This may cause
-+performance issues with older drivers. If flip\-model presentation is not
-+supported (for example, on Windows 7 without the platform update), mpv will
-+automatically fall back to the older bitblt presentation model.
-+.sp
-+If set to \fBno\fP, the \fB\-\-angle\-swapchain\-length\fP option will have no
-+effect.
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-max\-frame\-latency=<1\-16>\fP
-+Sets the maximum number of frames that the system is allowed to queue for
-+rendering with the ANGLE backend (default: 3). Lower values should make
-+VSync timing more accurate, but a value of \fB1\fP requires powerful
-+hardware, since the CPU will not be able to "render ahead" of the GPU.
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-renderer=<d3d9|d3d11|auto>\fP
-+Forces a specific renderer when using the ANGLE backend (default: auto). In
-+auto mode this will pick D3D11 for systems that support Direct3D 11 feature
-+level 9_3 or higher, and D3D9 otherwise. This option is mainly for
-+debugging purposes. Normally there is no reason to force a specific
-+renderer, though \fB\-\-angle\-renderer=d3d9\fP may give slightly better
-+performance on old hardware. Note that the D3D9 renderer only supports
-+OpenGL ES 2.0, so most extended OpenGL features will not work if this
-+renderer is selected (similar to \fB\-\-opengl\-dumb\-mode\fP).
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-angle\-swapchain\-length=<2\-16>\fP
-+Sets the number of buffers in the D3D11 presentation queue when using the
-+ANGLE backend (default: 6). At least 2 are required, since one is the back
-+buffer that mpv renders to and the other is the front buffer that is
-+presented by the DWM. Additional buffers can improve performance, because
-+for example, mpv will not have to wait on the DWM to release the front
-+buffer before rendering a new frame to it. For this reason, Microsoft
-+recommends at least 4.
-+.sp
-+Windows with ANGLE only.
-+.TP
-+.B \fB\-\-cocoa\-force\-dedicated\-gpu=<yes|no>\fP
-+Deactivates the automatic graphics switching and forces the dedicated GPU.
-+(default: no)
-+.sp
-+OS X 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 x11probe
-+For internal autoprobing, equivalent to \fBx11\fP otherwise. Don\(aqt use
-+directly, it could be removed without warning as autoprobing is changed.
-+.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.
-+.TP
-+.B vdpauglx
-+Use vdpau presentation with GLX as backing. Experimental use only.
-+Using this will have no advantage (other than additional bugs or
-+performance problems), and is for doing experiments only. Will not
-+be used automatically.
-+.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 force2
-+Try to request a ES 2.0 context (the driver might ignore this)
-+.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
-+.TP
-+.B s\-gamut
-+Sony S\-Gamut (S\-Log) 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 pq
-+ITU\-R BT.2100 PQ (Perceptual quantizer) curve, aka SMPTE ST2084
-+.TP
-+.B hlg
-+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve, aka ARIB STD\-B67
-+.TP
-+.B v\-log
-+Panasonic V\-Log (VARICAM) curve
-+.TP
-+.B s\-log1
-+Sony S\-Log1 curve
-+.TP
-+.B s\-log2
-+Sony S\-Log2 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\-\-tone\-mapping=<value>\fP
-+Specifies the algorithm used for tone\-mapping images onto the target
-+display. This is relevant for both HDR\->SDR conversion as well as gamut
-+reduction (e.g. playing back BT.2020 content on a standard gamut display).
-+Valid values are:
-+.INDENT 7.0
-+.TP
-+.B clip
-+Hard\-clip any out\-of\-range values. Use this when you care about
-+perfect color accuracy for in\-range values at the cost of completely
-+distorting out\-of\-range values. Not generally recommended.
-+.TP
-+.B mobius
-+Generalization of Reinhard to a Möbius transform with linear section.
-+Smoothly maps out\-of\-range values while retaining contrast and colors
-+for in\-range material as much as possible. Use this when you care about
-+color accuracy more than detail preservation. This is somewhere in
-+between \fBclip\fP and \fBreinhard\fP, depending on the value of
-+\fB\-\-tone\-mapping\-param\fP\&. (default)
-+.TP
-+.B reinhard
-+Reinhard tone mapping algorithm. Very simple continuous curve.
-+Preserves overall image brightness but uses nonlinear contrast, which
-+results in flattening of details and degradation in color accuracy.
-+.TP
-+.B hable
-+Similar to \fBreinhard\fP but preserves both dark and bright details
-+better (slightly sigmoidal), at the cost of slightly darkening /
-+desaturating everything. Developed by John Hable for use in video
-+games. Use this when you care about detail preservation more than
-+color/brightness accuracy. This is roughly equivalent to
-+\fB\-\-hdr\-tone\-mapping=reinhard \-\-tone\-mapping\-param=0.24\fP\&.
-+.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 clip
-+Specifies an extra linear coefficient to multiply into the signal
-+before clipping. Defaults to 1.0.
-+.TP
-+.B mobius
-+Specifies the transition point from linear to mobius transform. Every
-+value below this point is guaranteed to be mapped 1:1. The higher the
-+value, the more accurate the result will be, at the cost of losing
-+bright details. Defaults to 0.3, which due to the steep initial slope
-+still preserves in\-range colors fairly accurately.
-+.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\-\-hdr\-compute\-peak\fP
-+Compute the HDR peak per\-frame of relying on tagged metadata. These values
-+are averaged over local regions as well as over several frames to prevent
-+the value from jittering around too much. This option basically gives you
-+dynamic, per\-scene tone mapping. Requires compute shaders, which is a
-+fairly recent OpenGL feature, and will probably also perform horribly on
-+some drivers, so enable at your own risk.
-+.TP
-+.B \fB\-\-tone\-mapping\-desaturate=<value>\fP
-+Apply desaturation for highlights that exceed this level of brightness. The
-+higher the parameter, the more color information will be preserved. This
-+setting helps prevent unnaturally blown\-out colors for super\-highlights, by
-+(smoothly) turning into white instead. This makes images feel more natural,
-+at the cost of reducing information about out\-of\-range colors.
-+.sp
-+The default of 2.0 is somewhat conservative and will mostly just apply to
-+skies or directly sunlit surfaces. A setting of 0.0 disables this option.
-+.TP
-+.B \fB\-\-gamut\-warning\fP
-+If enabled, mpv will mark all clipped/out\-of\-gamut pixels that exceed a
-+given threshold (currently hard\-coded to 101%). The affected pixels will be
-+inverted to make them stand out. Note: This option applies after the
-+effects of all of mpv\(aqs color space transformation / tone mapping options,
-+so it\(aqs a good idea to combine this with \fB\-\-tone\-mapping=clip\fP and use
-+\fB\-\-target\-gamut\fP to set the gamut to simulate. For example,
-+\fB\-\-target\-gamut=bt.709\fP would make mpv highlight all pixels that exceed the
-+gamut of a standard gamut (sRGB) display. This option also does not work
-+well with ICC profiles, since the 3DLUTs are always generated against the
-+source color space and have chromatically\-accurate clipping built in.
-+.TP
-+.B \fB\-\-use\-embedded\-icc\-profile\fP
-+Load the embedded ICC profile contained in media files such as PNG images.
-+(Default: yes). Note that this option only works when also using a display
-+ICC profile (\fB\-\-icc\-profile\fP or \fB\-\-icc\-profile\-auto\fP), and also
-+requires LittleCMS 2 support.
-+.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 the background color (\fB\-\-background\fP, normally
-+black).
-+.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.
-+This does not work on X11 with EGL and Mesa (freedesktop bug 67676).
-+.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|auto>\fP
-+Call \fBglFlush()\fP after rendering a frame and before attempting to display
-+it (default: auto). Can fix stuttering in some cases, in other cases
-+probably causes it. The \fBauto\fP mode will call \fBglFlush()\fP only if
-+the renderer is going to wait for a while after rendering, instead of
-+flipping GL front and backbuffers immediately (i.e. it doesn\(aqt call it
-+in display\-sync mode).
-+.TP
-+.B \fB\-\-opengl\-dumb\-mode=<yes|no|auto>\fP
-+This mode is extremely restricted, and will disable most extended OpenGL
-+features. That 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. The default of \fBauto\fP will enable it automatically
-+if nothing uses features which require FBOs.
-+.sp
-+This option might be silently removed in the future.
-+.TP
-+.B \fB\-\-opengl\-shader\-cache\-dir=<dirname>\fP
-+Store and load compiled GL shaders in this directory. Normally, shader
-+compilation is very fast, so this is usually not needed. But some GL
-+implementations (notably ANGLE, the default on Windows) have relatively
-+slow shader compilation, and can cause startup delays.
-+.sp
-+NOTE: This is not cleaned automatically, so old, unused cache files may
-+stick around indefinitely.
-+.sp
-+This option might be silently removed in the future, if ANGLE fixes shader
-+compilation speed.
-+.TP
-+.B \fB\-\-cuda\-decode\-device=<auto|0..>\fP
-+Choose the GPU device used for decoding when using the \fBcuda\fP hwdec.
-+.sp
-+By default, the device that is being used to provide OpenGL output will
-+also be used for decoding (and in the vast majority of cases, only one
-+GPU will be present).
-+.sp
-+Note that when using the \fBcuda\-copy\fP hwdec, a different option must be
-+passed: \fB\-\-vd\-lavc\-o=gpu=<0..>\fP\&.
-+.UNINDENT
-+.SS Miscellaneous
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-display\-tags=tag1,tags2,...\fP
-+Set the list of tags that should be displayed on the terminal. Tags that
-+are in the list, but are not present in the played file, will not be shown.
-+If a value ends with \fB*\fP, all tags are matched by prefix (though there
-+is no general globbing). Just passing \fB*\fP essentially filtering.
-+.sp
-+The default includes a common list of tags, call mpv with \fB\-\-list\-options\fP
-+to see it.
-+.TP
-+.B \fB\-\-mc=<seconds/frame>\fP
-+Maximum A\-V sync correction per frame (in seconds)
-+.TP
-+.B \fB\-\-autosync=<factor>\fP
-+Gradually adjusts the A/V sync based on audio delay measurements.
-+Specifying \fB\-\-autosync=0\fP, the default, will cause frame timing to be
-+based entirely on audio delay measurements. Specifying \fB\-\-autosync=1\fP
-+will do the same, but will subtly change the A/V correction algorithm. An
-+uneven video framerate in a video which plays fine with \fB\-\-no\-audio\fP can
-+often be helped by setting this to an integer value greater than 1. The
-+higher the value, the closer the timing will be to \fB\-\-no\-audio\fP\&. Try
-+\fB\-\-autosync=30\fP to smooth out problems with sound drivers which do not
-+implement a perfect audio delay measurement. With this value, if large A/V
-+sync offsets occur, they will only take about 1 or 2 seconds to settle
-+out. This delay in reaction time to sudden A/V offsets should be the only
-+side effect of turning this option on, for all sound drivers.
-+.TP
-+.B \fB\-\-video\-sync=<audio|...>\fP
-+How the player synchronizes audio and video.
-+.sp
-+If you use this option, you usually want to set it to \fBdisplay\-resample\fP
-+to enable a timing mode that tries to not skip or repeat frames when for
-+example playing 24fps video on a 24Hz screen.
-+.sp
-+The modes starting with \fBdisplay\-\fP try to output video frames completely
-+synchronously to the display, using the detected display vertical refresh
-+rate as a hint how fast frames will be displayed on average. These modes
-+change video speed slightly to match the display. See \fB\-\-video\-sync\-...\fP
-+options for fine tuning. The robustness of this mode is further reduced by
-+making a some idealized assumptions, which may not always apply in reality.
-+Behavior can depend on the VO and the system\(aqs video and audio drivers.
-+Media files must use constant framerate. Section\-wise VFR might work as well
-+with some container formats (but not e.g. mkv). If the sync code detects
-+severe A/V desync, or the framerate cannot be detected, the player
-+automatically reverts to \fBaudio\fP mode for some time or permanently.
-+.sp
-+The modes with \fBdesync\fP in their names do not attempt to keep audio/video
-+in sync. They will slowly (or quickly) desync, until e.g. the next seek
-+happens. These modes are meant for testing, not serious use.
-+.INDENT 7.0
-+.TP
-+.B audio
-+Time video frames to audio. This is the most robust
-+mode, because the player doesn\(aqt have to assume anything
-+about how the display behaves. The disadvantage is that
-+it can lead to occasional frame drops or repeats. If
-+audio is disabled, this uses the system clock. This is
-+the default mode.
-+.TP
-+.B display\-resample
-+Resample audio to match the video. This mode will also
-+try to adjust audio speed to compensate for other drift.
-+(This means it will play the audio at a different speed
-+every once in a while to reduce the A/V difference.)
-+.TP
-+.B display\-resample\-vdrop
-+Resample audio to match the video. Drop video
-+frames to compensate for drift.
-+.TP
-+.B display\-resample\-desync
-+Like the previous mode, but no A/V compensation.
-+.TP
-+.B display\-vdrop
-+Drop or repeat video frames to compensate desyncing
-+video. (Although it should have the same effects as
-+\fBaudio\fP, the implementation is very different.)
-+.TP
-+.B display\-adrop
-+Drop or repeat audio data to compensate desyncing
-+video. See \fB\-\-video\-sync\-adrop\-size\fP\&. This mode will
-+cause severe audio artifacts if the real monitor
-+refresh rate is too different from the reported or
-+forced rate.
-+.TP
-+.B display\-desync
-+Sync video to display, and let audio play on its own.
-+.TP
-+.B desync
-+Sync video according to system clock, and let audio play
-+on its own.
-+.UNINDENT
-+.TP
-+.B \fB\-\-video\-sync\-max\-video\-change=<value>\fP
-+Maximum speed difference in percent that is applied to video with
-+\fB\-\-video\-sync=display\-...\fP (default: 1). Display sync mode will be
-+disabled if the monitor and video refresh way do not match within the
-+given range. It tries multiples as well: playing 30 fps video on a 60 Hz
-+screen will duplicate every second frame. Playing 24 fps video on a 60 Hz
-+screen will play video in a 2\-3\-2\-3\-... pattern.
-+.sp
-+The default settings are not loose enough to speed up 23.976 fps video to
-+25 fps. We consider the pitch change too extreme to allow this behavior
-+by default. Set this option to a value of \fB5\fP to enable it.
-+.sp
-+Note that in the \fB\-\-video\-sync=display\-resample\fP mode, audio speed will
-+additionally be changed by a small amount if necessary for A/V sync. See
-+\fB\-\-video\-sync\-max\-audio\-change\fP\&.
-+.TP
-+.B \fB\-\-video\-sync\-max\-audio\-change=<value>\fP
-+Maximum \fIadditional\fP speed difference in percent that is applied to audio
-+with \fB\-\-video\-sync=display\-...\fP (default: 0.125). Normally, the player
-+plays the audio at the speed of the video. But if the difference between
-+audio and video position is too high, e.g. due to drift or other timing
-+errors, it will attempt to speed up or slow down audio by this additional
-+factor. Too low values could lead to video frame dropping or repeating if
-+the A/V desync cannot be compensated, too high values could lead to chaotic
-+frame dropping due to the audio "overshooting" and skipping multiple video
-+frames before the sync logic can react.
-+.TP
-+.B \fB\-\-video\-sync\-adrop\-size=<value>\fP
-+For the \fB\-\-video\-sync=display\-adrop\fP mode. This mode duplicates/drops
-+audio data to keep audio in sync with video. To avoid audio artifacts on
-+jitter (which would add/remove samples all the time), this is done in
-+relatively large, fixed units, controlled by this option. The unit is
-+seconds.
-+.TP
-+.B \fB\-\-mf\-fps=<value>\fP
-+Framerate used when decoding from multiple PNG or JPEG files with \fBmf://\fP
-+(default: 1).
-+.TP
-+.B \fB\-\-mf\-type=<value>\fP
-+Input file type for \fBmf://\fP (available: jpeg, png, tga, sgi). By default,
-+this is guessed from the file extension.
-+.TP
-+.B \fB\-\-stream\-dump=<destination\-filename>\fP
-+Instead of playing a file, read its byte stream and write it to the given
-+destination file. The destination is overwritten. Can be useful to test
-+network\-related behavior.
-+.TP
-+.B \fB\-\-stream\-lavf\-o=opt1=value1,opt2=value2,...\fP
-+Set AVOptions on streams opened with libavformat. Unknown or misspelled
-+options are silently ignored. (They are mentioned in the terminal output
-+in verbose mode, i.e. \fB\-\-v\fP\&. In general we can\(aqt print errors, because
-+other options such as e.g. user agent are not available with all protocols,
-+and printing errors for unknown options would end up being too noisy.)
-+.TP
-+.B \fB\-\-vo\-mmcss\-profile=<name>\fP
-+(Windows only.)
-+Set the MMCSS profile for the video renderer thread (default: \fBPlayback\fP).
-+.TP
-+.B \fB\-\-priority=<prio>\fP
-+(Windows only.)
-+Set process priority for mpv according to the predefined priorities
-+available under Windows.
-+.sp
-+Possible values of \fB<prio>\fP:
-+idle|belownormal|normal|abovenormal|high|realtime
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Using realtime priority can cause system lockup.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB\-\-force\-media\-title=<string>\fP
-+Force the contents of the \fBmedia\-title\fP property to this value. Useful
-+for scripts which want to set a title, without overriding the user\(aqs
-+setting in \fB\-\-title\fP\&.
-+.TP
-+.B \fB\-\-external\-files=<file\-list>\fP
-+Load a file and add all of its tracks. This is useful to play different
-+files together (for example audio from one file, video from another), or
-+for advanced \fB\-\-lavfi\-complex\fP used (like playing two video files at
-+the same time).
-+.sp
-+Unlike \fB\-\-sub\-files\fP and \fB\-\-audio\-files\fP, this includes all tracks, and
-+does not cause default stream selection over the "proper" file. This makes
-+it slightly less intrusive.
-+.sp
-+This is a list option. See \fI\%List Options\fP for details.
-+.TP
-+.B \fB\-\-external\-file=<file>\fP
-+CLI/config file only alias for \fB\-\-external\-files\-append\fP\&. Each use of this
-+option will add a new external files.
-+.TP
-+.B \fB\-\-autoload\-files=<yes|no>\fP
-+Automatically load/select external files (default: yes).
-+.sp
-+If set to \fBno\fP, then do not automatically load external files as specified
-+by \fB\-\-sub\-auto\fP and \fB\-\-audio\-file\-auto\fP\&. If external files are forcibly
-+added (like with \fB\-\-sub\-files\fP), they will not be auto\-selected.
-+.sp
-+This does not affect playlist expansion, redirection, or other loading of
-+referenced files like with ordered chapters.
-+.TP
-+.B \fB\-\-record\-file=<file>\fP
-+Record the current stream to the given target file. The target file will
-+always be overwritten without asking.
-+.sp
-+This remuxes the source stream without reencoding, which makes this a
-+highly fragile and experimental feature. It\(aqs entirely possible that this
-+writes files which are broken, not standards compliant, not playable with
-+all players (including mpv), or incomplete.
-+.sp
-+The target file format is determined by the file extension of the target
-+filename. It is recommended to use the same target container as the source
-+container if possible, and preferring Matroska as fallback.
-+.sp
-+Seeking during stream recording, or enabling/disabling stream recording
-+during playback, can cut off data, or produce "holes" in the output file.
-+These are technical restrictions. In particular, video data or subtitles
-+which were read ahead can produce such holes, which might cause playback
-+problems with various players (including mpv).
-+.sp
-+The behavior of this option might changed in the future, such as changing
-+it to a template (similar to \fB\-\-screenshot\-template\fP), being renamed,
-+removed, or anything else, until it is declared semi\-stable.
-+.TP
-+.B \fB\-\-lavfi\-complex=<string>\fP
-+Set a "complex" libavfilter filter, which means a single filter graph can
-+take input from multiple source audio and video tracks. The graph can result
-+in a single audio or video output (or both).
-+.sp
-+Currently, the filter graph labels are used to select the participating
-+input tracks and audio/video output. The following rules apply:
-+.INDENT 7.0
-+.IP \(bu 2
-+A label of the form \fBaidN\fP selects audio track N as input (e.g.
-+\fBaid1\fP).
-+.IP \(bu 2
-+A label of the form \fBvidN\fP selects video track N as input.
-+.IP \(bu 2
-+A label named \fBao\fP will be connected to the audio output.
-+.IP \(bu 2
-+A label named \fBvo\fP will be connected to the video output.
-+.UNINDENT
-+.sp
-+Each label can be used only once. If you want to use e.g. an audio stream
-+for multiple filters, you need to use the \fBasplit\fP filter. Multiple
-+video or audio outputs are not possible, but you can use filters to merge
-+them into one.
-+.sp
-+It\(aqs not possible to change the tracks connected to the filter at runtime,
-+unless you explicitly change the \fBlavfi\-complex\fP property and set new
-+track assignments. When the graph is changed, the track selection is changed
-+according to the used labels as well.
-+.sp
-+Other tracks, as long as they\(aqre not connected to the filter, and the
-+corresponding output is not connected to the filter, can still be freely
-+changed with the normal methods.
-+.sp
-+Note that the normal filter chains (\fB\-\-af\fP, \fB\-\-vf\fP) are applied between
-+the complex graphs (e.g. \fBao\fP label) and the actual output.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [ao] [t] ; [t] aphasemeter [vo]\(aq\fP
-+Play audio track 1, and visualize it as video using the \fBaphasemeter\fP
-+filter.
-+.IP \(bu 2
-+\fB\-\-lavfi\-complex=\(aq[aid1] [aid2] amix [ao]\(aq\fP
-+Play audio track 1 and 2 at the same time.
-+.IP \(bu 2
-+\fB\-\-lavfi\-complex=\(aq[vid1] [vid2] vstack [vo]\(aq\fP
-+Stack video track 1 and 2 and play them at the same time. Note that
-+both tracks need to have the same width, or filter initialization
-+will fail (you can add \fBscale\fP filters before the \fBvstack\fP filter
-+to fix the size).
-+.IP \(bu 2
-+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [ao] [t] ; [t] aphasemeter [t2] ; [vid1] [t2] overlay [vo]\(aq\fP
-+Play audio track 1, and overlay its visualization over video track 1.
-+.IP \(bu 2
-+\fB\-\-lavfi\-complex=\(aq[aid1] asplit [t1] [ao] ; [t1] showvolume [t2] ; [vid1] [t2] overlay [vo]\(aq\fP
-+Play audio track 1, and overlay the measured volume for each speaker
-+over video track 1.
-+.IP \(bu 2
-+\fBnull:// \-\-lavfi\-complex=\(aqlife [vo]\(aq\fP
-+Conways\(aq Life Game.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See the FFmpeg libavfilter documentation for details on the available
-+filters.
-+.UNINDENT
-+.SH AUDIO OUTPUT DRIVERS
-+.sp
-+Audio output drivers are interfaces to different audio output facilities. The
-+syntax is:
-+.INDENT 0.0
-+.TP
-+.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.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+See \fB\-\-ao=help\fP for a list of compiled\-in audio output drivers. The
-+driver \fB\-\-ao=alsa\fP is preferred. \fB\-\-ao=pulse\fP is preferred on systems
-+where PulseAudio is used. On BSD systems, \fB\-\-ao=oss\fP or \fB\-\-ao=sndio\fP
-+may work (the latter being experimental).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Available audio output drivers are:
-+.INDENT 0.0
-+.TP
-+.B \fBalsa\fP (Linux only)
-+ALSA audio output driver
-+.sp
-+See \fI\%ALSA audio output options\fP for options specific to this AO.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+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
-+with automatic upmixing with shared access, so playing stereo
-+and multichannel audio at the same time will work as expected.
-+.UNINDENT
-+.UNINDENT
-+.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\-\-oss\-mixer\-device\fP
-+Sets the audio mixer device (default: \fB/dev/mixer\fP).
-+.TP
-+.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.
-+.sp
-+The following global options are supported by this audio output:
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-jack\-port=<name>\fP
-+Connects to the ports with the given name (default: physical ports).
-+.TP
-+.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\-\-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\-\-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 \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
-+outputs, and reroutes it to whatever the user defines. This means the
-+user and the application are in charge of dealing with the channel
-+layout. \fBwaveext\fP uses WAVE_FORMAT_EXTENSIBLE order, which, even
-+though it was defined by Microsoft, is the standard on many systems.
-+The value \fBany\fP makes JACK accept whatever comes from the audio
-+filter chain, regardless of channel layout and without reordering. This
-+mode is probably not very useful, other than for debugging or when used
-+with fixed setups.
-+.UNINDENT
-+.TP
-+.B \fBcoreaudio\fP (Mac OS X only)
-+Native Mac OS X audio output driver using AudioUnits and the CoreAudio
-+sound server.
-+.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 \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
-+system\-wide audio settings. This is equivalent to changing the \fBFormat\fP
-+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 \fB\-\-coreaudio\-spdif\-hack=<yes|no>\fP
-+Try to pass through AC3/DTS data as PCM. This is useful for drivers
-+which do not report AC3 support. It converts the AC3 data to float,
-+and assumes the driver will do the inverse conversion, which means
-+a typical A/V receiver will pick it up as compressed IEC framed AC3
-+stream, ignoring that it\(aqs marked as PCM. This disables normal AC3
-+passthrough (even if the device reports it as supported). Use with
-+extreme care.
-+.UNINDENT
-+.TP
-+.B \fBcoreaudio_exclusive\fP (Mac OS X only)
-+Native Mac OS X audio output driver using direct device access and
-+exclusive mode (bypasses the sound server).
-+.TP
-+.B \fBopenal\fP
-+Experimental OpenAL audio output driver
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is not very useful. Playing multi\-channel audio with
-+it is slow.
-+.UNINDENT
-+.UNINDENT
-+.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\-\-pulse\-host=<host>\fP
-+Specify the host to use. An empty <host> string uses a local connection,
-+"localhost" uses network transfer (most likely not what you want).
-+.TP
-+.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 \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
-+information. Disabling this might help with e.g. networked audio or
-+some plugins, while enabling it might help in some unknown situations
-+(it used to be required to get good behavior on old PulseAudio versions).
-+.sp
-+If you have stuttering video when using pulse, try to enable this
-+option. (Or try to update PulseAudio.)
-+.UNINDENT
-+.TP
-+.B \fBsdl\fP
-+SDL 1.2+ audio output driver. Should work on any platform supported by SDL
-+1.2, but may require the \fBSDL_AUDIODRIVER\fP environment variable to be set
-+appropriately for your system.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is for compatibility with extremely foreign
-+environments, such as systems where none of the other drivers
-+are available.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The following global options are supported by this audio output:
-+.INDENT 7.0
-+.TP
-+.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 \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. 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 \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 \fB\-\-ao\-null\-buffer\fP
-+Simulated buffer length in seconds.
-+.TP
-+.B \fB\-\-ao\-null\-outburst\fP
-+Simulated chunk size in samples.
-+.TP
-+.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 \fB\-\-ao\-null\-latency\fP
-+Simulated device latency. This is additional to EOF.
-+.TP
-+.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 \fB\-\-ao\-null\-broken\-delay\fP
-+Simulate broken audio drivers, which don\(aqt report latency correctly.
-+.TP
-+.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\-\-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 \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\-\-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.
-+.UNINDENT
-+.TP
-+.B \fBrsound\fP
-+Audio output to an RSound daemon. Use \fB\-\-audio\-device=rsound/<hostname>\fP
-+to set the host name (with \fB<hostname>\fP replaced, without the \fB< >\fP).
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Completely useless, unless you intend to run RSound. Not to be
-+confused with RoarAudio, which is something completely
-+different.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBsndio\fP
-+Audio output to the OpenBSD sndio sound system
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Experimental. There are known bugs and issues.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+(Note: only supports mono, stereo, 4.0, 5.1 and 7.1 channel
-+layouts.)
-+.TP
-+.B \fBwasapi\fP
-+Audio output to the Windows Audio Session API.
-+.UNINDENT
-+.SH VIDEO OUTPUT DRIVERS
-+.sp
-+Video output drivers are interfaces to different video output facilities. The
-+syntax is:
-+.INDENT 0.0
-+.TP
-+.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 \fB,\fP, mpv will fall back on drivers not contained
-+in the list.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.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\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
-+Available video output drivers are:
-+.INDENT 0.0
-+.TP
-+.B \fBxv\fP (X11 only)
-+Uses the XVideo extension to enable hardware\-accelerated display. This is
-+the most compatible VO on X, but may be low\-quality, and has issues with
-+OSD and subtitle display.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+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 \fB\-\-xv\-adaptor=<number>\fP
-+Select a specific XVideo adapter (check xvinfo results).
-+.TP
-+.B \fB\-\-xv\-port=<number>\fP
-+Select a specific XVideo port.
-+.TP
-+.B \fB\-\-xv\-ck=<cur|use|set>\fP
-+Select the source from which the color key is taken (default: cur).
-+.INDENT 7.0
-+.TP
-+.B cur
-+The default takes the color key currently set in Xv.
-+.TP
-+.B use
-+Use but do not set the color key from mpv (use the \fB\-\-colorkey\fP
-+option to change it).
-+.TP
-+.B set
-+Same as use but also sets the supplied color key.
-+.UNINDENT
-+.TP
-+.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
-+.B bg
-+Set the color key as window background.
-+.TP
-+.B auto
-+Let Xv draw the color key.
-+.UNINDENT
-+.TP
-+.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 \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
-+the display refresh rate.
-+.UNINDENT
-+.TP
-+.B \fBx11\fP (X11 only)
-+Shared memory video output driver without hardware acceleration that works
-+whenever X11 is present.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This is a fallback only, and should not be normally used.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBvdpau\fP (X11 only)
-+Uses the VDPAU interface to display and optionally also decode video.
-+Hardware decoding is used with \fB\-\-hwdec=vdpau\fP\&.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Earlier versions of mpv (and MPlayer, mplayer2) provided sub\-options
-+to tune vdpau post\-processing, like \fBdeint\fP, \fBsharpen\fP, \fBdenoise\fP,
-+\fBchroma\-deint\fP, \fBpullup\fP, \fBhqscaling\fP\&. These sub\-options are
-+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 \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 \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 \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
-+MPlayer/mplayer2) you could use this option to enable deinterlacing.
-+This doesn\(aqt work anymore, and deinterlacing is enabled with either
-+the \fBd\fP key (by default mapped to the command \fBcycle deinterlace\fP),
-+or the \fB\-\-deinterlace\fP option. Also, to select the default deint mode,
-+you should use something like \fB\-\-vf\-defaults=vdpaupp:deint\-mode=temporal\fP
-+instead of this sub\-option.
-+.INDENT 7.0
-+.TP
-+.B 0
-+Pick the \fBvdpaupp\fP video filter default, which corresponds to 3.
-+.TP
-+.B 1
-+Show only first field.
-+.TP
-+.B 2
-+Bob deinterlacing.
-+.TP
-+.B 3
-+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
-+with slow video hardware and/or high resolution.
-+.TP
-+.B 4
-+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
-+interpolation. Needs fast video hardware.
-+.UNINDENT
-+.TP
-+.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 \fB\-\-vo\-vdpau\-pullup\fP
-+(Deprecated. See note about \fBvdpaupp\fP\&.)
-+.sp
-+Try to apply inverse telecine, needs motion adaptive temporal
-+deinterlacing.
-+.TP
-+.B \fB\-\-vo\-vdpau\-hqscaling=<0\-9>\fP
-+(Deprecated. See note about \fBvdpaupp\fP\&.)
-+.INDENT 7.0
-+.TP
-+.B 0
-+Use default VDPAU scaling (default).
-+.TP
-+.B 1\-9
-+Apply high quality VDPAU scaling (needs capable hardware).
-+.UNINDENT
-+.TP
-+.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
-+means use autodetected value. A positive value is interpreted as a
-+refresh rate in Hz and overrides the autodetected value. A negative
-+value disables all timing adjustment and framedrop logic.
-+.TP
-+.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
-+detect whether a compositing window manager is active. If one is
-+detected, the player disables timing adjustments as if the user had
-+specified \fBfps=\-1\fP (as they would be based on incorrect input). This
-+means timing is somewhat less accurate than without compositing, but
-+with the composited mode behavior of the NVIDIA driver, there is no
-+hard playback speed limit even without the disabled logic. Enabled by
-+default, use \fB\-\-vo\-vdpau\-composite\-detect=no\fP to disable.
-+.TP
-+.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 \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 \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 \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.
-+.UNINDENT
-+.sp
-+Using the VDPAU frame queuing functionality controlled by the queuetime
-+options makes mpv\(aqs frame flip timing less sensitive to system CPU load and
-+allows mpv to start decoding the next frame(s) slightly earlier, which can
-+reduce jitter caused by individual slow\-to\-decode frames. However, the
-+NVIDIA graphics drivers can make other window behavior such as window moves
-+choppy if VDPAU is using the blit queue (mainly happens if you have the
-+composite extension enabled) and this feature is active. If this happens on
-+your system and it bothers you then you can set the queuetime value to 0 to
-+disable this feature. The settings to use in windowed and fullscreen mode
-+are separate because there should be no reason to disable this for
-+fullscreen mode (as the driver issue should not affect the video itself).
-+.sp
-+You can queue more frames ahead by increasing the queuetime values and the
-+\fBoutput_surfaces\fP count (to ensure enough surfaces to buffer video for a
-+certain time ahead you need at least as many surfaces as the video has
-+frames during that time, plus two). This could help make video smoother in
-+some cases. The main downsides are increased video RAM requirements for
-+the surfaces and laggier display response to user commands (display
-+changes only become visible some time after they\(aqre queued). The graphics
-+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\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, 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 \fB\-\-vo\-direct3d\-prefer\-stretchrect\fP
-+Use \fBIDirect3DDevice9::StretchRect\fP over other methods if possible.
-+.TP
-+.B \fB\-\-vo\-direct3d\-disable\-stretchrect\fP
-+Never render the video using \fBIDirect3DDevice9::StretchRect\fP\&.
-+.TP
-+.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 \fB\-\-vo\-direct3d\-disable\-shaders\fP
-+Never use shaders when rendering video.
-+.TP
-+.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 \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.
-+.UNINDENT
-+.sp
-+Debug options. These might be incorrect, might be removed in the future,
-+might crash, might cause slow downs, etc. Contact the developers if you
-+actually need any of these for performance or proper operation.
-+.INDENT 7.0
-+.TP
-+.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 \fB\-\-vo\-direct3d\-texture\-memory=<mode>\fP
-+Only affects operation with shaders/texturing enabled, and (E)OSD.
-+Possible values:
-+.INDENT 7.0
-+.TP
-+.B \fBdefault\fP (default)
-+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
-+locking. If the driver supports \fBD3DDEVCAPS_TEXTURESYSTEMMEMORY\fP,
-+\fBD3DPOOL_SYSTEMMEM\fP is used directly.
-+.TP
-+.B \fBdefault\-pool\fP
-+Use \fBD3DPOOL_DEFAULT\fP\&. (Like \fBdefault\fP, but never use a
-+shadow\-texture.)
-+.TP
-+.B \fBdefault\-pool\-shadow\fP
-+Use \fBD3DPOOL_DEFAULT\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
-+locking. (Like \fBdefault\fP, but always force the shadow\-texture.)
-+.TP
-+.B \fBmanaged\fP
-+Use \fBD3DPOOL_MANAGED\fP\&.
-+.TP
-+.B \fBscratch\fP
-+Use \fBD3DPOOL_SCRATCH\fP, with a \fBD3DPOOL_SYSTEMMEM\fP texture for
-+locking.
-+.UNINDENT
-+.TP
-+.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 \fB\-\-vo\-direct3d\-exact\-backbuffer\fP
-+Always resize the backbuffer to window size.
-+.UNINDENT
-+.TP
-+.B \fBopengl\fP
-+OpenGL video output driver. It supports extended scaling methods, dithering
-+and color management.
-+.sp
-+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
-+Some features are available with OpenGL 3 capable graphics drivers only
-+(or if the necessary extensions are available).
-+.sp
-+OpenGL ES 2.0 and 3.0 are supported as well.
-+.sp
-+Hardware decoding over OpenGL\-interop is supported to some degree. Note
-+that in this mode, some corner case might not be gracefully handled, and
-+color space conversion and chroma upsampling is generally in the hand of
-+the hardware decoder APIs.
-+.sp
-+\fBopengl\fP makes use of FBOs by default. Sometimes you can achieve better
-+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 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
-+hardware acceleration. Should work on all platforms supported by SDL 2.0.
-+For tuning, refer to your copy of the file \fBSDL_hints.h\fP\&.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is for compatibility with systems that don\(aqt provide
-+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 \fB\-\-sdl\-sw\fP
-+Continue even if a software renderer is detected.
-+.TP
-+.B \fB\-\-sdl\-switch\-mode\fP
-+Instruct SDL to switch the monitor video mode when going fullscreen.
-+.UNINDENT
-+.TP
-+.B \fBvaapi\fP
-+Intel VA API video output driver with support for hardware decoding. Note
-+that there is absolutely no reason to use this, other than compatibility.
-+This is low quality, and has issues with OSD.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is for compatibility with crappy systems. You can
-+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 \fB\-\-vo\-vaapi\-scaling=<algorithm>\fP
-+.INDENT 7.0
-+.TP
-+.B default
-+Driver default (mpv default as well).
-+.TP
-+.B fast
-+Fast, but low quality.
-+.TP
-+.B hq
-+Unspecified driver dependent high\-quality scaling, slow.
-+.TP
-+.B nla
-+\fBnon\-linear anamorphic scaling\fP
-+.UNINDENT
-+.TP
-+.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).
-+.sp
-+This option doesn\(aqt apply if libva supports video post processing (vpp).
-+In this case, the default for \fBdeint\-mode\fP is \fBno\fP, and enabling
-+deinterlacing via user interaction using the methods mentioned above
-+actually inserts the \fBvavpp\fP video filter. If vpp is not actually
-+supported with the libva backend in use, you can use this option to
-+forcibly enable VO based deinterlacing.
-+.INDENT 7.0
-+.TP
-+.B no
-+Don\(aqt allow deinterlacing (default for newer libva).
-+.TP
-+.B first\-field
-+Show only first field.
-+.TP
-+.B bob
-+bob deinterlacing (default for older libva).
-+.UNINDENT
-+.TP
-+.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.
-+.UNINDENT
-+.TP
-+.B \fBnull\fP
-+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 \fB\-\-vo\-null\-fps=<value>\fP
-+Simulate display FPS. This artificially limits how many frames the
-+VO accepts per second.
-+.UNINDENT
-+.TP
-+.B \fBcaca\fP
-+Color ASCII art video output driver that works on a text console.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is a joke.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBtct\fP
-+Color Unicode art video output driver that works on a text console.
-+Depends on support of true color by modern terminals to display the images
-+at full color range. On Windows it requires an ansi terminal such as mintty.
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-vo\-tct\-algo=<algo>\fP
-+Select how to write the pixels to the terminal.
-+.INDENT 7.0
-+.TP
-+.B half\-blocks
-+Uses unicode LOWER HALF BLOCK character to achieve higher vertical
-+resolution. (Default.)
-+.TP
-+.B plain
-+Uses spaces. Causes vertical resolution to drop twofolds, but in
-+theory works in more places.
-+.UNINDENT
-+.TP
-+.B \fB\-\-vo\-tct\-width=<width>\fP \fB\-\-vo\-tct\-height=<height>\fP
-+Assume the terminal has the specified character width and/or height.
-+These default to 80x25 if the terminal size cannot be determined.
-+.TP
-+.B \fB\-\-vo\-tct\-256=<yes|no>\fP (default: no)
-+Use 256 colors \- for terminals which don\(aqt support true color.
-+.UNINDENT
-+.TP
-+.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 \fB\-\-vo\-image\-format=<format>\fP
-+Select the image file format.
-+.INDENT 7.0
-+.TP
-+.B jpg
-+JPEG files, extension .jpg. (Default.)
-+.TP
-+.B jpeg
-+JPEG files, extension .jpeg.
-+.TP
-+.B png
-+PNG files.
-+.UNINDENT
-+.TP
-+.B \fB\-\-vo\-image\-png\-compression=<0\-9>\fP
-+PNG compression factor (speed vs. file size tradeoff) (default: 7)
-+.TP
-+.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 \fB\-\-vo\-image\-jpeg\-quality=<0\-100>\fP
-+JPEG quality factor (default: 90)
-+.TP
-+.B \fB\-\-vo\-image\-jpeg\-optimize=<0\-100>\fP
-+JPEG optimization factor (default: 100)
-+.TP
-+.B \fB\-\-vo\-image\-outdir=<dirname>\fP
-+Specify the directory to save the image files to (default: \fB\&./\fP).
-+.UNINDENT
-+.TP
-+.B \fBwayland\fP (Wayland only)
-+Wayland shared memory video output as fallback for \fBopengl\fP\&.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This driver is for compatibility with systems that don\(aqt provide
-+working OpenGL drivers.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The following global options are supported by this video output:
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-vo\-wayland\-alpha\fP
-+Use a buffer format that supports videos and images with alpha
-+information
-+.TP
-+.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 \fB\-\-vo\-wayland\-triple\-buffering\fP
-+Use 3 buffers instead of 2. This can lead to more fluid playback, but
-+uses more memory.
-+.UNINDENT
-+.TP
-+.B \fBopengl\-cb\fP
-+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 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.23.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.23.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 \fB\-\-rpi\-display=<number>\fP
-+Select the display number on which the video overlay should be shown
-+(default: 0).
-+.TP
-+.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 \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 \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
-+.TP
-+.B \fBdrm\fP (Direct Rendering Manager)
-+Video output driver using Kernel Mode Setting / Direct Rendering Manager.
-+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\fP backend for \fBopengl\fP VO).
-+.sp
-+The following global options are supported by this video output:
-+.INDENT 7.0
-+.TP
-+.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 \fB\-\-drm\-mode=<number>\fP
-+Mode ID to use (resolution, bit depth and frame rate).
-+(default: 0)
-+.UNINDENT
-+.UNINDENT
-+.SH AUDIO FILTERS
-+.sp
-+Audio filters allow you to modify the audio stream and its properties. The
-+syntax is:
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-af=...\fP
-+Setup a chain of audio filters. See \fB\-\-vf\fP for the syntax.
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+To get a full list of available audio filters, see \fB\-\-af=help\fP\&.
-+.sp
-+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
-+wrapper, which gives you access to most of libavfilter\(aqs filters. This
-+includes all filters that have been ported from MPlayer to libavfilter.
-+.sp
-+The \fB\-\-vf\fP description describes how libavfilter can be used and how to
-+workaround deprecated mpv filters.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+See \fB\-\-vf\fP group of options for info on how \fB\-\-af\-defaults\fP, \fB\-\-af\-add\fP,
-+\fB\-\-af\-pre\fP, \fB\-\-af\-del\fP, \fB\-\-af\-clr\fP, and possibly others work.
-+.sp
-+Available filters are:
-+.INDENT 0.0
-+.TP
-+.B \fBlavrresample[=option1:option2:...]\fP
-+This filter uses libavresample (or libswresample, depending on the build)
-+to change sample rate, sample format, or channel layout of the audio stream.
-+This filter is automatically enabled if the audio output does not support
-+the audio configuration of the file being played.
-+.sp
-+It supports only the following sample formats: u8, s16, s32, float.
-+.INDENT 7.0
-+.TP
-+.B \fBfilter\-size=<length>\fP
-+Length of the filter with respect to the lower sampling rate. (default:
-+16)
-+.TP
-+.B \fBphase\-shift=<count>\fP
-+Log2 of the number of polyphase entries. (..., 10\->1024, 11\->2048,
-+12\->4096, ...) (default: 10\->1024)
-+.TP
-+.B \fBcutoff=<cutoff>\fP
-+Cutoff frequency (0.0\-1.0), default set depending upon filter length.
-+.TP
-+.B \fBlinear\fP
-+If set then filters will be linearly interpolated between polyphase
-+entries. (default: no)
-+.TP
-+.B \fBno\-detach\fP
-+Do not detach if input and output audio format/rate/channels match.
-+(If you just want to set defaults for this filter that will be used
-+even by automatically inserted lavrresample instances, you should
-+prefer setting them with \fB\-\-af\-defaults=lavrresample:...\fP\&.)
-+.TP
-+.B \fBnormalize=<yes|no|auto>\fP
-+Whether to normalize when remixing channel layouts (default: auto).
-+\fBauto\fP uses the value set by \fB\-\-audio\-normalize\-downmix\fP\&.
-+.TP
-+.B \fBo=<string>\fP
-+Set AVOptions on the SwrContext or AVAudioResampleContext. These should
-+be documented by FFmpeg or Libav.
-+.UNINDENT
-+.TP
-+.B \fBlavcac3enc[=options]\fP
-+Encode multi\-channel audio to AC\-3 at runtime using libavcodec. Supports
-+16\-bit native\-endian input format, maximum 6 channels. The output is
-+big\-endian when outputting a raw AC\-3 stream, native\-endian when
-+outputting to S/PDIF. If the input sample rate is not 48 kHz, 44.1 kHz or
-+32 kHz, it will be resampled to 48 kHz.
-+.INDENT 7.0
-+.TP
-+.B \fBtospdif=<yes|no>\fP
-+Output raw AC\-3 stream if \fBno\fP, output to S/PDIF for
-+pass\-through if \fByes\fP (default).
-+.TP
-+.B \fBbitrate=<rate>\fP
-+The bitrate use for the AC\-3 stream. Set it to 384 to get 384 kbps.
-+.sp
-+The default is 640. Some receivers might not be able to handle this.
-+.sp
-+Valid values: 32, 40, 48, 56, 64, 80, 96, 112, 128,
-+160, 192, 224, 256, 320, 384, 448, 512, 576, 640.
-+.sp
-+The special value \fBauto\fP selects a default bitrate based on the
-+input channel number:
-+.INDENT 7.0
-+.TP
-+.B 1ch
-+96
-+.TP
-+.B 2ch
-+192
-+.TP
-+.B 3ch
-+224
-+.TP
-+.B 4ch
-+384
-+.TP
-+.B 5ch
-+448
-+.TP
-+.B 6ch
-+448
-+.UNINDENT
-+.TP
-+.B \fBminch=<n>\fP
-+If the input channel number is less than \fB<minch>\fP, the filter will
-+detach itself (default: 3).
-+.TP
-+.B \fBencoder=<name>\fP
-+Select the libavcodec encoder used. Currently, this should be an AC\-3
-+encoder, and using another codec will fail horribly.
-+.UNINDENT
-+.TP
-+.B \fBequalizer=g1:g2:g3:...:g10\fP
-+10 octave band graphic equalizer, implemented using 10 IIR band\-pass
-+filters. This means that it works regardless of what type of audio is
-+being played back. The center frequencies for the 10 bands are:
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+No.
-+T} T{
-+frequency
-+T}
-+_
-+T{
-+0
-+T} T{
-+31.25 Hz
-+T}
-+_
-+T{
-+1
-+T} T{
-+62.50 Hz
-+T}
-+_
-+T{
-+2
-+T} T{
-+125.00 Hz
-+T}
-+_
-+T{
-+3
-+T} T{
-+250.00 Hz
-+T}
-+_
-+T{
-+4
-+T} T{
-+500.00 Hz
-+T}
-+_
-+T{
-+5
-+T} T{
-+1.00 kHz
-+T}
-+_
-+T{
-+6
-+T} T{
-+2.00 kHz
-+T}
-+_
-+T{
-+7
-+T} T{
-+4.00 kHz
-+T}
-+_
-+T{
-+8
-+T} T{
-+8.00 kHz
-+T}
-+_
-+T{
-+9
-+T} T{
-+16.00 kHz
-+T}
-+_
-+.TE
-+.sp
-+If the sample rate of the sound being played is lower than the center
-+frequency for a frequency band, then that band will be disabled. A known
-+bug with this filter is that the characteristics for the uppermost band
-+are not completely symmetric if the sample rate is close to the center
-+frequency of that band. This problem can be worked around by upsampling
-+the sound using a resampling filter before it reaches this filter.
-+.INDENT 7.0
-+.TP
-+.B \fB<g1>:<g2>:<g3>:...:<g10>\fP
-+floating point numbers representing the gain in dB for each frequency
-+band (\-12\-12)
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-af=equalizer=11:11:10:5:0:\-12:0:5:12:12 media.avi\fP
-+Would amplify the sound in the upper and lower frequency region
-+while canceling it almost completely around 1 kHz.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBchannels=nch[:routes]\fP
-+Can be used for adding, removing, routing and copying audio channels. If
-+only \fB<nch>\fP is given, the default routing is used. It works as follows:
-+If the number of output channels is greater than the number of input
-+channels, empty channels are inserted (except when mixing from mono to
-+stereo; then the mono channel is duplicated). If the number of output
-+channels is less than the number of input channels, the exceeding
-+channels are truncated.
-+.INDENT 7.0
-+.TP
-+.B \fB<nch>\fP
-+number of output channels (1\-8)
-+.TP
-+.B \fB<routes>\fP
-+List of \fB,\fP separated routes, in the form \fBfrom1\-to1,from2\-to2,...\fP\&.
-+Each pair defines where to route each channel. There can be at most
-+8 routes. Without this argument, the default routing is used. Since
-+\fB,\fP is also used to separate filters, you must quote this argument
-+with \fB[...]\fP or similar.
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-af=channels=4:[0\-1,1\-0,2\-2,3\-3] media.avi\fP
-+Would change the number of channels to 4 and set up 4 routes that
-+swap channel 0 and channel 1 and leave channel 2 and 3 intact.
-+Observe that if media containing two channels were played back,
-+channels 2 and 3 would contain silence but 0 and 1 would still be
-+swapped.
-+.TP
-+.B \fBmpv \-\-af=channels=6:[0\-0,0\-1,0\-2,0\-3] media.avi\fP
-+Would change the number of channels to 6 and set up 4 routes that
-+copy channel 0 to channels 0 to 3. Channel 4 and 5 will contain
-+silence.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+You should probably not use this filter. If you want to change the
-+output channel layout, try the \fBformat\fP filter, which can make mpv
-+automatically up\- and downmix standard channel layouts.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBformat=format:srate:channels:out\-format:out\-srate:out\-channels\fP
-+Does not do any format conversion itself. Rather, it may cause the
-+filter system to insert necessary conversion filters before or after this
-+filter if needed. It is primarily useful for controlling the audio format
-+going into other filters. To specify the format for audio output, see
-+\fB\-\-audio\-format\fP, \fB\-\-audio\-samplerate\fP, and \fB\-\-audio\-channels\fP\&. This
-+filter is able to force a particular format, whereas \fB\-\-audio\-*\fP
-+may be overridden by the ao based on output compatibility.
-+.sp
-+All parameters are optional. The first 3 parameters restrict what the filter
-+accepts as input. They will therefore cause conversion filters to be
-+inserted before this one. The \fBout\-\fP parameters tell the filters or audio
-+outputs following this filter how to interpret the data without actually
-+doing a conversion. Setting these will probably just break things unless you
-+really know you want this for some reason, such as testing or dealing with
-+broken media.
-+.INDENT 7.0
-+.TP
-+.B \fB<format>\fP
-+Force conversion to this format. Use \fB\-\-af=format=format=help\fP to get
-+a list of valid formats.
-+.TP
-+.B \fB<srate>\fP
-+Force conversion to a specific sample rate. The rate is an integer,
-+48000 for example.
-+.TP
-+.B \fB<channels>\fP
-+Force mixing to a specific channel layout. See \fB\-\-audio\-channels\fP option
-+for possible values.
-+.UNINDENT
-+.sp
-+\fB<out\-format>\fP
-+.sp
-+\fB<out\-srate>\fP
-+.sp
-+\fB<out\-channels>\fP
-+.sp
-+\fINOTE\fP: this filter used to be named \fBforce\fP\&. The old \fBformat\fP filter
-+used to do conversion itself, unlike this one which lets the filter system
-+handle the conversion.
-+.TP
-+.B \fBvolume[=<volumedb>[:...]]\fP
-+Implements software volume control. Use this filter with caution since it
-+can reduce the signal to noise ratio of the sound. In most cases it is
-+best to use the \fIMaster\fP volume control of your sound card or the volume
-+knob on your amplifier.
-+.sp
-+\fIWARNING\fP: This filter is deprecated. Use the top\-level options like
-+\fB\-\-volume\fP and \fB\-\-replaygain...\fP instead.
-+.sp
-+\fINOTE\fP: This filter is not reentrant and can therefore only be enabled
-+once for every audio stream.
-+.INDENT 7.0
-+.TP
-+.B \fB<volumedb>\fP
-+Sets the desired gain in dB for all channels in the stream from \-200 dB
-+to +60 dB, where \-200 dB mutes the sound completely and +60 dB equals a
-+gain of 1000 (default: 0).
-+.TP
-+.B \fBreplaygain\-track\fP
-+Adjust volume gain according to the track\-gain replaygain value stored
-+in the file metadata.
-+.TP
-+.B \fBreplaygain\-album\fP
-+Like replaygain\-track, but using the album\-gain value instead.
-+.TP
-+.B \fBreplaygain\-preamp\fP
-+Pre\-amplification gain in dB to apply to the selected replaygain gain
-+(default: 0).
-+.TP
-+.B \fBreplaygain\-clip=yes|no\fP
-+Prevent clipping caused by replaygain by automatically lowering the
-+gain (default). Use \fBreplaygain\-clip=no\fP to disable this.
-+.TP
-+.B \fBreplaygain\-fallback\fP
-+Gain in dB to apply if the file has no replay gain tags. This option
-+is always applied if the replaygain logic is somehow inactive. If this
-+is applied, no other replaygain options are applied.
-+.TP
-+.B \fBsoftclip\fP
-+Turns soft clipping on. Soft\-clipping can make the
-+sound more smooth if very high volume levels are used. Enable this
-+option if the dynamic range of the loudspeakers is very low.
-+.sp
-+\fIWARNING\fP: This feature creates distortion and should be considered a
-+last resort.
-+.TP
-+.B \fBs16\fP
-+Force S16 sample format if set. Lower quality, but might be faster
-+in some situations.
-+.TP
-+.B \fBdetach\fP
-+Remove the filter if the volume is not changed at audio filter config
-+time. Useful with replaygain: if the current file has no replaygain
-+tags, then the filter will be removed if this option is enabled.
-+(If \fB\-\-softvol=yes\fP is used and the player volume controls are used
-+during playback, a different volume filter will be inserted.)
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-af=volume=10.1 media.avi\fP
-+Would amplify the sound by 10.1 dB and hard\-clip if the sound level
-+is too high.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBpan=n:[<matrix>]\fP
-+Mixes channels arbitrarily. Basically a combination of the volume and the
-+channels filter that can be used to down\-mix many channels to only a few,
-+e.g. stereo to mono, or vary the "width" of the center speaker in a
-+surround sound system. This filter is hard to use, and will require some
-+tinkering before the desired result is obtained. The number of options for
-+this filter depends on the number of output channels. An example how to
-+downmix a six\-channel file to two channels with this filter can be found
-+in the examples section near the end.
-+.INDENT 7.0
-+.TP
-+.B \fB<n>\fP
-+Number of output channels (1\-8).
-+.TP
-+.B \fB<matrix>\fP
-+A list of values \fB[L00,L01,L02,...,L10,L11,L12,...,Ln0,Ln1,Ln2,...]\fP,
-+where each element \fBLij\fP means how much of input channel i is mixed
-+into output channel j (range 0\-1). So in principle you first have n
-+numbers saying what to do with the first input channel, then n numbers
-+that act on the second input channel etc. If you do not specify any
-+numbers for some input channels, 0 is assumed.
-+Note that the values are separated by \fB,\fP, which is already used
-+by the option parser to separate filters. This is why you must quote
-+the value list with \fB[...]\fP or similar.
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-af=pan=1:[0.5,0.5] media.avi\fP
-+Would downmix from stereo to mono.
-+.TP
-+.B \fBmpv \-\-af=pan=3:[1,0,0.5,0,1,0.5] media.avi\fP
-+Would give 3 channel output leaving channels 0 and 1 intact, and mix
-+channels 0 and 1 into output channel 2 (which could be sent to a
-+subwoofer for example).
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+If you just want to force remixing to a certain output channel layout,
-+it is easier to use the \fBformat\fP filter. For example,
-+\fBmpv \(aq\-\-af=format=channels=5.1\(aq \(aq\-\-audio\-channels=5.1\(aq\fP would always force
-+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 \fBscaletempo[=option1:option2:...]\fP
-+Scales audio tempo without altering pitch, optionally synced to playback
-+speed (default).
-+.sp
-+This works by playing \(aqstride\(aq ms of audio at normal speed then consuming
-+\(aqstride*scale\(aq ms of input audio. It pieces the strides together by
-+blending \(aqoverlap\(aq% of stride with audio following the previous stride. It
-+optionally performs a short statistical analysis on the next \(aqsearch\(aq ms
-+of audio to determine the best overlap position.
-+.INDENT 7.0
-+.TP
-+.B \fBscale=<amount>\fP
-+Nominal amount to scale tempo. Scales this amount in addition to
-+speed. (default: 1.0)
-+.TP
-+.B \fBstride=<amount>\fP
-+Length in milliseconds to output each stride. Too high of a value will
-+cause noticeable skips at high scale amounts and an echo at low scale
-+amounts. Very low values will alter pitch. Increasing improves
-+performance. (default: 60)
-+.TP
-+.B \fBoverlap=<percent>\fP
-+Percentage of stride to overlap. Decreasing improves performance.
-+(default: .20)
-+.TP
-+.B \fBsearch=<amount>\fP
-+Length in milliseconds to search for best overlap position. Decreasing
-+improves performance greatly. On slow systems, you will probably want
-+to set this very low. (default: 14)
-+.TP
-+.B \fBspeed=<tempo|pitch|both|none>\fP
-+Set response to speed change.
-+.INDENT 7.0
-+.TP
-+.B tempo
-+Scale tempo in sync with speed (default).
-+.TP
-+.B pitch
-+Reverses effect of filter. Scales pitch without altering tempo.
-+Add this to your \fBinput.conf\fP to step by musical semi\-tones:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+[ multiply speed 0.9438743126816935
-+] multiply speed 1.059463094352953
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Loses sync with video.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B both
-+Scale both tempo and pitch.
-+.TP
-+.B none
-+Ignore speed changes.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fBmpv \-\-af=scaletempo \-\-speed=1.2 media.ogg\fP
-+Would play media at 1.2x normal speed, with audio at normal
-+pitch. Changing playback speed would change audio tempo to match.
-+.TP
-+.B \fBmpv \-\-af=scaletempo=scale=1.2:speed=none \-\-speed=1.2 media.ogg\fP
-+Would play media at 1.2x normal speed, with audio at normal
-+pitch, but changing playback speed would have no effect on audio
-+tempo.
-+.TP
-+.B \fBmpv \-\-af=scaletempo=stride=30:overlap=.50:search=10 media.ogg\fP
-+Would tweak the quality and performance parameters.
-+.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
-+1.2x.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.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. 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 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
-+to learn what each option does:
-+\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.
-+.INDENT 7.0
-+.TP
-+.B \fB<graph>\fP
-+Libavfilter graph. See \fBlavfi\fP video filter for details \- the graph
-+syntax is the same.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Don\(aqt forget to quote libavfilter graphs as described in the lavfi
-+video filter section.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBo=<string>\fP
-+AVOptions.
-+.UNINDENT
-+.UNINDENT
-+.SH VIDEO FILTERS
-+.sp
-+Video filters allow you to modify the video stream and its properties. The
-+syntax is:
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-vf=<filter1[=parameter1:parameter2:...],filter2,...>\fP
-+Setup a chain of video filters. This consists on the filter name, and an
-+option list of parameters after \fB=\fP\&. The parameters are separated by
-+\fB:\fP (not \fB,\fP, as that starts a new filter entry).
-+.sp
-+Before the filter name, a label can be specified with \fB@name:\fP, where
-+name is an arbitrary user\-given name, which identifies the filter. This
-+is only needed if you want to toggle the filter at runtime.
-+.sp
-+A \fB!\fP before the filter name means the filter is enabled by default. It
-+will be skipped on filter creation. This is also useful for runtime filter
-+toggling.
-+.sp
-+See the \fBvf\fP command (and \fBtoggle\fP sub\-command) for further explanations
-+and examples.
-+.sp
-+The general filter entry syntax is:
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB["@"<label\-name>":"] ["!"] <filter\-name> [ "=" <filter\-parameter\-list> ]\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+or for the special "toggle" syntax (see \fBvf\fP command):
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB"@"<label\-name>\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+and the \fBfilter\-parameter\-list\fP:
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB<filter\-parameter> | <filter\-parameter> "," <filter\-parameter\-list>\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+and \fBfilter\-parameter\fP:
-+.INDENT 7.0
-+.INDENT 3.5
-+\fB( <param\-name> "=" <param\-value> ) | <param\-value>\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBparam\-value\fP can further be quoted in \fB[\fP / \fB]\fP in case the value
-+contains characters like \fB,\fP or \fB=\fP\&. This is used in particular with
-+the \fBlavfi\fP filter, which uses a very similar syntax as mpv (MPlayer
-+historically) to specify filters and their parameters.
-+.UNINDENT
-+.sp
-+You can also set defaults for each filter. The defaults are applied before the
-+normal filter parameters.
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-vf\-defaults=<filter1[=parameter1:parameter2:...],filter2,...>\fP
-+Set defaults for each filter.
-+.UNINDENT
-+.sp
-+\fBNOTE:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+To get a full list of available video filters, see \fB\-\-vf=help\fP and
-+\fI\%http://ffmpeg.org/ffmpeg\-filters.html\fP .
-+.sp
-+Also, keep in mind that most actual filters are available via the \fBlavfi\fP
-+wrapper, which gives you access to most of libavfilter\(aqs filters. This
-+includes all filters that have been ported from MPlayer to libavfilter.
-+.sp
-+Most builtin filters are deprecated in some ways, unless they\(aqre only available
-+in mpv (such as filters which deal with mpv specifics, or which are
-+implemented in mpv only).
-+.sp
-+If a filter is not builtin, the \fBlavfi\-bridge\fP will be automatically
-+tried. This bridge does not support help output, and does not verify
-+parameters before the filter is actually used. Although the mpv syntax
-+is rather similar to libavfilter\(aqs, it\(aqs not the same. (Which means not
-+everything accepted by vf_lavfi\(aqs \fBgraph\fP option will be accepted by
-+\fB\-\-vf\fP\&.)
-+.sp
-+You can also prefix the filter name with \fBlavfi\-\fP to force the wrapper.
-+This is helpful if the filter name collides with a deprecated mpv builtin
-+filter. For example \fB\-\-vf=lavfi\-scale=args\fP would use libavfilter\(aqs
-+\fBscale\fP filter over mpv\(aqs deprecated builtin one.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Video filters are managed in lists. There are a few commands to manage the
-+filter list.
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-vf\-add=<filter1[,filter2,...]>\fP
-+Appends the filters given as arguments to the filter list.
-+.TP
-+.B \fB\-\-vf\-pre=<filter1[,filter2,...]>\fP
-+Prepends the filters given as arguments to the filter list.
-+.TP
-+.B \fB\-\-vf\-del=<index1[,index2,...]>\fP
-+Deletes the filters at the given indexes. Index numbers start at 0,
-+negative numbers address the end of the list (\-1 is the last).
-+.TP
-+.B \fB\-\-vf\-clr\fP
-+Completely empties the filter list.
-+.UNINDENT
-+.sp
-+With filters that support it, you can access parameters by their name.
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-vf=<filter>=help\fP
-+Prints the parameter names and parameter value ranges for a particular
-+filter.
-+.TP
-+.B \fB\-\-vf=<filter=named_parameter1=value1[:named_parameter2=value2:...]>\fP
-+Sets a named parameter to the given value. Use on and off or yes and no to
-+set flag parameters.
-+.UNINDENT
-+.sp
-+Available mpv\-only filters are:
-+.INDENT 0.0
-+.TP
-+.B \fBcrop[=w:h:x:y]\fP
-+Crops the given part of the image and discards the rest. Useful to remove
-+black bands from widescreen videos.
-+.INDENT 7.0
-+.TP
-+.B \fB<w>,<h>\fP
-+Cropped width and height, defaults to original width and height.
-+.TP
-+.B \fB<x>,<y>\fP
-+Position of the cropped picture, defaults to center.
-+.UNINDENT
-+.TP
-+.B \fBexpand[=w:h:x:y:aspect:round]\fP
-+Expands (not scales) video resolution to the given value and places the
-+unscaled original at coordinates x, y.
-+.INDENT 7.0
-+.TP
-+.B \fB<w>,<h>\fP
-+Expanded width,height (default: original width,height). Negative
-+values for w and h are treated as offsets to the original size.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBexpand=0:\-50:0:0\fP
-+Adds a 50 pixel border to the bottom of the picture.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<x>,<y>\fP
-+position of original image on the expanded image (default: center)
-+.TP
-+.B \fB<aspect>\fP
-+Expands to fit an aspect instead of a resolution (default: 0).
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBexpand=800::::4/3\fP
-+Expands to 800x600, unless the source is higher resolution, in
-+which case it expands to fill a 4/3 aspect.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<round>\fP
-+Rounds up to make both width and height divisible by <r> (default: 1).
-+.UNINDENT
-+.TP
-+.B \fBflip\fP
-+Flips the image upside down.
-+.TP
-+.B \fBmirror\fP
-+Mirrors the image on the Y axis.
-+.TP
-+.B \fBrotate[=0|90|180|270]\fP
-+Rotates the image by a multiple of 90 degrees clock\-wise.
-+.TP
-+.B \fBscale[=w:h:param:param2:chr\-drop:noup:arnd\fP
-+Scales the image with the software scaler (slow) and performs a YUV<\->RGB
-+color space conversion (see also \fB\-\-sws\fP).
-+.sp
-+All parameters are optional.
-+.INDENT 7.0
-+.TP
-+.B \fB<w>:<h>\fP
-+scaled width/height (default: original width/height)
-+.INDENT 7.0
-+.TP
-+.B 0
-+scaled d_width/d_height
-+.TP
-+.B \-1
-+original width/height
-+.TP
-+.B \-2
-+Calculate w/h using the other dimension and the prescaled
-+aspect ratio.
-+.TP
-+.B \-3
-+Calculate w/h using the other dimension and the original
-+aspect ratio.
-+.TP
-+.B \-(n+8)
-+Like \-n above, but rounding the dimension to the closest
-+multiple of 16.
-+.UNINDENT
-+.TP
-+.B \fB<param>[:<param2>]\fP (see also \fB\-\-sws\fP)
-+Set some scaling parameters depending on the type of scaler selected
-+with \fB\-\-sws\fP:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+\-\-sws=2 (bicubic): B (blurring) and C (ringing)
-+ 0.00:0.60 default
-+ 0.00:0.75 VirtualDub\(aqs "precise bicubic"
-+ 0.00:0.50 Catmull\-Rom spline
-+ 0.33:0.33 Mitchell\-Netravali spline
-+ 1.00:0.00 cubic B\-spline
-+
-+\-\-sws=7 (Gaussian): sharpness (0 (soft) \- 100 (sharp))
-+
-+\-\-sws=9 (Lanczos): filter length (1\-10)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<chr\-drop>\fP
-+chroma skipping
-+.INDENT 7.0
-+.TP
-+.B 0
-+Use all available input lines for chroma (default).
-+.TP
-+.B 1
-+Use only every 2. input line for chroma.
-+.TP
-+.B 2
-+Use only every 4. input line for chroma.
-+.TP
-+.B 3
-+Use only every 8. input line for chroma.
-+.UNINDENT
-+.TP
-+.B \fB<noup>\fP
-+Disallow upscaling past the original dimensions.
-+.INDENT 7.0
-+.TP
-+.B 0
-+Allow upscaling (default).
-+.TP
-+.B 1
-+Disallow upscaling if one dimension exceeds its original value.
-+.TP
-+.B 2
-+Disallow upscaling if both dimensions exceed their original values.
-+.UNINDENT
-+.TP
-+.B \fB<arnd>\fP
-+Accurate rounding for the vertical scaler, which may be faster or
-+slower than the default rounding.
-+.INDENT 7.0
-+.TP
-+.B no
-+Disable accurate rounding (default).
-+.TP
-+.B yes
-+Enable accurate rounding.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBdsize[=w:h:aspect\-method:r:aspect]\fP
-+Changes the intended display aspect at an arbitrary point in the
-+filter chain. Aspect can be given as a fraction (4/3) or floating point
-+number (1.33). Note that this filter does \fInot\fP do any scaling itself; it
-+just affects what later scalers (software or hardware) will do when
-+auto\-scaling to the correct aspect.
-+.INDENT 7.0
-+.TP
-+.B \fB<w>,<h>\fP
-+New aspect ratio given by a display width and height. Unlike older mpv
-+versions or MPlayer, this does not set the display size.
-+.sp
-+Can also be these special values:
-+.INDENT 7.0
-+.TP
-+.B 0
-+original display width and height
-+.TP
-+.B \-1
-+original video width and height (default)
-+.TP
-+.B \-2
-+Calculate w/h using the other dimension and the original display
-+aspect ratio.
-+.TP
-+.B \-3
-+Calculate w/h using the other dimension and the original video
-+aspect ratio.
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBdsize=800:\-2\fP
-+Specifies a display resolution of 800x600 for a 4/3 aspect
-+video, or 800x450 for a 16/9 aspect video.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<aspect\-method>\fP
-+Modifies width and height according to original aspect ratios.
-+.INDENT 7.0
-+.TP
-+.B \-1
-+Ignore original aspect ratio (default).
-+.TP
-+.B 0
-+Keep display aspect ratio by using \fB<w>\fP and \fB<h>\fP as maximum
-+resolution.
-+.TP
-+.B 1
-+Keep display aspect ratio by using \fB<w>\fP and \fB<h>\fP as minimum
-+resolution.
-+.TP
-+.B 2
-+Keep video aspect ratio by using \fB<w>\fP and \fB<h>\fP as maximum
-+resolution.
-+.TP
-+.B 3
-+Keep video aspect ratio by using \fB<w>\fP and \fB<h>\fP as minimum
-+resolution.
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fBdsize=800:600:0\fP
-+Specifies a display resolution of at most 800x600, or smaller,
-+in order to keep aspect.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<r>\fP
-+Rounds up to make both width and height divisible by \fB<r>\fP
-+(default: 1).
-+.TP
-+.B \fB<aspect>\fP
-+Force an aspect ratio.
-+.UNINDENT
-+.TP
-+.B \fBformat=fmt=<value>:colormatrix=<value>:...\fP
-+Restricts the color space for the next filter without doing any conversion.
-+Use together with the scale filter for a real conversion.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+For a list of available formats, see \fBformat=fmt=help\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.TP
-+.B \fB<fmt>\fP
-+Format name, e.g. rgb15, bgr24, 420p, etc. (default: don\(aqt change).
-+.TP
-+.B \fB<outfmt>\fP
-+Format name that should be substituted for the output. If they do not
-+have the same bytes per pixel and chroma subsampling, it will fail.
-+.TP
-+.B \fB<colormatrix>\fP
-+Controls the YUV to RGB color space conversion when playing video. There
-+are various standards. Normally, BT.601 should be used for SD video, and
-+BT.709 for HD video. (This is done by default.) Using incorrect color space
-+results in slightly under or over saturated and shifted colors.
-+.sp
-+These options are not always supported. Different video outputs provide
-+varying degrees of support. The \fBopengl\fP and \fBvdpau\fP video output
-+drivers usually offer full support. The \fBxv\fP output can set the color
-+space if the system video driver supports it, but not input and output
-+levels. The \fBscale\fP video filter can configure color space and input
-+levels, but only if the output format is RGB (if the video output driver
-+supports RGB output, you can force this with \fB\-vf scale,format=rgba\fP).
-+.sp
-+If this option is set to \fBauto\fP (which is the default), the video\(aqs
-+color space flag will be used. If that flag is unset, the color space
-+will be selected automatically. This is done using a simple heuristic that
-+attempts to distinguish SD and HD video. If the video is larger than
-+1279x576 pixels, BT.709 (HD) will be used; otherwise BT.601 (SD) is
-+selected.
-+.sp
-+Available color spaces are:
-+.INDENT 7.0
-+.TP
-+.B auto
-+automatic selection (default)
-+.TP
-+.B bt.601
-+ITU\-R BT.601 (SD)
-+.TP
-+.B bt.709
-+ITU\-R BT.709 (HD)
-+.TP
-+.B bt.2020\-ncl
-+ITU\-R BT.2020 non\-constant luminance system
-+.TP
-+.B bt.2020\-cl
-+ITU\-R BT.2020 constant luminance system
-+.TP
-+.B smpte\-240m
-+SMPTE\-240M
-+.UNINDENT
-+.TP
-+.B \fB<colorlevels>\fP
-+YUV color levels used with YUV to RGB conversion. This option is only
-+necessary when playing broken files which do not follow standard color
-+levels or which are flagged wrong. If the video does not specify its
-+color range, it is assumed to be limited range.
-+.sp
-+The same limitations as with \fB<colormatrix>\fP apply.
-+.sp
-+Available color ranges are:
-+.INDENT 7.0
-+.TP
-+.B auto
-+automatic selection (normally limited range) (default)
-+.TP
-+.B limited
-+limited range (16\-235 for luma, 16\-240 for chroma)
-+.TP
-+.B full
-+full range (0\-255 for both luma and chroma)
-+.UNINDENT
-+.TP
-+.B \fB<primaries>\fP
-+RGB primaries the source file was encoded with. Normally this should be set
-+in the file header, but when playing broken or mistagged files this can be
-+used to override the setting.
-+.sp
-+This option only affects video output drivers that perform color
-+management, for example \fBopengl\fP with the \fBtarget\-prim\fP or
-+\fBicc\-profile\fP suboptions set.
-+.sp
-+If this option is set to \fBauto\fP (which is the default), the video\(aqs
-+primaries flag will be used. If that flag is unset, the color space will
-+be selected automatically, using the following heuristics: If the
-+\fB<colormatrix>\fP is set or determined as BT.2020 or BT.709, the
-+corresponding primaries are used. Otherwise, if the video height is
-+exactly 576 (PAL), BT.601\-625 is used. If it\(aqs exactly 480 or 486 (NTSC),
-+BT.601\-525 is used. If the video resolution is anything else, BT.709 is
-+used.
-+.sp
-+Available primaries are:
-+.INDENT 7.0
-+.TP
-+.B auto
-+automatic selection (default)
-+.TP
-+.B bt.601\-525
-+ITU\-R BT.601 (SD) 525\-line systems (NTSC, SMPTE\-C)
-+.TP
-+.B bt.601\-625
-+ITU\-R BT.601 (SD) 625\-line systems (PAL, SECAM)
-+.TP
-+.B bt.709
-+ITU\-R BT.709 (HD) (same primaries as sRGB)
-+.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
-+.TP
-+.B dci\-p3
-+DCI\-P3 (Digital Cinema)
-+.TP
-+.B v\-gamut
-+Panasonic V\-Gamut primaries
-+.UNINDENT
-+.TP
-+.B \fB<gamma>\fP
-+Gamma function the source file was encoded with. Normally this should be set
-+in the file header, but when playing broken or mistagged files this can be
-+used to override the setting.
-+.sp
-+This option only affects video output drivers that perform color management.
-+.sp
-+If this option is set to \fBauto\fP (which is the default), the gamma will
-+be set to BT.1886 for YCbCr content, sRGB for RGB content and Linear for
-+XYZ content.
-+.sp
-+Available gamma functions are:
-+.INDENT 7.0
-+.TP
-+.B auto
-+automatic selection (default)
-+.TP
-+.B bt.1886
-+ITU\-R BT.1886 (EOTF corresponding to BT.601/BT.709/BT.2020)
-+.TP
-+.B srgb
-+IEC 61966\-2\-4 (sRGB)
-+.TP
-+.B linear
-+Linear light
-+.TP
-+.B gamma1.8
-+Pure power curve (gamma 1.8)
-+.TP
-+.B gamma2.2
-+Pure power curve (gamma 2.2)
-+.TP
-+.B gamma2.8
-+Pure power curve (gamma 2.8)
-+.TP
-+.B prophoto
-+ProPhoto RGB (ROMM) curve
-+.TP
-+.B pq
-+ITU\-R BT.2100 PQ (Perceptual quantizer) curve
-+.TP
-+.B hlg
-+ITU\-R BT.2100 HLG (Hybrid Log\-gamma) curve
-+.TP
-+.B v\-log
-+Panasonic V\-Log transfer curve
-+.TP
-+.B s\-log1
-+Sony S\-Log1 transfer curve
-+.TP
-+.B s\-log2
-+Sony S\-Log2 transfer curve
-+.UNINDENT
-+.TP
-+.B \fB<sig\-peak>\fP
-+Reference peak illumination for the video file, relative to the
-+signal\(aqs reference white level. This is mostly interesting for HDR, but
-+it can also be used tone map SDR content to simulate a different
-+exposure. Normally inferred from tags such as MaxCLL or mastering
-+metadata.
-+.sp
-+The default of 0.0 will default to the source\(aqs nominal peak luminance.
-+.TP
-+.B \fB<light>\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Light type of the scene. This is mostly correctly inferred based on the
-+gamma function, but it can be useful to override this when viewing raw
-+camera footage (e.g. V\-Log), which is normally scene\-referred instead
-+of display\-referred.
-+.sp
-+Available light types are:
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.TP
-+.B auto
-+Automatic selection (default)
-+.TP
-+.B display
-+Display\-referred light (most content)
-+.TP
-+.B hlg
-+Scene\-referred using the HLG OOTF (e.g. HLG content)
-+.TP
-+.B 709\-1886
-+Scene\-referred using the BT709+BT1886 interaction
-+.TP
-+.B gamma1.2
-+Scene\-referred using a pure power OOTF (gamma=1.2)
-+.UNINDENT
-+.TP
-+.B \fB<stereo\-in>\fP
-+Set the stereo mode the video is assumed to be encoded in. Takes the
-+same values as the \fB\-\-video\-stereo\-mode\fP option.
-+.TP
-+.B \fB<stereo\-out>\fP
-+Set the stereo mode the video should be displayed as. Takes the
-+same values as the \fB\-\-video\-stereo\-mode\fP option.
-+.TP
-+.B \fB<rotate>\fP
-+Set the rotation the video is assumed to be encoded with in degrees.
-+The special value \fB\-1\fP uses the input format.
-+.TP
-+.B \fB<dw>\fP, \fB<dh>\fP
-+Set the display size. Note that setting the display size such that
-+the video is scaled in both directions instead of just changing the
-+aspect ratio is an implementation detail, and might change later.
-+.TP
-+.B \fB<dar>\fP
-+Set the display aspect ratio of the video frame. This is a float,
-+but values such as \fB[16:9]\fP can be passed too (\fB[...]\fP for quoting
-+to prevent the option parser from interpreting the \fB:\fP character).
-+.TP
-+.B \fB<spherical\-type>\fP
-+Type of the spherical projection:
-+.INDENT 7.0
-+.TP
-+.B auto
-+As indicated by the file (default)
-+.TP
-+.B none
-+Normal video
-+.TP
-+.B equirect
-+Equirectangular
-+.TP
-+.B unknown
-+Unknown projection
-+.UNINDENT
-+.TP
-+.B \fB<spherical\-yaw>\fP, \fB<spherical\-pitch>\fP, \fB<spherical\-roll>\fP
-+Reference angle in degree, if spherical video is used.
-+.UNINDENT
-+.TP
-+.B \fBnoformat[=fmt]\fP
-+Restricts the color space for the next filter without doing any conversion.
-+Unlike the format filter, this will allow any color space except the one
-+you specify.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+For a list of available formats, see \fBnoformat=fmt=help\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.TP
-+.B \fB<fmt>\fP
-+Format name, e.g. rgb15, bgr24, 420p, etc. (default: 420p).
-+.UNINDENT
-+.TP
-+.B \fBlavfi=graph[:sws\-flags[:o=opts]]\fP
-+Filter video using FFmpeg\(aqs libavfilter.
-+.INDENT 7.0
-+.TP
-+.B \fB<graph>\fP
-+The libavfilter graph string. The filter must have a single video input
-+pad and a single video output pad.
-+.sp
-+See \fI\%https://ffmpeg.org/ffmpeg\-filters.html\fP for syntax and available
-+filters.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+If you want to use the full filter syntax with this option, you have
-+to quote the filter graph in order to prevent mpv\(aqs syntax and the
-+filter graph syntax from clashing.
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB\-vf lavfi=[gradfun=20:30,vflip]\fP
-+\fBgradfun\fP filter with nonsense parameters, followed by a
-+\fBvflip\fP filter. (This demonstrates how libavfilter takes a
-+graph and not just a single filter.) The filter graph string is
-+quoted with \fB[\fP and \fB]\fP\&. This requires no additional quoting
-+or escaping with some shells (like bash), while others (like
-+zsh) require additional \fB"\fP quotes around the option string.
-+.TP
-+.B \fB\(aq\-\-vf=lavfi="gradfun=20:30,vflip"\(aq\fP
-+Same as before, but uses quoting that should be safe with all
-+shells. The outer \fB\(aq\fP quotes make sure that the shell does not
-+remove the \fB"\fP quotes needed by mpv.
-+.TP
-+.B \fB\(aq\-\-vf=lavfi=graph="gradfun=radius=30:strength=20,vflip"\(aq\fP
-+Same as before, but uses named parameters for everything.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fB<sws\-flags>\fP
-+If libavfilter inserts filters for pixel format conversion, this
-+option gives the flags which should be passed to libswscale. This
-+option is numeric and takes a bit\-wise combination of \fBSWS_\fP flags.
-+.sp
-+See \fBhttp://git.videolan.org/?p=ffmpeg.git;a=blob;f=libswscale/swscale.h\fP\&.
-+.TP
-+.B \fB<o>\fP
-+Set AVFilterGraph options. These should be documented by FFmpeg.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B \fB\(aq\-\-vf=lavfi=yadif:o="threads=2,thread_type=slice"\(aq\fP
-+forces a specific threading configuration.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBpullup[=jl:jr:jt:jb:sb:mp]\fP
-+Pulldown reversal (inverse telecine) filter, capable of handling mixed
-+hard\-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
-+content. The \fBpullup\fP filter makes use of future context in making its
-+decisions. It is stateless in the sense that it does not lock onto a pattern
-+to follow, but it instead looks forward to the following fields in order to
-+identify matches and rebuild progressive frames.
-+.INDENT 7.0
-+.TP
-+.B \fBjl\fP, \fBjr\fP, \fBjt\fP, and \fBjb\fP
-+These options set the amount of "junk" to ignore at the left, right,
-+top, and bottom of the image, respectively. Left/right are in units of
-+8 pixels, while top/bottom are in units of 2 lines. The default is 8
-+pixels on each side.
-+.TP
-+.B \fBsb\fP (strict breaks)
-+Setting this option to 1 will reduce the chances of \fBpullup\fP
-+generating an occasional mismatched frame, but it may also cause an
-+excessive number of frames to be dropped during high motion sequences.
-+Conversely, setting it to \-1 will make \fBpullup\fP match fields more
-+easily. This may help process video with slight blurring between the
-+fields, but may also cause interlaced frames in the output.
-+.TP
-+.B \fBmp\fP (metric plane)
-+This option may be set to \fBu\fP or \fBv\fP to use a chroma plane instead of the
-+luma plane for doing \fBpullup\fP\(aqs computations. This may improve accuracy
-+on very clean source material, but more likely will decrease accuracy,
-+especially if there is chroma noise (rainbow effect) or any grayscale
-+video. The main purpose of setting \fBmp\fP to a chroma plane is to reduce
-+CPU load and make pullup usable in realtime on slow machines.
-+.UNINDENT
-+.TP
-+.B \fByadif=[mode:interlaced\-only]\fP
-+Yet another deinterlacing filter
-+.INDENT 7.0
-+.TP
-+.B \fB<mode>\fP
-+.INDENT 7.0
-+.TP
-+.B frame
-+Output 1 frame for each frame.
-+.TP
-+.B field
-+Output 1 frame for each field (default).
-+.TP
-+.B frame\-nospatial
-+Like \fBframe\fP but skips spatial interlacing check.
-+.TP
-+.B field\-nospatial
-+Like \fBfield\fP but skips spatial interlacing check.
-+.UNINDENT
-+.TP
-+.B \fB<interlaced\-only>\fP
-+.INDENT 7.0
-+.TP
-+.B no
-+Deinterlace all frames.
-+.TP
-+.B yes
-+Only deinterlace frames marked as interlaced (default).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+This filter is automatically inserted when using the \fBd\fP key (or any
-+other key that toggles the \fBdeinterlace\fP property or when using the
-+\fB\-\-deinterlace\fP switch), assuming the video output does not have native
-+deinterlacing support.
-+.sp
-+If you just want to set the default mode, put this filter and its options
-+into \fB\-\-vf\-defaults\fP instead, and enable deinterlacing with \fBd\fP or
-+\fB\-\-deinterlace\fP\&.
-+.sp
-+Also, note that the \fBd\fP key is stupid enough to insert a deinterlacer twice
-+when inserting yadif with \fB\-\-vf\fP, so using the above methods is
-+recommended.
-+.TP
-+.B \fBsub=[=bottom\-margin:top\-margin]\fP
-+Moves subtitle rendering to an arbitrary point in the filter chain, or force
-+subtitle rendering in the video filter as opposed to using video output OSD
-+support.
-+.INDENT 7.0
-+.TP
-+.B \fB<bottom\-margin>\fP
-+Adds a black band at the bottom of the frame. The SSA/ASS renderer can
-+place subtitles there (with \fB\-\-sub\-use\-margins\fP).
-+.TP
-+.B \fB<top\-margin>\fP
-+Black band on the top for toptitles (with \fB\-\-sub\-use\-margins\fP).
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-vf=sub,eq\fP
-+Moves sub rendering before the eq filter. This will put both
-+subtitle colors and video under the influence of the video equalizer
-+settings.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBstereo3d[=in:out]\fP
-+Stereo3d converts between different stereoscopic image formats.
-+.INDENT 7.0
-+.TP
-+.B \fB<in>\fP
-+Stereoscopic image format of input. Possible values:
-+.INDENT 7.0
-+.TP
-+.B \fBsbsl\fP or \fBside_by_side_left_first\fP
-+side by side parallel (left eye left, right eye right)
-+.TP
-+.B \fBsbsr\fP or \fBside_by_side_right_first\fP
-+side by side crosseye (right eye left, left eye right)
-+.TP
-+.B \fBabl\fP or \fBabove_below_left_first\fP
-+above\-below (left eye above, right eye below)
-+.TP
-+.B \fBabr\fP or \fBabove_below_right_first\fP
-+above\-below (right eye above, left eye below)
-+.TP
-+.B \fBab2l\fP or \fBabove_below_half_height_left_first\fP
-+above\-below with half height resolution (left eye above, right eye
-+below)
-+.TP
-+.B \fBab2r\fP or \fBabove_below_half_height_right_first\fP
-+above\-below with half height resolution (right eye above, left eye
-+below)
-+.UNINDENT
-+.TP
-+.B \fB<out>\fP
-+Stereoscopic image format of output. Possible values are all the input
-+formats as well as:
-+.INDENT 7.0
-+.TP
-+.B \fBarcg\fP or \fBanaglyph_red_cyan_gray\fP
-+anaglyph red/cyan gray (red filter on left eye, cyan filter on
-+right eye)
-+.TP
-+.B \fBarch\fP or \fBanaglyph_red_cyan_half_color\fP
-+anaglyph red/cyan half colored (red filter on left eye, cyan filter
-+on right eye)
-+.TP
-+.B \fBarcc\fP or \fBanaglyph_red_cyan_color\fP
-+anaglyph red/cyan color (red filter on left eye, cyan filter on
-+right eye)
-+.TP
-+.B \fBarcd\fP or \fBanaglyph_red_cyan_dubois\fP
-+anaglyph red/cyan color optimized with the least\-squares
-+projection of Dubois (red filter on left eye, cyan filter on right
-+eye)
-+.TP
-+.B \fBagmg\fP or \fBanaglyph_green_magenta_gray\fP
-+anaglyph green/magenta gray (green filter on left eye, magenta
-+filter on right eye)
-+.TP
-+.B \fBagmh\fP or \fBanaglyph_green_magenta_half_color\fP
-+anaglyph green/magenta half colored (green filter on left eye,
-+magenta filter on right eye)
-+.TP
-+.B \fBagmc\fP or \fBanaglyph_green_magenta_color\fP
-+anaglyph green/magenta colored (green filter on left eye, magenta
-+filter on right eye)
-+.TP
-+.B \fBaybg\fP or \fBanaglyph_yellow_blue_gray\fP
-+anaglyph yellow/blue gray (yellow filter on left eye, blue filter
-+on right eye)
-+.TP
-+.B \fBaybh\fP or \fBanaglyph_yellow_blue_half_color\fP
-+anaglyph yellow/blue half colored (yellow filter on left eye, blue
-+filter on right eye)
-+.TP
-+.B \fBaybc\fP or \fBanaglyph_yellow_blue_color\fP
-+anaglyph yellow/blue colored (yellow filter on left eye, blue
-+filter on right eye)
-+.TP
-+.B \fBirl\fP or \fBinterleave_rows_left_first\fP
-+Interleaved rows (left eye has top row, right eye starts on next
-+row)
-+.TP
-+.B \fBirr\fP or \fBinterleave_rows_right_first\fP
-+Interleaved rows (right eye has top row, left eye starts on next
-+row)
-+.TP
-+.B \fBml\fP or \fBmono_left\fP
-+mono output (left eye only)
-+.TP
-+.B \fBmr\fP or \fBmono_right\fP
-+mono output (right eye only)
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBgradfun[=strength[:radius|:size=<size>]]\fP
-+Fix the banding artifacts that are sometimes introduced into nearly flat
-+regions by truncation to 8\-bit color depth. Interpolates the gradients that
-+should go where the bands are, and dithers them.
-+.INDENT 7.0
-+.TP
-+.B \fB<strength>\fP
-+Maximum amount by which the filter will change any one pixel. Also the
-+threshold for detecting nearly flat regions (default: 1.5).
-+.TP
-+.B \fB<radius>\fP
-+Neighborhood to fit the gradient to. Larger radius makes for smoother
-+gradients, but also prevents the filter from modifying pixels near
-+detailed regions (default: disabled).
-+.TP
-+.B \fB<size>\fP
-+size of the filter in percent of the image diagonal size. This is
-+used to calculate the final radius size (default: 1).
-+.UNINDENT
-+.TP
-+.B \fBvapoursynth=file:buffered\-frames:concurrent\-frames\fP
-+Loads a VapourSynth filter script. This is intended for streamed
-+processing: mpv actually provides a source filter, instead of using a
-+native VapourSynth video source. The mpv source will answer frame
-+requests only within a small window of frames (the size of this window
-+is controlled with the \fBbuffered\-frames\fP parameter), and requests outside
-+of that will return errors. As such, you can\(aqt use the full power of
-+VapourSynth, but you can use certain filters.
-+.sp
-+If you just want to play video generated by a VapourSynth (i.e. using
-+a native VapourSynth video source), it\(aqs better to use \fBvspipe\fP and a
-+FIFO to feed the video to mpv. The same applies if the filter script
-+requires random frame access (see \fBbuffered\-frames\fP parameter).
-+.sp
-+This filter is experimental. If it turns out that it works well and is
-+used, it will be ported to libavfilter. Otherwise, it will be just removed.
-+.INDENT 7.0
-+.TP
-+.B \fBfile\fP
-+Filename of the script source. Currently, this is always a python
-+script. The variable \fBvideo_in\fP is set to the mpv video source,
-+and it is expected that the script reads video from it. (Otherwise,
-+mpv will decode no video, and the video packet queue will overflow,
-+eventually leading to audio being stopped.) The script is also
-+expected to pass through timestamps using the \fB_DurationNum\fP and
-+\fB_DurationDen\fP frame properties.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example:"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+import vapoursynth as vs
-+core = vs.get_core()
-+core.std.AddBorders(video_in, 10, 10, 20, 20).set_output()
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+The script will be reloaded on every seek. This is done to reset
-+the filter properly on discontinuities.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBbuffered\-frames\fP
-+Maximum number of decoded video frames that should be buffered before
-+the filter (default: 4). This specifies the maximum number of frames
-+the script can request in reverse direction.
-+E.g. if \fBbuffered\-frames=5\fP, and the script just requested frame 15,
-+it can still request frame 10, but frame 9 is not available anymore.
-+If it requests frame 30, mpv will decode 15 more frames, and keep only
-+frames 25\-30.
-+.sp
-+The actual number of buffered frames also depends on the value of the
-+\fBconcurrent\-frames\fP option. Currently, both option values are
-+multiplied to get the final buffer size.
-+.sp
-+(Normally, VapourSynth source filters must provide random access, but
-+mpv was made for playback, and does not provide frame\-exact random
-+access. The way this video filter works is a compromise to make simple
-+filters work anyway.)
-+.TP
-+.B \fBconcurrent\-frames\fP
-+Number of frames that should be requested in parallel. The
-+level of concurrency depends on the filter and how quickly mpv can
-+decode video to feed the filter. This value should probably be
-+proportional to the number of cores on your machine. Most time,
-+making it higher than the number of cores can actually make it
-+slower.
-+.sp
-+By default, this uses the special value \fBauto\fP, which sets the option
-+to the number of detected logical CPU cores.
-+.UNINDENT
-+.sp
-+The following variables are defined by mpv:
-+.INDENT 7.0
-+.TP
-+.B \fBvideo_in\fP
-+The mpv video source as vapoursynth clip. Note that this has no length
-+set, which confuses many filters. Using \fBTrim\fP on the clip with a
-+high dummy length can turn it into a finite clip.
-+.TP
-+.B \fBvideo_in_dw\fP, \fBvideo_in_dh\fP
-+Display size of the video. Can be different from video size if the
-+video does not use square pixels (e.g. DVD).
-+.TP
-+.B \fBcontainer_fps\fP
-+FPS value as reported by file headers. This value can be wrong or
-+completely broken (e.g. 0 or NaN). Even if the value is correct,
-+if another filter changes the real FPS (by dropping or inserting
-+frames), the value of this variable might not be useful. Note that
-+the \fB\-\-fps\fP command line option overrides this value.
-+.sp
-+Useful for some filters which insist on having a FPS.
-+.TP
-+.B \fBdisplay_fps\fP
-+Refresh rate of the current display. Note that this value can be 0.
-+.UNINDENT
-+.TP
-+.B \fBvapoursynth\-lazy\fP
-+The same as \fBvapoursynth\fP, but doesn\(aqt load Python scripts. Instead, a
-+custom backend using Lua and the raw VapourSynth API is used. The syntax
-+is completely different, and absolutely no convenience features are
-+provided. There\(aqs no type checking either, and you can trigger crashes.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example:"
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+video_out = invoke("morpho", "Open", {clip = video_in})
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The special variable \fBvideo_in\fP is the mpv video source, while the
-+special variable \fBvideo_out\fP is used to read video from. The 1st argument
-+is the plugin (queried with \fBgetPluginByNs\fP), the 2nd is the filter name,
-+and the 3rd argument is a table with the arguments. Positional arguments
-+are not supported. The types must match exactly. Since Lua is terrible and
-+can\(aqt distinguish integers and floats, integer arguments must be prefixed
-+with \fBi_\fP, in which case the prefix is removed and the argument is cast
-+to an integer. Should the argument\(aqs name start with \fBi_\fP, you\(aqre out of
-+luck.
-+.sp
-+Clips (VSNodeRef) are passed as light userdata, so trying to pass any
-+other userdata type will result in hard crashes.
-+.TP
-+.B \fBvavpp\fP
-+VA\-AP\-API video post processing. Works with \fB\-\-vo=vaapi\fP and \fB\-\-vo=opengl\fP
-+only. Currently deinterlaces. This filter is automatically inserted if
-+deinterlacing is requested (either using the \fBd\fP key, by default mapped to
-+the command \fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option).
-+.INDENT 7.0
-+.TP
-+.B \fBdeint=<method>\fP
-+Select the deinterlacing algorithm.
-+.INDENT 7.0
-+.TP
-+.B no
-+Don\(aqt perform deinterlacing.
-+.TP
-+.B first\-field
-+Show only first field.
-+.TP
-+.B bob
-+bob deinterlacing (default).
-+.TP
-+.B weave, motion\-adaptive, motion\-compensated
-+Advanced deinterlacing algorithms. Whether these actually work
-+depends on the GPU hardware, the GPU drivers, driver bugs, and
-+mpv bugs.
-+.UNINDENT
-+.TP
-+.B \fB<interlaced\-only>\fP
-+.INDENT 7.0
-+.TP
-+.B no
-+Deinterlace all frames.
-+.TP
-+.B yes
-+Only deinterlace frames marked as interlaced (default).
-+.UNINDENT
-+.TP
-+.B \fBreversal\-bug=<yes|no>\fP
-+.INDENT 7.0
-+.TP
-+.B no
-+Use the API as it was interpreted by older Mesa drivers. While
-+this interpretation was more obvious and inuitive, it was
-+apparently wrong, and not shared by Intel driver developers.
-+.TP
-+.B yes
-+Use Intel interpretation of surface forward and backwards
-+references (default). This is what Intel drivers and newer Mesa
-+drivers expect. Matters only for the advanced deinterlacing
-+algorithms.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBvdpaupp\fP
-+VDPAU video post processing. Works with \fB\-\-vo=vdpau\fP and \fB\-\-vo=opengl\fP
-+only. This filter is automatically inserted if deinterlacing is requested
-+(either using the \fBd\fP key, by default mapped to the command
-+\fBcycle deinterlace\fP, or the \fB\-\-deinterlace\fP option). When enabling
-+deinterlacing, it is always preferred over software deinterlacer filters
-+if the \fBvdpau\fP VO is used, and also if \fBopengl\fP is used and hardware
-+decoding was activated at least once (i.e. vdpau was loaded).
-+.INDENT 7.0
-+.TP
-+.B \fBsharpen=<\-1\-1>\fP
-+For positive values, apply a sharpening algorithm to the video, for
-+negative values a blurring algorithm (default: 0).
-+.TP
-+.B \fBdenoise=<0\-1>\fP
-+Apply a noise reduction algorithm to the video (default: 0; no noise
-+reduction).
-+.TP
-+.B \fBdeint=<yes|no>\fP
-+Whether deinterlacing is enabled (default: no). If enabled, it will use
-+the mode selected with \fBdeint\-mode\fP\&.
-+.TP
-+.B \fBdeint\-mode=<first\-field|bob|temporal|temporal\-spatial>\fP
-+Select deinterlacing mode (default: temporal).
-+.sp
-+Note that there\(aqs currently a mechanism that allows the \fBvdpau\fP VO to
-+change the \fBdeint\-mode\fP of auto\-inserted \fBvdpaupp\fP filters. To avoid
-+confusion, it\(aqs recommended not to use the \fB\-\-vo=vdpau\fP suboptions
-+related to filtering.
-+.INDENT 7.0
-+.TP
-+.B first\-field
-+Show only first field.
-+.TP
-+.B bob
-+Bob deinterlacing.
-+.TP
-+.B temporal
-+Motion\-adaptive temporal deinterlacing. May lead to A/V desync
-+with slow video hardware and/or high resolution.
-+.TP
-+.B temporal\-spatial
-+Motion\-adaptive temporal deinterlacing with edge\-guided spatial
-+interpolation. Needs fast video hardware.
-+.UNINDENT
-+.TP
-+.B \fBchroma\-deint\fP
-+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
-+Try to apply inverse telecine, needs motion adaptive temporal
-+deinterlacing.
-+.TP
-+.B \fBinterlaced\-only=<yes|no>\fP
-+If \fByes\fP (default), only deinterlace frames marked as interlaced.
-+.TP
-+.B \fBhqscaling=<0\-9>\fP
-+.INDENT 7.0
-+.TP
-+.B 0
-+Use default VDPAU scaling (default).
-+.TP
-+.B 1\-9
-+Apply high quality VDPAU scaling (needs capable hardware).
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBd3d11vpp\fP
-+Direct3D 11 video post processing. Currently requires D3D11 hardware
-+decoding for use.
-+.INDENT 7.0
-+.TP
-+.B \fBdeint=<yes|no>\fP
-+Whether deinterlacing is enabled (default: no).
-+.TP
-+.B \fBinterlaced\-only=<yes|no>\fP
-+If \fByes\fP (default), only deinterlace frames marked as interlaced.
-+.TP
-+.B \fBmode=<blend|bob|adaptive|mocomp|ivctc|none>\fP
-+Tries to select a video processor with the given processing capability.
-+If a video processor supports multiple capabilities, it is not clear
-+which algorithm is actually selected. \fBnone\fP always falls back. On
-+most if not all hardware, this option will probably do nothing, because
-+a video processor usually supports all modes or none.
-+.UNINDENT
-+.TP
-+.B \fBbuffer=<num>\fP
-+Buffer \fB<num>\fP frames in the filter chain. This filter is probably pretty
-+useless, except for debugging. (Note that this won\(aqt help to smooth out
-+latencies with decoding, because the filter will never output a frame if
-+the buffer isn\(aqt full, except on EOF.)
-+.UNINDENT
-+.SH ENCODING
-+.sp
-+You can encode files from one format/codec to another using this facility.
-+.INDENT 0.0
-+.TP
-+.B \fB\-\-o=<filename>\fP
-+Enables encoding mode and specifies the output file name.
-+.TP
-+.B \fB\-\-of=<format>\fP
-+Specifies the output format (overrides autodetection by the file name
-+extension of the file specified by \fB\-o\fP). This can be a comma separated
-+list of possible formats to try. See \fB\-\-of=help\fP for a full list of
-+supported formats.
-+.TP
-+.B \fB\-\-ofopts=<options>\fP
-+Specifies the output format options for libavformat.
-+See \fB\-\-ofopts=help\fP for a full list of supported options.
-+.sp
-+Options are managed in lists. There are a few commands to manage the
-+options list.
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-ofopts\-add=<options1[,options2,...]>\fP
-+Appends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-ofopts\-pre=<options1[,options2,...]>\fP
-+Prepends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-ofopts\-del=<index1[,index2,...]>\fP
-+Deletes the options at the given indexes. Index numbers start at 0,
-+negative numbers address the end of the list (\-1 is the last).
-+.TP
-+.B \fB\-\-ofopts\-clr\fP
-+Completely empties the options list.
-+.UNINDENT
-+.TP
-+.B \fB\-\-ofps=<float value>\fP
-+Specifies the output format time base (default: 24000). Low values like 25
-+limit video fps by dropping frames.
-+.TP
-+.B \fB\-\-oautofps\fP
-+Sets the output format time base to the guessed frame rate of the input
-+video (simulates MEncoder behavior, useful for AVI; may cause frame drops).
-+Note that not all codecs and not all formats support VFR encoding, and some
-+which do have bugs when a target bitrate is specified \- use \fB\-\-ofps\fP or
-+\fB\-\-oautofps\fP to force CFR encoding in these cases.
-+.TP
-+.B \fB\-\-omaxfps=<float value>\fP
-+Specifies the minimum distance of adjacent frames (default: 0, which means
-+unset). Content of lower frame rate is not readjusted to this frame rate;
-+content of higher frame rate is decimated to this frame rate.
-+.TP
-+.B \fB\-\-oharddup\fP
-+If set, the frame rate given by \fB\-\-ofps\fP is attained not by skipping time
-+codes, but by duplicating frames (constant frame rate mode).
-+.TP
-+.B \fB\-\-oneverdrop\fP
-+If set, frames are never dropped. Instead, time codes of video are
-+readjusted to always increase. This may cause AV desync, though; to work
-+around this, use a high\-fps time base using \fB\-\-ofps\fP and absolutely
-+avoid \fB\-\-oautofps\fP\&.
-+.TP
-+.B \fB\-\-oac=<codec>\fP
-+Specifies the output audio codec. This can be a comma separated list of
-+possible codecs to try. See \fB\-\-oac=help\fP for a full list of supported
-+codecs.
-+.TP
-+.B \fB\-\-oaoffset=<value>\fP
-+Shifts audio data by the given time (in seconds) by adding/removing
-+samples at the start.
-+.TP
-+.B \fB\-\-oacopts=<options>\fP
-+Specifies the output audio codec options for libavcodec.
-+See \fB\-\-oacopts=help\fP for a full list of supported options.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.TP
-+.B "\fB\-\-oac=libmp3lame \-\-oacopts=b=128000\fP"
-+selects 128 kbps MP3 encoding.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Options are managed in lists. There are a few commands to manage the
-+options list.
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-oacopts\-add=<options1[,options2,...]>\fP
-+Appends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-oacopts\-pre=<options1[,options2,...]>\fP
-+Prepends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-oacopts\-del=<index1[,index2,...]>\fP
-+Deletes the options at the given indexes. Index numbers start at 0,
-+negative numbers address the end of the list (\-1 is the last).
-+.TP
-+.B \fB\-\-oacopts\-clr\fP
-+Completely empties the options list.
-+.UNINDENT
-+.TP
-+.B \fB\-\-oafirst\fP
-+Force the audio stream to become the first stream in the output.
-+By default, the order is unspecified.
-+.TP
-+.B \fB\-\-ovc=<codec>\fP
-+Specifies the output video codec. This can be a comma separated list of
-+possible codecs to try. See \fB\-\-ovc=help\fP for a full list of supported
-+codecs.
-+.TP
-+.B \fB\-\-ovoffset=<value>\fP
-+Shifts video data by the given time (in seconds) by shifting the pts
-+values.
-+.TP
-+.B \fB\-\-ovcopts <options>\fP
-+Specifies the output video codec options for libavcodec.
-+See \-\-ovcopts=help for a full list of supported options.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.TP
-+.B \fB"\-\-ovc=mpeg4 \-\-ovcopts=qscale=5"\fP
-+selects constant quantizer scale 5 for MPEG\-4 encoding.
-+.TP
-+.B \fB"\-\-ovc=libx264 \-\-ovcopts=crf=23"\fP
-+selects VBR quality factor 23 for H.264 encoding.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Options are managed in lists. There are a few commands to manage the
-+options list.
-+.INDENT 7.0
-+.TP
-+.B \fB\-\-ovcopts\-add=<options1[,options2,...]>\fP
-+Appends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-ovcopts\-pre=<options1[,options2,...]>\fP
-+Prepends the options given as arguments to the options list.
-+.TP
-+.B \fB\-\-ovcopts\-del=<index1[,index2,...]>\fP
-+Deletes the options at the given indexes. Index numbers start at 0,
-+negative numbers address the end of the list (\-1 is the last).
-+.TP
-+.B \fB\-\-ovcopts\-clr\fP
-+Completely empties the options list.
-+.UNINDENT
-+.TP
-+.B \fB\-\-ovfirst\fP
-+Force the video stream to become the first stream in the output.
-+By default, the order is unspecified.
-+.TP
-+.B \fB\-\-ocopyts\fP
-+Copies input pts to the output video (not supported by some output
-+container formats, e.g. AVI). Discontinuities are still fixed.
-+By default, audio pts are set to playback time and video pts are
-+synchronized to match audio pts, as some output formats do not support
-+anything else.
-+.TP
-+.B \fB\-\-orawts\fP
-+Copies input pts to the output video (not supported by some output
-+container formats, e.g. AVI). In this mode, discontinuities are not fixed
-+and all pts are passed through as\-is. Never seek backwards or use multiple
-+input files in this mode!
-+.TP
-+.B \fB\-\-no\-ometadata\fP
-+Turns off copying of metadata from input files to output files when
-+encoding (which is enabled by default).
-+.UNINDENT
-+.SH COMMAND INTERFACE
-+.sp
-+The mpv core can be controlled with commands and properties. A number of ways
-+to interact with the player use them: key bindings (\fBinput.conf\fP), OSD
-+(showing information with properties), JSON IPC, the client API (\fBlibmpv\fP),
-+and the classic slave mode.
-+.SS input.conf
-+.sp
-+The input.conf file consists of a list of key bindings, for example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+s screenshot # take a screenshot with the s key
-+LEFT seek 15 # map the left\-arrow key to seeking forward by 15 seconds
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Each line maps a key to an input command. Keys are specified with their literal
-+value (upper case if combined with \fBShift\fP), or a name for special keys. For
-+example, \fBa\fP maps to the \fBa\fP key without shift, and \fBA\fP maps to \fBa\fP
-+with shift.
-+.sp
-+The file is located in the mpv configuration directory (normally at
-+\fB~/.config/mpv/input.conf\fP depending on platform). The default bindings are
-+defined here:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+https://github.com/mpv\-player/mpv/blob/master/etc/input.conf
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+A list of special keys can be obtained with
-+.INDENT 0.0
-+.INDENT 3.5
-+\fBmpv \-\-input\-keylist\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+In general, keys can be combined with \fBShift\fP, \fBCtrl\fP and \fBAlt\fP:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+ctrl+q quit
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBmpv\fP can be started in input test mode, which displays key bindings and the
-+commands they\(aqre bound to on the OSD, instead of executing the commands:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv \-\-input\-test \-\-force\-window \-\-idle
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+(Only closing the window will make \fBmpv\fP exit, pressing normal keys will
-+merely display the binding, even if mapped to quit.)
-+.SS General Input Command Syntax
-+.sp
-+\fB[Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] [<prefixes>] <command> (<argument>)* [; <command>]\fP
-+.sp
-+Note that by default, the right Alt key can be used to create special
-+characters, and thus does not register as a modifier. The option
-+\fB\-\-no\-input\-right\-alt\-gr\fP changes this behavior.
-+.sp
-+Newlines always start a new binding. \fB#\fP starts a comment (outside of quoted
-+string arguments). To bind commands to the \fB#\fP key, \fBSHARP\fP can be used.
-+.sp
-+\fB<key>\fP is either the literal character the key produces (ASCII or Unicode
-+character), or a symbolic name (as printed by \fB\-\-input\-keylist\fP).
-+.sp
-+\fB<section>\fP (braced with \fB{\fP and \fB}\fP) is the input section for this
-+command.
-+.sp
-+Arguments are separated by whitespace. This applies even to string arguments.
-+For this reason, string arguments should be quoted with \fB"\fP\&. Inside quotes,
-+C\-style escaping can be used.
-+.sp
-+You can bind multiple commands to one key. For example:
-+.nf
-+a show\-text "command 1" ; show\-text "command 2"
-+.fi
-+.sp
-+.sp
-+It\(aqs also possible to bind a command to a sequence of keys:
-+.nf
-+a\-b\-c show\-text "command run after a, b, c have been pressed"
-+.fi
-+.sp
-+.sp
-+(This is not shown in the general command syntax.)
-+.sp
-+If \fBa\fP or \fBa\-b\fP or \fBb\fP are already bound, this will run the first command
-+that matches, and the multi\-key command will never be called. Intermediate keys
-+can be remapped to \fBignore\fP in order to avoid this issue. The maximum number
-+of (non\-modifier) keys for combinations is currently 4.
-+.SS List of Input Commands
-+.INDENT 0.0
-+.TP
-+.B \fBignore\fP
-+Use this to "block" keys that should be unbound, and do nothing. Useful for
-+disabling default bindings, without disabling all bindings with
-+\fB\-\-no\-input\-default\-bindings\fP\&.
-+.TP
-+.B \fBseek <seconds> [relative|absolute|absolute\-percent|relative\-percent|exact|keyframes]\fP
-+Change the playback position. By default, seeks by a relative amount of
-+seconds.
-+.sp
-+The second argument consists of flags controlling the seek mode:
-+.INDENT 7.0
-+.TP
-+.B relative (default)
-+Seek relative to current position (a negative value seeks backwards).
-+.TP
-+.B absolute
-+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.
-+.TP
-+.B relative\-percent
-+Seek relative to current position in percent.
-+.TP
-+.B keyframes
-+Always restart playback at keyframe boundaries (fast).
-+.TP
-+.B exact
-+Always do exact/hr/precise seeks (slow).
-+.UNINDENT
-+.sp
-+Multiple flags can be combined, e.g.: \fBabsolute+keyframes\fP\&.
-+.sp
-+By default, \fBkeyframes\fP is used for relative seeks, and \fBexact\fP is used
-+for absolute seeks.
-+.sp
-+Before mpv 0.9, the \fBkeyframes\fP and \fBexact\fP flags had to be passed as
-+3rd parameter (essentially using a space instead of \fB+\fP). The 3rd
-+parameter is still parsed, but is considered deprecated.
-+.TP
-+.B \fBrevert\-seek [mode]\fP
-+Undoes the \fBseek\fP command, and some other commands that seek (but not
-+necessarily all of them). Calling this command once will jump to the
-+playback position before the seek. Calling it a second time undoes the
-+\fBrevert\-seek\fP command itself. This only works within a single file.
-+.sp
-+The first argument is optional, and can change the behavior:
-+.INDENT 7.0
-+.TP
-+.B mark
-+Mark the current time position. The next normal \fBrevert\-seek\fP command
-+will seek back to this point, no matter how many seeks happened since
-+last time.
-+.UNINDENT
-+.sp
-+Using it without any arguments gives you the default behavior.
-+.TP
-+.B \fBframe\-step\fP
-+Play one frame, then pause. Does nothing with audio\-only playback.
-+.TP
-+.B \fBframe\-back\-step\fP
-+Go back by one frame, then pause. Note that this can be very slow (it tries
-+to be precise, not fast), and sometimes fails to behave as expected. How
-+well this works depends on whether precise seeking works correctly (e.g.
-+see the \fB\-\-hr\-seek\-demuxer\-offset\fP option). Video filters or other video
-+post\-processing that modifies timing of frames (e.g. deinterlacing) should
-+usually work, but might make backstepping silently behave incorrectly in
-+corner cases. Using \fB\-\-hr\-seek\-framedrop=no\fP should help, although it
-+might make precise seeking slower.
-+.sp
-+This does not work with audio\-only playback.
-+.TP
-+.B \fBset <property> "<value>"\fP
-+Set the given property to the given value.
-+.TP
-+.B \fBadd <property> [<value>]\fP
-+Add the given value to the property. On overflow or underflow, clamp the
-+property to the maximum. If \fB<value>\fP is omitted, assume \fB1\fP\&.
-+.TP
-+.B \fBcycle <property> [up|down]\fP
-+Cycle the given property. \fBup\fP and \fBdown\fP set the cycle direction. On
-+overflow, set the property back to the minimum, on underflow set it to the
-+maximum. If \fBup\fP or \fBdown\fP is omitted, assume \fBup\fP\&.
-+.TP
-+.B \fBmultiply <property> <factor>\fP
-+Multiplies the value of a property with the numeric factor.
-+.TP
-+.B \fBscreenshot [subtitles|video|window|single|each\-frame]\fP
-+Take a screenshot.
-+.sp
-+Multiple flags are available (some can be combined with \fB+\fP):
-+.INDENT 7.0
-+.TP
-+.B <subtitles> (default)
-+Save the video image, in its original resolution, and with subtitles.
-+Some video outputs may still include the OSD in the output under certain
-+circumstances.
-+.TP
-+.B <video>
-+Like \fBsubtitles\fP, but typically without OSD or subtitles. The exact
-+behavior depends on the selected video output.
-+.TP
-+.B <window>
-+Save the contents of the mpv window. Typically scaled, with OSD and
-+subtitles. The exact behavior depends on the selected video output, and
-+if no support is available, this will act like \fBvideo\fP\&.
-+.TP
-+.B <each\-frame>
-+Take a screenshot each frame. Issue this command again to stop taking
-+screenshots. Note that you should disable frame\-dropping when using
-+this mode \- or you might receive duplicate images in cases when a
-+frame was dropped. This flag can be combined with the other flags,
-+e.g. \fBvideo+each\-frame\fP\&.
-+.UNINDENT
-+.sp
-+Older mpv versions required passing \fBsingle\fP and \fBeach\-frame\fP as
-+second argument (and did not have flags). This syntax is still understood,
-+but deprecated and might be removed in the future.
-+.sp
-+Setting the \fBasync\fP flag will make encoding and writing the actual image
-+file asynchronous in most cases. (\fBeach\-frame\fP mode ignores this flag
-+currently.) Requesting async screenshots too early or too often could lead
-+to the same filenames being chosen, and overwriting each others in undefined
-+order.
-+.TP
-+.B \fBscreenshot\-to\-file "<filename>" [subtitles|video|window]\fP
-+Take a screenshot and save it to a given file. The format of the file will
-+be guessed by the extension (and \fB\-\-screenshot\-format\fP is ignored \- the
-+behavior when the extension is missing or unknown is arbitrary).
-+.sp
-+The second argument is like the first argument to \fBscreenshot\fP\&.
-+.sp
-+If the file already exists, it\(aqs overwritten.
-+.sp
-+Like all input command parameters, the filename is subject to property
-+expansion as described in \fI\%Property Expansion\fP\&.
-+.sp
-+The \fBasync\fP flag has an effect on this command (see \fBscreenshot\fP
-+command).
-+.TP
-+.B \fBplaylist\-next [weak|force]\fP
-+Go to the next entry on the playlist.
-+.INDENT 7.0
-+.TP
-+.B weak (default)
-+If the last file on the playlist is currently played, do nothing.
-+.TP
-+.B force
-+Terminate playback if there are no more files on the playlist.
-+.UNINDENT
-+.TP
-+.B \fBplaylist\-prev [weak|force]\fP
-+Go to the previous entry on the playlist.
-+.INDENT 7.0
-+.TP
-+.B weak (default)
-+If the first file on the playlist is currently played, do nothing.
-+.TP
-+.B force
-+Terminate playback if the first file is being played.
-+.UNINDENT
-+.TP
-+.B \fBloadfile "<file>" [replace|append|append\-play [options]]\fP
-+Load the given file and play it.
-+.sp
-+Second argument:
-+.INDENT 7.0
-+.TP
-+.B <replace> (default)
-+Stop playback of the current file, and play the new file immediately.
-+.TP
-+.B <append>
-+Append the file to the playlist.
-+.TP
-+.B <append\-play>
-+Append the file, and if nothing is currently playing, start playback.
-+(Always starts with the added file, even if the playlist was not empty
-+before running this command.)
-+.UNINDENT
-+.sp
-+The third argument is a list of options and values which should be set
-+while the file is playing. It is of the form \fBopt1=value1,opt2=value2,..\fP\&.
-+Not all options can be changed this way. Some options require a restart
-+of the player.
-+.TP
-+.B \fBloadlist "<playlist>" [replace|append]\fP
-+Load the given playlist file (like \fB\-\-playlist\fP).
-+.TP
-+.B \fBplaylist\-clear\fP
-+Clear the playlist, except the currently played file.
-+.TP
-+.B \fBplaylist\-remove current|<index>\fP
-+Remove the playlist entry at the given index. Index values start counting
-+with 0. The special value \fBcurrent\fP removes the current entry. Note that
-+removing the current entry also stops playback and starts playing the next
-+entry.
-+.TP
-+.B \fBplaylist\-move <index1> <index2>\fP
-+Move the playlist entry at index1, so that it takes the place of the
-+entry index2. (Paradoxically, the moved playlist entry will not have
-+the index value index2 after moving if index1 was lower than index2,
-+because index2 refers to the target entry, not the index the entry
-+will have after moving.)
-+.TP
-+.B \fBplaylist\-shuffle\fP
-+Shuffle the playlist. This is similar to what is done on start if the
-+\fB\-\-shuffle\fP option is used.
-+.TP
-+.B \fBrun "command" "arg1" "arg2" ...\fP
-+Run the given command. Unlike in MPlayer/mplayer2 and earlier versions of
-+mpv (0.2.x and older), this doesn\(aqt call the shell. Instead, the command
-+is run directly, with each argument passed separately. Each argument is
-+expanded like in \fI\%Property Expansion\fP\&. Note that there is a static limit
-+of (as of this writing) 9 arguments (this limit could be raised on demand).
-+.sp
-+The program is run in a detached way. mpv doesn\(aqt wait until the command
-+is completed, but continues playback right after spawning it.
-+.sp
-+To get the old behavior, use \fB/bin/sh\fP and \fB\-c\fP as the first two
-+arguments.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+\fBrun "/bin/sh" "\-c" "echo ${title} > /tmp/playing"\fP
-+.sp
-+This is not a particularly good example, because it doesn\(aqt handle
-+escaping, and a specially prepared file might allow an attacker to
-+execute arbitrary shell commands. It is recommended to write a small
-+shell script, and call that with \fBrun\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBquit [<code>]\fP
-+Exit the player. If an argument is given, it\(aqs used as process exit code.
-+.TP
-+.B \fBquit\-watch\-later [<code>]\fP
-+Exit player, and store current playback position. Playing that file later
-+will seek to the previous position on start. The (optional) argument is
-+exactly as in the \fBquit\fP command.
-+.TP
-+.B \fBsub\-add "<file>" [<flags> [<title> [<lang>]]]\fP
-+Load the given subtitle file. It is selected as current subtitle after
-+loading.
-+.sp
-+The \fBflags\fP args is one of the following values:
-+.sp
-+<select>
-+.INDENT 7.0
-+.INDENT 3.5
-+Select the subtitle immediately.
-+.UNINDENT
-+.UNINDENT
-+.sp
-+<auto>
-+.INDENT 7.0
-+.INDENT 3.5
-+Don\(aqt select the subtitle. (Or in some special situations, let the
-+default stream selection mechanism decide.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+<cached>
-+.INDENT 7.0
-+.INDENT 3.5
-+Select the subtitle. If a subtitle with the same filename was already
-+added, that one is selected, instead of loading a duplicate entry.
-+(In this case, title/language are ignored, and if the was changed since
-+it was loaded, these changes won\(aqt be reflected.)
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The \fBtitle\fP argument sets the track title in the UI.
-+.sp
-+The \fBlang\fP argument sets the track language, and can also influence
-+stream selection with \fBflags\fP set to \fBauto\fP\&.
-+.TP
-+.B \fBsub\-remove [<id>]\fP
-+Remove the given subtitle track. If the \fBid\fP argument is missing, remove
-+the current track. (Works on external subtitle files only.)
-+.TP
-+.B \fBsub\-reload [<id>]\fP
-+Reload the given subtitle tracks. If the \fBid\fP argument is missing, reload
-+the current track. (Works on external subtitle files only.)
-+.sp
-+This works by unloading and re\-adding the subtitle track.
-+.TP
-+.B \fBsub\-step <skip>\fP
-+Change subtitle timing such, that the subtitle event after the next
-+\fB<skip>\fP subtitle events is displayed. \fB<skip>\fP can be negative to step
-+backwards.
-+.TP
-+.B \fBsub\-seek <skip>\fP
-+Seek to the next (skip set to 1) or the previous (skip set to \-1) subtitle.
-+This is similar to \fBsub\-step\fP, except that it seeks video and audio
-+instead of adjusting the subtitle delay.
-+.sp
-+For embedded subtitles (like with Matroska), this works only with subtitle
-+events that have already been displayed, or are within a short prefetch
-+range.
-+.TP
-+.B \fBprint\-text "<string>"\fP
-+Print text to stdout. The string can contain properties (see
-+\fI\%Property Expansion\fP).
-+.TP
-+.B \fBshow\-text "<string>" [<duration>|\- [<level>]]\fP
-+Show text on the OSD. The string can contain properties, which are expanded
-+as described in \fI\%Property Expansion\fP\&. This can be used to show playback
-+time, filename, and so on.
-+.INDENT 7.0
-+.TP
-+.B <duration>
-+The time in ms to show the message for. By default, it uses the same
-+value as \fB\-\-osd\-duration\fP\&.
-+.TP
-+.B <level>
-+The minimum OSD level to show the text at (see \fB\-\-osd\-level\fP).
-+.UNINDENT
-+.TP
-+.B \fBexpand\-text "<string>"\fP
-+Property\-expand the argument and return the expanded string. This can be
-+used only through the client API or from a script using
-+\fBmp.command_native\fP\&. (see \fI\%Property Expansion\fP).
-+.TP
-+.B \fBshow\-progress\fP
-+Show the progress bar, the elapsed time and the total duration of the file
-+on the OSD.
-+.TP
-+.B \fBwrite\-watch\-later\-config\fP
-+Write the resume config file that the \fBquit\-watch\-later\fP command writes,
-+but continue playback normally.
-+.TP
-+.B \fBstop\fP
-+Stop playback and clear playlist. With default settings, this is
-+essentially like \fBquit\fP\&. Useful for the client API: playback can be
-+stopped without terminating the player.
-+.TP
-+.B \fBmouse <x> <y> [<button> [single|double]]\fP
-+Send a mouse event with given coordinate (\fB<x>\fP, \fB<y>\fP).
-+.sp
-+Second argument:
-+.INDENT 7.0
-+.TP
-+.B <button>
-+The button number of clicked mouse button. This should be one of 0\-19.
-+If \fB<button>\fP is omitted, only the position will be updated.
-+.UNINDENT
-+.sp
-+Third argument:
-+.INDENT 7.0
-+.TP
-+.B <single> (default)
-+The mouse event represents regular single click.
-+.TP
-+.B <double>
-+The mouse event represents double\-click.
-+.UNINDENT
-+.TP
-+.B \fBkeypress <key_name>\fP
-+Send a key event through mpv\(aqs input handler, triggering whatever
-+behavior is configured to that key. \fBkey_name\fP uses the \fBinput.conf\fP
-+naming scheme for keys and modifiers. Useful for the client API: key events
-+can be sent to libmpv to handle internally.
-+.TP
-+.B \fBkeydown <key_name>\fP
-+Similar to \fBkeypress\fP, but sets the \fBKEYDOWN\fP flag so that if the key is
-+bound to a repeatable command, it will be run repeatedly with mpv\(aqs key
-+repeat timing until the \fBkeyup\fP command is called.
-+.TP
-+.B \fBkeyup [<key_name>]\fP
-+Set the \fBKEYUP\fP flag, stopping any repeated behavior that had been
-+triggered. \fBkey_name\fP is optional. If \fBkey_name\fP is not given or is an
-+empty string, \fBKEYUP\fP will be set on all keys. Otherwise, \fBKEYUP\fP will
-+only be set on the key specified by \fBkey_name\fP\&.
-+.TP
-+.B \fBaudio\-add "<file>" [<flags> [<title> [<lang>]]]\fP
-+Load the given audio file. See \fBsub\-add\fP command.
-+.TP
-+.B \fBaudio\-remove [<id>]\fP
-+Remove the given audio track. See \fBsub\-remove\fP command.
-+.TP
-+.B \fBaudio\-reload [<id>]\fP
-+Reload the given audio tracks. See \fBsub\-reload\fP command.
-+.TP
-+.B \fBrescan\-external\-files [<mode>]\fP
-+Rescan external files according to the current \fB\-\-sub\-auto\fP and
-+\fB\-\-audio\-file\-auto\fP settings. This can be used to auto\-load external
-+files \fIafter\fP the file was loaded.
-+.sp
-+The \fBmode\fP argument is one of the following:
-+.INDENT 7.0
-+.TP
-+.B <reselect> (default)
-+Select the default audio and subtitle streams, which typically selects
-+external files with the highest preference. (The implementation is not
-+perfect, and could be improved on request.)
-+.TP
-+.B <keep\-selection>
-+Do not change current track selections.
-+.UNINDENT
-+.UNINDENT
-+.SS Input Commands that are Possibly Subject to Change
-+.INDENT 0.0
-+.TP
-+.B \fBaf set|add|toggle|del|clr "filter1=params,filter2,..."\fP
-+Change audio filter chain. See \fBvf\fP command.
-+.TP
-+.B \fBvf set|add|toggle|del|clr "filter1=params,filter2,..."\fP
-+Change video filter chain.
-+.sp
-+The first argument decides what happens:
-+.INDENT 7.0
-+.TP
-+.B set
-+Overwrite the previous filter chain with the new one.
-+.TP
-+.B add
-+Append the new filter chain to the previous one.
-+.TP
-+.B toggle
-+Check if the given filter (with the exact parameters) is already
-+in the video chain. If yes, remove the filter. If no, add the filter.
-+(If several filters are passed to the command, this is done for
-+each filter.)
-+.sp
-+A special variant is combining this with labels, and using \fB@name\fP
-+without filter name and parameters as filter entry. This toggles the
-+enable/disable flag.
-+.TP
-+.B del
-+Remove the given filters from the video chain. Unlike in the other
-+cases, the second parameter is a comma separated list of filter names
-+or integer indexes. \fB0\fP would denote the first filter. Negative
-+indexes start from the last filter, and \fB\-1\fP denotes the last
-+filter.
-+.TP
-+.B clr
-+Remove all filters. Note that like the other sub\-commands, this does
-+not control automatically inserted filters.
-+.UNINDENT
-+.sp
-+The argument is always needed. E.g. in case of \fBclr\fP use \fBvf clr ""\fP\&.
-+.sp
-+You can assign labels to filter by prefixing them with \fB@name:\fP (where
-+\fBname\fP is a user\-chosen arbitrary identifier). Labels can be used to
-+refer to filters by name in all of the filter chain modification commands.
-+For \fBadd\fP, using an already used label will replace the existing filter.
-+.sp
-+The \fBvf\fP command shows the list of requested filters on the OSD after
-+changing the filter chain. This is roughly equivalent to
-+\fBshow\-text ${vf}\fP\&. Note that auto\-inserted filters for format conversion
-+are not shown on the list, only what was requested by the user.
-+.sp
-+Normally, the commands will check whether the video chain is recreated
-+successfully, and will undo the operation on failure. If the command is run
-+before video is configured (can happen if the command is run immediately
-+after opening a file and before a video frame is decoded), this check can\(aqt
-+be run. Then it can happen that creating the video chain fails.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example for input.conf"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fBa vf set flip\fP turn video upside\-down on the \fBa\fP key
-+.IP \(bu 2
-+\fBb vf set ""\fP remove all video filters on \fBb\fP
-+.IP \(bu 2
-+\fBc vf toggle lavfi=gradfun\fP toggle debanding on \fBc\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example how to toggle disabled filters at runtime"
-+.INDENT 0.0
-+.IP \(bu 2
-+Add something \fBvf\-add=@deband:!lavfi=[gradfun]\fP to \fBmpv.conf\fP\&. The
-+\fB@deband:\fP is the label, and \fBdeband\fP is an arbitrary, user\-given
-+name for this filter entry. The \fB!\fP before the filter name disables
-+the filter by default. Everything after this is the normal filter name
-+and the filter parameters.
-+.IP \(bu 2
-+Add \fBa vf toggle @deband\fP to \fBinput.conf\fP\&. This toggles the
-+"disabled" flag for the filter identified with \fBdeband\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBcycle\-values ["!reverse"] <property> "<value1>" "<value2>" ...\fP
-+Cycle through a list of values. Each invocation of the command will set the
-+given property to the next value in the list. The command maintains an
-+internal counter which value to pick next, and which is initially 0. It is
-+reset to 0 once the last value is reached.
-+.sp
-+The internal counter is associated using the property name and the value
-+list. If multiple commands (bound to different keys) use the same name
-+and value list, they will share the internal counter.
-+.sp
-+The special argument \fB!reverse\fP can be used to cycle the value list in
-+reverse. Compared with a command that just lists the value in reverse, this
-+command will actually share the internal counter with the forward\-cycling
-+key binding (as long as the rest of the arguments are the same).
-+.sp
-+Note that there is a static limit of (as of this writing) 10 arguments
-+(this limit could be raised on demand).
-+.TP
-+.B \fBenable\-section "<section>" [flags]\fP
-+Enable all key bindings in the named input section.
-+.sp
-+The enabled input sections form a stack. Bindings in sections on the top of
-+the stack are preferred to lower sections. This command puts the section
-+on top of the stack. If the section was already on the stack, it is
-+implicitly removed beforehand. (A section cannot be on the stack more than
-+once.)
-+.sp
-+The \fBflags\fP parameter can be a combination (separated by \fB+\fP) of the
-+following flags:
-+.INDENT 7.0
-+.TP
-+.B <exclusive>
-+All sections enabled before the newly enabled section are disabled.
-+They will be re\-enabled as soon as all exclusive sections above them
-+are removed. In other words, the new section shadows all previous
-+sections.
-+.TP
-+.B <allow\-hide\-cursor>
-+This feature can\(aqt be used through the public API.
-+.TP
-+.B <allow\-vo\-dragging>
-+Same.
-+.UNINDENT
-+.TP
-+.B \fBdisable\-section "<section>"\fP
-+Disable the named input section. Undoes \fBenable\-section\fP\&.
-+.TP
-+.B \fBdefine\-section "<section>" "<contents>" [default|force]\fP
-+Create a named input section, or replace the contents of an already existing
-+input section. The \fBcontents\fP parameter uses the same syntax as the
-+\fBinput.conf\fP file (except that using the section syntax in it is not
-+allowed), including the need to separate bindings with a newline character.
-+.sp
-+If the \fBcontents\fP parameter is an empty string, the section is removed.
-+.sp
-+The section with the name \fBdefault\fP is the normal input section.
-+.sp
-+In general, input sections have to be enabled with the \fBenable\-section\fP
-+command, or they are ignored.
-+.sp
-+The last parameter has the following meaning:
-+.INDENT 7.0
-+.TP
-+.B <default> (also used if parameter omitted)
-+Use a key binding defined by this section only if the user hasn\(aqt
-+already bound this key to a command.
-+.TP
-+.B <force>
-+Always bind a key. (The input section that was made active most recently
-+wins if there are ambiguities.)
-+.UNINDENT
-+.sp
-+This command can be used to dispatch arbitrary keys to a script or a client
-+API user. If the input section defines \fBscript\-binding\fP commands, it is
-+also possible to get separate events on key up/down, and relatively detailed
-+information about the key state. The special key name \fBunmapped\fP can be
-+used to match any unmapped key.
-+.TP
-+.B \fBoverlay\-add <id> <x> <y> "<file>" <offset> "<fmt>" <w> <h> <stride>\fP
-+Add an OSD overlay sourced from raw data. This might be useful for scripts
-+and applications controlling mpv, and which want to display things on top
-+of the video window.
-+.sp
-+Overlays are usually displayed in screen resolution, but with some VOs,
-+the resolution is reduced to that of the video\(aqs. You can read the
-+\fBosd\-width\fP and \fBosd\-height\fP properties. At least with \fB\-\-vo\-xv\fP and
-+anamorphic video (such as DVD), \fBosd\-par\fP should be read as well, and the
-+overlay should be aspect\-compensated.
-+.sp
-+\fBid\fP is an integer between 0 and 63 identifying the overlay element. The
-+ID can be used to add multiple overlay parts, update a part by using this
-+command with an already existing ID, or to remove a part with
-+\fBoverlay\-remove\fP\&. Using a previously unused ID will add a new overlay,
-+while reusing an ID will update it.
-+.sp
-+\fBx\fP and \fBy\fP specify the position where the OSD should be displayed.
-+.sp
-+\fBfile\fP specifies the file the raw image data is read from. It can be
-+either a numeric UNIX file descriptor prefixed with \fB@\fP (e.g. \fB@4\fP),
-+or a filename. The file will be mapped into memory with \fBmmap()\fP,
-+copied, and unmapped before the command returns (changed in mpv 0.18.1).
-+.sp
-+It is also possible to pass a raw memory address for use as bitmap memory
-+by passing a memory address as integer prefixed with an \fB&\fP character.
-+Passing the wrong thing here will crash the player. This mode might be
-+useful for use with libmpv. The \fBoffset\fP parameter is simply added to the
-+memory address (since mpv 0.8.0, ignored before).
-+.sp
-+\fBoffset\fP is the byte offset of the first pixel in the source file.
-+(The current implementation always mmap\(aqs the whole file from position 0 to
-+the end of the image, so large offsets should be avoided. Before mpv 0.8.0,
-+the offset was actually passed directly to \fBmmap\fP, but it was changed to
-+make using it easier.)
-+.sp
-+\fBfmt\fP is a string identifying the image format. Currently, only \fBbgra\fP
-+is defined. This format has 4 bytes per pixels, with 8 bits per component.
-+The least significant 8 bits are blue, and the most significant 8 bits
-+are alpha (in little endian, the components are B\-G\-R\-A, with B as first
-+byte). This uses premultiplied alpha: every color component is already
-+multiplied with the alpha component. This means the numeric value of each
-+component is equal to or smaller than the alpha component. (Violating this
-+rule will lead to different results with different VOs: numeric overflows
-+resulting from blending broken alpha values is considered something that
-+shouldn\(aqt happen, and consequently implementations don\(aqt ensure that you
-+get predictable behavior in this case.)
-+.sp
-+\fBw\fP, \fBh\fP, and \fBstride\fP specify the size of the overlay. \fBw\fP is the
-+visible width of the overlay, while \fBstride\fP gives the width in bytes in
-+memory. In the simple case, and with the \fBbgra\fP format, \fBstride==4*w\fP\&.
-+In general, the total amount of memory accessed is \fBstride * h\fP\&.
-+(Technically, the minimum size would be \fBstride * (h \- 1) + w * 4\fP, but
-+for simplicity, the player will access all \fBstride * h\fP bytes.)
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+Before mpv 0.18.1, you had to do manual "double buffering" when updating
-+an overlay by replacing it with a different memory buffer. Since mpv
-+0.18.1, the memory is simply copied and doesn\(aqt reference any of the
-+memory indicated by the command\(aqs arguments after the commend returns.
-+If you want to use this command before mpv 0.18.1, reads the old docs
-+to see how to handle this correctly.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBoverlay\-remove <id>\fP
-+Remove an overlay added with \fBoverlay\-add\fP and the same ID. Does nothing
-+if no overlay with this ID exists.
-+.TP
-+.B \fBscript\-message "<arg1>" "<arg2>" ...\fP
-+Send a message to all clients, and pass it the following list of arguments.
-+What this message means, how many arguments it takes, and what the arguments
-+mean is fully up to the receiver and the sender. Every client receives the
-+message, so be careful about name clashes (or use \fBscript\-message\-to\fP).
-+.TP
-+.B \fBscript\-message\-to "<target>" "<arg1>" "<arg2>" ...\fP
-+Same as \fBscript\-message\fP, but send it only to the client named
-+\fB<target>\fP\&. Each client (scripts etc.) has a unique name. For example,
-+Lua scripts can get their name via \fBmp.get_script_name()\fP\&.
-+.TP
-+.B \fBscript\-binding "<name>"\fP
-+Invoke a script\-provided key binding. This can be used to remap key
-+bindings provided by external Lua scripts.
-+.sp
-+The argument is the name of the binding.
-+.sp
-+It can optionally be prefixed with the name of the script, using \fB/\fP as
-+separator, e.g. \fBscript\-binding scriptname/bindingname\fP\&.
-+.sp
-+For completeness, here is how this command works internally. The details
-+could change any time. On any matching key event, \fBscript\-message\-to\fP
-+or \fBscript\-message\fP is called (depending on whether the script name is
-+included), with the following arguments:
-+.INDENT 7.0
-+.IP 1. 3
-+The string \fBkey\-binding\fP\&.
-+.IP 2. 3
-+The name of the binding (as established above).
-+.IP 3. 3
-+The key state as string (see below).
-+.IP 4. 3
-+The key name (since mpv 0.15.0).
-+.UNINDENT
-+.sp
-+The key state consists of 2 letters:
-+.INDENT 7.0
-+.IP 1. 3
-+One of \fBd\fP (key was pressed down), \fBu\fP (was released), \fBr\fP (key
-+is still down, and was repeated; only if key repeat is enabled for this
-+binding), \fBp\fP (key was pressed; happens if up/down can\(aqt be tracked).
-+.IP 2. 3
-+Whether the event originates from the mouse, either \fBm\fP (mouse button)
-+or \fB\-\fP (something else).
-+.UNINDENT
-+.TP
-+.B \fBab\-loop\fP
-+Cycle through A\-B loop states. The first command will set the \fBA\fP point
-+(the \fBab\-loop\-a\fP property); the second the \fBB\fP point, and the third
-+will clear both points.
-+.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.
-+This command might be changed or removed in the future.
-+.TP
-+.B \fBscreenshot\-raw [subtitles|video|window]\fP
-+Return a screenshot in memory. This can be used only through the client
-+API. The MPV_FORMAT_NODE_MAP returned by this command has the \fBw\fP, \fBh\fP,
-+\fBstride\fP fields set to obvious contents. The \fBformat\fP field is set to
-+\fBbgr0\fP by default. This format is organized as \fBB8G8R8X8\fP (where \fBB\fP
-+is the LSB). The contents of the padding \fBX\fP are undefined. The \fBdata\fP
-+field is of type MPV_FORMAT_BYTE_ARRAY with the actual image data. The image
-+is freed as soon as the result mpv_node is freed. As usual with client API
-+semantics, you are not allowed to write to the image data.
-+.TP
-+.B \fBvf\-command "<label>" "<cmd>" "<args>"\fP
-+Send a command to the filter with the given \fB<label>\fP\&. Use \fBall\fP to send
-+it to all filters at once. The command and argument string is filter
-+specific. Currently, this only works with the \fBlavfi\fP filter \- see
-+the libavfilter documentation for which commands a filter supports.
-+.sp
-+Note that the \fB<label>\fP is a mpv filter label, not a libavfilter filter
-+name.
-+.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),
-+\fBao\-reload\fP (experimental/internal).
-+.SS Hooks
-+.sp
-+Hooks are synchronous events between player core and a script or similar. This
-+applies to client API (including the Lua scripting interface). Normally,
-+events are supposed to be asynchronous, and the hook API provides an awkward
-+and obscure way to handle events that require stricter coordination. There are
-+no API stability guarantees made. Not following the protocol exactly can make
-+the player freeze randomly. Basically, nobody should use this API.
-+.sp
-+There are two special commands involved. Also, the client must listen for
-+client messages (\fBMPV_EVENT_CLIENT_MESSAGE\fP in the C API).
-+.INDENT 0.0
-+.TP
-+.B \fBhook\-add <hook\-name> <id> <priority>\fP
-+Subscribe to the hook identified by the first argument (basically, the
-+name of event). The \fBid\fP argument is an arbitrary integer chosen by the
-+user. \fBpriority\fP is used to sort all hook handlers globally across all
-+clients. Each client can register multiple hook handlers (even for the
-+same hook\-name). Once the hook is registered, it cannot be unregistered.
-+.sp
-+When a specific event happens, all registered handlers are run serially.
-+This uses a protocol every client has to follow explicitly. When a hook
-+handler is run, a client message (\fBMPV_EVENT_CLIENT_MESSAGE\fP) is sent to
-+the client which registered the hook. This message has the following
-+arguments:
-+.INDENT 7.0
-+.IP 1. 3
-+the string \fBhook_run\fP
-+.IP 2. 3
-+the \fBid\fP argument the hook was registered with as string (this can be
-+used to correctly handle multiple hooks registered by the same client,
-+as long as the \fBid\fP argument is unique in the client)
-+.IP 3. 3
-+something undefined, used by the hook mechanism to track hook execution
-+(currently, it\(aqs the hook\-name, but this might change without warning)
-+.UNINDENT
-+.sp
-+Upon receiving this message, the client can handle the event. While doing
-+this, the player core will still react to requests, but playback will
-+typically be stopped.
-+.sp
-+When the client is done, it must continue the core\(aqs hook execution by
-+running the \fBhook\-ack\fP command.
-+.TP
-+.B \fBhook\-ack <string>\fP
-+Run the next hook in the global chain of hooks. The argument is the 3rd
-+argument of the client message that starts hook execution for the
-+current client.
-+.UNINDENT
-+.sp
-+The following hooks are currently defined:
-+.INDENT 0.0
-+.TP
-+.B \fBon_load\fP
-+Called when a file is to be opened, before anything is actually done.
-+For example, you could read and write the \fBstream\-open\-filename\fP
-+property to redirect an URL to something else (consider support for
-+streaming sites which rarely give the user a direct media URL), or
-+you could set per\-file options with by setting the property
-+\fBfile\-local\-options/<option name>\fP\&. The player will wait until all
-+hooks are run.
-+.TP
-+.B \fBon_preloaded\fP
-+Called after a file has been opened, and before tracks are selected and
-+decoders are created. This has some usefulness if an API users wants
-+to select tracks manually, based on the set of available tracks. It\(aqs
-+also useful to initialize \fB\-\-lavfi\-complex\fP in a specific way by API,
-+without having to "probe" the available streams at first.
-+.sp
-+Note that this does not yet apply default track selection. Which operations
-+exactly can be done and not be done, and what information is available and
-+what is not yet available yet, is all subject to change.
-+.TP
-+.B \fBon_unload\fP
-+Run before closing a file, and before actually uninitializing
-+everything. It\(aqs not possible to resume playback in this state.
-+.UNINDENT
-+.SS Input Command Prefixes
-+.sp
-+These prefixes are placed between key name and the actual command. Multiple
-+prefixes can be specified. They are separated by whitespace.
-+.INDENT 0.0
-+.TP
-+.B \fBosd\-auto\fP
-+Use the default behavior for this command. This is the default for
-+\fBinput.conf\fP commands. Some libmpv/scripting/IPC APIs do not use this as
-+default, but use \fBno\-osd\fP instead.
-+.TP
-+.B \fBno\-osd\fP
-+Do not use any OSD for this command.
-+.TP
-+.B \fBosd\-bar\fP
-+If possible, show a bar with this command. Seek commands will show the
-+progress bar, property changing commands may show the newly set value.
-+.TP
-+.B \fBosd\-msg\fP
-+If possible, show an OSD message with this command. Seek command show
-+the current playback time, property changing commands show the newly set
-+value as text.
-+.TP
-+.B \fBosd\-msg\-bar\fP
-+Combine osd\-bar and osd\-msg.
-+.TP
-+.B \fBraw\fP
-+Do not expand properties in string arguments. (Like \fB"${property\-name}"\fP\&.)
-+This is the default for some libmpv/scripting/IPC APIs.
-+.TP
-+.B \fBexpand\-properties\fP
-+All string arguments are expanded as described in \fI\%Property Expansion\fP\&.
-+This is the default for \fBinput.conf\fP commands.
-+.TP
-+.B \fBrepeatable\fP
-+For some commands, keeping a key pressed doesn\(aqt run the command repeatedly.
-+This prefix forces enabling key repeat in any case.
-+.TP
-+.B \fBasync\fP
-+Allow asynchronous execution (if possible). Note that only a few commands
-+will support this (usually this is explicitly documented). Some commands
-+are asynchronous by default (or rather, their effects might manifest
-+after completion of the command). The semantics of this flag might change
-+in the future. Set it only if you don\(aqt rely on the effects of this command
-+being fully realized when it returns.
-+.UNINDENT
-+.sp
-+All of the osd prefixes are still overridden by the global \fB\-\-osd\-level\fP
-+settings.
-+.SS Input Sections
-+.sp
-+Input sections group a set of bindings, and enable or disable them at once.
-+In \fBinput.conf\fP, each key binding is assigned to an input section, rather
-+than actually having explicit text sections.
-+.sp
-+See also: \fBenable\-section\fP and \fBdisable\-section\fP commands.
-+.sp
-+Predefined bindings:
-+.INDENT 0.0
-+.TP
-+.B \fBdefault\fP
-+Bindings without input section are implicitly assigned to this section. It
-+is enabled by default during normal playback.
-+.TP
-+.B \fBencode\fP
-+Section which is active in encoding mode. It is enabled exclusively, so
-+that bindings in the \fBdefault\fP sections are ignored.
-+.UNINDENT
-+.SS Properties
-+.sp
-+Properties are used to set mpv options during runtime, or to query arbitrary
-+information. They can be manipulated with the \fBset\fP/\fBadd\fP/\fBcycle\fP
-+commands, and retrieved with \fBshow\-text\fP, or anything else that uses property
-+expansion. (See \fI\%Property Expansion\fP\&.)
-+.sp
-+The property name is annotated with RW to indicate whether the property is
-+generally writable.
-+.sp
-+If an option is referenced, the property will normally take/return exactly the
-+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 \fBaudio\-speed\-correction\fP, \fBvideo\-speed\-correction\fP
-+Factor multiplied with \fBspeed\fP at which the player attempts to play the
-+file. Usually it\(aqs exactly 1. (Display sync mode will make this useful.)
-+.sp
-+OSD formatting will display it in the form of \fB+1.23456%\fP, with the number
-+being \fB(raw \- 1) * 100\fP for the given raw property value.
-+.TP
-+.B \fBdisplay\-sync\-active\fP
-+Return whether \fB\-\-video\-sync=display\fP is actually active.
-+.TP
-+.B \fBfilename\fP
-+Currently played file, with path stripped. If this is an URL, try to undo
-+percent encoding as well. (The result is not necessarily correct, but
-+looks better for display purposes. Use the \fBpath\fP property to get an
-+unmodified filename.)
-+.sp
-+This has a sub\-property:
-+.INDENT 7.0
-+.TP
-+.B \fBfilename/no\-ext\fP
-+Like the \fBfilename\fP property, but if the text contains a \fB\&.\fP, strip
-+all text after the last \fB\&.\fP\&. Usually this removes the file extension.
-+.UNINDENT
-+.TP
-+.B \fBfile\-size\fP
-+Length in bytes of the source file/stream. (This is the same as
-+\fB${stream\-end}\fP\&. For ordered chapters and such, the
-+size of the currently played segment is returned.)
-+.TP
-+.B \fBestimated\-frame\-count\fP
-+Total number of frames in current file.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This is only an estimate. (It\(aqs computed from two unreliable
-+quantities: fps and stream length.)
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBestimated\-frame\-number\fP
-+Number of current frame in current stream.
-+.sp
-+\fBNOTE:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+This is only an estimate. (It\(aqs computed from two unreliable
-+quantities: fps and possibly rounded timestamps.)
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBpath\fP
-+Full path of the currently played file. Usually this is exactly the same
-+string you pass on the mpv command line or the \fBloadfile\fP command, even
-+if it\(aqs a relative path. If you expect an absolute path, you will have to
-+determine it yourself, for example by using the \fBworking\-directory\fP
-+property.
-+.TP
-+.B \fBmedia\-title\fP
-+If the currently played file has a \fBtitle\fP tag, use that.
-+.sp
-+Otherwise, if the media type is DVD, return the volume ID of DVD.
-+.sp
-+Otherwise, return the \fBfilename\fP property.
-+.TP
-+.B \fBfile\-format\fP
-+Symbolic name of the file format. In some cases, this is a comma\-separated
-+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 \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
-+useless. It looks like this can be different from \fBpath\fP only when
-+using e.g. ordered chapters.)
-+.TP
-+.B \fBstream\-pos\fP
-+Raw byte position in source stream. Technically, this returns the position
-+of the most recent packet passed to a decoder.
-+.TP
-+.B \fBstream\-end\fP
-+Raw end position in bytes in source stream.
-+.TP
-+.B \fBduration\fP
-+Duration of the current file in seconds. If the duration is unknown, the
-+property is unavailable. Note that the file duration is not always exactly
-+known, so this is an estimate.
-+.sp
-+This replaces the \fBlength\fP property, which was deprecated after the
-+mpv 0.9 release. (The semantics are the same.)
-+.TP
-+.B \fBavsync\fP
-+Last A/V synchronization difference. Unavailable if audio or video is
-+disabled.
-+.TP
-+.B \fBtotal\-avsync\-change\fP
-+Total A\-V sync correction done. Unavailable if audio or video is
-+disabled.
-+.TP
-+.B \fBdecoder\-frame\-drop\-count\fP
-+Video frames dropped by decoder, because video is too far behind audio (when
-+using \fB\-\-framedrop=decoder\fP). Sometimes, this may be incremented in other
-+situations, e.g. when video packets are damaged, or the decoder doesn\(aqt
-+follow the usual rules. Unavailable if video is disabled.
-+.sp
-+\fBdrop\-frame\-count\fP is a deprecated alias.
-+.TP
-+.B \fBframe\-drop\-count\fP
-+Frames dropped by VO (when using \fB\-\-framedrop=vo\fP).
-+.sp
-+\fBvo\-drop\-frame\-count\fP is a deprecated alias.
-+.TP
-+.B \fBmistimed\-frame\-count\fP
-+Number of video frames that were not timed correctly in display\-sync mode
-+for the sake of keeping A/V sync. This does not include external
-+circumstances, such as video rendering being too slow or the graphics
-+driver somehow skipping a vsync. It does not include rounding errors either
-+(which can happen especially with bad source timestamps). For example,
-+using the \fBdisplay\-desync\fP mode should never change this value from 0.
-+.TP
-+.B \fBvsync\-ratio\fP
-+For how many vsyncs a frame is displayed on average. This is available if
-+display\-sync is active only. For 30 FPS video on a 60 Hz screen, this will
-+be 2. This is the moving average of what actually has been scheduled, so
-+24 FPS on 60 Hz will never remain exactly on 2.5, but jitter depending on
-+the last frame displayed.
-+.TP
-+.B \fBvo\-delayed\-frame\-count\fP
-+Estimated number of frames delayed due to external circumstances in
-+display\-sync mode. Note that in general, mpv has to guess that this is
-+happening, and the guess can be inaccurate.
-+.TP
-+.B \fBpercent\-pos\fP (RW)
-+Position in current file (0\-100). The advantage over using this instead of
-+calculating it out of other properties is that it properly falls back to
-+estimating the playback position from the byte position, if the file
-+duration is not known.
-+.TP
-+.B \fBtime\-pos\fP (RW)
-+Position in current file in seconds.
-+.TP
-+.B \fBtime\-start\fP
-+Deprecated. Always returns 0. Before mpv 0.14, this used to return the start
-+time of the file (could affect e.g. transport streams). See
-+\fB\-\-rebase\-start\-time\fP option.
-+.TP
-+.B \fBtime\-remaining\fP
-+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
-+.B \fBplayback\-time\fP (RW)
-+Position in current file in seconds. Unlike \fBtime\-pos\fP, the time is
-+clamped to the range of the file. (Inaccurate file durations etc. could
-+make it go out of range. Useful on attempts to seek outside of the file,
-+as the seek target time is considered the current position during seeking.)
-+.TP
-+.B \fBchapter\fP (RW)
-+Current chapter number. The number of the first chapter is 0.
-+.TP
-+.B \fBedition\fP (RW)
-+Current MKV edition number. Setting this property to a different value will
-+restart playback. The number of the first edition is 0.
-+.TP
-+.B \fBdisc\-titles\fP
-+Number of BD/DVD titles.
-+.sp
-+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based edition
-+index.
-+.INDENT 7.0
-+.TP
-+.B \fBdisc\-titles/count\fP
-+Number of titles.
-+.TP
-+.B \fBdisc\-titles/id\fP
-+Title ID as integer. Currently, this is the same as the title index.
-+.TP
-+.B \fBdisc\-titles/length\fP
-+Length in seconds. Can be unavailable in a number of cases (currently
-+it works for libdvdnav only).
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each edition)
-+ "id" MPV_FORMAT_INT64
-+ "length" MPV_FORMAT_DOUBLE
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBdisc\-title\-list\fP
-+List of BD/DVD titles.
-+.TP
-+.B \fBdisc\-title\fP (RW)
-+Current BD/DVD title number. Writing works only for \fBdvdnav://\fP and
-+\fBbd://\fP (and aliases for these).
-+.TP
-+.B \fBchapters\fP
-+Number of chapters.
-+.TP
-+.B \fBeditions\fP
-+Number of MKV editions.
-+.TP
-+.B \fBedition\-list\fP
-+List of editions, current entry marked. Currently, the raw property value
-+is useless.
-+.sp
-+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based edition
-+index.
-+.INDENT 7.0
-+.TP
-+.B \fBedition\-list/count\fP
-+Number of editions. If there are no editions, this can be 0 or 1 (1
-+if there\(aqs a useless dummy edition).
-+.TP
-+.B \fBedition\-list/N/id\fP
-+Edition ID as integer. Use this to set the \fBedition\fP property.
-+Currently, this is the same as the edition index.
-+.TP
-+.B \fBedition\-list/N/default\fP
-+\fByes\fP if this is the default edition, \fBno\fP otherwise.
-+.TP
-+.B \fBedition\-list/N/title\fP
-+Edition title as stored in the file. Not always available.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each edition)
-+ "id" MPV_FORMAT_INT64
-+ "title" MPV_FORMAT_STRING
-+ "default" MPV_FORMAT_FLAG
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBangle\fP (RW)
-+Current DVD angle.
-+.TP
-+.B \fBmetadata\fP
-+Metadata key/value pairs.
-+.sp
-+If the property is accessed with Lua\(aqs \fBmp.get_property_native\fP, this
-+returns a table with metadata keys mapping to metadata values. If it is
-+accessed with the client API, this returns a \fBMPV_FORMAT_NODE_MAP\fP,
-+with tag keys mapping to tag values.
-+.sp
-+For OSD, it returns a formatted list. Trying to retrieve this property as
-+a raw string doesn\(aqt work.
-+.sp
-+This has a number of sub\-properties:
-+.INDENT 7.0
-+.TP
-+.B \fBmetadata/by\-key/<key>\fP
-+Value of metadata entry \fB<key>\fP\&.
-+.TP
-+.B \fBmetadata/list/count\fP
-+Number of metadata entries.
-+.TP
-+.B \fBmetadata/list/N/key\fP
-+Key name of the Nth metadata entry. (The first entry is \fB0\fP).
-+.TP
-+.B \fBmetadata/list/N/value\fP
-+Value of the Nth metadata entry.
-+.TP
-+.B \fBmetadata/<key>\fP
-+Old version of \fBmetadata/by\-key/<key>\fP\&. Use is discouraged, because
-+the metadata key string could conflict with other sub\-properties.
-+.UNINDENT
-+.sp
-+The layout of this property might be subject to change. Suggestions are
-+welcome how exactly this property should work.
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_MAP
-+ (key and string value for each metadata entry)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBfiltered\-metadata\fP
-+Like \fBmetadata\fP, but includes only fields listed in the \fB\-\-display\-tags\fP
-+option. This is the same set of tags that is printed to the terminal.
-+.TP
-+.B \fBchapter\-metadata\fP
-+Metadata of current chapter. Works similar to \fBmetadata\fP property. It
-+also allows the same access methods (using sub\-properties).
-+.sp
-+Per\-chapter metadata is very rare. Usually, only the chapter name
-+(\fBtitle\fP) is set.
-+.sp
-+For accessing other information, like chapter start, see the
-+\fBchapter\-list\fP property.
-+.TP
-+.B \fBvf\-metadata/<filter\-label>\fP
-+Metadata added by video filters. Accessed by the filter label,
-+which, if not explicitly specified using the \fB@filter\-label:\fP syntax,
-+will be \fB<filter\-name>NN\fP\&.
-+.sp
-+Works similar to \fBmetadata\fP property. It allows the same access
-+methods (using sub\-properties).
-+.sp
-+An example of this kind of metadata are the cropping parameters
-+added by \fB\-\-vf=lavfi=cropdetect\fP\&.
-+.TP
-+.B \fBaf\-metadata/<filter\-label>\fP
-+Equivalent to \fBvf\-metadata/<filter\-label>\fP, but for audio filters.
-+.TP
-+.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
-+be different \fBpause\fP in special situations, such as when the player
-+pauses itself due to low network cache.
-+.sp
-+This also returns \fByes\fP if playback is restarting or if nothing is
-+playing at all. In other words, it\(aqs only \fBno\fP if there\(aqs actually
-+video playing. (Behavior since mpv 0.7.0.)
-+.TP
-+.B \fBcache\fP
-+Network cache fill state (0\-100.0).
-+.TP
-+.B \fBcache\-size\fP (RW)
-+Network cache size in KB. This is similar to \fB\-\-cache\fP\&. This allows
-+setting the cache size at runtime. Currently, it\(aqs not possible to enable
-+or disable the cache at runtime using this property, just to resize an
-+existing cache.
-+.sp
-+This does not include the backbuffer size (changed after mpv 0.10.0).
-+.sp
-+Note that this tries to keep the cache contents as far as possible. To make
-+this easier, the cache resizing code will allocate the new cache while the
-+old cache is still allocated.
-+.sp
-+Don\(aqt use this when playing DVD or Blu\-ray.
-+.TP
-+.B \fBcache\-free\fP (R)
-+Total free cache size in KB.
-+.TP
-+.B \fBcache\-used\fP (R)
-+Total used cache size in KB.
-+.TP
-+.B \fBcache\-speed\fP (R)
-+Current I/O read speed between the cache and the lower layer (like network).
-+This gives the number bytes per seconds over a 1 second window (using
-+the type \fBMPV_FORMAT_INT64\fP for the client API).
-+.TP
-+.B \fBcache\-idle\fP (R)
-+Returns \fByes\fP if the cache is idle, which means the cache is filled as
-+much as possible, and is currently not reading more data.
-+.TP
-+.B \fBdemuxer\-cache\-duration\fP
-+Approximate duration of video buffered in the demuxer, in seconds. The
-+guess is very unreliable, and often the property will not be available
-+at all, even if data is buffered.
-+.TP
-+.B \fBdemuxer\-cache\-time\fP
-+Approximate time of video buffered in the demuxer, in seconds. Same as
-+\fBdemuxer\-cache\-duration\fP but returns the last timestamp of buffered
-+data in demuxer.
-+.TP
-+.B \fBdemuxer\-cache\-idle\fP
-+Returns \fByes\fP if the demuxer is idle, which means the demuxer cache is
-+filled to the requested amount, and is currently not reading more data.
-+.TP
-+.B \fBdemuxer\-via\-network\fP
-+Returns \fByes\fP if the stream demuxed via the main demuxer is most likely
-+played via network. What constitutes "network" is not always clear, might
-+be used for other types of untrusted streams, could be wrong in certain
-+cases, and its definition might be changing. Also, external files (like
-+separate audio files or streams) do not influence the value of this
-+property (currently).
-+.TP
-+.B \fBdemuxer\-start\-time\fP (R)
-+Returns the start time reported by the demuxer in fractional seconds.
-+.TP
-+.B \fBpaused\-for\-cache\fP
-+Returns \fByes\fP when playback is paused because of waiting for the cache.
-+.TP
-+.B \fBcache\-buffering\-state\fP
-+Return the percentage (0\-100) of the cache fill status until the player
-+will unpause (related to \fBpaused\-for\-cache\fP).
-+.TP
-+.B \fBeof\-reached\fP
-+Returns \fByes\fP if end of playback was reached, \fBno\fP otherwise. Note
-+that this is usually interesting only if \fB\-\-keep\-open\fP is enabled,
-+since otherwise the player will immediately play the next file (or exit
-+or enter idle mode), and in these cases the \fBeof\-reached\fP property will
-+logically be cleared immediately after it\(aqs set.
-+.TP
-+.B \fBseeking\fP
-+Returns \fByes\fP if the player is currently seeking, or otherwise trying
-+to restart playback. (It\(aqs possible that it returns \fByes\fP while a file
-+is loaded, or when switching ordered chapter segments. This is because
-+the same underlying code is used for seeking and resyncing.)
-+.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 \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
-+control. What this option does depends on the API. For example, on ALSA
-+this usually changes system\-wide audio, while with PulseAudio this controls
-+per\-application volume.
-+.TP
-+.B \fBao\-mute\fP (RW)
-+Similar to \fBao\-volume\fP, but controls the mute state. May be unimplemented
-+even if \fBao\-volume\fP works.
-+.TP
-+.B \fBaudio\-codec\fP
-+Audio codec selected for decoding.
-+.TP
-+.B \fBaudio\-codec\-name\fP
-+Audio codec.
-+.TP
-+.B \fBaudio\-params\fP
-+Audio format as output by the audio decoder.
-+This has a number of sub\-properties:
-+.INDENT 7.0
-+.TP
-+.B \fBaudio\-params/format\fP
-+The sample format as string. This uses the same names as used in other
-+places of mpv.
-+.TP
-+.B \fBaudio\-params/samplerate\fP
-+Samplerate.
-+.TP
-+.B \fBaudio\-params/channels\fP
-+The channel layout as a string. This is similar to what the
-+\fB\-\-audio\-channels\fP accepts.
-+.TP
-+.B \fBaudio\-params/hr\-channels\fP
-+As \fBchannels\fP, but instead of the possibly cryptic actual layout
-+sent to the audio device, return a hopefully more human readable form.
-+(Usually only \fBaudio\-out\-params/hr\-channels\fP makes sense.)
-+.TP
-+.B \fBaudio\-params/channel\-count\fP
-+Number of audio channels. This is redundant to the \fBchannels\fP field
-+described above.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_MAP
-+ "format" MPV_FORMAT_STRING
-+ "samplerate" MPV_FORMAT_INT64
-+ "channels" MPV_FORMAT_STRING
-+ "channel\-count" MPV_FORMAT_INT64
-+ "hr\-channels" MPV_FORMAT_STRING
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBaudio\-out\-params\fP
-+Same as \fBaudio\-params\fP, but the format of the data written to the audio
-+API.
-+.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.
-+.TP
-+.B \fBcolormatrix\-input\-range\fP (R)
-+See \fBcolormatrix\fP\&.
-+.TP
-+.B \fBcolormatrix\-primaries\fP (R)
-+See \fBcolormatrix\fP\&.
-+.TP
-+.B \fBhwdec\fP (RW)
-+Reflects the \fB\-\-hwdec\fP option.
-+.sp
-+Writing to it may change the currently used hardware decoder, if possible.
-+(Internally, the player may reinitialize the decoder, and will perform a
-+seek to refresh the video properly.) You can watch the other hwdec
-+properties to see whether this was successful.
-+.sp
-+Unlike in mpv 0.9.x and before, this does not return the currently active
-+hardware decoder. Since mpv 0.18.0, \fBhwdec\-current\fP is available for
-+this purpose.
-+.TP
-+.B \fBhwdec\-current\fP
-+Return the current hardware decoding in use. If decoding is active, return
-+one of the values used by the \fBhwdec\fP option/property. \fBno\fP indicates
-+software decoding. If no decoder is loaded, the property is unavailable.
-+.TP
-+.B \fBhwdec\-interop\fP
-+This returns the currently loaded hardware decoding/output interop driver.
-+This is known only once the VO has opened (and possibly later). With some
-+VOs (like \fBopengl\fP), this might be never known in advance, but only when
-+the decoder attempted to create the hw decoder successfully. (Using
-+\fB\-\-opengl\-hwdec\-interop\fP can load it eagerly.) If there are multiple
-+drivers loaded, they will be separated by \fB,\fP\&.
-+.sp
-+If no VO is active or no interop driver is known, this property is
-+unavailable.
-+.sp
-+This does not necessarily use the same values as \fBhwdec\fP\&. There can be
-+multiple interop drivers for the same hardware decoder, depending on
-+platform and VO.
-+.sp
-+This is somewhat similar to the \fB\-\-opengl\-hwdec\-interop\fP option, but
-+it returns the actually loaded backend, not the value of this option.
-+.TP
-+.B \fBvideo\-format\fP
-+Video format as string.
-+.TP
-+.B \fBvideo\-codec\fP
-+Video codec selected for decoding.
-+.TP
-+.B \fBwidth\fP, \fBheight\fP
-+Video size. This uses the size of the video as decoded, or if no video
-+frame has been decoded yet, the (possibly incorrect) container indicated
-+size.
-+.TP
-+.B \fBvideo\-params\fP
-+Video parameters, as output by the decoder (with overrides like aspect
-+etc. applied). This has a number of sub\-properties:
-+.INDENT 7.0
-+.TP
-+.B \fBvideo\-params/pixelformat\fP
-+The pixel format as string. This uses the same names as used in other
-+places of mpv.
-+.TP
-+.B \fBvideo\-params/average\-bpp\fP
-+Average bits\-per\-pixel as integer. Subsampled planar formats use a
-+different resolution, which is the reason this value can sometimes be
-+odd or confusing. Can be unavailable with some formats.
-+.TP
-+.B \fBvideo\-params/plane\-depth\fP
-+Bit depth for each color component as integer. This is only exposed
-+for planar or single\-component formats, and is unavailable for other
-+formats.
-+.TP
-+.B \fBvideo\-params/w\fP, \fBvideo\-params/h\fP
-+Video size as integers, with no aspect correction applied.
-+.TP
-+.B \fBvideo\-params/dw\fP, \fBvideo\-params/dh\fP
-+Video size as integers, scaled for correct aspect ratio.
-+.TP
-+.B \fBvideo\-params/aspect\fP
-+Display aspect ratio as float.
-+.TP
-+.B \fBvideo\-params/par\fP
-+Pixel aspect ratio.
-+.TP
-+.B \fBvideo\-params/colormatrix\fP
-+The colormatrix in use as string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/colorlevels\fP
-+The colorlevels as string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/primaries\fP
-+The primaries in use as string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/gamma\fP
-+The gamma function in use as string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/sig\-peak\fP
-+The video file\(aqs tagged signal peak as float.
-+.TP
-+.B \fBvideo\-params/light\fP
-+The light type in use as a string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/chroma\-location\fP
-+Chroma location as string. (Exact values subject to change.)
-+.TP
-+.B \fBvideo\-params/rotate\fP
-+Intended display rotation in degrees (clockwise).
-+.TP
-+.B \fBvideo\-params/stereo\-in\fP
-+Source file stereo 3D mode. (See \fB\-\-video\-stereo\-mode\fP option.)
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_MAP
-+ "pixelformat" MPV_FORMAT_STRING
-+ "w" MPV_FORMAT_INT64
-+ "h" MPV_FORMAT_INT64
-+ "dw" MPV_FORMAT_INT64
-+ "dh" MPV_FORMAT_INT64
-+ "aspect" MPV_FORMAT_DOUBLE
-+ "par" MPV_FORMAT_DOUBLE
-+ "colormatrix" MPV_FORMAT_STRING
-+ "colorlevels" MPV_FORMAT_STRING
-+ "primaries" MPV_FORMAT_STRING
-+ "gamma" MPV_FORMAT_STRING
-+ "sig\-peak" MPV_FORMAT_DOUBLE
-+ "light" MPV_FORMAT_STRING
-+ "chroma\-location" MPV_FORMAT_STRING
-+ "rotate" MPV_FORMAT_INT64
-+ "stereo\-in" MPV_FORMAT_STRING
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBdwidth\fP, \fBdheight\fP
-+Video display size. This is the video size after filters and aspect scaling
-+have been applied. The actual video window size can still be different
-+from this, e.g. if the user resized the video window manually.
-+.sp
-+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
-+\fBvideo\-params\fP\&. Note that this is still not necessarily what the video
-+window uses, since the user can change the window size, and all real VOs
-+do their own scaling independently from the filter chain.
-+.sp
-+Has the same sub\-properties as \fBvideo\-params\fP\&.
-+.TP
-+.B \fBvideo\-frame\-info\fP
-+Approximate information of the current frame. Note that if any of these
-+are used on OSD, the information might be off by a few frames due to OSD
-+redrawing and frame display being somewhat disconnected, and you might
-+have to pause and force a redraw.
-+.sp
-+Sub\-properties:
-+.sp
-+\fBvideo\-frame\-info/picture\-type\fP
-+\fBvideo\-frame\-info/interlaced\fP
-+\fBvideo\-frame\-info/tff\fP
-+\fBvideo\-frame\-info/repeat\fP
-+.TP
-+.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
-+are used, this corresponds to decoder output.) This uses the average of
-+the 10 past frame durations to calculate the FPS. It will be inaccurate
-+if frame\-dropping is involved (such as when framedrop is explicitly
-+enabled, or after precise seeking). Files with imprecise timestamps (such
-+as Matroska) might lead to unstable results.
-+.TP
-+.B \fBwindow\-scale\fP (RW)
-+Window size multiplier. Setting this will resize the video window to the
-+values contained in \fBdwidth\fP and \fBdheight\fP multiplied with the value
-+set with this property. Setting \fB1\fP will resize to original video size
-+(or to be exact, the size the video filters output). \fB2\fP will set the
-+double size, \fB0.5\fP halves the size.
-+.TP
-+.B \fBwindow\-minimized\fP
-+Return whether the video window is minimized or not.
-+.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.). 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
-+of any display covered by the video, as retrieved by the underlying system
-+APIs (e.g. xrandr on X11). It is not the measured FPS. It\(aqs not necessarily
-+available on all platforms. Note that any of the listed facts may change
-+any time without a warning.
-+.TP
-+.B \fBestimated\-display\-fps\fP
-+Only available if display\-sync mode (as selected by \fB\-\-video\-sync\fP) is
-+active. Returns the actual rate at which display refreshes seem to occur,
-+measured by system time.
-+.TP
-+.B \fBvsync\-jitter\fP
-+Estimated deviation factor of the vsync duration.
-+.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
-+\fBoverlay\-add\fP command. It gives you the actual OSD size, which can be
-+different from the window size in some cases.
-+.TP
-+.B \fBosd\-par\fP
-+Last known OSD display pixel aspect (can be 0).
-+.TP
-+.B \fBprogram\fP (W)
-+Switch TS program (write\-only).
-+.TP
-+.B \fBdvb\-channel\fP (W)
-+Pair of integers: card,channel of current DVB stream.
-+Can be switched to switch to another channel on the same card.
-+.TP
-+.B \fBdvb\-channel\-name\fP (RW)
-+Name of current DVB program.
-+On write, a channel\-switch to the named channel on the same
-+card is performed. Can also be used for channel switching.
-+.TP
-+.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 \fBtv\-brightness\fP, \fBtv\-contrast\fP, \fBtv\-saturation\fP, \fBtv\-hue\fP (RW)
-+TV stuff.
-+.TP
-+.B \fBplaylist\-pos\fP (RW)
-+Current position on playlist. The first entry is on position 0. Writing
-+to the property will restart playback at the written entry.
-+.TP
-+.B \fBplaylist\-pos\-1\fP (RW)
-+Same as \fBplaylist\-pos\fP, but 1\-based.
-+.TP
-+.B \fBplaylist\-count\fP
-+Number of total playlist entries.
-+.TP
-+.B \fBplaylist\fP
-+Playlist, current entry marked. Currently, the raw property value is
-+useless.
-+.sp
-+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based playlist
-+entry index.
-+.INDENT 7.0
-+.TP
-+.B \fBplaylist/count\fP
-+Number of playlist entries (same as \fBplaylist\-count\fP).
-+.TP
-+.B \fBplaylist/N/filename\fP
-+Filename of the Nth entry.
-+.TP
-+.B \fBplaylist/N/current\fP, \fBplaylist/N/playing\fP
-+\fByes\fP if this entry is currently playing (or being loaded).
-+Unavailable or \fBno\fP otherwise. When changing files, \fBcurrent\fP and
-+\fBplaying\fP can be different, because the currently playing file hasn\(aqt
-+been unloaded yet; in this case, \fBcurrent\fP refers to the new
-+selection. (Since mpv 0.7.0.)
-+.TP
-+.B \fBplaylist/N/title\fP
-+Name of the Nth entry. Only available if the playlist file contains
-+such fields, and only if mpv\(aqs parser supports it for the given
-+playlist format.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each playlist entry)
-+ "filename" MPV_FORMAT_STRING
-+ "current" MPV_FORMAT_FLAG (might be missing; since mpv 0.7.0)
-+ "playing" MPV_FORMAT_FLAG (same)
-+ "title" MPV_FORMAT_STRING (optional)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBtrack\-list\fP
-+List of audio/video/sub tracks, current entry marked. Currently, the raw
-+property value is useless.
-+.sp
-+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based track
-+index.
-+.INDENT 7.0
-+.TP
-+.B \fBtrack\-list/count\fP
-+Total number of tracks.
-+.TP
-+.B \fBtrack\-list/N/id\fP
-+The ID as it\(aqs used for \fB\-sid\fP/\fB\-\-aid\fP/\fB\-\-vid\fP\&. This is unique
-+within tracks of the same type (sub/audio/video), but otherwise not.
-+.TP
-+.B \fBtrack\-list/N/type\fP
-+String describing the media type. One of \fBaudio\fP, \fBvideo\fP, \fBsub\fP\&.
-+.TP
-+.B \fBtrack\-list/N/src\-id\fP
-+Track ID as used in the source file. Not always available.
-+.TP
-+.B \fBtrack\-list/N/title\fP
-+Track title as it is stored in the file. Not always available.
-+.TP
-+.B \fBtrack\-list/N/lang\fP
-+Track language as identified by the file. Not always available.
-+.TP
-+.B \fBtrack\-list/N/albumart\fP
-+\fByes\fP if this is a video track that consists of a single picture,
-+\fBno\fP or unavailable otherwise. This is used for video tracks that are
-+really attached pictures in audio files.
-+.TP
-+.B \fBtrack\-list/N/default\fP
-+\fByes\fP if the track has the default flag set in the file, \fBno\fP
-+otherwise.
-+.TP
-+.B \fBtrack\-list/N/forced\fP
-+\fByes\fP if the track has the forced flag set in the file, \fBno\fP
-+otherwise.
-+.TP
-+.B \fBtrack\-list/N/codec\fP
-+The codec name used by this track, for example \fBh264\fP\&. Unavailable
-+in some rare cases.
-+.TP
-+.B \fBtrack\-list/N/external\fP
-+\fByes\fP if the track is an external file, \fBno\fP otherwise. This is
-+set for separate subtitle files.
-+.TP
-+.B \fBtrack\-list/N/external\-filename\fP
-+The filename if the track is from an external file, unavailable
-+otherwise.
-+.TP
-+.B \fBtrack\-list/N/selected\fP
-+\fByes\fP if the track is currently decoded, \fBno\fP otherwise.
-+.TP
-+.B \fBtrack\-list/N/ff\-index\fP
-+The stream index as usually used by the FFmpeg utilities. Note that
-+this can be potentially wrong if a demuxer other than libavformat
-+(\fB\-\-demuxer=lavf\fP) is used. For mkv files, the index will usually
-+match even if the default (builtin) demuxer is used, but there is
-+no hard guarantee.
-+.TP
-+.B \fBtrack\-list/N/decoder\-desc\fP
-+If this track is being decoded, the human\-readable decoder name,
-+.TP
-+.B \fBtrack\-list/N/demux\-w\fP, \fBtrack\-list/N/demux\-h\fP
-+Video size hint as indicated by the container. (Not always accurate.)
-+.TP
-+.B \fBtrack\-list/N/demux\-channel\-count\fP
-+Number of audio channels as indicated by the container. (Not always
-+accurate \- in particular, the track could be decoded as a different
-+number of channels.)
-+.TP
-+.B \fBtrack\-list/N/demux\-channels\fP
-+Channel layout as indicated by the container. (Not always accurate.)
-+.TP
-+.B \fBtrack\-list/N/demux\-samplerate\fP
-+Audio sample rate as indicated by the container. (Not always accurate.)
-+.TP
-+.B \fBtrack\-list/N/demux\-fps\fP
-+Video FPS as indicated by the container. (Not always accurate.)
-+.TP
-+.B \fBtrack\-list/N/audio\-channels\fP (deprecated)
-+Deprecated alias for \fBtrack\-list/N/demux\-channel\-count\fP\&.
-+.TP
-+.B \fBtrack\-list/N/replaygain\-track\-peak\fP, \fBtrack\-list/N/replaygain\-track\-gain\fP
-+Per\-track replaygain values. Only available for audio tracks with
-+corresponding information stored in the source file.
-+.TP
-+.B \fBtrack\-list/N/replaygain\-album\-peak\fP, \fBtrack\-list/N/replaygain\-album\-gain\fP
-+Per\-album replaygain values. If the file has per\-track but no per\-album
-+information, the per\-album values will be copied from the per\-track
-+values currently. It\(aqs possible that future mpv versions will make
-+these properties unavailable instead in this case.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each track)
-+ "id" MPV_FORMAT_INT64
-+ "type" MPV_FORMAT_STRING
-+ "src\-id" MPV_FORMAT_INT64
-+ "title" MPV_FORMAT_STRING
-+ "lang" MPV_FORMAT_STRING
-+ "albumart" MPV_FORMAT_FLAG
-+ "default" MPV_FORMAT_FLAG
-+ "forced" MPV_FORMAT_FLAG
-+ "selected" MPV_FORMAT_FLAG
-+ "external" MPV_FORMAT_FLAG
-+ "external\-filename" MPV_FORMAT_STRING
-+ "codec" MPV_FORMAT_STRING
-+ "ff\-index" MPV_FORMAT_INT64
-+ "decoder\-desc" MPV_FORMAT_STRING
-+ "demux\-w" MPV_FORMAT_INT64
-+ "demux\-h" MPV_FORMAT_INT64
-+ "demux\-channel\-count" MPV_FORMAT_INT64
-+ "demux\-channels" MPV_FORMAT_STRING
-+ "demux\-samplerate" MPV_FORMAT_INT64
-+ "demux\-fps" MPV_FORMAT_DOUBLE
-+ "audio\-channels" MPV_FORMAT_INT64
-+ "replaygain\-track\-peak" MPV_FORMAT_DOUBLE
-+ "replaygain\-track\-gain" MPV_FORMAT_DOUBLE
-+ "replaygain\-album\-peak" MPV_FORMAT_DOUBLE
-+ "replaygain\-album\-gain" MPV_FORMAT_DOUBLE
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBchapter\-list\fP
-+List of chapters, current entry marked. Currently, the raw property value
-+is useless.
-+.sp
-+This has a number of sub\-properties. Replace \fBN\fP with the 0\-based chapter
-+index.
-+.INDENT 7.0
-+.TP
-+.B \fBchapter\-list/count\fP
-+Number of chapters.
-+.TP
-+.B \fBchapter\-list/N/title\fP
-+Chapter title as stored in the file. Not always available.
-+.TP
-+.B \fBchapter\-list/N/time\fP
-+Chapter start time in seconds as float.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each chapter)
-+ "title" MPV_FORMAT_STRING
-+ "time" MPV_FORMAT_DOUBLE
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each filter entry)
-+ "name" MPV_FORMAT_STRING
-+ "label" MPV_FORMAT_STRING [optional]
-+ "enabled" MPV_FORMAT_FLAG [optional]
-+ "params" MPV_FORMAT_NODE_MAP [optional]
-+ "key" MPV_FORMAT_STRING
-+ "value" MPV_FORMAT_STRING
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+It\(aqs also possible to write the property using this format.
-+.TP
-+.B \fBseekable\fP
-+Return whether it\(aqs generally possible to seek in the current file.
-+.TP
-+.B \fBpartially\-seekable\fP
-+Return \fByes\fP if the current file is considered seekable, but only because
-+the cache is active. This means small relative seeks may be fine, but larger
-+seeks may fail anyway. Whether a seek will succeed or not is generally not
-+known in advance.
-+.sp
-+If this property returns true, \fBseekable\fP will also return true.
-+.TP
-+.B \fBplayback\-abort\fP
-+Return whether playback is stopped or is to be stopped. (Useful in obscure
-+situations like during \fBon_load\fP hook processing, when the user can
-+stop playback, but the script has to explicitly end processing.)
-+.TP
-+.B \fBcursor\-autohide\fP (RW)
-+See \fB\-\-cursor\-autohide\fP\&. Setting this to a new value will always update
-+the cursor, and reset the internal timer.
-+.TP
-+.B \fBosd\-sym\-cc\fP
-+Inserts the current OSD symbol as opaque OSD control code (cc). This makes
-+sense only with the \fBshow\-text\fP command or options which set OSD messages.
-+The control code is implementation specific and is useless for anything else.
-+.TP
-+.B \fBosd\-ass\-cc\fP
-+\fB${osd\-ass\-cc/0}\fP disables escaping ASS sequences of text in OSD,
-+\fB${osd\-ass\-cc/1}\fP enables it again. By default, ASS sequences are
-+escaped to avoid accidental formatting, and this property can disable
-+this behavior. Note that the properties return an opaque OSD control
-+code, which only makes sense for the \fBshow\-text\fP command or options
-+which set OSD messages.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\-\-osd\-status\-msg=\(aqThis is ${osd\-ass\-cc/0}{\e\eb1}bold text\(aq\fP
-+.IP \(bu 2
-+\fBshow\-text "This is ${osd\-ass\-cc/0}{\eb1}bold text"\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Any ASS override tags as understood by libass can be used.
-+.sp
-+Note that you need to escape the \fB\e\fP character, because the string is
-+processed for C escape sequences before passing it to the OSD code.
-+.sp
-+A list of tags can be found here: \fI\%http://docs.aegisub.org/latest/ASS_Tags/\fP
-+.TP
-+.B \fBvo\-configured\fP
-+Return whether the VO is configured right now. Usually this corresponds to
-+whether the video window is visible. If the \fB\-\-force\-window\fP option is
-+used, this is usually always returns \fByes\fP\&.
-+.TP
-+.B \fBvo\-passes\fP
-+Contains introspection about the VO\(aqs active render passes and their
-+execution times. Not implemented by all VOs.
-+.sp
-+This is further subdivided into two frame types, \fBvo\-passes/fresh\fP for
-+fresh frames (which have to be uploaded, scaled, etc.) and
-+\fBvo\-passes/redraw\fP for redrawn frames (which only have to be re\-painted).
-+The number of passes for any given subtype can change from frame to frame,
-+and should not be relied upon.
-+.sp
-+Each frame type has a number of further sub\-properties. Replace \fBTYPE\fP
-+with the frame type, \fBN\fP with the 0\-based pass index, and \fBM\fP with the
-+0\-based sample index.
-+.INDENT 7.0
-+.TP
-+.B \fBvo\-passes/TYPE/count\fP
-+Number of passes.
-+.TP
-+.B \fBvo\-passes/TYPE/N/desc\fP
-+Human\-friendy description of the pass.
-+.TP
-+.B \fBvo\-passes/TYPE/N/last\fP
-+Last measured execution time, in nanoseconds.
-+.TP
-+.B \fBvo\-passes/TYPE/N/avg\fP
-+Average execution time of this pass, in nanoseconds. The exact
-+timeframe varies, but it should generally be a handful of seconds.
-+.TP
-+.B \fBvo\-passes/TYPE/N/peak\fP
-+The peak execution time (highest value) within this averaging range, in
-+nanoseconds.
-+.TP
-+.B \fBvo\-passes/TYPE/N/count\fP
-+The number of samples for this pass.
-+.TP
-+.B \fBvo\-passes/TYPE/N/samples/M\fP
-+The raw execution time of a specific sample for this pass, in
-+nanoseconds.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_MAP
-+"TYPE" MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP
-+ "desc" MPV_FORMAT_STRING
-+ "last" MPV_FORMAT_INT64
-+ "avg" MPV_FORMAT_INT64
-+ "peak" MPV_FORMAT_INT64
-+ "count" MPV_FORMAT_INT64
-+ "samples" MPV_FORMAT_NODE_ARRAY
-+ MP_FORMAT_INT64
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Note that directly accessing this structure via subkeys is not supported,
-+the only access is through aforementioned \fBMPV_FORMAT_NODE\fP\&.
-+.TP
-+.B \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP, \fBsub\-bitrate\fP
-+Bitrate values calculated on the packet level. This works by dividing the
-+bit size of all packets between two keyframes by their presentation
-+timestamp distance. (This uses the timestamps are stored in the file, so
-+e.g. playback speed does not influence the returned values.) In particular,
-+the video bitrate will update only per keyframe, and show the "past"
-+bitrate. To make the property more UI friendly, updates to these properties
-+are throttled in a certain way.
-+.sp
-+The unit is bits per second. OSD formatting turns these values in kilobits
-+(or megabits, if appropriate), which can be prevented by using the
-+raw property value, e.g. with \fB${=video\-bitrate}\fP\&.
-+.sp
-+Note that the accuracy of these properties is influenced by a few factors.
-+If the underlying demuxer rewrites the packets on demuxing (done for some
-+file formats), the bitrate might be slightly off. If timestamps are bad
-+or jittery (like in Matroska), even constant bitrate streams might show
-+fluctuating bitrate.
-+.sp
-+How exactly these values are calculated might change in the future.
-+.sp
-+In earlier versions of mpv, these properties returned a static (but bad)
-+guess using a completely different method.
-+.TP
-+.B \fBpacket\-video\-bitrate\fP, \fBpacket\-audio\-bitrate\fP, \fBpacket\-sub\-bitrate\fP
-+Old and deprecated properties for \fBvideo\-bitrate\fP, \fBaudio\-bitrate\fP,
-+\fBsub\-bitrate\fP\&. They behave exactly the same, but return a value in
-+kilobits. Also, they don\(aqt have any OSD formatting, though the same can be
-+achieved with e.g. \fB${=video\-bitrate}\fP\&.
-+.sp
-+These properties shouldn\(aqt be used anymore.
-+.TP
-+.B \fBaudio\-device\-list\fP
-+Return the list of discovered audio devices. This is mostly for use with
-+the client API, and reflects what \fB\-\-audio\-device=help\fP with the command
-+line player returns.
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each device entry)
-+ "name" MPV_FORMAT_STRING
-+ "description" MPV_FORMAT_STRING
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The \fBname\fP is what is to be passed to the \fB\-\-audio\-device\fP option (and
-+often a rather cryptic audio API\-specific ID), while \fBdescription\fP is
-+human readable free form text. The description is set to the device name
-+(minus mpv\-specific \fB<driver>/\fP prefix) if no description is available
-+or the description would have been an empty string.
-+.sp
-+The special entry with the name set to \fBauto\fP selects the default audio
-+output driver and the default device.
-+.sp
-+The property can be watched with the property observation mechanism in
-+the client API and in Lua scripts. (Technically, change notification is
-+enabled the first time this property is read.)
-+.TP
-+.B \fBaudio\-device\fP (RW)
-+Set the audio device. This directly reads/writes the \fB\-\-audio\-device\fP
-+option, but on write accesses, the audio output will be scheduled for
-+reloading.
-+.sp
-+Writing this property while no audio output is active will not automatically
-+enable audio. (This is also true in the case when audio was disabled due to
-+reinitialization failure after a previous write access to \fBaudio\-device\fP\&.)
-+.sp
-+This property also doesn\(aqt tell you which audio device is actually in use.
-+.sp
-+How these details are handled may change in the future.
-+.TP
-+.B \fBcurrent\-vo\fP
-+Current video output driver (name as used with \fB\-\-vo\fP).
-+.TP
-+.B \fBcurrent\-ao\fP
-+Current audio output driver (name as used with \fB\-\-ao\fP).
-+.TP
-+.B \fBaudio\-out\-detected\-device\fP
-+Return the audio device selected by the AO driver (only implemented for
-+some drivers: currently only \fBcoreaudio\fP).
-+.TP
-+.B \fBworking\-directory\fP
-+Return the working directory of the mpv process. Can be useful for JSON IPC
-+users, because the command line player usually works with relative paths.
-+.TP
-+.B \fBprotocol\-list\fP
-+List of protocol prefixes potentially recognized by the player. They are
-+returned without trailing \fB://\fP suffix (which is still always required).
-+In some cases, the protocol will not actually be supported (consider
-+\fBhttps\fP if ffmpeg is not compiled with TLS support).
-+.TP
-+.B \fBdecoder\-list\fP
-+List of decoders supported. This lists decoders which can be passed to
-+\fB\-\-vd\fP and \fB\-\-ad\fP\&.
-+.INDENT 7.0
-+.TP
-+.B \fBfamily\fP
-+Decoder driver. Usually \fBlavc\fP for libavcodec.
-+.TP
-+.B \fBcodec\fP
-+Canonical codec name, which identifies the format the decoder can
-+handle.
-+.TP
-+.B \fBdriver\fP
-+The name of the decoder itself. Often, this is the same as \fBcodec\fP\&.
-+Sometimes it can be different. It is used to distinguish multiple
-+decoders for the same codec.
-+.TP
-+.B \fBdescription\fP
-+Human readable description of the decoder and codec.
-+.UNINDENT
-+.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
-+the following contents:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+MPV_FORMAT_NODE_ARRAY
-+ MPV_FORMAT_NODE_MAP (for each decoder entry)
-+ "family" MPV_FORMAT_STRING
-+ "codec" MPV_FORMAT_STRING
-+ "driver" MPV_FORMAT_STRING
-+ "description" MPV_FORMAT_STRING
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBencoder\-list\fP
-+List of libavcodec encoders. This has the same format as \fBdecoder\-list\fP\&.
-+The encoder names (\fBdriver\fP entries) can be passed to \fB\-\-ovc\fP and
-+\fB\-\-oac\fP (without the \fBlavc:\fP prefix required by \fB\-\-vd\fP and \fB\-\-ad\fP).
-+.TP
-+.B \fBmpv\-version\fP
-+Return the mpv version/copyright string. Depending on how the binary was
-+built, it might contain either a release version, or just a git hash.
-+.TP
-+.B \fBmpv\-configuration\fP
-+Return the configuration arguments which were passed to the build system
-+(typically the way \fB\&./waf configure ...\fP was invoked).
-+.TP
-+.B \fBffmpeg\-version\fP
-+Return the contents of the \fBav_version_info()\fP API call. This is a string
-+which identifies the build in some way, either through a release version
-+number, or a git hash. This applies to Libav as well (the property is
-+still named the same.) This property is unavailable if mpv is linked against
-+older FFmpeg and Libav versions.
-+.TP
-+.B \fBoptions/<name>\fP (RW)
-+Read\-only access to value of option \fB\-\-<name>\fP\&. Most options can be
-+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
-+property, the option is reset to its old value once the current file has
-+stopped playing. Trying to write an option while no file is playing (or
-+is being loaded) results in an error.
-+.sp
-+(Note that if an option is marked as file\-local, even \fBoptions/\fP will
-+access the local value, and the \fBold\fP value, which will be restored on
-+end of playback, cannot be read or written until end of playback.)
-+.TP
-+.B \fBoption\-info/<name>\fP
-+Additional per\-option information.
-+.sp
-+This has a number of sub\-properties. Replace \fB<name>\fP with the name of
-+a top\-level option. No guarantee of stability is given to any of these
-+sub\-properties \- they may change radically in the feature.
-+.INDENT 7.0
-+.TP
-+.B \fBoption\-info/<name>/name\fP
-+Returns the name of the option.
-+.TP
-+.B \fBoption\-info/<name>/type\fP
-+Return the name of the option type, like \fBString\fP or \fBInteger\fP\&.
-+For many complex types, this isn\(aqt very accurate.
-+.TP
-+.B \fBoption\-info/<name>/set\-from\-commandline\fP
-+Return \fByes\fP if the option was set from the mpv command line,
-+\fBno\fP otherwise. What this is set to if the option is e.g. changed
-+at runtime is left undefined (meaning it could change in the future).
-+.TP
-+.B \fBoption\-info/<name>/set\-locally\fP
-+Return \fByes\fP if the option was set per\-file. This is the case with
-+automatically loaded profiles, file\-dir configs, and other cases. It
-+means the option value will be restored to the value before playback
-+start when playback ends.
-+.TP
-+.B \fBoption\-info/<name>/default\-value\fP
-+The default value of the option. May not always be available.
-+.TP
-+.B \fBoption\-info/<name>/min\fP, \fBoption\-info/<name>/max\fP
-+Integer minimum and maximum values allowed for the option. Only
-+available if the options are numeric, and the minimum/maximum has been
-+set internally. It\(aqs also possible that only one of these is set.
-+.TP
-+.B \fBoption\-info/<name>/choices\fP
-+If the option is a choice option, the possible choices. Choices that
-+are integers may or may not be included (they can be implied by \fBmin\fP
-+and \fBmax\fP). Note that options which behave like choice options, but
-+are not actual choice options internally, may not have this info
-+available.
-+.UNINDENT
-+.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 \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 \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 \fBplaylist\-pos\fP, \fBchapter\fP
-+These properties behave different from the deprecated options with the same
-+names.
-+.TP
-+.B \fBprofile\fP, \fBinclude\fP
-+These are write\-only, and will perform actions as they are written to,
-+exactly as if they were used on the mpv CLI commandline. Their only use is
-+when using libmpv before \fBmpv_initialize()\fP, which in turn is probably
-+only useful in encoding mode. Normal libmpv users should use other
-+mechanisms, such as the \fBapply\-profile\fP command, and the
-+\fBmpv_load_config_file\fP API function. Avoid these properties.
-+.UNINDENT
-+.SS Property Expansion
-+.sp
-+All string arguments to input commands as well as certain options (like
-+\fB\-\-term\-playing\-msg\fP) are subject to property expansion. Note that property
-+expansion does not work in places where e.g. numeric parameters are expected.
-+(For example, the \fBadd\fP command does not do property expansion. The \fBset\fP
-+command is an exception and not a general rule.)
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Example for input.conf"
-+.INDENT 0.0
-+.TP
-+.B \fBi show\-text "Filename: ${filename}"\fP
-+shows the filename of the current file when pressing the \fBi\fP key
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Within \fBinput.conf\fP, property expansion can be inhibited by putting the
-+\fBraw\fP prefix in front of commands.
-+.sp
-+The following expansions are supported:
-+.INDENT 0.0
-+.TP
-+.B \fB${NAME}\fP
-+Expands to the value of the property \fBNAME\fP\&. If retrieving the property
-+fails, expand to an error string. (Use \fB${NAME:}\fP with a trailing
-+\fB:\fP to expand to an empty string instead.)
-+If \fBNAME\fP is prefixed with \fB=\fP, expand to the raw value of the property
-+(see section below).
-+.TP
-+.B \fB${NAME:STR}\fP
-+Expands to the value of the property \fBNAME\fP, or \fBSTR\fP if the
-+property cannot be retrieved. \fBSTR\fP is expanded recursively.
-+.TP
-+.B \fB${?NAME:STR}\fP
-+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP is available.
-+.TP
-+.B \fB${!NAME:STR}\fP
-+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP cannot be
-+retrieved.
-+.TP
-+.B \fB${?NAME==VALUE:STR}\fP
-+Expands to \fBSTR\fP (recursively) if the property \fBNAME\fP expands to a
-+string equal to \fBVALUE\fP\&. You can prefix \fBNAME\fP with \fB=\fP in order to
-+compare the raw value of a property (see section below). If the property
-+is unavailable, or other errors happen when retrieving it, the value is
-+never considered equal.
-+Note that \fBVALUE\fP can\(aqt contain any of the characters \fB:\fP or \fB}\fP\&.
-+Also, it is possible that escaping with \fB"\fP or \fB%\fP might be added in
-+the future, should the need arise.
-+.TP
-+.B \fB${!NAME==VALUE:STR}\fP
-+Same as with the \fB?\fP variant, but \fBSTR\fP is expanded if the value is
-+not equal. (Using the same semantics as with \fB?\fP\&.)
-+.TP
-+.B \fB$$\fP
-+Expands to \fB$\fP\&.
-+.TP
-+.B \fB$}\fP
-+Expands to \fB}\fP\&. (To produce this character inside recursive
-+expansion.)
-+.TP
-+.B \fB$>\fP
-+Disable property expansion and special handling of \fB$\fP for the rest
-+of the string.
-+.UNINDENT
-+.sp
-+In places where property expansion is allowed, C\-style escapes are often
-+accepted as well. Example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB\en\fP becomes a newline character
-+.IP \(bu 2
-+\fB\e\e\fP expands to \fB\e\fP
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.SS Raw and Formatted Properties
-+.sp
-+Normally, properties are formatted as human\-readable text, meant to be
-+displayed on OSD or on the terminal. It is possible to retrieve an unformatted
-+(raw) value from a property by prefixing its name with \fB=\fP\&. These raw values
-+can be parsed by other programs and follow the same conventions as the options
-+associated with the properties.
-+.INDENT 0.0
-+.INDENT 3.5
-+.IP "Examples"
-+.INDENT 0.0
-+.IP \(bu 2
-+\fB${time\-pos}\fP expands to \fB00:14:23\fP (if playback position is at 14
-+minutes 23 seconds)
-+.IP \(bu 2
-+\fB${=time\-pos}\fP expands to \fB863.4\fP (same time, plus 400 milliseconds \-
-+milliseconds are normally not shown in the formatted case)
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Sometimes, the difference in amount of information carried by raw and formatted
-+property values can be rather big. In some cases, raw values have more
-+information, like higher precision than seconds with \fBtime\-pos\fP\&. Sometimes
-+it is the other way around, e.g. \fBaid\fP shows track title and language in the
-+formatted case, but only the track number if it is raw.
-+.SH ON SCREEN CONTROLLER
-+.sp
-+The On Screen Controller (short: OSC) is a minimal GUI integrated with mpv to
-+offer basic mouse\-controllability. It is intended to make interaction easier
-+for new users and to enable precise and direct seeking.
-+.sp
-+The OSC is enabled by default if mpv was compiled with Lua support. It can be
-+disabled entirely using the \fB\-\-osc=no\fP option.
-+.SS Using the OSC
-+.sp
-+By default, the OSC will show up whenever the mouse is moved inside the
-+player window and will hide if the mouse is not moved outside the OSC for
-+0.5 seconds or if the mouse leaves the window.
-+.SS The Interface
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-++\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
-+| pl prev | pl next | title | cache |
-++\-\-\-\-\-\-+\-\-+\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
-+| play | skip | skip | time | seekbar | time | audio | sub | vol | fs |
-+| | back | frwd | elapsed | | left | | | | |
-++\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-+
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.INDENT 0.0
-+.TP
-+.B pl prev
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+play previous file in playlist
-+T}
-+_
-+T{
-+right\-click
-+T} T{
-+show playlist
-+T}
-+_
-+T{
-+shift+L\-click
-+T} T{
-+show playlist
-+T}
-+_
-+.TE
-+.TP
-+.B pl next
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+play next file in playlist
-+T}
-+_
-+T{
-+right\-click
-+T} T{
-+show playlist
-+T}
-+_
-+T{
-+shift+L\-click
-+T} T{
-+show playlist
-+T}
-+_
-+.TE
-+.TP
-+.B title
-+.nf
-+Displays current media\-title, filename, or custom title
-+.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 cache
-+.nf
-+Shows current cache fill status
-+.fi
-+.sp
-+.TP
-+.B play
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+toggle play/pause
-+T}
-+_
-+.TE
-+.TP
-+.B skip back
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+go to beginning of chapter / previous chapter
-+T}
-+_
-+T{
-+right\-click
-+T} T{
-+show chapters
-+T}
-+_
-+T{
-+shift+L\-click
-+T} T{
-+show chapters
-+T}
-+_
-+.TE
-+.TP
-+.B skip frwd
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+go to next chapter
-+T}
-+_
-+T{
-+right\-click
-+T} T{
-+show chapters
-+T}
-+_
-+T{
-+shift+L\-click
-+T} T{
-+show chapters
-+T}
-+_
-+.TE
-+.TP
-+.B time elapsed
-+.nf
-+Shows current playback position timestamp
-+.fi
-+.sp
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+toggle displaying timecodes with milliseconds
-+T}
-+_
-+.TE
-+.TP
-+.B seekbar
-+.nf
-+Indicates current playback position and position of chapters
-+.fi
-+.sp
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+seek to position
-+T}
-+_
-+.TE
-+.TP
-+.B time left
-+.nf
-+Shows remaining playback time timestamp
-+.fi
-+.sp
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+toggle between total and remaining time
-+T}
-+_
-+.TE
-+.TP
-+.B audio and sub
-+.nf
-+Displays selected track and amount of available tracks
-+.fi
-+.sp
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+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
-+.TP
-+.B vol
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+toggle mute
-+T}
-+_
-+T{
-+mouse wheel
-+T} T{
-+volume up/down
-+T}
-+_
-+.TE
-+.TP
-+.B fs
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+left\-click
-+T} T{
-+toggle fullscreen
-+T}
-+_
-+.TE
-+.UNINDENT
-+.SS Key Bindings
-+.sp
-+These key bindings are active by default if nothing else is already bound to
-+these keys. In case of collision, the function needs to be bound to a
-+different key. See the \fI\%Script Commands\fP section.
-+.TS
-+center;
-+|l|l|.
-+_
-+T{
-+del
-+T} T{
-+Cycles visibility between never / auto (mouse\-move) / always
-+T}
-+_
-+.TE
-+.SS Configuration
-+.sp
-+The OSC offers limited configuration through a config file
-+\fBlua\-settings/osc.conf\fP placed in mpv\(aqs user dir and through the
-+\fB\-\-script\-opts\fP command\-line option. Options provided through the command\-line
-+will override those from the config file.
-+.SS Config Syntax
-+.sp
-+The config file must exactly follow the following syntax:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+# this is a comment
-+optionA=value1
-+optionB=value2
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fB#\fP can only be used at the beginning of a line and there may be no
-+spaces around the \fB=\fP or anywhere else.
-+.SS Command\-line Syntax
-+.sp
-+To avoid collisions with other scripts, all options need to be prefixed with
-+\fBosc\-\fP\&.
-+.sp
-+Example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+\-\-script\-opts=osc\-optionA=value1,osc\-optionB=value2
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.SS Configurable Options
-+.INDENT 0.0
-+.TP
-+.B \fBlayout\fP
-+Default: bottombar
-+.sp
-+The layout for the OSC. Currently available are: box, slimbox,
-+bottombar and topbar. Default pre\-0.21.0 was \(aqbox\(aq.
-+.TP
-+.B \fBseekbarstyle\fP
-+Default: bar
-+.sp
-+Sets the style of the seekbar, slider (diamond marker), knob (circle
-+marker with guide), or bar (fill).
-+Default pre\-0.21.0 was \(aqslider\(aq.
-+.TP
-+.B \fBdeadzonesize\fP
-+Default: 0.5
-+.sp
-+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.0 and 1.0, 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. Default pre\-0.21.0 was 0.
-+.TP
-+.B \fBminmousemove\fP
-+Default: 0
-+.sp
-+Minimum amount of pixels the mouse has to move between ticks to make
-+the OSC show up. Default pre\-0.21.0 was 3.
-+.TP
-+.B \fBshowwindowed\fP
-+Default: yes
-+.sp
-+Enable the OSC when windowed
-+.TP
-+.B \fBshowfullscreen\fP
-+Default: yes
-+.sp
-+Enable the OSC when fullscreen
-+.TP
-+.B \fBscalewindowed\fP
-+Default: 1.0
-+.sp
-+Scale factor of the OSC when windowed.
-+.TP
-+.B \fBscalefullscreen\fP
-+Default: 1.0
-+.sp
-+Scale factor of the OSC when fullscreen
-+.TP
-+.B \fBscaleforcedwindow\fP
-+Default: 2.0
-+.sp
-+Scale factor of the OSC when rendered on a forced (dummy) window
-+.TP
-+.B \fBvidscale\fP
-+Default: yes
-+.sp
-+Scale the OSC with the video
-+\fBno\fP tries to keep the OSC size constant as much as the window size allows
-+.TP
-+.B \fBvalign\fP
-+Default: 0.8
-+.sp
-+Vertical alignment, \-1 (top) to 1 (bottom)
-+.TP
-+.B \fBhalign\fP
-+Default: 0.0
-+.sp
-+Horizontal alignment, \-1 (left) to 1 (right)
-+.TP
-+.B \fBbarmargin\fP
-+Default: 0
-+.sp
-+Margin from bottom (bottombar) or top (topbar), in pixels
-+.TP
-+.B \fBboxalpha\fP
-+Default: 80
-+.sp
-+Alpha of the background box, 0 (opaque) to 255 (fully transparent)
-+.TP
-+.B \fBhidetimeout\fP
-+Default: 500
-+.sp
-+Duration in ms until the OSC hides if no mouse movement, must not be
-+negative
-+.TP
-+.B \fBfadeduration\fP
-+Default: 200
-+.sp
-+Duration of fade out in ms, 0 = no fade
-+.TP
-+.B \fBtitle\fP
-+Default: ${media\-title}
-+.sp
-+String that supports property expansion that will be displayed as
-+OSC title.
-+ASS tags are escaped, and newlines and trailing slashes are stripped.
-+.TP
-+.B \fBtooltipborder\fP
-+Default: 1
-+.sp
-+Size of the tooltip outline when using bottombar or topbar layouts
-+.TP
-+.B \fBtimetotal\fP
-+Default: no
-+.sp
-+Show total time instead of time remaining
-+.TP
-+.B \fBtimems\fP
-+Default: no
-+.sp
-+Display timecodes with milliseconds
-+.TP
-+.B \fBvisibility\fP
-+Default: auto (auto hide/show on mouse move)
-+.sp
-+Also supports \fBnever\fP and \fBalways\fP
-+.TP
-+.B \fBboxmaxchars\fP
-+Default: 80
-+.sp
-+Max chars for the osc title at the box layout. mpv does not measure the
-+text width on screen and so it needs to limit it by number of chars. The
-+default is conservative to allow wide fonts to be used without overflow.
-+However, with many common fonts a bigger number can be used. YMMV.
-+.UNINDENT
-+.SS Script Commands
-+.sp
-+The OSC script listens to certain script commands. These commands can bound
-+in \fBinput.conf\fP, or sent by other scripts.
-+.INDENT 0.0
-+.TP
-+.B \fBosc\-message\fP
-+Show a message on screen using the OSC. First argument is the message,
-+second the duration in seconds.
-+.TP
-+.B \fBosc\-visibility\fP
-+Controls visibility mode \fBnever\fP / \fBauto\fP (on mouse move) / \fBalways\fP
-+and also \fBcycle\fP to cycle between the modes
-+.UNINDENT
-+.sp
-+Example
-+.sp
-+You could put this into \fBinput.conf\fP to hide the OSC with the \fBa\fP key and
-+to set auto mode (the default) with \fBb\fP:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+a script\-message osc\-visibility never
-+b script\-message osc\-visibility auto
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.INDENT 0.0
-+.TP
-+.B \fBosc\-playlist\fP, \fBosc\-chapterlist\fP, \fBosc\-tracklist\fP
-+Shows a limited view of the respective type of list using the OSC. First
-+argument is duration in seconds.
-+.UNINDENT
-+.SH LUA SCRIPTING
-+.sp
-+mpv can load Lua scripts. Scripts passed to the \fB\-\-script\fP option, or found in
-+the \fBscripts\fP subdirectory of the mpv configuration directory (usually
-+\fB~/.config/mpv/scripts/\fP) will be loaded on program start. mpv also appends the
-+\fBscripts\fP subdirectory to the end of Lua\(aqs path so you can import scripts from
-+there too. Since it\(aqs added to the end, don\(aqt name scripts you want to import
-+the same as Lua libraries because they will be overshadowed by them.
-+.sp
-+mpv provides the built\-in module \fBmp\fP, which contains functions to send
-+commands to the mpv core and to retrieve information about playback state, user
-+settings, file information, and so on.
-+.sp
-+These scripts can be used to control mpv in a similar way to slave mode.
-+Technically, the Lua code uses the client API internally.
-+.SS Example
-+.sp
-+A script which leaves fullscreen mode when the player is paused:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+function on_pause_change(name, value)
-+ if value == true then
-+ mp.set_property("fullscreen", "no")
-+ end
-+end
-+mp.observe_property("pause", "bool", on_pause_change)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.SS Details on the script initialization and lifecycle
-+.sp
-+Your script will be loaded by the player at program start from the \fBscripts\fP
-+configuration subdirectory, or from a path specified with the \fB\-\-script\fP
-+option. Some scripts are loaded internally (like \fB\-\-osc\fP). Each script runs in
-+its own thread. Your script is first run "as is", and once that is done, the event loop
-+is entered. This event loop will dispatch events received by mpv and call your
-+own event handlers which you have registered with \fBmp.register_event\fP, or
-+timers added with \fBmp.add_timeout\fP or similar.
-+.sp
-+When the player quits, all scripts will be asked to terminate. This happens via
-+a \fBshutdown\fP event, which by default will make the event loop return. If your
-+script got into an endless loop, mpv will probably behave fine during playback,
-+but it won\(aqt terminate when quitting, because it\(aqs waiting on your script.
-+.sp
-+Internally, the C code will call the Lua function \fBmp_event_loop\fP after
-+loading a Lua script. This function is normally defined by the default prelude
-+loaded before your script (see \fBplayer/lua/defaults.lua\fP in the mpv sources).
-+The event loop will wait for events and dispatch events registered with
-+\fBmp.register_event\fP\&. It will also handle timers added with \fBmp.add_timeout\fP
-+and similar (by waiting with a timeout).
-+.sp
-+Since mpv 0.6.0, the player will wait until the script is fully loaded before
-+continuing normal operation. The player considers a script as fully loaded as
-+soon as it starts waiting for mpv events (or it exits). In practice this means
-+the player will more or less hang until the script returns from the main chunk
-+(and \fBmp_event_loop\fP is called), or the script calls \fBmp_event_loop\fP or
-+\fBmp.dispatch_events\fP directly. This is done to make it possible for a script
-+to fully setup event handlers etc. before playback actually starts. In older
-+mpv versions, this happened asynchronously.
-+.SS mp functions
-+.sp
-+The \fBmp\fP module is preloaded, although it can be loaded manually with
-+\fBrequire \(aqmp\(aq\fP\&. It provides the core client API.
-+.INDENT 0.0
-+.TP
-+.B \fBmp.command(string)\fP
-+Run the given command. This is similar to the commands used in input.conf.
-+See \fI\%List of Input Commands\fP\&.
-+.sp
-+By default, this will show something on the OSD (depending on the command),
-+as if it was used in \fBinput.conf\fP\&. See \fI\%Input Command Prefixes\fP how
-+to influence OSD usage per command.
-+.sp
-+Returns \fBtrue\fP on success, or \fBnil, error\fP on error.
-+.TP
-+.B \fBmp.commandv(arg1, arg2, ...)\fP
-+Similar to \fBmp.command\fP, but pass each command argument as separate
-+parameter. This has the advantage that you don\(aqt have to care about
-+quoting and escaping in some cases.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mp.command("loadfile " .. filename .. " append")
-+mp.commandv("loadfile", filename, "append")
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+These two commands are equivalent, except that the first version breaks
-+if the filename contains spaces or certain special characters.
-+.sp
-+Note that properties are \fInot\fP expanded. You can use either \fBmp.command\fP,
-+the \fBexpand\-properties\fP prefix, or the \fBmp.get_property\fP family of
-+functions.
-+.sp
-+Unlike \fBmp.command\fP, this will not use OSD by default either (except
-+for some OSD\-specific commands).
-+.TP
-+.B \fBmp.command_native(table [,def])\fP
-+Similar to \fBmp.commandv\fP, but pass the argument list as table. This has
-+the advantage that in at least some cases, arguments can be passed as
-+native types.
-+.sp
-+Returns a result table on success (usually empty), or \fBdef, error\fP on
-+error. \fBdef\fP is the second parameter provided to the function, and is
-+nil if it\(aqs missing.
-+.TP
-+.B \fBmp.get_property(name [,def])\fP
-+Return the value of the given property as string. These are the same
-+properties as used in input.conf. See \fI\%Properties\fP for a list of
-+properties. The returned string is formatted similar to \fB${=name}\fP
-+(see \fI\%Property Expansion\fP).
-+.sp
-+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
-+second parameter provided to the function, and is nil if it\(aqs missing.
-+.TP
-+.B \fBmp.get_property_osd(name [,def])\fP
-+Similar to \fBmp.get_property\fP, but return the property value formatted for
-+OSD. This is the same string as printed with \fB${name}\fP when used in
-+input.conf.
-+.sp
-+Returns the string on success, or \fBdef, error\fP on error. \fBdef\fP is the
-+second parameter provided to the function, and is an empty string if it\(aqs
-+missing. Unlike \fBget_property()\fP, assigning the return value to a variable
-+will always result in a string.
-+.TP
-+.B \fBmp.get_property_bool(name [,def])\fP
-+Similar to \fBmp.get_property\fP, but return the property value as Boolean.
-+.sp
-+Returns a Boolean on success, or \fBdef, error\fP on error.
-+.TP
-+.B \fBmp.get_property_number(name [,def])\fP
-+Similar to \fBmp.get_property\fP, but return the property value as number.
-+.sp
-+Note that while Lua does not distinguish between integers and floats,
-+mpv internals do. This function simply request a double float from mpv,
-+and mpv will usually convert integer property values to float.
-+.sp
-+Returns a number on success, or \fBdef, error\fP on error.
-+.TP
-+.B \fBmp.get_property_native(name [,def])\fP
-+Similar to \fBmp.get_property\fP, but return the property value using the best
-+Lua type for the property. Most time, this will return a string, Boolean,
-+or number. Some properties (for example \fBchapter\-list\fP) are returned as
-+tables.
-+.sp
-+Returns a value on success, or \fBdef, error\fP on error. Note that \fBnil\fP
-+might be a possible, valid value too in some corner cases.
-+.TP
-+.B \fBmp.set_property(name, value)\fP
-+Set the given property to the given string value. See \fBmp.get_property\fP
-+and \fI\%Properties\fP for more information about properties.
-+.sp
-+Returns true on success, or \fBnil, error\fP on error.
-+.TP
-+.B \fBmp.set_property_bool(name, value)\fP
-+Similar to \fBmp.set_property\fP, but set the given property to the given
-+Boolean value.
-+.TP
-+.B \fBmp.set_property_number(name, value)\fP
-+Similar to \fBmp.set_property\fP, but set the given property to the given
-+numeric value.
-+.sp
-+Note that while Lua does not distinguish between integers and floats,
-+mpv internals do. This function will test whether the number can be
-+represented as integer, and if so, it will pass an integer value to mpv,
-+otherwise a double float.
-+.TP
-+.B \fBmp.set_property_native(name, value)\fP
-+Similar to \fBmp.set_property\fP, but set the given property using its native
-+type.
-+.sp
-+Since there are several data types which cannot represented natively in
-+Lua, this might not always work as expected. For example, while the Lua
-+wrapper can do some guesswork to decide whether a Lua table is an array
-+or a map, this would fail with empty tables. Also, there are not many
-+properties for which it makes sense to use this, instead of
-+\fBset_property\fP, \fBset_property_bool\fP, \fBset_property_number\fP\&.
-+For these reasons, this function should probably be avoided for now, except
-+for properties that use tables natively.
-+.TP
-+.B \fBmp.get_time()\fP
-+Return the current mpv internal time in seconds as a number. This is
-+basically the system time, with an arbitrary offset.
-+.TP
-+.B \fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
-+Register callback to be run on a key binding. The binding will be mapped to
-+the given \fBkey\fP, which is a string describing the physical key. This uses
-+the same key names as in input.conf, and also allows combinations
-+(e.g. \fBctrl+a\fP). If the key is empty or \fBnil\fP, no physical key is
-+registered, but the user still can create own bindings (see below).
-+.sp
-+After calling this function, key presses will cause the function \fBfn\fP to
-+be called (unless the user remapped the key with another binding).
-+.sp
-+The \fBname\fP argument should be a short symbolic string. It allows the user
-+to remap the key binding via input.conf using the \fBscript\-message\fP
-+command, and the name of the key binding (see below for
-+an example). The name should be unique across other bindings in the same
-+script \- if not, the previous binding with the same name will be
-+overwritten. You can omit the name, in which case a random name is generated
-+internally.
-+.sp
-+The last argument is used for optional flags. This is a table, which can
-+have the following entries:
-+.INDENT 7.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.TP
-+.B \fBrepeatable\fP
-+If set to \fBtrue\fP, enables key repeat for this specific binding.
-+.TP
-+.B \fBcomplex\fP
-+If set to \fBtrue\fP, then \fBfn\fP is called on both key up and down
-+events (as well as key repeat, if enabled), with the first
-+argument being a table. This table has an \fBevent\fP entry, which
-+is set to one of the strings \fBdown\fP, \fBrepeat\fP, \fBup\fP or
-+\fBpress\fP (the latter if key up/down can\(aqt be tracked). It further
-+has an \fBis_mouse\fP entry, which tells whether the event was caused
-+by a mouse button.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Internally, key bindings are dispatched via the \fBscript\-message\-to\fP or
-+\fBscript\-binding\fP input commands and \fBmp.register_script_message\fP\&.
-+.sp
-+Trying to map multiple commands to a key will essentially prefer a random
-+binding, while the other bindings are not called. It is guaranteed that
-+user defined bindings in the central input.conf are preferred over bindings
-+added with this function (but see \fBmp.add_forced_key_binding\fP).
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+function something_handler()
-+ print("the key was pressed")
-+end
-+mp.add_key_binding("x", "something", something_handler)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+This will print the message \fBthe key was pressed\fP when \fBx\fP was pressed.
-+.sp
-+The user can remap these key bindings. Then the user has to put the
-+following into their input.conf to remap the command to the \fBy\fP key:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+y script\-binding something
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+This will print the message when the key \fBy\fP is pressed. (\fBx\fP will
-+still work, unless the user remaps it.)
-+.sp
-+You can also explicitly send a message to a named script only. Assume the
-+above script was using the filename \fBfooscript.lua\fP:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+y script\-binding fooscript/something
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBmp.add_forced_key_binding(...)\fP
-+This works almost the same as \fBmp.add_key_binding\fP, but registers the
-+key binding in a way that will overwrite the user\(aqs custom bindings in their
-+input.conf. (\fBmp.add_key_binding\fP overwrites default key bindings only,
-+but not those by the user\(aqs input.conf.)
-+.TP
-+.B \fBmp.remove_key_binding(name)\fP
-+Remove a key binding added with \fBmp.add_key_binding\fP or
-+\fBmp.add_forced_key_binding\fP\&. Use the same name as you used when adding
-+the bindings. It\(aqs not possible to remove bindings for which you omitted
-+the name.
-+.TP
-+.B \fBmp.register_event(name, fn)\fP
-+Call a specific function when an event happens. The event name is a string,
-+and the function fn is a Lua function value.
-+.sp
-+Some events have associated data. This is put into a Lua table and passed
-+as argument to fn. The Lua table by default contains a \fBname\fP field,
-+which is a string containing the event name. If the event has an error
-+associated, the \fBerror\fP field is set to a string describing the error,
-+on success it\(aqs not set.
-+.sp
-+If multiple functions are registered for the same event, they are run in
-+registration order, which the first registered function running before all
-+the other ones.
-+.sp
-+Returns true if such an event exists, false otherwise.
-+.sp
-+See \fI\%Events\fP and \fI\%List of events\fP for details.
-+.TP
-+.B \fBmp.unregister_event(fn)\fP
-+Undo \fBmp.register_event(..., fn)\fP\&. This removes all event handlers that
-+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
-+so be careful when dealing with closures.
-+.TP
-+.B \fBmp.observe_property(name, type, fn)\fP
-+Watch a property for changes. If the property \fBname\fP is changed, then
-+the function \fBfn(name)\fP will be called. \fBtype\fP can be \fBnil\fP, or be
-+set to one of \fBnone\fP, \fBnative\fP, \fBbool\fP, \fBstring\fP, or \fBnumber\fP\&.
-+\fBnone\fP is the same as \fBnil\fP\&. For all other values, the new value of
-+the property will be passed as second argument to \fBfn\fP, using
-+\fBmp.get_property_<type>\fP to retrieve it. This means if \fBtype\fP is for
-+example \fBstring\fP, \fBfn\fP is roughly called as in
-+\fBfn(name, mp.get_property_string(name))\fP\&.
-+.sp
-+If possible, change events are coalesced. If a property is changed a bunch
-+of times in a row, only the last change triggers the change function. (The
-+exact behavior depends on timing and other things.)
-+.sp
-+In some cases the function is not called even if the property changes.
-+Whether this can happen depends on the property.
-+.sp
-+If the \fBtype\fP is \fBnone\fP or \fBnil\fP, sporadic property change events are
-+possible. This means the change function \fBfn\fP can be called even if the
-+property doesn\(aqt actually change.
-+.TP
-+.B \fBmp.unobserve_property(fn)\fP
-+Undo \fBmp.observe_property(..., fn)\fP\&. This removes all property handlers
-+that are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP
-+comparison, so be careful when dealing with closures.
-+.TP
-+.B \fBmp.add_timeout(seconds, fn)\fP
-+Call the given function fn when the given number of seconds has elapsed.
-+Note that the number of seconds can be fractional. For now, the timer\(aqs
-+resolution may be as low as 50 ms, although this will be improved in the
-+future.
-+.sp
-+This is a one\-shot timer: it will be removed when it\(aqs fired.
-+.sp
-+Returns a timer object. See \fBmp.add_periodic_timer\fP for details.
-+.TP
-+.B \fBmp.add_periodic_timer(seconds, fn)\fP
-+Call the given function periodically. This is like \fBmp.add_timeout\fP, but
-+the timer is re\-added after the function fn is run.
-+.INDENT 7.0
-+.TP
-+.B Returns a timer object. The timer object provides the following methods:
-+.INDENT 7.0
-+.TP
-+.B \fBstop()\fP
-+Disable the timer. Does nothing if the timer is already disabled.
-+This will remember the current elapsed time when stopping, so that
-+\fBresume()\fP essentially unpauses the timer.
-+.TP
-+.B \fBkill()\fP
-+Disable the timer. Resets the elapsed time. \fBresume()\fP will
-+restart the timer.
-+.TP
-+.B \fBresume()\fP
-+Restart the timer. If the timer was disabled with \fBstop()\fP, this
-+will resume at the time it was stopped. If the timer was disabled
-+with \fBkill()\fP, or if it\(aqs a previously fired one\-shot timer (added
-+with \fBadd_timeout()\fP), this starts the timer from the beginning,
-+using the initially configured timeout.
-+.TP
-+.B \fBis_enabled()\fP
-+Whether the timer is currently enabled or was previously disabled
-+(e.g. by \fBstop()\fP or \fBkill()\fP).
-+.TP
-+.B \fBtimeout\fP (RW)
-+This field contains the current timeout period. This value is not
-+updated as time progresses. It\(aqs only used to calculate when the
-+timer should fire next when the timer expires.
-+.sp
-+If you write this, you can call \fBt:kill() ; t:resume()\fP to reset
-+the current timeout to the new one. (\fBt:stop()\fP won\(aqt use the
-+new timeout.)
-+.TP
-+.B \fBoneshot\fP (RW)
-+Whether the timer is periodic (\fBfalse\fP) or fires just once
-+(\fBtrue\fP). This value is used when the timer expires (but before
-+the timer callback function fn is run).
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Note that these are method, and you have to call them using \fB:\fP instead
-+of \fB\&.\fP (Refer to \fI\%http://www.lua.org/manual/5.2/manual.html#3.4.9\fP .)
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+seconds = 0
-+timer = mp.add_periodic_timer(1, function()
-+ print("called every second")
-+ # stop it after 10 seconds
-+ seconds = seconds + 1
-+ if seconds >= 10 then
-+ timer:kill()
-+ end
-+end)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBmp.get_opt(key)\fP
-+Return a setting from the \fB\-\-script\-opts\fP option. It\(aqs up to the user and
-+the script how this mechanism is used. Currently, all scripts can access
-+this equally, so you should be careful about collisions.
-+.TP
-+.B \fBmp.get_script_name()\fP
-+Return the name of the current script. The name is usually made of the
-+filename of the script, with directory and file extension removed. If
-+there are several scripts which would have the same name, it\(aqs made unique
-+by appending a number.
-+.INDENT 7.0
-+.INDENT 3.5
-+.IP "Example"
-+.sp
-+The script \fB/path/to/fooscript.lua\fP becomes \fBfooscript\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBmp.osd_message(text [,duration])\fP
-+Show an OSD message on the screen. \fBduration\fP is in seconds, and is
-+optional (uses \fB\-\-osd\-duration\fP by default).
-+.UNINDENT
-+.SS Advanced mp functions
-+.sp
-+These also live in the \fBmp\fP module, but are documented separately as they
-+are useful only in special situations.
-+.INDENT 0.0
-+.TP
-+.B \fBmp.suspend()\fP
-+This function has been deprecated in mpv 0.21.0 and does nothing starting
-+with mpv 0.23.0 (no replacement).
-+.TP
-+.B \fBmp.resume()\fP
-+This function has been deprecated in mpv 0.21.0 and does nothing starting
-+with mpv 0.23.0 (no replacement).
-+.TP
-+.B \fBmp.resume_all()\fP
-+This function has been deprecated in mpv 0.21.0 and does nothing starting
-+with mpv 0.23.0 (no replacement).
-+.TP
-+.B \fBmp.get_wakeup_pipe()\fP
-+Calls \fBmpv_get_wakeup_pipe()\fP and returns the read end of the wakeup
-+pipe. (See \fBclient.h\fP for details.)
-+.TP
-+.B \fBmp.get_next_timeout()\fP
-+Return the relative time in seconds when the next timer (\fBmp.add_timeout\fP
-+and similar) expires. If there is no timer, return \fBnil\fP\&.
-+.TP
-+.B \fBmp.dispatch_events([allow_wait])\fP
-+This can be used to run custom event loops. If you want to have direct
-+control what the Lua script does (instead of being called by the default
-+event loop), you can set the global variable \fBmp_event_loop\fP to your
-+own function running the event loop. From your event loop, you should call
-+\fBmp.dispatch_events()\fP to dequeue and dispatch mpv events.
-+.sp
-+If the \fBallow_wait\fP parameter is set to \fBtrue\fP, the function will block
-+until the next event is received or the next timer expires. Otherwise (and
-+this is the default behavior), it returns as soon as the event loop is
-+emptied. It\(aqs strongly recommended to use \fBmp.get_next_timeout()\fP and
-+\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.unregister_idle(fn)\fP
-+Undo \fBmp.register_idle(fn)\fP\&. This removes all idle handlers that
-+are equal to the \fBfn\fP parameter. This uses normal Lua \fB==\fP comparison,
-+so be careful when dealing with closures.
-+.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,
-+you can set the minimum log level of messages which should be received with
-+the \fBlog\-message\fP event. See the description of this event for details.
-+The level is a string, see \fBmsg.log\fP for allowed log levels.
-+.TP
-+.B \fBmp.register_script_message(name, fn)\fP
-+This is a helper to dispatch \fBscript\-message\fP or \fBscript\-message\-to\fP
-+invocations to Lua functions. \fBfn\fP is called if \fBscript\-message\fP or
-+\fBscript\-message\-to\fP (with this script as destination) is run
-+with \fBname\fP as first parameter. The other parameters are passed to \fBfn\fP\&.
-+If a message with the given name is already registered, it\(aqs overwritten.
-+.sp
-+Used by \fBmp.add_key_binding\fP, so be careful about name collisions.
-+.TP
-+.B \fBmp.unregister_script_message(name)\fP
-+Undo a previous registration with \fBmp.register_script_message\fP\&. Does
-+nothing if the \fBname\fP wasn\(aqt registered.
-+.UNINDENT
-+.SS mp.msg functions
-+.sp
-+This module allows outputting messages to the terminal, and can be loaded
-+with \fBrequire \(aqmp.msg\(aq\fP\&.
-+.INDENT 0.0
-+.TP
-+.B \fBmsg.log(level, ...)\fP
-+The level parameter is the message priority. It\(aqs a string and one of
-+\fBfatal\fP, \fBerror\fP, \fBwarn\fP, \fBinfo\fP, \fBv\fP, \fBdebug\fP\&. The user\(aqs
-+settings will determine which of these messages will be visible. Normally,
-+all messages are visible, except \fBv\fP and \fBdebug\fP\&.
-+.sp
-+The parameters after that are all converted to strings. Spaces are inserted
-+to separate multiple parameters.
-+.sp
-+You don\(aqt need to add newlines.
-+.TP
-+.B \fBmsg.fatal(...)\fP, \fBmsg.error(...)\fP, \fBmsg.warn(...)\fP, \fBmsg.info(...)\fP, \fBmsg.verbose(...)\fP, \fBmsg.debug(...)\fP
-+All of these are shortcuts and equivalent to the corresponding
-+\fBmsg.log(level, ...)\fP call.
-+.UNINDENT
-+.SS mp.options functions
-+.sp
-+mpv comes with a built\-in module to manage options from config\-files and the
-+command\-line. All you have to do is to supply a table with default options to
-+the read_options function. The function will overwrite the default values
-+with values found in the config\-file and the command\-line (in that order).
-+.INDENT 0.0
-+.TP
-+.B \fBoptions.read_options(table [, identifier])\fP
-+A \fBtable\fP with key\-value pairs. The type of the default values is
-+important for converting the values read from the config file or
-+command\-line back. Do not use \fBnil\fP as a default value!
-+.sp
-+The \fBidentifier\fP is used to identify the config\-file and the command\-line
-+options. These needs to unique to avoid collisions with other scripts.
-+Defaults to \fBmp.get_script_name()\fP\&.
-+.UNINDENT
-+.sp
-+Example implementation:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+require \(aqmp.options\(aq
-+local options = {
-+ optionA = "defaultvalueA",
-+ optionB = \-0.5,
-+ optionC = true,
-+}
-+read_options(options, "myscript")
-+print(options.optionA)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The config file will be stored in \fBlua\-settings/identifier.conf\fP in mpv\(aqs user
-+folder. Comment lines can be started with # and stray spaces are not removed.
-+Boolean values will be represented with yes/no.
-+.sp
-+Example config:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+# comment
-+optionA=Hello World
-+optionB=9999
-+optionC=no
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Command\-line options are read from the \fB\-\-script\-opts\fP parameter. To avoid
-+collisions, all keys have to be prefixed with \fBidentifier\-\fP\&.
-+.sp
-+Example command\-line:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+\-\-script\-opts=myscript\-optionA=TEST,myscript\-optionB=0,myscript\-optionC=yes
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.SS mp.utils functions
-+.sp
-+This built\-in module provides generic helper functions for Lua, and have
-+strictly speaking nothing to do with mpv or video/audio playback. They are
-+provided for convenience. Most compensate for Lua\(aqs scarce standard library.
-+.sp
-+Be warned that any of these functions might disappear any time. They are not
-+strictly part of the guaranteed API.
-+.INDENT 0.0
-+.TP
-+.B \fButils.getcwd()\fP
-+Returns the directory that mpv was launched from. On error, \fBnil, error\fP
-+is returned.
-+.TP
-+.B \fButils.readdir(path [, filter])\fP
-+Enumerate all entries at the given path on the filesystem, and return them
-+as array. Each entry is a directory entry (without the path).
-+The list is unsorted (in whatever order the operating system returns it).
-+.sp
-+If the \fBfilter\fP argument is given, it must be one of the following
-+strings:
-+.INDENT 7.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.TP
-+.B \fBfiles\fP
-+List regular files only. This excludes directories, special files
-+(like UNIX device files or FIFOs), and dead symlinks. It includes
-+UNIX symlinks to regular files.
-+.TP
-+.B \fBdirs\fP
-+List directories only, or symlinks to directories. \fB\&.\fP and \fB\&..\fP
-+are not included.
-+.TP
-+.B \fBnormal\fP
-+Include the results of both \fBfiles\fP and \fBdirs\fP\&. (This is the
-+default.)
-+.TP
-+.B \fBall\fP
-+List all entries, even device files, dead symlinks, FIFOs, and the
-+\fB\&.\fP and \fB\&..\fP entries.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+On error, \fBnil, error\fP is returned.
-+.TP
-+.B \fButils.split_path(path)\fP
-+Split a path into directory component and filename component, and return
-+them. The first return value is always the directory. The second return
-+value is the trailing part of the path, the directory entry.
-+.TP
-+.B \fButils.join_path(p1, p2)\fP
-+Return the concatenation of the 2 paths. Tries to be clever. For example,
-+if \fB\(gap2\fP is an absolute path, p2 is returned without change.
-+.TP
-+.B \fButils.subprocess(t)\fP
-+Runs an external process and waits until it exits. Returns process status
-+and the captured output.
-+.sp
-+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. The first array entry is the executable. This
-+can be either an absolute path, or a filename with no path
-+components, in which case the \fBPATH\fP environment variable is
-+used to resolve the executable. The other array elements are
-+passed as command line arguments.
-+.TP
-+.B \fBcancellable\fP
-+Optional. If set to \fBtrue\fP (default), then if the user stops
-+playback or goes to the next file while the process is running,
-+the process will be killed.
-+.TP
-+.B \fBmax_size\fP
-+Optional. The maximum size in bytes of the data that can be captured
-+from stdout. (Default: 16 MB.)
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The function returns a table as result with the following entries:
-+.INDENT 7.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.TP
-+.B \fBstatus\fP
-+The raw exit status of the process. It will be negative on error.
-+.TP
-+.B \fBstdout\fP
-+Captured output stream as string, limited to \fBmax_size\fP\&.
-+.TP
-+.B \fBerror\fP
-+\fBnil\fP on success. The string \fBkilled\fP if the process was
-+terminated in an unusual way. The string \fBinit\fP if the process
-+could not be started.
-+.sp
-+On Windows, \fBkilled\fP is only returned when the process has been
-+killed by mpv as a result of \fBcancellable\fP being set to \fBtrue\fP\&.
-+.TP
-+.B \fBkilled_by_us\fP
-+Set to \fBtrue\fP if the process has been killed by mpv as a result
-+of \fBcancellable\fP being set to \fBtrue\fP\&.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fButils.subprocess_detached(t)\fP
-+Runs an external process and detaches it from mpv\(aqs control.
-+.sp
-+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
-+error, returns \fBnil, error\fP\&. (Currently, \fBerror\fP is just a string
-+reading \fBerror\fP, because there is no fine\-grained error reporting of any
-+kind.)
-+.sp
-+The returned value uses similar conventions as \fBmp.get_property_native()\fP
-+to distinguish empty objects and arrays.
-+.sp
-+If the \fBtrail\fP parameter is \fBtrue\fP (or any value equal to \fBtrue\fP),
-+then trailing non\-whitespace text is tolerated by the function, and the
-+trailing text is returned as 3rd return value. (The 3rd return value is
-+always there, but with \fBtrail\fP set, no error is raised.)
-+.TP
-+.B \fButils.format_json(v)\fP
-+Format the given Lua table (or value) as a JSON string and return it. On
-+error, returns \fBnil, error\fP\&. (Errors usually only happen on value types
-+incompatible with JSON.)
-+.sp
-+The argument value uses similar conventions as \fBmp.set_property_native()\fP
-+to distinguish empty objects and arrays.
-+.TP
-+.B \fButils.to_string(v)\fP
-+Turn the given value into a string. Formats tables and their contents. This
-+doesn\(aqt do anything special; it is only needed because Lua is terrible.
-+.UNINDENT
-+.SS Events
-+.sp
-+Events are notifications from player core to scripts. You can register an
-+event handler with \fBmp.register_event\fP\&.
-+.sp
-+Note that all scripts (and other parts of the player) receive events equally,
-+and there\(aqs no such thing as blocking other scripts from receiving events.
-+.sp
-+Example:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+function my_fn(event)
-+ print("start of playback!")
-+end
-+
-+mp.register_event("file\-loaded", my_fn)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.SS List of events
-+.INDENT 0.0
-+.TP
-+.B \fBstart\-file\fP
-+Happens right before a new file is loaded. When you receive this, the
-+player is loading the file (or possibly already done with it).
-+.TP
-+.B \fBend\-file\fP
-+Happens after a file was unloaded. Typically, the player will load the
-+next file right away, or quit if this was the last file.
-+.sp
-+The event has the \fBreason\fP field, which takes one of these values:
-+.INDENT 7.0
-+.TP
-+.B \fBeof\fP
-+The file has ended. This can (but doesn\(aqt have to) include
-+incomplete files or broken network connections under
-+circumstances.
-+.TP
-+.B \fBstop\fP
-+Playback was ended by a command.
-+.TP
-+.B \fBquit\fP
-+Playback was ended by sending the quit command.
-+.TP
-+.B \fBerror\fP
-+An error happened. In this case, an \fBerror\fP field is present with
-+the error string.
-+.TP
-+.B \fBredirect\fP
-+Happens with playlists and similar. Details see
-+\fBMPV_END_FILE_REASON_REDIRECT\fP in the C API.
-+.TP
-+.B \fBunknown\fP
-+Unknown. Normally doesn\(aqt happen, unless the Lua API is out of sync
-+with the C API. (Likewise, it could happen that your script gets
-+reason strings that did not exist yet at the time your script was
-+written.)
-+.UNINDENT
-+.TP
-+.B \fBfile\-loaded\fP
-+Happens after a file was loaded and begins playback.
-+.TP
-+.B \fBseek\fP
-+Happens on seeking. (This might include cases when the player seeks
-+internally, even without user interaction. This includes e.g. segment
-+changes when playing ordered chapters Matroska files.)
-+.TP
-+.B \fBplayback\-restart\fP
-+Start of playback after seek or after file was loaded.
-+.TP
-+.B \fBidle\fP
-+Idle mode is entered. This happens when playback ended, and the player was
-+started with \fB\-\-idle\fP or \fB\-\-force\-window\fP\&. This mode is implicitly ended
-+when the \fBstart\-file\fP or \fBshutdown\fP events happen.
-+.TP
-+.B \fBtick\fP
-+Called after a video frame was displayed. This is a hack, and you should
-+avoid using it. Use timers instead and maybe watch pausing/unpausing events
-+to avoid wasting CPU when the player is paused.
-+.TP
-+.B \fBshutdown\fP
-+Sent when the player quits, and the script should terminate. Normally
-+handled automatically. See \fI\%Details on the script initialization and lifecycle\fP\&.
-+.TP
-+.B \fBlog\-message\fP
-+Receives messages enabled with \fBmp.enable_messages\fP\&. The message data
-+is contained in the table passed as first parameter to the event handler.
-+The table contains, in addition to the default event fields, the following
-+fields:
-+.INDENT 7.0
-+.TP
-+.B \fBprefix\fP
-+The module prefix, identifies the sender of the message. This is what
-+the terminal player puts in front of the message text when using the
-+\fB\-\-v\fP option, and is also what is used for \fB\-\-msg\-level\fP\&.
-+.TP
-+.B \fBlevel\fP
-+The log level as string. See \fBmsg.log\fP for possible log level names.
-+Note that later versions of mpv might add new levels or remove
-+(undocumented) existing ones.
-+.TP
-+.B \fBtext\fP
-+The log message. The text will end with a newline character. Sometimes
-+it can contain multiple lines.
-+.UNINDENT
-+.sp
-+Keep in mind that these messages are meant to be hints for humans. You
-+should not parse them, and prefix/level/text of messages might change
-+any time.
-+.TP
-+.B \fBget\-property\-reply\fP
-+Undocumented (not useful for Lua scripts).
-+.TP
-+.B \fBset\-property\-reply\fP
-+Undocumented (not useful for Lua scripts).
-+.TP
-+.B \fBcommand\-reply\fP
-+Undocumented (not useful for Lua scripts).
-+.TP
-+.B \fBclient\-message\fP
-+Undocumented (used internally).
-+.TP
-+.B \fBvideo\-reconfig\fP
-+Happens on video output or filter reconfig.
-+.TP
-+.B \fBaudio\-reconfig\fP
-+Happens on audio output or filter reconfig.
-+.UNINDENT
-+.sp
-+The following events also happen, but are deprecated: \fBtracks\-changed\fP,
-+\fBtrack\-switched\fP, \fBpause\fP, \fBunpause\fP, \fBmetadata\-update\fP,
-+\fBchapter\-change\fP\&. Use \fBmp.observe_property()\fP instead.
-+.SS Extras
-+.sp
-+This documents experimental features, or features that are "too special" to
-+guarantee a stable interface.
-+.INDENT 0.0
-+.TP
-+.B \fBmp.add_hook(type, priority, fn)\fP
-+Add a hook callback for \fBtype\fP (a string identifying a certain kind of
-+hook). These hooks allow the player to call script functions and wait for
-+their result (normally, the Lua scripting interface is asynchronous from
-+the point of view of the player core). \fBpriority\fP is an arbitrary integer
-+that allows ordering among hooks of the same kind. Using the value 50 is
-+recommended as neutral default value. \fBfn\fP is the function that will be
-+called during execution of the hook.
-+.sp
-+See \fI\%Hooks\fP for currently existing hooks and what they do \- only the hook
-+list is interesting; handling hook execution is done by the Lua script
-+function automatically.
-+.UNINDENT
-+.SH JAVASCRIPT
-+.sp
-+JavaScript support in mpv is near identical to its Lua support. Use this section
-+as reference on differences and availability of APIs, but otherwise you should
-+refer to the Lua documentation for API details and general scripting in mpv.
-+.SS Example
-+.sp
-+JavaScript code which leaves fullscreen mode when the player is paused:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+function on_pause_change(name, value) {
-+ if (value == true)
-+ mp.set_property("fullscreen", "no");
-+}
-+mp.observe_property("pause", "bool", on_pause_change);
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.SS Similarities with Lua
-+.sp
-+mpv tries to load a script file as JavaScript if it has a \fB\&.js\fP extension, but
-+otherwise, the documented Lua options, script directories, loading, etc apply to
-+JavaScript files too.
-+.sp
-+Script initialization and lifecycle is the same as with Lua, and most of the Lua
-+functions at the modules \fBmp\fP, \fBmp.utils\fP and \fBmp.msg\fP are available to
-+JavaScript with identical APIs \- including running commands, getting/setting
-+properties, registering events/key\-bindings/property\-changes/hooks, etc.
-+.SS Differences from Lua
-+.sp
-+No need to load modules. \fBmp\fP, \fBmp.utils\fP and \fBmp.msg\fP are preloaded, and
-+you can use e.g. \fBvar cwd = mp.utils.getcwd();\fP without prior setup.
-+\fBmp.options\fP is currently not implemented, but \fBmp.get_opt(...)\fP is.
-+.sp
-+Errors are slightly different. Where the Lua APIs return \fBnil\fP for error,
-+the JavaScript ones return \fBundefined\fP\&. Where Lua returns \fBsomething, error\fP
-+JavaScript returns only \fBsomething\fP \- and makes \fBerror\fP available via
-+\fBmp.last_error()\fP\&. Note that only some of the functions have this additional
-+\fBerror\fP value \- typically the same ones which have it in Lua.
-+.sp
-+Standard APIs are preferred. For instance \fBsetTimeout\fP and \fBJSON.stringify\fP
-+are available, but \fBmp.add_timeout\fP and \fBmp.utils.format_json\fP are not.
-+.sp
-+No standard library. This means that interaction with anything outside of mpv is
-+limited to the available APIs, typically via \fBmp.utils\fP\&. However, some file
-+functions were added, and CommonJS \fBrequire\fP is available too \- where the
-+loaded modules have the same privileges as normal scripts.
-+.SS Language features \- ECMAScript 5
-+.sp
-+The scripting backend which mpv currently uses is MuJS \- a compatible minimal
-+ES5 interpreter. As such, \fBString.substring\fP is implemented for instance,
-+while the common but non\-standard \fBString.substr\fP is not. Please consult the
-+MuJS pages on language features and platform support \- \fI\%http://mujs.com\fP .
-+.SS Unsupported Lua APIs and their JS alternatives
-+.sp
-+\fBmp.add_timeout(seconds, fn)\fP JS: \fBid = setTimeout(fn, ms)\fP
-+.sp
-+\fBmp.add_periodic_timer(seconds, fn)\fP JS: \fBid = setInterval(fn, ms)\fP
-+.sp
-+\fBmp.register_idle(fn)\fP JS: \fBid = setTimeout(fn)\fP
-+.sp
-+\fBmp.unregister_idle(fn)\fP JS: \fBclearTimeout(id)\fP
-+.sp
-+\fButils.parse_json(str [, trail])\fP JS: \fBJSON.parse(str)\fP
-+.sp
-+\fButils.format_json(v)\fP JS: \fBJSON.stringify(v)\fP
-+.sp
-+\fButils.to_string(v)\fP see \fBdump\fP below.
-+.sp
-+\fBmp.suspend()\fP JS: none (deprecated).
-+.sp
-+\fBmp.resume()\fP JS: none (deprecated).
-+.sp
-+\fBmp.resume_all()\fP JS: none (deprecated).
-+.sp
-+\fBmp.get_next_timeout()\fP see event loop below.
-+.sp
-+\fBmp.dispatch_events([allow_wait])\fP see event loop below.
-+.sp
-+\fBmp.options\fP module is not implemented currently for JS.
-+.SS Scripting APIs \- identical to Lua
-+.sp
-+(LE) \- Last\-Error, indicates that \fBmp.last_error()\fP can be used after the
-+call to test for success (empty string) or failure (non empty reason string).
-+Otherwise, where the Lua APIs return \fBnil\fP on error, JS returns \fBundefined\fP\&.
-+.sp
-+\fBmp.command(string)\fP (LE)
-+.sp
-+\fBmp.commandv(arg1, arg2, ...)\fP (LE)
-+.sp
-+\fBmp.command_native(table [,def])\fP (LE)
-+.sp
-+\fBmp.get_property(name [,def])\fP (LE)
-+.sp
-+\fBmp.get_property_osd(name [,def])\fP (LE)
-+.sp
-+\fBmp.get_property_bool(name [,def])\fP (LE)
-+.sp
-+\fBmp.get_property_number(name [,def])\fP (LE)
-+.sp
-+\fBmp.get_property_native(name [,def])\fP (LE)
-+.sp
-+\fBmp.set_property(name, value)\fP (LE)
-+.sp
-+\fBmp.set_property_bool(name, value)\fP (LE)
-+.sp
-+\fBmp.set_property_number(name, value)\fP (LE)
-+.sp
-+\fBmp.set_property_native(name, value)\fP (LE)
-+.sp
-+\fBmp.get_time()\fP
-+.sp
-+\fBmp.add_key_binding(key, name|fn [,fn [,flags]])\fP
-+.sp
-+\fBmp.add_forced_key_binding(...)\fP
-+.sp
-+\fBmp.remove_key_binding(name)\fP
-+.sp
-+\fBmp.register_event(name, fn)\fP
-+.sp
-+\fBmp.unregister_event(fn)\fP
-+.sp
-+\fBmp.observe_property(name, type, fn)\fP
-+.sp
-+\fBmp.unobserve_property(fn)\fP
-+.sp
-+\fBmp.get_opt(key)\fP
-+.sp
-+\fBmp.get_script_name()\fP
-+.sp
-+\fBmp.osd_message(text [,duration])\fP
-+.sp
-+\fBmp.get_wakeup_pipe()\fP
-+.sp
-+\fBmp.enable_messages(level)\fP
-+.sp
-+\fBmp.register_script_message(name, fn)\fP
-+.sp
-+\fBmp.unregister_script_message(name)\fP
-+.sp
-+\fBmp.msg.log(level, ...)\fP
-+.sp
-+\fBmp.msg.fatal(...)\fP
-+.sp
-+\fBmp.msg.error(...)\fP
-+.sp
-+\fBmp.msg.warn(...)\fP
-+.sp
-+\fBmp.msg.info(...)\fP
-+.sp
-+\fBmp.msg.verbose(...)\fP
-+.sp
-+\fBmp.msg.debug(...)\fP
-+.sp
-+\fBmp.utils.getcwd()\fP (LE)
-+.sp
-+\fBmp.utils.readdir(path [, filter])\fP (LE)
-+.sp
-+\fBmp.utils.split_path(path)\fP
-+.sp
-+\fBmp.utils.join_path(p1, p2)\fP
-+.sp
-+\fBmp.utils.subprocess(t)\fP
-+.sp
-+\fBmp.utils.subprocess_detached(t)\fP
-+.sp
-+\fBmp.add_hook(type, priority, fn)\fP
-+.SS Additional utilities
-+.INDENT 0.0
-+.TP
-+.B \fBmp.last_error()\fP
-+If used after an API call which updates last error, returns an empty string
-+if the API call succeeded, or a non\-empty error reason string otherwise.
-+.TP
-+.B \fBError.stack\fP (string)
-+When using \fBtry { ... } catch(e) { ... }\fP, then \fBe.stack\fP is the stack
-+trace of the error \- if it was created using the \fBError(...)\fP constructor.
-+.TP
-+.B \fBprint\fP (global)
-+A convenient alias to \fBmp.msg.info\fP\&.
-+.TP
-+.B \fBdump\fP (global)
-+Like \fBprint\fP but also expands objects and arrays recursively.
-+.TP
-+.B \fBmp.utils.getenv(name)\fP
-+Returns the value of the host environment variable \fBname\fP, or
-+\fBundefined\fP if the variable is not defined.
-+.TP
-+.B \fBmp.utils.get_user_path(path)\fP
-+Expands (mpv) meta paths like \fB~/x\fP, \fB~~/y\fP, \fB~~desktop/z\fP etc.
-+\fBread_file\fP, \fBwrite_file\fP and \fBrequire\fP already use this internaly.
-+.TP
-+.B \fBmp.utils.read_file(fname [,max])\fP
-+Returns the content of file \fBfname\fP as string. If \fBmax\fP is provided and
-+not negative, limit the read to \fBmax\fP bytes.
-+.TP
-+.B \fBmp.utils.write_file(fname, str)\fP
-+(Over)write file \fBfname\fP with text content \fBstr\fP\&. \fBfname\fP must be
-+prefixed with \fBfile://\fP as simple protection against accidental arguments
-+switch, e.g. \fBmp.utils.write_file("file://~/abc.txt", "hello world")\fP\&.
-+.UNINDENT
-+.sp
-+Note: \fBread_file\fP and \fBwrite_file\fP throw on errors, allow text content only.
-+.INDENT 0.0
-+.TP
-+.B \fBmp.get_time_ms()\fP
-+Same as \fBmp.get_time()\fP but in ms instead of seconds.
-+.TP
-+.B \fBmp.get_script_file()\fP
-+Returns the file name of the current script.
-+.TP
-+.B \fBexit()\fP (global)
-+Make the script exit at the end of the current event loop iteration.
-+Note: please reomve added key bindings before calling \fBexit()\fP\&.
-+.TP
-+.B \fBmp.utils.compile_js(fname, content_str)\fP
-+Compiles the JS code \fBcontent_str\fP as file name \fBfname\fP (without loading
-+anything from the filesystem), and returns it as a function. Very similar
-+to a \fBFunction\fP constructor, but shows at stack traces as \fBfname\fP\&.
-+.UNINDENT
-+.SS Timers (global)
-+.sp
-+The standard HTML/node.js timers are available:
-+.sp
-+\fBid = setTimeout(fn [,duration [,arg1 [,arg2...]]])\fP
-+.sp
-+\fBid = setTimeout(code_string [,duration])\fP
-+.sp
-+\fBclearTimeout(id)\fP
-+.sp
-+\fBid = setInterval(fn [,duration [,arg1 [,arg2...]]])\fP
-+.sp
-+\fBid = setInterval(code_string [,duration])\fP
-+.sp
-+\fBclearInterval(id)\fP
-+.sp
-+\fBsetTimeout\fP and \fBsetInterval\fP return id, and later call \fBfn\fP (or execute
-+\fBcode_string\fP) after \fBduration\fP ms. Interval also repeat every \fBduration\fP\&.
-+.sp
-+\fBduration\fP has a minimum and default value of 0, \fBcode_string\fP is
-+a plain string which is evaluated as JS code, and \fB[,arg1 [,arg2..]]\fP are used
-+as arguments (if provided) when calling back \fBfn\fP\&.
-+.sp
-+The \fBclear...(id)\fP functions cancel timer \fBid\fP, and are irreversible.
-+.sp
-+Note: timers always call back asynchronously, e.g. \fBsetTimeout(fn)\fP will never
-+call \fBfn\fP before returning. \fBfn\fP will be called either at the end of this
-+event loop iteration or at a later event loop iteration. This is true also for
-+intervals \- which also never call back twice at the same event loop iteration.
-+.sp
-+Additionally, timers are processed after the event queue is empty, so it\(aqs valid
-+to use \fBsetTimeout(fn)\fP instead of Lua\(aqs \fBmp.register_idle(fn)\fP\&.
-+.SS CommonJS modules and \fBrequire(id)\fP
-+.sp
-+CommonJS Modules are a standard system where scripts can export common functions
-+for use by other scripts. A module is a script which adds properties (functions,
-+etc) to its invisible \fBexports\fP object, which another script can access by
-+loading it with \fBrequire(module\-id)\fP \- which returns that \fBexports\fP object.
-+.sp
-+Modules and \fBrequire\fP are supported, standard compliant, and generally similar
-+to node.js. However, most node.js modules won\(aqt run due to missing modules such
-+as \fBfs\fP, \fBprocess\fP, etc, but some node.js modules with minimal dependencies
-+do work. In general, this is for mpv modules and not a node.js replacement.
-+.sp
-+A \fB\&.js\fP file extension is always added to \fBid\fP, e.g. \fBrequire("./foo")\fP
-+will load the file \fB\&./foo.js\fP and return its \fBexports\fP object.
-+.sp
-+An id is relative (to the script which \fBrequire\fP\(aqd it) if it starts with
-+\fB\&./\fP or \fB\&../\fP\&. Otherwise, it\(aqs considered a "top\-level id" (CommonJS term).
-+.sp
-+Top level id is evaluated as absolute filesystem path if possible (e.g. \fB/x/y\fP
-+or \fB~/x\fP). Otherwise, it\(aqs searched at \fBscripts/modules.js/\fP in mpv config
-+dirs \- in normal config search order. E.g. \fBrequire("x")\fP is searched as file
-+\fBx.js\fP at those dirs, and id \fBfoo/x\fP is searched as file \fBfoo/x.js\fP\&.
-+.sp
-+No \fBglobal\fP variable, but a module\(aqs \fBthis\fP at its top lexical scope is the
-+global object \- also in strict mode. If you have a module which needs \fBglobal\fP
-+as the global object, you could do \fBthis.global = this;\fP before \fBrequire\fP\&.
-+.sp
-+Functions and variables declared at a module don\(aqt pollute the global object.
-+.SS The event loop
-+.sp
-+The event loop poll/dispatch mpv events as long as the queue is not empty, then
-+processes the timers, then waits for the next event, and repeats this forever.
-+.sp
-+You could put this code at your script to replace the built\-in event loop, and
-+also print every event which mpv sends to your script:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+function mp_event_loop() {
-+ var wait = 0;
-+ do {
-+ var e = mp.wait_event(wait);
-+ dump(e); // there could be a lot of prints...
-+ if (e.event != "none") {
-+ mp.dispatch_event(e);
-+ wait = 0;
-+ } else {
-+ wait = mp.process_timers() / 1000;
-+ }
-+ } while (mp.keep_running);
-+}
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBmp_event_loop\fP is a name which mpv tries to call after the script loads.
-+The internal implementation is similar to this (without \fBdump\fP though..).
-+.sp
-+\fBe = mp.wait_event(wait)\fP returns when the next mpv event arrives, or after
-+\fBwait\fP seconds if positive and no mpv events arrived. \fBwait\fP value of 0
-+returns immediately (with \fBe.event == "none"\fP if the queue is empty).
-+.sp
-+\fBmp.dispatch_event(e)\fP calls back the handlers registered for \fBe.event\fP,
-+if there are such (event handlers, property observers, script messages, etc).
-+.sp
-+\fBmp.process_timers()\fP calls back the already\-added, non\-canceled due timers,
-+and returns the duration in ms till the next due timer (possibly 0), or \-1 if
-+there are no pending timers. Must not be called recursively.
-+.sp
-+Note: \fBexit()\fP is also registered for the \fBshutdown\fP event, and its
-+implementation is a simple \fBmp.keep_running = false\fP\&.
-+.SH JSON IPC
-+.sp
-+mpv can be controlled by external programs using the JSON\-based IPC protocol.
-+It can be enabled by specifying the path to a unix socket or a named pipe using
-+the option \fB\-\-input\-ipc\-server\fP\&. Clients can connect to this socket and send
-+commands to the player or receive events from it.
-+.sp
-+\fBWARNING:\fP
-+.INDENT 0.0
-+.INDENT 3.5
-+This is not intended to be a secure network protocol. It is explicitly
-+insecure: there is no authentication, no encryption, and the commands
-+themselves are insecure too. For example, the \fBrun\fP command is exposed,
-+which can run arbitrary system commands. The use\-case is controlling the
-+player locally. This is not different from the MPlayer slave protocol.
-+.UNINDENT
-+.UNINDENT
-+.SS Socat example
-+.sp
-+You can use the \fBsocat\fP tool to send commands (and receive replies) from the
-+shell. Assuming mpv was started with:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv file.mkv \-\-input\-ipc\-server=/tmp/mpvsocket
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Then you can control it using socat:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+> echo \(aq{ "command": ["get_property", "playback\-time"] }\(aq | socat \- /tmp/mpvsocket
-+{"data":190.482000,"error":"success"}
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+In this case, socat copies data between stdin/stdout and the mpv socket
-+connection.
-+.sp
-+See the \fB\-\-idle\fP option how to make mpv start without exiting immediately or
-+playing a file.
-+.sp
-+It\(aqs also possible to send input.conf style text\-only commands:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+> echo \(aqshow\-text ${playback\-time}\(aq | socat \- /tmp/mpvsocket
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+But you won\(aqt get a reply over the socket. (This particular command shows the
-+playback time on the player\(aqs OSD.)
-+.SS Command Prompt example
-+.sp
-+Unfortunately, it\(aqs not as easy to test the IPC protocol on Windows, since
-+Windows ports of socat (in Cygwin and MSYS2) don\(aqt understand named pipes. In
-+the absence of a simple tool to send and receive from bidirectional pipes, the
-+\fBecho\fP command can be used to send commands, but not receive replies from the
-+command prompt.
-+.sp
-+Assuming mpv was started with:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+mpv file.mkv \-\-input\-ipc\-server=\e\e.\epipe\empvsocket
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+You can send commands from a command prompt:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+echo show\-text ${playback\-time} >\e\e.\epipe\empvsocket
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+To be able to simultaneously read and write from the IPC pipe, like on Linux,
-+it\(aqs necessary to write an external program that uses overlapped file I/O (or
-+some wrapper like .NET\(aqs NamedPipeClientStream.)
-+.SS Protocol
-+.sp
-+Clients can execute commands on the player by sending JSON messages of the
-+following form:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["command_name", "param1", "param2", ...] }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+where \fBcommand_name\fP is the name of the command to be executed, followed by a
-+list of parameters. Parameters must be formatted as native JSON values
-+(integers, strings, booleans, ...). Every message \fBmust\fP be terminated with
-+\fB\en\fP\&. Additionally, \fB\en\fP must not appear anywhere inside the message. In
-+practice this means that messages should be minified before being sent to mpv.
-+.sp
-+mpv will then send back a reply indicating whether the command was run
-+correctly, and an additional field holding the command\-specific return data (it
-+can also be null).
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "error": "success", "data": null }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+mpv will also send events to clients with JSON messages of the following form:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "event": "event_name" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+where \fBevent_name\fP is the name of the event. Additional event\-specific fields
-+can also be present. See \fI\%List of events\fP for a list of all supported events.
-+.sp
-+Because events can occur at any time, it may be difficult at times to determine
-+which response goes with which command. Commands may optionally include a
-+\fBrequest_id\fP which, if provided in the command request, will be copied
-+verbatim into the response. mpv does not intrepret the \fBrequest_id\fP in any
-+way; it is solely for the use of the requester.
-+.sp
-+For example, this request:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["get_property", "time\-pos"], "request_id": 100 }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Would generate this response:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "error": "success", "data": 1.468135, "request_id": 100 }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+All commands, replies, and events are separated from each other with a line
-+break character (\fB\en\fP).
-+.sp
-+If the first character (after skipping whitespace) is not \fB{\fP, the command
-+will be interpreted as non\-JSON text command, as they are used in input.conf
-+(or \fBmpv_command_string()\fP in the client API). Additionally, lines starting
-+with \fB#\fP and empty lines are ignored.
-+.sp
-+Currently, embedded 0 bytes terminate the current line, but you should not
-+rely on this.
-+.SS Commands
-+.sp
-+In addition to the commands described in \fI\%List of Input Commands\fP, a few
-+extra commands can also be used as part of the protocol:
-+.INDENT 0.0
-+.TP
-+.B \fBclient_name\fP
-+Return the name of the client as string. This is the string \fBipc\-N\fP with
-+N being an integer number.
-+.TP
-+.B \fBget_time_us\fP
-+Return the current mpv internal time in microseconds as a number. This is
-+basically the system time, with an arbitrary offset.
-+.TP
-+.B \fBget_property\fP
-+Return the value of the given property. The value will be sent in the data
-+field of the replay message.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["get_property", "volume"] }
-+{ "data": 50.0, "error": "success" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBget_property_string\fP
-+Like \fBget_property\fP, but the resulting data will always be a string.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["get_property_string", "volume"] }
-+{ "data": "50.000000", "error": "success" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBset_property\fP
-+Set the given property to the given value. See \fI\%Properties\fP for more
-+information about properties.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["set_property", "pause", true] }
-+{ "error": "success" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBset_property_string\fP
-+Like \fBset_property\fP, but the argument value must be passed as string.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["set_property_string", "pause", "yes"] }
-+{ "error": "success" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBobserve_property\fP
-+Watch a property for changes. If the given property is changed, then an
-+event of type \fBproperty\-change\fP will be generated
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["observe_property", 1, "volume"] }
-+{ "error": "success" }
-+{ "event": "property\-change", "id": 1, "data": 52.0, "name": "volume" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+\fBWARNING:\fP
-+.INDENT 7.0
-+.INDENT 3.5
-+If the connection is closed, the IPC client is destroyed internally,
-+and the observed properties are unregistered. This happens for example
-+when sending commands to a socket with separate \fBsocat\fP invocations.
-+This can make it seem like property observation does not work. You must
-+keep the IPC connection open to make it work.
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBobserve_property_string\fP
-+Like \fBobserve_property\fP, but the resulting data will always be a string.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["observe_property_string", 1, "volume"] }
-+{ "error": "success" }
-+{ "event": "property\-change", "id": 1, "data": "52.000000", "name": "volume" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBunobserve_property\fP
-+Undo \fBobserve_property\fP or \fBobserve_property_string\fP\&. This requires the
-+numeric id passed to the observed command as argument.
-+.sp
-+Example:
-+.INDENT 7.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+{ "command": ["unobserve_property", 1] }
-+{ "error": "success" }
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.TP
-+.B \fBrequest_log_messages\fP
-+Enable output of mpv log messages. They will be received as events. The
-+parameter to this command is the log\-level (see \fBmpv_request_log_messages\fP
-+C API function).
-+.sp
-+Log message output is meant for humans only (mostly for debugging).
-+Attempting to retrieve information by parsing these messages will just
-+lead to breakages with future mpv releases. Instead, make a feature request,
-+and ask for a proper event that returns the information you need.
-+.TP
-+.B \fBenable_event\fP, \fBdisable_event\fP
-+Enables or disables the named event. Mirrors the \fBmpv_request_event\fP C
-+API function. If the string \fBall\fP is used instead of an event name, all
-+events are enabled or disabled.
-+.sp
-+By default, most events are enabled, and there is not much use for this
-+command.
-+.TP
-+.B \fBget_version\fP
-+Returns the client API version the C API of the remote mpv instance
-+provides.
-+.sp
-+See also: \fBDOCS/client\-api\-changes.rst\fP\&.
-+.UNINDENT
-+.SS UTF\-8
-+.sp
-+Normally, all strings are in UTF\-8. Sometimes it can happen that strings are
-+in some broken encoding (often happens with file tags and such, and filenames
-+on many Unixes are not required to be in UTF\-8 either). This means that mpv
-+sometimes sends invalid JSON. If that is a problem for the client application\(aqs
-+parser, it should filter the raw data for invalid UTF\-8 sequences and perform
-+the desired replacement, before feeding the data to its JSON parser.
-+.sp
-+mpv will not attempt to construct invalid UTF\-8 with broken escape sequences.
-+.SH CHANGELOG
-+.sp
-+There is no real changelog, but you can look at the following things:
-+.INDENT 0.0
-+.IP \(bu 2
-+The release changelog, which should contain most user\-visible changes,
-+including new features and bug fixes:
-+.sp
-+\fI\%https://github.com/mpv\-player/mpv/releases\fP
-+.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. (Not updated
-+anymore.)
-+.UNINDENT
-+.SH EMBEDDING INTO OTHER PROGRAMS (LIBMPV)
-+.sp
-+mpv can be embedded into other programs as video/audio playback backend. The
-+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 C PLUGINS
-+.sp
-+You can write C plugins for mpv. These use the libmpv API, although they do not
-+use the libmpv library itself.
-+.sp
-+Currently, they must be explicitly enabled at build time with
-+\fB\-\-enable\-cplugins\fP\&. They are available on Linux/BSD platforms only.
-+.SS C plugins location
-+.sp
-+C plugins are put into the mpv scripts directory in its config directory
-+(see the \fI\%FILES\fP section for details). They must have a \fB\&.so\fP file extension.
-+They can also be explicitly loaded with the \fB\-\-script\fP option.
-+.SS API
-+.sp
-+A C plugin must export the following function:
-+.INDENT 0.0
-+.INDENT 3.5
-+.sp
-+.nf
-+.ft C
-+int mpv_open_cplugin(mpv_handle *handle)
-+.ft P
-+.fi
-+.UNINDENT
-+.UNINDENT
-+.sp
-+The plugin function will be called on loading time. This function does not
-+return as long as your plugin is loaded (it runs in its own thread). The
-+\fBhandle\fP will be deallocated as soon as the plugin function returns.
-+.sp
-+The return value is interpreted as error status. A value of \fB0\fP is
-+interpreted as success, while \fB\-1\fP signals an error. In the latter case,
-+the player prints an uninformative error message that loading failed.
-+.sp
-+Return values other than \fB0\fP and \fB\-1\fP are reserved, and trigger undefined
-+behavior.
-+.sp
-+Within the plugin function, you can call libmpv API functions. The \fBhandle\fP
-+is created by \fBmpv_create_client()\fP (or actually an internal equivalent),
-+and belongs to you. You can call \fBmpv_wait_event()\fP to wait for things
-+happening, and so on.
-+.sp
-+Note that the player might block until your plugin calls \fBmpv_wait_event()\fP
-+for the first time. This gives you a chance to install initial hooks etc.
-+before playback begins.
-+.sp
-+The details are quite similar to Lua scripts.
-+.SS Linkage to libmpv
-+.sp
-+The current implementation requires that your plugins are \fBnot\fP linked against
-+libmpv. What your plugins uses are not symbols from a libmpv binary, but
-+symbols from the mpv host binary.
-+.SS Examples
-+.sp
-+See:
-+.INDENT 0.0
-+.IP \(bu 2
-+\fI\%https://github.com/mpv\-player/mpv\-examples/tree/master/cplugins\fP
-+.UNINDENT
-+.SH ENVIRONMENT VARIABLES
-+.sp
-+There are a number of environment variables that can be used to control the
-+behavior of mpv.
-+.INDENT 0.0
-+.TP
-+.B \fBHOME\fP, \fBXDG_CONFIG_HOME\fP
-+Used to determine mpv config directory. If \fBXDG_CONFIG_HOME\fP is not set,
-+\fB$HOME/.config/mpv\fP is used.
-+.sp
-+\fB$HOME/.mpv\fP is always added to the list of config search paths with a
-+lower priority.
-+.TP
-+.B \fBXDG_CONFIG_DIRS\fP
-+If set, XDG\-style system configuration directories are used. Otherwise,
-+the UNIX convention (\fBPREFIX/etc/mpv/\fP) is used.
-+.TP
-+.B \fBMPV_HOME\fP
-+Directory where mpv looks for user settings. Overrides \fBHOME\fP, and mpv
-+will try to load the config file as \fB$MPV_HOME/mpv.conf\fP\&.
-+.TP
-+.B \fBMPV_VERBOSE\fP (see also \fB\-v\fP and \fB\-\-msg\-level\fP)
-+Set the initial verbosity level across all message modules (default: 0).
-+This is an integer, and the resulting verbosity corresponds to the number
-+of \fB\-\-v\fP options passed to the command line.
-+.TP
-+.B \fBMPV_LEAK_REPORT\fP
-+If set to \fB1\fP, enable internal talloc leak reporting.
-+.TP
-+.B \fBLADSPA_PATH\fP
-+Specifies the search path for LADSPA plugins. If it is unset, fully
-+qualified path names must be used.
-+.TP
-+.B \fBDISPLAY\fP
-+Standard X11 display name to use.
-+.TP
-+.B FFmpeg/Libav:
-+This library accesses various environment variables. However, they are not
-+centrally documented, and documenting them is not our job. Therefore, this
-+list is incomplete.
-+.sp
-+Notable environment variables:
-+.INDENT 7.0
-+.TP
-+.B \fBhttp_proxy\fP
-+URL to proxy for \fBhttp://\fP and \fBhttps://\fP URLs.
-+.TP
-+.B \fBno_proxy\fP
-+List of domain patterns for which no proxy should be used.
-+List entries are separated by \fB,\fP\&. Patterns can include \fB*\fP\&.
-+.UNINDENT
-+.TP
-+.B libdvdcss:
-+.INDENT 7.0
-+.TP
-+.B \fBDVDCSS_CACHE\fP
-+Specify a directory in which to store title key values. This will
-+speed up descrambling of DVDs which are in the cache. The
-+\fBDVDCSS_CACHE\fP directory is created if it does not exist, and a
-+subdirectory is created named after the DVD\(aqs title or manufacturing
-+date. If \fBDVDCSS_CACHE\fP is not set or is empty, libdvdcss will use
-+the default value which is \fB${HOME}/.dvdcss/\fP under Unix and
-+the roaming application data directory (\fB%APPDATA%\fP) under
-+Windows. The special value "off" disables caching.
-+.TP
-+.B \fBDVDCSS_METHOD\fP
-+Sets the authentication and decryption method that libdvdcss will use
-+to read scrambled discs. Can be one of \fBtitle\fP, \fBkey\fP or \fBdisc\fP\&.
-+.INDENT 7.0
-+.TP
-+.B key
-+is the default method. libdvdcss will use a set of calculated
-+player keys to try to get the disc key. This can fail if the drive
-+does not recognize any of the player keys.
-+.TP
-+.B disc
-+is a fallback method when key has failed. Instead of using player
-+keys, libdvdcss will crack the disc key using a brute force
-+algorithm. This process is CPU intensive and requires 64 MB of
-+memory to store temporary data.
-+.TP
-+.B title
-+is the fallback when all other methods have failed. It does not
-+rely on a key exchange with the DVD drive, but rather uses a crypto
-+attack to guess the title key. On rare cases this may fail because
-+there is not enough encrypted data on the disc to perform a
-+statistical attack, but on the other hand it is the only way to
-+decrypt a DVD stored on a hard disc, or a DVD with the wrong region
-+on an RPC2 drive.
-+.UNINDENT
-+.TP
-+.B \fBDVDCSS_RAW_DEVICE\fP
-+Specify the raw device to use. Exact usage will depend on your
-+operating system, the Linux utility to set up raw devices is raw(8)
-+for instance. Please note that on most operating systems, using a raw
-+device requires highly aligned buffers: Linux requires a 2048 bytes
-+alignment (which is the size of a DVD sector).
-+.TP
-+.B \fBDVDCSS_VERBOSE\fP
-+Sets the libdvdcss verbosity level.
-+.INDENT 7.0
-+.TP
-+.B 0
-+Outputs no messages at all.
-+.TP
-+.B 1
-+Outputs error messages to stderr.
-+.TP
-+.B 2
-+Outputs error messages and debug messages to stderr.
-+.UNINDENT
-+.TP
-+.B \fBDVDREAD_NOKEYS\fP
-+Skip retrieving all keys on startup. Currently disabled.
-+.TP
-+.B \fBHOME\fP
-+FIXME: Document this.
-+.UNINDENT
-+.UNINDENT
-+.SH EXIT CODES
-+.sp
-+Normally \fBmpv\fP returns 0 as exit code after finishing playback successfully.
-+If errors happen, the following exit codes can be returned:
-+.INDENT 0.0
-+.INDENT 3.5
-+.INDENT 0.0
-+.TP
-+.B 1
-+Error initializing mpv. This is also returned if unknown options are
-+passed to mpv.
-+.TP
-+.B 2
-+The file passed to mpv couldn\(aqt be played. This is somewhat fuzzy:
-+currently, playback of a file is considered to be successful if
-+initialization was mostly successful, even if playback fails
-+immediately after initialization.
-+.TP
-+.B 3
-+There were some files that could be played, and some files which
-+couldn\(aqt (using the definition of success from above).
-+.TP
-+.B 4
-+Quit due to a signal, Ctrl+c in a VO window (by default), or from the
-+default quit key bindings in encoding mode.
-+.UNINDENT
-+.UNINDENT
-+.UNINDENT
-+.sp
-+Note that quitting the player manually will always lead to exit code 0,
-+overriding the exit code that would be returned normally. Also, the \fBquit\fP
-+input command can take an exit code: in this case, that exit code is returned.
-+.SH FILES
-+.sp
-+For Windows\-specifics, see \fI\%FILES ON WINDOWS\fP section.
-+.INDENT 0.0
-+.TP
-+.B \fB/usr/local/etc/mpv/mpv.conf\fP
-+mpv system\-wide settings (depends on \fB\-\-prefix\fP passed to configure \- mpv
-+in default configuration will use \fB/usr/local/etc/mpv/\fP as config
-+directory, while most Linux distributions will set it to \fB/etc/mpv/\fP).
-+.TP
-+.B \fB~/.config/mpv/mpv.conf\fP
-+mpv user settings (see \fI\%CONFIGURATION FILES\fP section)
-+.TP
-+.B \fB~/.config/mpv/input.conf\fP
-+key bindings (see \fI\%INPUT.CONF\fP section)
-+.TP
-+.B \fB~/.config/mpv/fonts.conf\fP
-+Fontconfig fonts.conf that is customized for mpv. You should include system
-+fonts.conf in this file or mpv would not know about fonts that you already
-+have in the system.
-+.sp
-+Only available when libass is built with fontconfig.
-+.TP
-+.B \fB~/.config/mpv/subfont.ttf\fP
-+fallback subtitle font
-+.TP
-+.B \fB~/.config/mpv/fonts/\fP
-+Font files in this directory are used by mpv/libass for subtitles. Useful
-+if you do not want to install fonts to your system. Note that files in this
-+directory are loaded into memory before being used by mpv. If you have a
-+lot of fonts, consider using fonts.conf (see above) to include additional
-+fonts, which is more memory\-efficient.
-+.TP
-+.B \fB~/.config/mpv/scripts/\fP
-+All files in this directory are loaded as if they were passed to the
-+\fB\-\-script\fP option. They are loaded in alphabetical order, and sub\-directories
-+and files with no \fB\&.lua\fP extension are ignored. The \fB\-\-load\-scripts=no\fP
-+option disables loading these files.
-+.TP
-+.B \fB~/.config/mpv/watch_later/\fP
-+Contains temporary config files needed for resuming playback of files with
-+the watch later feature. See for example the \fBQ\fP key binding, or the
-+\fBquit\-watch\-later\fP input command.
-+.sp
-+Each file is a small config file which is loaded if the corresponding media
-+file is loaded. It contains the playback position and some (not necessarily
-+all) settings that were changed during playback. The filenames are hashed
-+from the full paths of the media files. It\(aqs in general not possible to
-+extract the media filename from this hash. However, you can set the
-+\fB\-\-write\-filename\-in\-watch\-later\-config\fP option, and the player will
-+add the media filename to the contents of the resume config file.
-+.TP
-+.B \fB~/.config/mpv/lua\-settings/osc.conf\fP
-+This is loaded by the OSC script. See the \fI\%ON SCREEN CONTROLLER\fP docs
-+for details.
-+.sp
-+Other files in this directory are specific to the corresponding scripts
-+as well, and the mpv core doesn\(aqt touch them.
-+.UNINDENT
-+.sp
-+Note that the environment variables \fB$XDG_CONFIG_HOME\fP and \fB$MPV_HOME\fP can
-+override the standard directory \fB~/.config/mpv/\fP\&.
-+.sp
-+Also, the old config location at \fB~/.mpv/\fP is still read, and if the XDG
-+variant does not exist, will still be preferred.
-+.SH FILES ON WINDOWS
-+.sp
-+On win32 (if compiled with MinGW, but not Cygwin), the default config file
-+locations are different. They are generally located under \fB%APPDATA%/mpv/\fP\&.
-+For example, the path to mpv.conf is \fB%APPDATA%/mpv/mpv.conf\fP, which maps to
-+a system and user\-specific path, for example
-+.INDENT 0.0
-+.INDENT 3.5
-+\fBC:\eusers\eUSERNAME\eAppData\eRoaming\empv\empv.conf\fP
-+.UNINDENT
-+.UNINDENT
-+.sp
-+You can find the exact path by running \fBecho %APPDATA%\empv\empv.conf\fP in cmd.exe.
-+.sp
-+Other config files (such as \fBinput.conf\fP) are in the same directory. See the
-+\fI\%FILES\fP section above.
-+.sp
-+The environment variable \fB$MPV_HOME\fP completely overrides these, like on
-+UNIX.
-+.sp
-+If a directory named \fBportable_config\fP next to the mpv.exe exists, all
-+config will be loaded from this directory only. Watch later config files are
-+written to this directory as well. (This exists on Windows only and is redundant
-+with \fB$MPV_HOME\fP\&. However, since Windows is very scripting unfriendly, a
-+wrapper script just setting \fB$MPV_HOME\fP, like you could do it on other
-+systems, won\(aqt work. \fBportable_config\fP is provided for convenience to get
-+around this restriction.)
-+.sp
-+Config files located in the same directory as \fBmpv.exe\fP are loaded with
-+lower priority. Some config files are loaded only once, which means that
-+e.g. of 2 \fBinput.conf\fP files located in two config directories, only the
-+one from the directory with higher priority will be loaded.
-+.sp
-+A third config directory with the lowest priority is the directory named \fBmpv\fP
-+in the same directory as \fBmpv.exe\fP\&. This used to be the directory with the
-+highest priority, but is now discouraged to use and might be removed in the
-+future.
-+.sp
-+Note that mpv likes to mix \fB/\fP and \fB\e\fP path separators for simplicity.
-+kernel32.dll accepts this, but cmd.exe does not.
-+.SH COPYRIGHT
-+GPLv2+
-+.\" Generated by docutils manpage writer.
-+.
---
-2.14.1
-
diff --git a/pkg/mpv/rev b/pkg/mpv/rev
@@ -1 +1 @@
-11
+12