summaryrefslogtreecommitdiffstats
path: root/DOCS/man/en/vo.rst
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS/man/en/vo.rst')
-rw-r--r--DOCS/man/en/vo.rst458
1 files changed, 236 insertions, 222 deletions
diff --git a/DOCS/man/en/vo.rst b/DOCS/man/en/vo.rst
index c6d80866a6..f7346a55f5 100644
--- a/DOCS/man/en/vo.rst
+++ b/DOCS/man/en/vo.rst
@@ -9,15 +9,15 @@ syntax is:
--vo=<driver1[:suboption1[=value]:...],driver2,...[,]>
Specify a priority list of video output drivers to be used.
-If the list has a trailing ',' MPlayer will fall back on drivers not contained
+If the list has a trailing ',' mpv will fall back on drivers not contained
in the list. Suboptions are optional and can mostly be omitted.
*NOTE*: See ``--vo=help`` for a list of compiled-in video output drivers.
*EXAMPLE*:
- ``--vo=gl,xv,``
- Try the gl driver, then the Xv driver, then others.
+ ``--vo=opengl,xv,``
+ Try the OpenGL driver, then the Xv driver, then others.
Available video output drivers are:
@@ -26,7 +26,7 @@ xv (X11 only)
the most compatible VO on X, but may be low quality, and has issues with
OSD and subtitle display.
For information about what colorkey is used and how it is drawn run
- MPlayer with ``-v`` option and look out for the lines tagged with ``[xv
+ mpv with ``-v`` option and look out for the lines tagged with ``[xv
common]`` at the beginning.
adaptor=<number>
@@ -39,7 +39,7 @@ xv (X11 only)
cur
The default takes the colorkey currently set in Xv.
use
- Use but do not set the colorkey from MPlayer (use the ``--colorkey``
+ Use but do not set the colorkey from mpv (use the ``--colorkey``
option to change it).
set
Same as use but also sets the supplied colorkey.
@@ -128,8 +128,8 @@ vdpau (X11 only)
3). See below for additional information.
Using the VDPAU frame queueing functionality controlled by the queuetime
- options makes MPlayer's frame flip timing less sensitive to system CPU
- load and allows MPlayer to start decoding the next frame(s) slightly
+ 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
@@ -225,214 +225,21 @@ direct3d (Windows only)
corevideo (Mac OS X 10.6 and later)
Mac OS X CoreVideo video output driver. Uses the CoreVideo APIs to fill
PixelBuffers and generate OpenGL textures from them (useful as a fallback
- for vo_gl_).
+ for vo_opengl_).
-.. _vo_gl:
-gl
- OpenGL video output driver, simple version. Video size must be smaller
- than the maximum texture size of your OpenGL implementation. Intended to
- work even with the most basic OpenGL implementations, but also makes use
- of newer extensions, which allow support for more colorspaces and direct
- rendering.
+.. _vo_opengl:
- The code performs very few checks, so if a feature does not work, this
- might be because it is not supported by your card/OpenGL implementation
- even if you do not get any error message. Use ``glxinfo`` or a similar
- tool to display the supported OpenGL extensions.
+opengl
+ OpenGL video output driver. It supports extended scaling methods, dithering
+ and color management.
- (no-)ati-hack
- ATI drivers may give a corrupted image when PBOs are used (when using
- `force-pbo`). This option fixes this, at the expense of
- using a bit more memory.
- (no-)force-pbo
- Always uses PBOs to transfer textures even if this involves an extra
- copy. Currently this gives a little extra speed with NVidia drivers
- and a lot more speed with ATI drivers. May need ``--no-slices`` and
- the ati-hack suboption to work correctly.
- (no-)scaled-osd
- Changes the way the OSD behaves when the size of the window changes
- (default: disabled). When enabled behaves more like the other video
- output drivers, which is better for fixed-size fonts. Disabled looks
- much better with FreeType fonts and uses the borders in fullscreen
- mode. Does not work correctly with ass subtitles (see ``--ass``), you
- can instead render them without OpenGL support via ``--vf=ass``.
- osdcolor=<0xAARRGGBB>
- Color for OSD (default: 0x00ffffff, corresponds to non-transparent
- white).
- rectangle=<0,1,2>
- Select usage of rectangular textures which saves video RAM, but often
- is slower (default: 0).
+ By default, it tries to use fast and fail-safe settings. Use the driver
+ ``opengl-hq`` to use this driver with a high quality rendering preset.
- 0
- Use power-of-two textures (default).
- 1
- Use the ``GL_ARB_texture_rectangle`` extension.
- 2
- Use the ``GL_ARB_texture_non_power_of_two`` extension. In some
- cases only supported in software and thus very slow.
+ Requires at least OpenGL 2.1 and the GL_ARB_texture_rg extension. For older
+ drivers, ``opengl-old`` may work.
- swapinterval=<n>
- Minimum interval between two buffer swaps, counted in displayed frames
- (default: 1). 1 is equivalent to enabling VSYNC, 0 to disabling VSYNC.
- Values below 0 will leave it at the system default. This limits the
- framerate to (horizontal refresh rate / n). Requires
- ``GLX_SGI_swap_control`` support to work. With some (most/all?)
- implementations this only works in fullscreen mode.
- ycbcr
- Use the ``GL_MESA_ycbcr_texture`` extension to convert YUV to RGB. In
- most cases this is probably slower than doing software conversion to
- RGB.
- yuv=<n>
- Select the type of YUV to RGB conversion. The default is
- auto-detection deciding between values 0 and 2.
-
- 0
- Use software conversion. Compatible with all OpenGL versions.
- Provides brightness, contrast and saturation control.
- 1
- Same as 2. This used to use nVidia-specific extensions, which
- didn't provide any advantages over using fragment programs, except
- possibly on very ancient graphic cards. It produced a gray-ish
- output, which is why it has been removed.
- 2
- Use a fragment program. Needs the ``GL_ARB_fragment_program``
- extension and at least three texture units. Provides brightness,
- contrast, saturation and hue control.
- 3
- Use a fragment program using the POW instruction. Needs the
- ``GL_ARB_fragment_program`` extension and at least three texture
- units. Provides brightness, contrast, saturation, hue and gamma
- control. Gamma can also be set independently for red, green and
- blue. Method 4 is usually faster.
- 4
- Use a fragment program with additional lookup. Needs the
- ``GL_ARB_fragment_program`` extension and at least four texture
- units. Provides brightness, contrast, saturation, hue and gamma
- control. Gamma can also be set independently for red, green and
- blue.
- 5
- Use ATI-specific method (for older cards). This uses an
- ATI-specific extension (``GL_ATI_fragment_shader`` - not
- ``GL_ARB_fragment_shader``!). At least three texture units are
- needed. Provides saturation and hue control. This method is fast
- but inexact.
- 6
- Use a 3D texture to do conversion via lookup. Needs the
- ``GL_ARB_fragment_program extension`` and at least four texture
- units. Extremely slow (software emulation) on some (all?) ATI
- cards since it uses a texture with border pixels. Provides
- brightness, contrast, saturation, hue and gamma control. Gamma can
- also be set independently for red, green and blue. Speed depends
- more on GPU memory bandwidth than other methods.
-
- lscale=<n>
- Select the scaling function to use for luminance scaling. Only valid
- for yuv modes 2, 3, 4 and 6.
-
- 0
- Use simple linear filtering (default).
- 1
- Use bicubic B-spline filtering (better quality). Needs one
- additional texture unit. Older cards will not be able to handle
- this for chroma at least in fullscreen mode.
- 2
- Use cubic filtering in horizontal, linear filtering in vertical
- direction. Works on a few more cards than method 1.
- 3
- Same as 1 but does not use a lookup texture. Might be faster on
- some cards.
- 4
- Use experimental unsharp masking with 3x3 support and a default
- strength of 0.5 (see `filter-strength`).
- 5
- Use experimental unsharp masking with 5x5 support and a default
- strength of 0.5 (see `filter-strength`).
-
- cscale=<n>
- Select the scaling function to use for chrominance scaling. For
- details see `lscale`.
- filter-strength=<value>
- Set the effect strength for the `lscale`/`cscale` filters that support
- it.
- stereo=<value>
- Select a method for stereo display. You may have to use ``--aspect`` to
- fix the aspect value. Experimental, do not expect too much from it.
-
- 0
- Normal 2D display
- 1
- Convert side by side input to full-color red-cyan stereo.
- 2
- Convert side by side input to full-color green-magenta stereo.
- 3
- Convert side by side input to quadbuffered stereo. Only supported
- by very few OpenGL cards.
-
- The following options are only useful if writing your own fragment
- programs.
-
- customprog=<filename>
- Load a custom fragment program from <filename>. See
- ``TOOLS/edgedect.fp`` for an example.
- customtex=<filename>
- Load a custom "gamma ramp" texture from <filename>. This can be used
- in combination with yuv=4 or with the customprog option.
- (no-)customtlin
- If enabled (default) use ``GL_LINEAR`` interpolation, otherwise use
- ``GL_NEAREST`` for customtex texture.
- (no-)customtrect
- If enabled, use texture_rectangle for customtex texture. Default is
- disabled.
- (no-)mipmapgen
- If enabled, mipmaps for the video are automatically generated. This
- should be useful together with the customprog and the TXB instruction
- to implement blur filters with a large radius. For most OpenGL
- implementations this is very slow for any non-RGB formats. Default is
- disabled.
-
- Normally there is no reason to use the following options, they mostly
- exist for testing purposes.
-
- (no-)glfinish
- Call ``glFinish()`` before swapping buffers. Slower but in some cases
- more correct output (default: disabled).
- (no-)manyfmts
- Enables support for more (RGB and BGR) color formats (default:
- enabled). Needs OpenGL version >= 1.2.
- slice-height=<0-...>
- Number of lines copied to texture in one piece (default: 0). 0 for
- whole image.
-
- *NOTE*: If YUV colorspace is used (see `yuv` suboption), special rules
- apply: If the decoder uses slice rendering (see ``--no-slices``), this
- setting has no effect, the size of the slices as provided by the
- decoder is used. If the decoder does not use slice rendering, the
- default is 16.
- (no-)osd
- Enable or disable support for OSD rendering via OpenGL (default:
- enabled). This option is for testing; to disable the OSD use
- ``--osd-level=0`` instead.
-
- backend=<sys>
- auto
- auto-select (default)
- cocoa
- Cocoa/OSX
- win
- Win32/WGL
- x11
- X11/GLX
-
-gl3
- OpenGL video output driver, extended version. The requires an OpenGL 3
- capable graphics driver. (Note: this is only because of developer pedantry.
- The dependency on actual OpenGL 3 features is rather low.)
-
- It supports extended scaling methods, dithering and color management.
- It tries to use sane defaults for good quality output.
-
- Note that some cheaper LCDs do dithering that gravely interferes with
- vo_gl3's dithering. Disabling dithering with ``dither-depth=-1`` helps.
+ Some features are available with OpenGL 3 capable graphics drivers only.
lscale=<filter>
Set the scaling filter. Possible choices:
@@ -527,7 +334,7 @@ gl3
Positive non-zero values select the target bit depth. Default: 0.
\-1
- Disable any dithering done by mplayer.
+ Disable any dithering done by mpv.
0
Automatic selection. If output bit depth can't be detected,
8 bits per component are assumed.
@@ -541,7 +348,7 @@ gl3
Note that the depth of the connected video display device can not be
detected. Often, LCD panels will do dithering on their own, which
- conflicts with vo_gl3's dithering, and leads to ugly output.
+ conflicts with vo_opengl's dithering, and leads to ugly output.
debug
Check for OpenGL errors, i.e. call glGetError(). Also request a
@@ -567,10 +374,9 @@ gl3
RGB. If chroma is not subsampled, this option is ignored, and the
luma scaler is used instead. Setting this option is often useless.
- no-fancy-downscaling
- When using convolution based filters, don't extend the filter
- size when downscaling. Trades downscaling performance for
- reduced quality.
+ fancy-downscaling
+ When using convolution based filters, extend the filter size
+ when downscaling. Trades quality for reduced downscaling performance.
no-npot
Force use of power-of-2 texture sizes. For debugging only.
@@ -579,6 +385,9 @@ gl3
glfinish
Call glFinish() before swapping buffers
+ sw
+ Continue even if a software renderer is detected.
+
backend=<sys>
auto
auto-select (default)
@@ -600,16 +409,12 @@ gl3
fbo-format=<fmt>
Selects the internal format of any FBO textures used.
- fmt can be one of: rgb, rgba, rgb8, rgb16, rgb16f, rgb32f
- Default: rgb16.
+ fmt can be one of: rgb, rgba, rgb8, rgb10, rgb16, rgb16f, rgb32f
+ Default: rgb.
gamma
Always enable gamma control. (Disables delayed enabling.)
- force-gl2
- Create a legacy GL context. This will randomly malfunction
- if the proper extensions are not supported.
-
icc-profile=<file>
Load an ICC profile and use it to transform linear RGB to
screen output. Needs LittleCMS2 support compiled in.
@@ -636,6 +441,215 @@ gl3
dimension. Default is 128x256x64.
Sizes must be a power of two, and 256 at most.
+opengl-hq
+ Same as ``opengl``, but with default settings for high quality rendering.
+
+ This is equivalent to:
+
+ | --vo=opengl:lscale=lanczos2:fancy-downscaling:dither-depth=0:pbo:fbo-format=rgb16
+
+ Note that some cheaper LCDs do dithering that gravely interferes with
+ vo_opengl's dithering. Disabling dithering with ``dither-depth=-1`` helps.
+
+
+opengl-old
+ OpenGL video output driver, old version. Video size must be smaller
+ than the maximum texture size of your OpenGL implementation. Intended to
+ work even with the most basic OpenGL implementations, but also makes use
+ of newer extensions, which allow support for more colorspaces and direct
+ rendering.
+
+ The code performs very few checks, so if a feature does not work, this
+ might be because it is not supported by your card/OpenGL implementation
+ even if you do not get any error message. Use ``glxinfo`` or a similar
+ tool to display the supported OpenGL extensions.
+
+ (no-)ati-hack
+ ATI drivers may give a corrupted image when PBOs are used (when using
+ `force-pbo`). This option fixes this, at the expense of
+ using a bit more memory.
+ (no-)force-pbo
+ Always uses PBOs to transfer textures even if this involves an extra
+ copy. Currently this gives a little extra speed with NVidia drivers
+ and a lot more speed with ATI drivers. May need ``--no-slices`` and
+ the ati-hack suboption to work correctly.
+ (no-)scaled-osd
+ Changes the way the OSD behaves when the size of the window changes
+ (default: disabled). When enabled behaves more like the other video
+ output drivers, which is better for fixed-size fonts. Disabled looks
+ much better with FreeType fonts and uses the borders in fullscreen
+ mode. Does not work correctly with ass subtitles (see ``--ass``), you
+ can instead render them without OpenGL support via ``--vf=ass``.
+ osdcolor=<0xAARRGGBB>
+ Color for OSD (default: 0x00ffffff, corresponds to non-transparent
+ white).
+ rectangle=<0,1,2>
+ Select usage of rectangular textures which saves video RAM, but often
+ is slower (default: 0).
+
+ 0
+ Use power-of-two textures (default).
+ 1
+ Use the ``GL_ARB_texture_rectangle`` extension.
+ 2
+ Use the ``GL_ARB_texture_non_power_of_two`` extension. In some
+ cases only supported in software and thus very slow.
+
+ swapinterval=<n>
+ Minimum interval between two buffer swaps, counted in displayed frames
+ (default: 1). 1 is equivalent to enabling VSYNC, 0 to disabling VSYNC.
+ Values below 0 will leave it at the system default. This limits the
+ framerate to (horizontal refresh rate / n). Requires
+ ``GLX_SGI_swap_control`` support to work. With some (most/all?)
+ implementations this only works in fullscreen mode.
+ ycbcr
+ Use the ``GL_MESA_ycbcr_texture`` extension to convert YUV to RGB. In
+ most cases this is probably slower than doing software conversion to
+ RGB.
+ yuv=<n>
+ Select the type of YUV to RGB conversion. The default is
+ auto-detection deciding between values 0 and 2.
+
+ 0
+ Use software conversion. Compatible with all OpenGL versions.
+ Provides brightness, contrast and saturation control.
+ 1
+ Same as 2. This used to use nVidia-specific extensions, which
+ didn't provide any advantages over using fragment programs, except
+ possibly on very ancient graphic cards. It produced a gray-ish
+ output, which is why it has been removed.
+ 2
+ Use a fragment program. Needs the ``GL_ARB_fragment_program``
+ extension and at least three texture units. Provides brightness,
+ contrast, saturation and hue control.
+ 3
+ Use a fragment program using the POW instruction. Needs the
+ ``GL_ARB_fragment_program`` extension and at least three texture
+ units. Provides brightness, contrast, saturation, hue and gamma
+ control. Gamma can also be set independently for red, green and
+ blue. Method 4 is usually faster.
+ 4
+ Use a fragment program with additional lookup. Needs the
+ ``GL_ARB_fragment_program`` extension and at least four texture
+ units. Provides brightness, contrast, saturation, hue and gamma
+ control. Gamma can also be set independently for red, green and
+ blue.
+ 5
+ Use ATI-specific method (for older cards). This uses an
+ ATI-specific extension (``GL_ATI_fragment_shader`` - not
+ ``GL_ARB_fragment_shader``!). At least three texture units are
+ needed. Provides saturation and hue control. This method is fast
+ but inexact.
+ 6
+ Use a 3D texture to do conversion via lookup. Needs the
+ ``GL_ARB_fragment_program extension`` and at least four texture
+ units. Extremely slow (software emulation) on some (all?) ATI
+ cards since it uses a texture with border pixels. Provides
+ brightness, contrast, saturation, hue and gamma control. Gamma can
+ also be set independently for red, green and blue. Speed depends
+ more on GPU memory bandwidth than other methods.
+
+ lscale=<n>
+ Select the scaling function to use for luminance scaling. Only valid
+ for yuv modes 2, 3, 4 and 6.
+
+ 0
+ Use simple linear filtering (default).
+ 1
+ Use bicubic B-spline filtering (better quality). Needs one
+ additional texture unit. Older cards will not be able to handle
+ this for chroma at least in fullscreen mode.
+ 2
+ Use cubic filtering in horizontal, linear filtering in vertical
+ direction. Works on a few more cards than method 1.
+ 3
+ Same as 1 but does not use a lookup texture. Might be faster on
+ some cards.
+ 4
+ Use experimental unsharp masking with 3x3 support and a default
+ strength of 0.5 (see `filter-strength`).
+ 5
+ Use experimental unsharp masking with 5x5 support and a default
+ strength of 0.5 (see `filter-strength`).
+
+ cscale=<n>
+ Select the scaling function to use for chrominance scaling. For
+ details see `lscale`.
+ filter-strength=<value>
+ Set the effect strength for the `lscale`/`cscale` filters that support
+ it.
+ stereo=<value>
+ Select a method for stereo display. You may have to use ``--aspect`` to
+ fix the aspect value. Experimental, do not expect too much from it.
+
+ 0
+ Normal 2D display
+ 1
+ Convert side by side input to full-color red-cyan stereo.
+ 2
+ Convert side by side input to full-color green-magenta stereo.
+ 3
+ Convert side by side input to quadbuffered stereo. Only supported
+ by very few OpenGL cards.
+
+ The following options are only useful if writing your own fragment
+ programs.
+
+ customprog=<filename>
+ Load a custom fragment program from <filename>. See
+ ``TOOLS/edgedect.fp`` for an example.
+ customtex=<filename>
+ Load a custom "gamma ramp" texture from <filename>. This can be used
+ in combination with yuv=4 or with the customprog option.
+ (no-)customtlin
+ If enabled (default) use ``GL_LINEAR`` interpolation, otherwise use
+ ``GL_NEAREST`` for customtex texture.
+ (no-)customtrect
+ If enabled, use texture_rectangle for customtex texture. Default is
+ disabled.
+ (no-)mipmapgen
+ If enabled, mipmaps for the video are automatically generated. This
+ should be useful together with the customprog and the TXB instruction
+ to implement blur filters with a large radius. For most OpenGL
+ implementations this is very slow for any non-RGB formats. Default is
+ disabled.
+
+ Normally there is no reason to use the following options, they mostly
+ exist for testing purposes.
+
+ (no-)glfinish
+ Call ``glFinish()`` before swapping buffers. Slower but in some cases
+ more correct output (default: disabled).
+ (no-)manyfmts
+ Enables support for more (RGB and BGR) color formats (default:
+ enabled). Needs OpenGL version >= 1.2.
+ slice-height=<0-...>
+ Number of lines copied to texture in one piece (default: 0). 0 for
+ whole image.
+
+ *NOTE*: If YUV colorspace is used (see `yuv` suboption), special rules
+ apply: If the decoder uses slice rendering (see ``--no-slices``), this
+ setting has no effect, the size of the slices as provided by the
+ decoder is used. If the decoder does not use slice rendering, the
+ default is 16.
+ (no-)osd
+ Enable or disable support for OSD rendering via OpenGL (default:
+ enabled). This option is for testing; to disable the OSD use
+ ``--osd-level=0`` instead.
+
+ sw
+ Continue even if a software renderer is detected.
+
+ backend=<sys>
+ auto
+ auto-select (default)
+ cocoa
+ Cocoa/OSX
+ win
+ Win32/WGL
+ x11
+ X11/GLX
+
null
Produces no video output. Useful for benchmarking.