mirror of https://github.com/mpv-player/mpv
692 lines
31 KiB
ReStructuredText
692 lines
31 KiB
ReStructuredText
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, it tries to use fast and fail-safe settings. Use the
|
|
``gpu-hq`` profile to use this driver with defaults set to high quality
|
|
rendering. The profile can be applied with ``--profile=gpu-hq`` and its
|
|
contents can be viewed with ``--show-profile=gpu-hq``.
|
|
|
|
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.
|
|
Currently this driver is experimental and only works with the ``--hwdec=vaapi``
|
|
or ``hwdec=drm`` drivers;
|
|
OSD is also not supported. Supported compositors : Weston and Sway.
|
|
|
|
``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-deint-mode=<mode>``
|
|
Select deinterlacing algorithm. Note that by default deinterlacing is
|
|
initially always off, and needs to be enabled with the ``d`` key
|
|
(default key binding for ``cycle deinterlace``).
|
|
|
|
This option doesn't apply if libva supports video post processing (vpp).
|
|
In this case, the default for ``deint-mode`` is ``no``, and enabling
|
|
deinterlacing via user interaction using the methods mentioned above
|
|
actually inserts the ``vavpp`` 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.
|
|
|
|
no
|
|
Don't allow deinterlacing (default for newer libva).
|
|
first-field
|
|
Show only first field.
|
|
bob
|
|
bob deinterlacing (default for older libva).
|
|
|
|
``--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.
|
|
|
|
``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-draw-clear=<yes|no>`` (default: yes)
|
|
Whether or not to clear the terminal while drawing frames.
|
|
|
|
``--vo-sixel-exit-clear=<yes|no>`` (default: yes)
|
|
Whether or not to clear the terminal on quit. When set to no - the
|
|
last sixel image stays on screen after quit, with the cursor following
|
|
it.
|
|
|
|
``--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 on POSIX platforms, but may
|
|
come at a performance cost with some terminals.
|
|
|
|
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.
|
|
|
|
This is deprecated. Use ``--vo=gpu`` instead, which is the default and
|
|
provides the same functionality. The ``rpi`` VO will be removed in
|
|
mpv 0.23.0. Its functionality was folded into --vo=gpu, 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).
|
|
|
|
The following deprecated 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=[<gpu_number>.]<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. The ``<gpu_number>`` argument can be used to disambiguate
|
|
multiple graphic cards, but is deprecated in favor of ``--drm-device``.
|
|
(default: empty)
|
|
|
|
``--drm-device=<path>``
|
|
Select the DRM device file to use. If specified this overrides automatic
|
|
card selection and any card number specified ``--drm-connector``.
|
|
(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.
|