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.rst415
1 files changed, 209 insertions, 206 deletions
diff --git a/DOCS/man/en/vo.rst b/DOCS/man/en/vo.rst
index 34b547c4bc..93fc480977 100644
--- a/DOCS/man/en/vo.rst
+++ b/DOCS/man/en/vo.rst
@@ -16,8 +16,8 @@ in the list. Suboptions are optional and can mostly be omitted.
*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:
@@ -225,215 +225,20 @@ 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.
-
- 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
- ``--osdlevel=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
-
-gl3
- OpenGL video output driver, extended version.
+.. _vo_opengl:
+opengl
+ OpenGL video output driver.
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.
+ vo_opengl's dithering. Disabling dithering with ``dither-depth=-1`` helps.
+
+ Requires at least OpenGL 2.1 and the GL_ARB_texture_rg extension. For older
+ drivers, ``opengl-old`` may work.
Some features are available with OpenGL 3 capable graphics drivers only.
@@ -544,7 +349,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
@@ -638,6 +443,204 @@ gl3
dimension. Default is 128x256x64.
Sizes must be a power of two, and 256 at most.
+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
+ ``--osdlevel=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.