summaryrefslogtreecommitdiffstats
path: root/DOCS/man/vo.rst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--DOCS/man/vo.rst710
1 files changed, 710 insertions, 0 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst
new file mode 100644
index 0000000..5ee4eaa
--- /dev/null
+++ b/DOCS/man/vo.rst
@@ -0,0 +1,710 @@
+VIDEO OUTPUT DRIVERS
+====================
+
+Video output drivers are interfaces to different video output facilities. The
+syntax is:
+
+``--vo=<driver1,driver2,...[,]>``
+ Specify a priority list of video output drivers to be used.
+
+If the list has a trailing ``,``, mpv will fall back on drivers not contained
+in the list.
+
+.. note::
+
+ See ``--vo=help`` for a list of compiled-in video output drivers.
+
+ The recommended output driver is ``--vo=gpu``, 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 ``--vo=help``).
+
+Available video output drivers are:
+
+``gpu``
+ General purpose, customizable, GPU-accelerated video output driver. It
+ supports extended scaling methods, dithering, color management, custom
+ shaders, HDR, and more.
+
+ See `GPU renderer options`_ for options specific to this VO.
+
+ By default, mpv utilizes settings that balance quality and performance.
+ Additionally, two predefined profiles are available: ``fast`` for maximum
+ performance and ``high-quality`` for superior rendering quality. You can
+ apply a specific profile using the ``--profile=<name>`` option and inspect
+ its contents using ``--show-profile=<name>``.
+
+ This VO abstracts over several possible graphics APIs and windowing
+ contexts, which can be influenced using the ``--gpu-api`` and
+ ``--gpu-context`` options.
+
+ 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.
+
+ ``gpu`` makes use of FBOs by default. Sometimes you can achieve better
+ quality or performance by changing the ``--fbo-format`` option to
+ ``rgb16f``, ``rgb32f`` or ``rgb``. Known problems include Mesa/Intel not
+ accepting ``rgb16``, Mesa sometimes not being compiled with float texture
+ support, and some macOS setups being very slow with ``rgb16`` but fast
+ with ``rgb32f``. If you have problems, you can also try enabling the
+ ``--gpu-dumb-mode=yes`` option.
+
+``gpu-next``
+ Experimental video renderer based on ``libplacebo``. This supports almost
+ the same set of features as ``--vo=gpu``. See `GPU renderer options`_ for a
+ list.
+
+ Should generally be faster and higher quality, but some features may still
+ be missing or misbehave. Expect (and report!) bugs. See here for a list of
+ known differences and bugs:
+
+ https://github.com/mpv-player/mpv/wiki/GPU-Next-vs-GPU
+
+``xv`` (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.
+
+ .. note:: This driver is for compatibility with old systems.
+
+ The following global options are supported by this video output:
+
+ ``--xv-adaptor=<number>``
+ Select a specific XVideo adapter (check xvinfo results).
+ ``--xv-port=<number>``
+ Select a specific XVideo port.
+ ``--xv-ck=<cur|use|set>``
+ Select the source from which the color key is taken (default: cur).
+
+ cur
+ The default takes the color key currently set in Xv.
+ use
+ Use but do not set the color key from mpv (use the ``--colorkey``
+ option to change it).
+ set
+ Same as use but also sets the supplied color key.
+
+ ``--xv-ck-method=<none|man|bg|auto>``
+ Sets the color key drawing method (default: man).
+
+ none
+ Disables color-keying.
+ man
+ Draw the color key manually (reduces flicker in some cases).
+ bg
+ Set the color key as window background.
+ auto
+ Let Xv draw the color key.
+
+ ``--xv-colorkey=<number>``
+ Changes the color key to an RGB value of your choice. ``0x000000`` is
+ black and ``0xffffff`` is white.
+
+ ``--xv-buffers=<number>``
+ 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.
+
+``x11`` (X11 only)
+ Shared memory video output driver without hardware acceleration that works
+ whenever X11 is present.
+
+ Since mpv 0.30.0, you may need to use ``--profile=sw-fast`` to get decent
+ performance.
+
+ .. note:: This is a fallback only, and should not be normally used.
+
+``vdpau`` (X11 only)
+ Uses the VDPAU interface to display and optionally also decode video.
+ Hardware decoding is used with ``--hwdec=vdpau``. Note that there is
+ absolutely no reason to use this, other than compatibility. We strongly
+ recommend that you use ``--vo=gpu`` with ``--hwdec=nvdec`` instead.
+
+ .. note::
+
+ Earlier versions of mpv (and MPlayer, mplayer2) provided sub-options
+ to tune vdpau post-processing, like ``deint``, ``sharpen``, ``denoise``,
+ ``chroma-deint``, ``pullup``, ``hqscaling``. These sub-options are
+ deprecated, and you should use the ``vdpaupp`` video filter instead.
+
+ The following global options are supported by this video output:
+
+ ``--vo-vdpau-sharpen=<-1-1>``
+ (Deprecated. See note about ``vdpaupp``.)
+
+ For positive values, apply a sharpening algorithm to the video, for
+ negative values a blurring algorithm (default: 0).
+ ``--vo-vdpau-denoise=<0-1>``
+ (Deprecated. See note about ``vdpaupp``.)
+
+ Apply a noise reduction algorithm to the video (default: 0; no noise
+ reduction).
+ ``--vo-vdpau-chroma-deint``
+ (Deprecated. See note about ``vdpaupp``.)
+
+ 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.
+ ``--vo-vdpau-pullup``
+ (Deprecated. See note about ``vdpaupp``.)
+
+ Try to apply inverse telecine, needs motion adaptive temporal
+ deinterlacing.
+ ``--vo-vdpau-hqscaling=<0-9>``
+ (Deprecated. See note about ``vdpaupp``.)
+
+ 0
+ Use default VDPAU scaling (default).
+ 1-9
+ Apply high quality VDPAU scaling (needs capable hardware).
+ ``--vo-vdpau-fps=<number>``
+ 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.
+ ``--vo-vdpau-composite-detect``
+ NVIDIA's 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 ``fps=-1`` (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 ``--vo-vdpau-composite-detect=no`` to disable.
+ ``--vo-vdpau-queuetime-windowed=<number>`` and ``queuetime-fs=<number>``
+ Use VDPAU's presentation queue functionality to queue future video
+ frame changes at most this many milliseconds in advance (default: 50).
+ See below for additional information.
+ ``--vo-vdpau-output-surfaces=<2-15>``
+ Allocate this many output surfaces to display video frames (default:
+ 3). See below for additional information.
+ ``--vo-vdpau-colorkey=<#RRGGBB|#AARRGGBB>``
+ Set the VDPAU presentation queue background color, which in practice
+ is the colorkey used if VDPAU operates in overlay mode (default:
+ ``#020507``, 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).
+ ``--vo-vdpau-force-yuv``
+ 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.
+
+ Using the VDPAU frame queuing functionality controlled by the queuetime
+ options makes mpv's 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).
+
+ You can queue more frames ahead by increasing the queuetime values and the
+ ``output_surfaces`` 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're 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.
+
+``direct3d`` (Windows only)
+ Video output driver that uses the Direct3D interface.
+
+ .. note:: This driver is for compatibility with systems that don't provide
+ proper OpenGL drivers, and where ANGLE does not perform well.
+
+ The following global options are supported by this video output:
+
+ ``--vo-direct3d-disable-texture-align``
+ 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.
+
+
+ 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.
+
+ ``--vo-direct3d-force-power-of-2``
+ Always force textures to power of 2, even if the device reports
+ non-power-of-2 texture sizes as supported.
+
+ ``--vo-direct3d-texture-memory=<mode>``
+ Only affects operation with shaders/texturing enabled, and (E)OSD.
+ Possible values:
+
+ ``default`` (default)
+ Use ``D3DPOOL_DEFAULT``, with a ``D3DPOOL_SYSTEMMEM`` texture for
+ locking. If the driver supports ``D3DDEVCAPS_TEXTURESYSTEMMEMORY``,
+ ``D3DPOOL_SYSTEMMEM`` is used directly.
+
+ ``default-pool``
+ Use ``D3DPOOL_DEFAULT``. (Like ``default``, but never use a
+ shadow-texture.)
+
+ ``default-pool-shadow``
+ Use ``D3DPOOL_DEFAULT``, with a ``D3DPOOL_SYSTEMMEM`` texture for
+ locking. (Like ``default``, but always force the shadow-texture.)
+
+ ``managed``
+ Use ``D3DPOOL_MANAGED``.
+
+ ``scratch``
+ Use ``D3DPOOL_SCRATCH``, with a ``D3DPOOL_SYSTEMMEM`` texture for
+ locking.
+
+ ``--vo-direct3d-swap-discard``
+ Use ``D3DSWAPEFFECT_DISCARD``, which might be faster.
+ Might be slower too, as it must(?) clear every frame.
+
+ ``--vo-direct3d-exact-backbuffer``
+ Always resize the backbuffer to window size.
+
+``sdl``
+ 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 ``SDL_hints.h``.
+
+ .. note:: This driver is for compatibility with systems that don't provide
+ proper graphics drivers.
+
+ The following global options are supported by this video output:
+
+ ``--sdl-sw``
+ Continue even if a software renderer is detected.
+
+ ``--sdl-switch-mode``
+ Instruct SDL to switch the monitor video mode when going fullscreen.
+
+``dmabuf-wayland``
+ Experimental Wayland output driver designed for use with either drm stateless
+ or VA API hardware decoding. The driver is designed to avoid any GPU to CPU copies,
+ and to perform scaling and color space conversion using fixed-function hardware,
+ if available, rather than GPU shaders. This frees up GPU resources for other tasks.
+ It is highly recommended to use this VO with the appropriate ``--hwdec`` option such
+ as ``auto-safe``. It can still work in some circumstances without ``--hwdec`` due to
+ mpv's internal conversion filters, but this is not recommended as it's a needless
+ extra step. Correct output depends on support from your GPU, drivers, and compositor.
+ Weston and wlroots-based compositors like Sway and Intel GPUs are known to generally
+ work.
+
+``vaapi``
+ 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. We strongly recommend that
+ you use ``--vo=gpu`` with ``--hwdec=vaapi`` instead.
+
+ The following global options are supported by this video output:
+
+ ``--vo-vaapi-scaling=<algorithm>``
+ default
+ Driver default (mpv default as well).
+ fast
+ Fast, but low quality.
+ hq
+ Unspecified driver dependent high-quality scaling, slow.
+ nla
+ ``non-linear anamorphic scaling``
+
+ ``--vo-vaapi-scaled-osd=<yes|no>``
+ 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.
+
+``null``
+ Produces no video output. Useful for benchmarking.
+
+ Usually, it's better to disable video with ``--no-video`` instead.
+
+ The following global options are supported by this video output:
+
+ ``--vo-null-fps=<value>``
+ Simulate display FPS. This artificially limits how many frames the
+ VO accepts per second.
+
+``caca``
+ Color ASCII art video output driver that works on a text console.
+
+ .. note:: This driver is a joke.
+
+``tct``
+ Color Unicode art video output driver that works on a text console.
+ By default depends on support of true color by modern terminals to display
+ the images at full color range, but 256-colors output is also supported (see
+ below). On Windows it requires an ansi terminal such as mintty.
+
+ Since mpv 0.30.0, you may need to use ``--profile=sw-fast`` to get decent
+ performance.
+
+ Note: the TCT image output is not synchronized with other terminal output
+ from mpv, which can lead to broken images. The options ``--no-terminal`` or
+ ``--really-quiet`` can help with that.
+
+ ``--vo-tct-algo=<algo>``
+ Select how to write the pixels to the terminal.
+
+ half-blocks
+ Uses unicode LOWER HALF BLOCK character to achieve higher vertical
+ resolution. (Default.)
+ plain
+ Uses spaces. Causes vertical resolution to drop twofolds, but in
+ theory works in more places.
+
+ ``--vo-tct-width=<width>`` ``--vo-tct-height=<height>``
+ Assume the terminal has the specified character width and/or height.
+ These default to 80x25 if the terminal size cannot be determined.
+
+ ``--vo-tct-256=<yes|no>`` (default: no)
+ Use 256 colors - for terminals which don't support true color.
+
+``kitty``
+ Graphical output for the terminal, using the kitty graphics protocol.
+ Tested with kitty and Konsole.
+
+ You may need to use ``--profile=sw-fast`` to get decent performance.
+
+ Kitty size and alignment options:
+
+ ``--vo-kitty-cols=<columns>``, ``--vo-kitty-rows=<rows>`` (default: 0)
+ Specify the terminal size in character cells, otherwise (0) read it
+ from the terminal, or fall back to 80x25.
+
+ ``--vo-kitty-width=<width>``, ``--vo-kitty-height=<height>`` (default: 0)
+ Specify the available size in pixels, otherwise (0) read it from the
+ terminal, or fall back to 320x240.
+
+ ``--vo-kitty-left=<col>``, ``--vo-kitty-top=<row>`` (default: 0)
+ Specify the position in character cells where the image starts (1 is
+ the first column or row). If 0 (default) then try to automatically
+ determine it according to the other values and the image aspect ratio
+ and zoom.
+
+ ``--vo-kitty-config-clear=<yes|no>`` (default: yes)
+ Whether or not to clear the terminal whenever the output is
+ reconfigured (e.g. when video size changes).
+
+ ``--vo-kitty-alt-screen=<yes|no>`` (default: yes)
+ Whether or not to use the alternate screen buffer and return the
+ terminal to its previous state on exit. When set to no, the last
+ kitty image stays on screen after quit, with the cursor following it.
+
+ ``--vo-kitty-use-shm=<yes|no>`` (default: no)
+ Use shared memory objects to transfer image data to the terminal.
+ This is much faster than sending the data as escape codes, but is not
+ supported by as many terminals. It also only works on the local machine
+ and not via e.g. SSH connections.
+
+ This option is not implemented on Windows.
+
+``sixel``
+ Graphical output for the terminal, using sixels. Tested with ``mlterm`` and
+ ``xterm``.
+
+ Note: the Sixel image output is not synchronized with other terminal
+ output from mpv, which can lead to broken images.
+ The option ``--really-quiet`` can help with that, and is recommended.
+ On some platforms, using the ``--vo-sixel-buffered`` option may work as
+ well.
+
+ You may need to use ``--profile=sw-fast`` to get decent performance.
+
+ Note: at the time of writing, ``xterm`` does not enable sixel by default -
+ launching it as ``xterm -ti 340`` is one way to enable it. Also, ``xterm``
+ does not display images bigger than 1000x1000 pixels by default.
+
+ To render and align sixel images correctly, mpv needs to know the terminal
+ size both in cells and in pixels. By default it tries to use values which
+ the terminal reports, however, due to differences between terminals this is
+ an error-prone process which cannot be automated with certainty - some
+ terminals report the size in pixels including the padding - e.g. ``xterm``,
+ while others report the actual usable number of pixels - like ``mlterm``.
+ Additionally, they may behave differently when maximized or in fullscreen,
+ and mpv cannot detect this state using standard methods.
+
+ Sixel size and alignment options:
+
+ ``--vo-sixel-cols=<columns>``, ``--vo-sixel-rows=<rows>`` (default: 0)
+ Specify the terminal size in character cells, otherwise (0) read it
+ from the terminal, or fall back to 80x25. Note that mpv doesn't use the
+ the last row with sixel because this seems to result in scrolling.
+
+ ``--vo-sixel-width=<width>``, ``--vo-sixel-height=<height>`` (default: 0)
+ Specify the available size in pixels, otherwise (0) read it from the
+ terminal, or fall back to 320x240. Other than excluding the last line,
+ the height is also further rounded down to a multiple of 6 (sixel unit
+ height) to avoid overflowing below the designated size.
+
+ ``--vo-sixel-left=<col>``, ``--vo-sixel-top=<row>`` (default: 0)
+ Specify the position in character cells where the image starts (1 is
+ the first column or row). If 0 (default) then try to automatically
+ determine it according to the other values and the image aspect ratio
+ and zoom.
+
+ ``--vo-sixel-pad-x=<pad_x>``, ``--vo-sixel-pad-y=<pad_y>`` (default: -1)
+ Used only when mpv reads the size in pixels from the terminal.
+ Specify the number of padding pixels (on one side) which are included
+ at the size which the terminal reports. If -1 (default) then the number
+ of pixels is rounded down to a multiple of number of cells (per axis),
+ to take into account padding at the report - this only works correctly
+ when the overall padding per axis is smaller than the number of cells.
+
+ ``--vo-sixel-config-clear=<yes|no>`` (default: yes)
+ Whether or not to clear the terminal whenever the output is
+ reconfigured (e.g. when video size changes).
+
+ ``--vo-sixel-alt-screen=<yes|no>`` (default: yes)
+ Whether or not to use the alternate screen buffer and return the
+ terminal to its previous state on exit. When set to no, the last
+ sixel image stays on screen after quit, with the cursor following it.
+
+ ``--vo-sixel-exit-clear`` is a deprecated alias for this option and
+ may be removed in the future.
+
+ ``--vo-sixel-buffered=<yes|no>`` (default: no)
+ Buffers the full output sequence before writing it to the terminal.
+ On POSIX platforms, this can help prevent interruption (including from
+ other applications) and thus broken images, but may come at a
+ performance cost with some terminals and is subject to implementation
+ details.
+
+ Sixel image quality options:
+
+ ``--vo-sixel-dither=<algo>``
+ Selects the dither algorithm which libsixel should apply.
+ Can be one of the below list as per libsixel's documentation.
+
+ auto (Default)
+ Let libsixel choose the dithering method.
+ none
+ Don't diffuse
+ atkinson
+ Diffuse with Bill Atkinson's method.
+ fs
+ Diffuse with Floyd-Steinberg method
+ jajuni
+ Diffuse with Jarvis, Judice & Ninke method
+ stucki
+ Diffuse with Stucki's method
+ burkes
+ Diffuse with Burkes' method
+ arithmetic
+ Positionally stable arithmetic dither
+ xor
+ Positionally stable arithmetic xor based dither
+
+ ``--vo-sixel-fixedpalette=<yes|no>`` (default: yes)
+ Use libsixel's built-in static palette using the XTERM256 profile
+ for dither. Fixed palette uses 256 colors for dithering. Note that
+ using ``no`` (at the time of writing) will slow down ``xterm``.
+
+ ``--vo-sixel-reqcolors=<colors>`` (default: 256)
+ Has no effect with fixed palette. Set up libsixel to use required
+ number of colors for dynamic palette. This value depends on the
+ terminal emulator as well. Xterm supports 256 colors. Can set this to
+ a lower value for faster performance.
+
+ ``--vo-sixel-threshold=<threshold>`` (default: -1)
+ Has no effect with fixed palette. Defines the threshold to change the
+ palette - as percentage of the number of colors, e.g. 20 will change
+ the palette when the number of colors changed by 20%. It's a simple
+ measure to reduce the number of palette changes, because it can be slow
+ in some terminals (``xterm``). The default (-1) will choose a palette
+ on every frame and will have better quality.
+
+``image``
+ Output each frame into an image file in the current directory. Each file
+ takes the frame number padded with leading zeros as name.
+
+ The following global options are supported by this video output:
+
+ ``--vo-image-format=<format>``
+ Select the image file format.
+
+ jpg
+ JPEG files, extension .jpg. (Default.)
+ jpeg
+ JPEG files, extension .jpeg.
+ png
+ PNG files.
+ webp
+ WebP files.
+
+ ``--vo-image-png-compression=<0-9>``
+ PNG compression factor (speed vs. file size tradeoff) (default: 7)
+ ``--vo-image-png-filter=<0-5>``
+ Filter applied prior to PNG compression (0 = none; 1 = sub; 2 = up;
+ 3 = average; 4 = Paeth; 5 = mixed) (default: 5)
+ ``--vo-image-jpeg-quality=<0-100>``
+ JPEG quality factor (default: 90)
+ ``--vo-image-jpeg-optimize=<0-100>``
+ JPEG optimization factor (default: 100)
+ ``--vo-image-webp-lossless=<yes|no>``
+ Enable writing lossless WebP files (default: no)
+ ``--vo-image-webp-quality=<0-100>``
+ WebP quality (default: 75)
+ ``--vo-image-webp-compression=<0-6>``
+ WebP compression factor (default: 4)
+ ``--vo-image-outdir=<dirname>``
+ Specify the directory to save the image files to (default: ``./``).
+
+``libmpv``
+ For use with libmpv direct embedding. As a special case, on macOS it
+ is used like a normal VO within mpv (cocoa-cb). Otherwise useless in any
+ other contexts.
+ (See ``<mpv/render.h>``.)
+
+ This also supports many of the options the ``gpu`` VO has, depending on the
+ backend.
+
+``rpi`` (Raspberry Pi)
+ Native video output on the Raspberry Pi using the MMAL API.
+
+ The following global options are supported by this video output:
+
+ ``--rpi-display=<number>``
+ Select the display number on which the video overlay should be shown
+ (default: 0).
+
+ ``--rpi-layer=<number>``
+ 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.
+
+ ``--rpi-background=<yes|no>``
+ Whether to render a black background behind the video (default: no).
+ Normally it's better to kill the console framebuffer instead, which
+ gives better performance.
+
+ ``--rpi-osd=<yes|no>``
+ Enabled by default. If disabled with ``no``, no OSD layer is created.
+ This also means there will be no subtitles rendered.
+
+``drm`` (Direct Rendering Manager)
+ Video output driver using Kernel Mode Setting / Direct Rendering Manager.
+ Should be used when one doesn't want to install full-blown graphical
+ environment (e.g. no X). Does not support hardware acceleration (if you
+ need this, check the ``drm`` backend for ``gpu`` VO).
+
+ Since mpv 0.30.0, you may need to use ``--profile=sw-fast`` to get decent
+ performance.
+
+ The following global options are supported by this video output:
+
+ ``--drm-connector=<name>``
+ Select the connector to use (usually this is a monitor.) If ``<name>``
+ is empty or ``auto``, mpv renders the output on the first available
+ connector. Use ``--drm-connector=help`` to get a list of available
+ connectors. (default: empty)
+
+ ``--drm-device=<path>``
+ Select the DRM device file to use. If specified this overrides automatic
+ card selection. (default: empty)
+
+ ``--drm-mode=<preferred|highest|N|WxH[@R]>``
+ Mode to use (resolution and frame rate).
+ Possible values:
+
+ :preferred: Use the preferred mode for the screen on the selected
+ connector. (default)
+ :highest: Use the mode with the highest resolution available on the
+ selected connector.
+ :N: Select mode by index.
+ :WxH[@R]: Specify mode by width, height, and optionally refresh rate.
+ In case several modes match, selects the mode that comes
+ first in the EDID list of modes.
+
+ Use ``--drm-mode=help`` to get a list of available modes for all active
+ connectors.
+
+ ``--drm-draw-plane=<primary|overlay|N>``
+ Select the DRM plane to which video and OSD is drawn to, under normal
+ circumstances. The plane can be specified as ``primary``, which will
+ pick the first applicable primary plane; ``overlay``, which will pick
+ the first applicable overlay plane; or by index. The index is zero
+ based, and related to the CRTC.
+ (default: primary)
+
+ When using this option with the drmprime-overlay hwdec interop, only the
+ OSD is rendered to this plane.
+
+ ``--drm-drmprime-video-plane=<primary|overlay|N>``
+ Select the DRM plane to use for video with the drmprime-overlay hwdec
+ interop (used by e.g. the rkmpp hwdec on RockChip SoCs, and v4l2 hwdec:s
+ on various other SoC:s). The plane is unused otherwise. This option
+ accepts the same values as ``--drm-draw-plane``. (default: overlay)
+
+ To be able to successfully play 4K video on various SoCs you might need
+ to set ``--drm-draw-plane=overlay --drm-drmprime-video-plane=primary``
+ and setting ``--drm-draw-surface-size=1920x1080``, to render the OSD at a
+ lower resolution (the video when handled by the hwdec will be on the
+ drmprime-video plane and at full 4K resolution)
+
+ ``--drm-format=<xrgb8888|xrgb2101010>``
+ Select the DRM format to use (default: xrgb8888). This allows you to
+ choose the bit depth of the DRM mode. xrgb8888 is your usual 24 bit per
+ pixel/8 bits per channel packed RGB format with 8 bits of padding.
+ xrgb2101010 is a packed 30 bits per pixel/10 bits per channel packed RGB
+ format with 2 bits of padding.
+
+ There are cases when xrgb2101010 will work with the ``drm`` VO, but not
+ with the ``drm`` backend for the ``gpu`` VO. This is because with the
+ ``gpu`` VO, in addition to requiring support in your DRM driver,
+ requires support for xrgb2101010 in your EGL driver
+
+ ``--drm-draw-surface-size=<[WxH]>``
+ Sets the size of the surface used on the draw plane. The surface will
+ then be upscaled to the current screen resolution. This option can be
+ useful when used together with the drmprime-overlay hwdec interop at
+ high resolutions, as it allows scaling the draw plane (which in this
+ case only handles the OSD) down to a size the GPU can handle.
+
+ When used without the drmprime-overlay hwdec interop this option will
+ just cause the video to get rendered at a different resolution and then
+ scaled to screen size.
+
+ (default: display resolution)
+
+ ``--drm-vrr-enabled=<no|yes|auto>``
+ Toggle use of Variable Refresh Rate (VRR), aka Freesync or Adaptive Sync
+ on compatible systems. VRR allows for the display to be refreshed at any
+ rate within a range (usually ~40Hz-60Hz for 60Hz displays). This can help
+ with playback of 24/25/50fps content. Support depends on the use of a
+ compatible monitor, GPU, and a sufficiently new kernel with drivers
+ that support the feature.
+
+ :no: Do not attempt to enable VRR. (default)
+ :yes: Attempt to enable VRR, whether the capability is reported or not.
+ :auto: Attempt to enable VRR if support is reported.
+
+``mediacodec_embed`` (Android)
+ Renders ``IMGFMT_MEDIACODEC`` frames directly to an ``android.view.Surface``.
+ Requires ``--hwdec=mediacodec`` for hardware decoding, along with
+ ``--vo=mediacodec_embed`` and ``--wid=(intptr_t)(*android.view.Surface)``.
+
+ Since this video output driver uses native decoding and rendering routines,
+ many of mpv's features (subtitle rendering, OSD/OSC, video filters, etc)
+ are not available with this driver.
+
+ To use hardware decoding with ``--vo=gpu`` instead, use ``--hwdec=mediacodec``
+ or ``mediacodec-copy`` along with ``--gpu-context=android``.
+
+``wlshm`` (Wayland only)
+ Shared memory video output driver without hardware acceleration that works
+ whenever Wayland is present.
+
+ Since mpv 0.30.0, you may need to use ``--profile=sw-fast`` to get decent
+ performance.
+
+ .. note:: This is a fallback only, and should not be normally used.