summaryrefslogtreecommitdiffstats
path: root/DOCS/man/vo.rst
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS/man/vo.rst')
-rw-r--r--DOCS/man/vo.rst849
1 files changed, 12 insertions, 837 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst
index 2c7b995843..afbcbaec6a 100644
--- a/DOCS/man/vo.rst
+++ b/DOCS/man/vo.rst
@@ -20,7 +20,7 @@ normal driver parameters.
See ``--vo=help`` for a list of compiled-in video output drivers.
- The recommended output driver is ``--vo=opengl-hq``. All other drivers are
+ The recommended output driver is ``--vo=opengl``. All other drivers are
for compatibility or special purposes. By default, ``--vo=opengl`` is used,
but if that appears not to work, it fallback to other drivers (in the same
order as listed by ``--vo=help``).
@@ -276,9 +276,12 @@ Available video output drivers are:
OpenGL video output driver. It supports extended scaling methods, dithering
and color management.
- By default, it tries to use fast and fail-safe settings. Use the alias
- ``opengl-hq`` to use this driver with defaults set to high quality
- rendering.
+ See `OpenGL renderer options`_ for options specific to this VO.
+
+ By default, it tries to use fast and fail-safe settings. Use the
+ ``opengl-hq`` profile to use this driver with defaults set to high
+ quality rendering. (This profile is also the replacement for
+ ``--vo=opengl-hq``.)
Requires at least OpenGL 2.1.
@@ -293,838 +296,12 @@ Available video output drivers are:
the hardware decoder APIs.
``opengl`` makes use of FBOs by default. Sometimes you can achieve better
- quality or performance by changing the ``fbo-format`` suboption to
+ quality or performance by changing the ``--opengl-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 OS X setups being very slow with ``rgb16`` but fast
- with ``rgb32f``. If you have problems, you can also try passing the
- ``dumb-mode=yes`` sub-option.
-
- ``dumb-mode=<yes|no>``
- This mode is extremely restricted, and will disable most extended
- OpenGL features. This includes high quality scalers and custom
- shaders!
-
- It is intended for hardware that does not support FBOs (including GLES,
- which supports it insufficiently), or to get some more performance out
- of bad or old hardware.
-
- This mode is forced automatically if needed, and this option is mostly
- useful for debugging. It's also enabled automatically if nothing uses
- features which require FBOs.
-
- This option might be silently removed in the future.
-
- ``scale=<filter>``
-
- ``bilinear``
- Bilinear hardware texture filtering (fastest, very low quality).
- This is the default for compatibility reasons.
-
- ``spline36``
- Mid quality and speed. This is the default when using ``opengl-hq``.
-
- ``lanczos``
- Lanczos scaling. Provides mid quality and speed. Generally worse
- than ``spline36``, but it results in a slightly sharper image
- which is good for some content types. The number of taps can be
- controlled with ``scale-radius``, but is best left unchanged.
-
- This filter corresponds to the old ``lanczos3`` alias if the default
- radius is used, while ``lanczos2`` corresponds to a radius of 2.
-
- (This filter is an alias for ``sinc``-windowed ``sinc``)
-
- ``ewa_lanczos``
- Elliptic weighted average Lanczos scaling. Also known as Jinc.
- Relatively slow, but very good quality. The radius can be
- controlled with ``scale-radius``. Increasing the radius makes the
- filter sharper but adds more ringing.
-
- (This filter is an alias for ``jinc``-windowed ``jinc``)
-
- ``ewa_lanczossharp``
- A slightly sharpened version of ewa_lanczos, preconfigured to use
- an ideal radius and parameter. If your hardware can run it, this is
- probably what you should use by default.
-
- ``mitchell``
- Mitchell-Netravali. The ``B`` and ``C`` parameters can be set with
- ``scale-param1`` and ``scale-param2``. This filter is very good at
- downscaling (see ``dscale``).
-
- ``oversample``
- A version of nearest neighbour that (naively) oversamples pixels,
- so that pixels overlapping edges get linearly interpolated instead
- of rounded. This essentially removes the small imperfections and
- judder artifacts caused by nearest-neighbour interpolation, in
- exchange for adding some blur. This filter is good at temporal
- interpolation, and also known as "smoothmotion" (see ``tscale``).
-
- ``linear``
- A ``tscale`` filter.
-
- ``custom``
- A user-defined custom shader (see ``scale-shader``).
-
- There are some more filters, but most are not as useful. For a complete
- list, pass ``help`` as value, e.g.::
-
- mpv --vo=opengl:scale=help
-
- ``scale-param1=<value>``, ``scale-param2=<value>``
- Set filter parameters. Ignored if the filter is not tunable.
- Currently, this affects the following filter parameters:
-
- bcspline
- Spline parameters (``B`` and ``C``). Defaults to 0.5 for both.
-
- gaussian
- Scale parameter (``t``). Increasing this makes the result blurrier.
- Defaults to 1.
-
- oversample
- Minimum distance to an edge before interpolation is used. Setting
- this to 0 will always interpolate edges, whereas setting it to 0.5
- will never interpolate, thus behaving as if the regular nearest
- neighbour algorithm was used. Defaults to 0.0.
-
- ``scale-blur=<value>``
- Kernel scaling factor (also known as a blur factor). Decreasing this
- makes the result sharper, increasing it makes it blurrier (default 0).
- If set to 0, the kernel's preferred blur factor is used. Note that
- setting this too low (eg. 0.5) leads to bad results. It's generally
- recommended to stick to values between 0.8 and 1.2.
-
- ``scale-radius=<value>``
- Set radius for filters listed below, must be a float number between 0.5
- and 16.0. Defaults to the filter's preferred radius if not specified.
-
- ``sinc`` and derivatives, ``jinc`` and derivatives, ``gaussian``, ``box`` and ``triangle``
-
- Note that depending on filter implementation details and video scaling
- ratio, the radius that actually being used might be different
- (most likely being increased a bit).
-
- ``scale-antiring=<value>``
- Set the antiringing strength. This tries to eliminate ringing, but can
- introduce other artifacts in the process. Must be a float number
- between 0.0 and 1.0. The default value of 0.0 disables antiringing
- entirely.
-
- Note that this doesn't affect the special filters ``bilinear`` and
- ``bicubic_fast``.
-
- ``scale-window=<window>``
- (Advanced users only) Choose a custom windowing function for the kernel.
- Defaults to the filter's preferred window if unset. Use
- ``scale-window=help`` to get a list of supported windowing functions.
-
- ``scale-wparam=<window>``
- (Advanced users only) Configure the parameter for the window function
- given by ``scale-window``. Ignored if the window is not tunable.
- Currently, this affects the following window parameters:
-
- kaiser
- Window parameter (alpha). Defaults to 6.33.
- blackman
- Window parameter (alpha). Defaults to 0.16.
- gaussian
- Scale parameter (t). Increasing this makes the window wider.
- Defaults to 1.
-
- ``scaler-lut-size=<4..10>``
- Set the size of the lookup texture for scaler kernels (default: 6).
- The actual size of the texture is ``2^N`` for an option value of ``N``.
- So the lookup texture with the default setting uses 64 samples.
-
- All weights are bilinearly interpolated from those samples, so
- increasing the size of lookup table might improve the accuracy of
- scaler.
-
- ``scaler-resizes-only``
- Disable the scaler if the video image is not resized. In that case,
- ``bilinear`` is used instead whatever is set with ``scale``. Bilinear
- will reproduce the source image perfectly if no scaling is performed.
- Enabled by default. Note that this option never affects ``cscale``.
-
- ``pbo``
- Enable use of PBOs. On some drivers this can be faster, especially if
- the source video size is huge (e.g. so called "4K" video). On other
- drivers it might be slower or cause latency issues.
-
- In theory, this can sometimes lead to sporadic and temporary image
- corruption (because reupload is not retried when it fails).
-
- ``dither-depth=<N|no|auto>``
- Set dither target depth to N. Default: no.
-
- no
- Disable any dithering done by mpv.
- auto
- Automatic selection. If output bit depth cannot be detected,
- 8 bits per component are assumed.
- 8
- Dither to 8 bit output.
-
- Note that the depth of the connected video display device cannot be
- detected. Often, LCD panels will do dithering on their own, which
- conflicts with ``opengl``'s dithering and leads to ugly output.
-
- ``dither-size-fruit=<2-8>``
- Set the size of the dither matrix (default: 6). The actual size of
- the matrix is ``(2^N) x (2^N)`` for an option value of ``N``, so a
- value of 6 gives a size of 64x64. The matrix is generated at startup
- time, and a large matrix can take rather long to compute (seconds).
-
- Used in ``dither=fruit`` mode only.
-
- ``dither=<fruit|ordered|no>``
- Select dithering algorithm (default: fruit). (Normally, the
- ``dither-depth`` option controls whether dithering is enabled.)
-
- ``temporal-dither``
- Enable temporal dithering. (Only active if dithering is enabled in
- general.) This changes between 8 different dithering patterns on each
- frame by changing the orientation of the tiled dithering matrix.
- Unfortunately, this can lead to flicker on LCD displays, since these
- have a high reaction time.
-
- ``temporal-dither-period=<1-128>``
- Determines how often the dithering pattern is updated when
- ``temporal-dither`` is in use. 1 (the default) will update on every
- video frame, 2 on every other frame, etc.
-
- ``debug``
- Check for OpenGL errors, i.e. call ``glGetError()``. Also, request a
- debug OpenGL context (which does nothing with current graphics drivers
- as of this writing).
-
- ``interpolation``
- Reduce stuttering caused by mismatches in the video fps and display
- refresh rate (also known as judder).
-
- .. warning:: This requires setting the ``--video-sync`` option to one
- of the ``display-`` modes, or it will be silently disabled.
- This was not required before mpv 0.14.0.
-
- This essentially attempts to interpolate the missing frames by
- convoluting the video along the temporal axis. The filter used can be
- controlled using the ``tscale`` setting.
-
- Note that this relies on vsync to work, see ``swapinterval`` for more
- information.
-
- ``swapinterval=<n>``
- Interval in displayed frames between two buffer swaps.
- 1 is equivalent to enable VSYNC, 0 to disable VSYNC. Defaults to 1 if
- not specified.
-
- Note that this depends on proper OpenGL vsync support. On some platforms
- and drivers, this only works reliably when in fullscreen mode. It may
- also require driver-specific hacks if using multiple monitors, to
- ensure mpv syncs to the right one. Compositing window managers can
- also lead to bad results, as can missing or incorrect display FPS
- information (see ``--display-fps``).
-
- ``dscale=<filter>``
- Like ``scale``, but apply these filters on downscaling instead. If this
- option is unset, the filter implied by ``scale`` will be applied.
-
- ``cscale=<filter>``
- As ``scale``, but for interpolating chroma information. If the image
- is not subsampled, this option is ignored entirely.
-
- ``tscale=<filter>``
- The filter used for interpolating the temporal axis (frames). This is
- only used if ``interpolation`` is enabled. The only valid choices
- for ``tscale`` are separable convolution filters (use ``tscale=help``
- to get a list). The default is ``mitchell``.
-
- Note that the maximum supported filter radius is currently 3, due to
- limitations in the number of video textures that can be loaded
- simultaneously.
-
- ``tscale-clamp``
- Clamp the ``tscale`` filter kernel's value range to [0-1]. This reduces
- excessive ringing artifacts in the temporal domain (which typically
- manifest themselves as short flashes or fringes of black, mostly
- around moving edges) in exchange for potentially adding more blur.
-
- ``interpolation-threshold=<0..1,-1>``
- Threshold below which frame ratio interpolation gets disabled (default:
- ``0.0001``). This is calculated as ``abs(disphz/vfps - 1) < threshold``,
- where ``vfps`` is the speed-adjusted display FPS, and ``disphz`` the
- display refresh rate.
-
- The default is intended to almost always enable interpolation if the
- playback rate is even slightly different from the display refresh rate.
- But note that if you use e.g. ``--video-sync=display-vdrop``, small
- deviations in the rate can disable interpolation and introduce a
- discontinuity every other minute.
-
- Set this to ``-1`` to disable this logic.
-
- ``dscale-radius``, ``cscale-radius``, ``tscale-radius``, etc.
- Set filter parameters for ``dscale``, ``cscale`` and ``tscale``,
- respectively.
-
- See the corresponding options for ``scale``.
-
- ``linear-scaling``
- Scale in linear light. It should only be used with a ``fbo-format``
- that has at least 16 bit precision.
-
- ``correct-downscaling``
- When using convolution based filters, extend the filter size
- when downscaling. Increases quality, but reduces performance while
- downscaling.
-
- This will perform slightly sub-optimally for anamorphic video (but still
- better than without it) since it will extend the size to match only the
- milder of the scale factors between the axes.
-
- ``user-shaders=<files>``
- Custom GLSL hooks. These are a flexible way to add custom fragment
- shaders, which can be injected at almost arbitrary points in the
- rendering pipeline, and access all previous intermediate textures.
-
- .. admonition:: Warning
-
- The syntax is not stable yet and may change any time.
-
- The general syntax of a user shader looks like this::
-
- //!METADATA ARGS...
- //!METADATA ARGS...
-
- vec4 hook() {
- ...
- return something;
- }
-
- //!METADATA ARGS...
- //!METADATA ARGS...
-
- ...
-
- Each block of metadata, along with the non-metadata lines after it,
- defines a single pass. Each pass can set the following metadata:
-
- HOOK <name> (required)
- The texture which to hook into. May occur multiple times within a
- metadata block, up to a predetermined limit. See below for a list
- of hookable textures.
-
- BIND <name>
- Loads a texture and makes it available to the pass, and sets up
- macros to enable accessing it. See below for a list of set macros.
- By default, no textures are bound. The special name HOOKED can be
- used to refer to the texture that triggered this pass.
-
- SAVE <name>
- Gives the name of the texture to save the result of this pass
- into. By default, this is set to the special name HOOKED which has
- the effect of overwriting the hooked texture.
-
- WIDTH <szexpr>, HEIGHT <szexpr>
- Specifies the size of the resulting texture for this pass.
- ``szexpr`` refers to an expression in RPN (reverse polish
- notation), using the operators + - * / > < !, floating point
- literals, and references to sizes of existing texture and OUTPUT
- (such as MAIN.width or CHROMA.height). By default, these are set to
- HOOKED.w and HOOKED.h, respectively.
-
- WHEN <szexpr>
- Specifies a condition that needs to be true (non-zero) for the
- shader stage to be evaluated. If it fails, it will silently be
- omitted. (Note that a shader stage like this which has a dependency
- on an optional hook point can still cause that hook point to be
- saved, which has some minor overhead)
-
- OFFSET ox oy
- Indicates a pixel shift (offset) introduced by this pass. These
- pixel offsets will be accumulated and corrected during the
- next scaling pass (``cscale`` or ``scale``). The default values
- are 0 0 which correspond to no shift. Note that offsets are ignored
- when not overwriting the hooked texture.
-
- COMPONENTS n
- Specifies how many components of this pass's output are relevant
- and should be stored in the texture, up to 4 (rgba). By default,
- this value is equal to the number of components in HOOKED.
-
- Each bound texture (via ``BIND``) will make available the following
- definitions to that shader pass, where NAME is the name of the bound
- texture:
-
- vec4 NAME_tex(vec2 pos)
- The sampling function to use to access the texture at a certain
- spot (in texture coordinate space, range [0,1]). This takes care
- of any necessary normalization conversions.
- vec4 NAME_texOff(vec2 offset)
- Sample the texture at a certain offset in pixels. This works like
- NAME_tex but additionally takes care of necessary rotations, so
- that sampling at e.g. vec2(-1,0) is always one pixel to the left.
- vec2 NAME_pos
- The local texture coordinate of that texture, range [0,1].
- vec2 NAME_size
- The (rotated) size in pixels of the texture.
- mat2 NAME_rot
- The rotation matrix associated with this texture. (Rotates
- pixel space to texture coordinates)
- vec2 NAME_pt
- The (unrotated) size of a single pixel, range [0,1].
- sampler NAME_raw
- The raw bound texture itself. The use of this should be
- avoided unless absolutely necessary.
-
- In addition to these parameters, the following uniforms are also
- globally available:
-
- float random
- A random number in the range [0-1], different per frame.
- int frame
- A simple count of frames rendered, increases by one per frame and
- never resets (regardless of seeks).
- vec2 image_size
- The size in pixels of the input image.
- vec2 target_size
- The size in pixels of the visible part of the scaled (and possibly
- cropped) image.
-
- Internally, vo_opengl may generate any number of the following
- textures. Whenever a texture is rendered and saved by vo_opengl, all of
- the passes that have hooked into it will run, in the order they were
- added by the user. This is a list of the legal hook points:
-
- RGB, LUMA, CHROMA, ALPHA, XYZ (resizable)
- Source planes (raw). Which of these fire depends on the image
- format of the source.
-
- CHROMA_SCALED, ALPHA_SCALED (fixed)
- Source planes (upscaled). These only fire on subsampled content.
-
- NATIVE (resizable)
- The combined image, in the source colorspace, before conversion
- to RGB.
-
- MAINPRESUB (resizable)
- The image, after conversion to RGB, but before
- ``blend-subtitles=video`` is applied.
-
- MAIN (resizable)
- The main image, after conversion to RGB but before upscaling.
-
- LINEAR (fixed)
- Linear light image, before scaling. This only fires when
- ``linear-scaling`` is in effect.
-
- SIGMOID (fixed)
- Sigmoidized light, before scaling. This only fires when
- ``sigmoid-upscaling`` is in effect.
-
- PREKERNEL (fixed)
- The image immediately before the scaler kernel runs.
-
- POSTKERNEL (fixed)
- The image immediately after the scaler kernel runs.
-
- SCALED (fixed)
- The final upscaled image, before color management.
-
- OUTPUT (fixed)
- The final output image, after color management but before
- dithering and drawing to screen.
-
- Only the textures labelled with ``resizable`` may be transformed by the
- pass. When overwriting a texture marked ``fixed``, the WIDTH, HEIGHT
- and OFFSET must be left at their default values.
-
- ``deband``
- Enable the debanding algorithm. This greatly reduces the amount of
- visible banding, blocking and other quantization artifacts, at the
- expensive of very slightly blurring some of the finest details. In
- practice, it's virtually always an improvement - the only reason to
- disable it would be for performance.
-
- ``deband-iterations=<1..16>``
- The number of debanding steps to perform per sample. Each step reduces
- a bit more banding, but takes time to compute. Note that the strength
- of each step falls off very quickly, so high numbers (>4) are
- practically useless. (Default 1)
-
- ``deband-threshold=<0..4096>``
- The debanding filter's cut-off threshold. Higher numbers increase the
- debanding strength dramatically but progressively diminish image
- details. (Default 64)
-
- ``deband-range=<1..64>``
- The debanding filter's initial radius. The radius increases linearly
- for each iteration. A higher radius will find more gradients, but
- a lower radius will smooth more aggressively. (Default 16)
-
- If you increase the ``deband-iterations``, you should probably
- decrease this to compensate.
-
- ``deband-grain=<0..4096>``
- Add some extra noise to the image. This significantly helps cover up
- remaining quantization artifacts. Higher numbers add more noise.
- (Default 48)
-
- ``sigmoid-upscaling``
- When upscaling, use a sigmoidal color transform to avoid emphasizing
- ringing artifacts. This also implies ``linear-scaling``.
-
- ``sigmoid-center``
- The center of the sigmoid curve used for ``sigmoid-upscaling``, must
- be a float between 0.0 and 1.0. Defaults to 0.75 if not specified.
-
- ``sigmoid-slope``
- The slope of the sigmoid curve used for ``sigmoid-upscaling``, must
- be a float between 1.0 and 20.0. Defaults to 6.5 if not specified.
-
- ``sharpen=<value>``
- If set to a value other than 0, enable an unsharp masking filter.
- Positive values will sharpen the image (but add more ringing and
- aliasing). Negative values will blur the image. If your GPU is powerful
- enough, consider alternatives like the ``ewa_lanczossharp`` scale
- filter, or the ``scale-blur`` sub-option.
-
- (This feature is the replacement for the old ``sharpen3`` and
- ``sharpen5`` scalers.)
-
- ``glfinish``
- Call ``glFinish()`` before and after swapping buffers (default: disabled).
- Slower, but might improve results when doing framedropping.
- Can completely ruin performance. The details depend entirely on the
- OpenGL driver.
-
- ``waitvsync``
- Call ``glXWaitVideoSyncSGI`` after each buffer swap (default: disabled).
- This may or may not help with video timing accuracy and frame drop. It's
- possible that this makes video output slower, or has no effect at all.
-
- X11/GLX only.
-
- ``vsync-fences=<N>``
- Synchronize the CPU to the Nth past frame using the ``GL_ARB_sync``
- extension. A value of 0 disables this behavior (default). A value of
- 1 means it will synchronize to the current frame after rendering it.
- Like ``glfinish`` and ``waitvsync``, this can lower or ruin performance.
- Its advantage is that it can span multiple frames, and effectively limit
- the number of frames the GPU queues ahead (which also has an influence
- on vsync).
-
- ``dwmflush=<no|windowed|yes|auto>``
- Calls ``DwmFlush`` after swapping buffers on Windows (default: auto).
- It also sets ``SwapInterval(0)`` to ignore the OpenGL timing. Values
- are: no (disabled), windowed (only in windowed mode), yes (also in
- full screen).
-
- The value ``auto`` will try to determine whether the compositor is
- active, and calls ``DwmFlush`` only if it seems to be.
-
- This may help to get more consistent frame intervals, especially with
- high-fps clips - which might also reduce dropped frames. Typically, a
- value of ``windowed`` should be enough, since full screen may bypass the
- DWM.
-
- Windows only.
-
- ``dcomposition=<yes|no>``
- Allows DirectComposition when using the ANGLE backend (default: yes).
- DirectComposition implies flip-model presentation, which can improve
- rendering efficiency on Windows 8+ by avoiding a copy of the video frame.
- mpv uses it by default where possible, but it can cause poor behaviour
- with some drivers, such as a black screen or graphical corruption when
- leaving full-screen mode. Use "no" to disable it.
-
- Windows with ANGLE only.
-
- ``sw``
- Continue even if a software renderer is detected.
-
- ``backend=<sys>``
- The value ``auto`` (the default) selects the windowing backend. You
- can also pass ``help`` to get a complete list of compiled in backends
- (sorted by autoprobe order).
-
- auto
- auto-select (default)
- cocoa
- Cocoa/OS X
- win
- Win32/WGL
- angle
- Direct3D11 through the OpenGL ES translation layer ANGLE. This
- supports almost everything the ``win`` backend does (if the ANGLE
- build is new enough).
- dxinterop (experimental)
- Win32, using WGL for rendering and Direct3D 9Ex for presentation.
- Works on Nvidia and AMD. Newer Intel chips with the latest drivers
- may also work.
- x11
- X11/GLX
- wayland
- Wayland/EGL
- drm-egl
- DRM/EGL
- x11egl
- X11/EGL
-
- ``es=<mode>``
- Select whether to use GLES:
-
- yes
- Try to prefer ES over Desktop GL
- no
- Try to prefer desktop GL over ES
- auto
- Use the default for each backend (default)
-
- ``fbo-format=<fmt>``
- Selects the internal format of textures used for FBOs. The format can
- influence performance and quality of the video output.
- ``fmt`` can be one of: rgb8, rgb10, rgb10_a2, rgb16, rgb16f,
- rgb32f, rgba12, rgba16, rgba16f, rgba32f.
- Default: ``auto``, which maps to rgba16 on desktop GL, and rgba16f or
- rgb10_a2 on GLES (e.g. ANGLE), unless GL_EXT_texture_norm16 is
- available.
-
- ``gamma=<0.1..2.0>``
- Set a gamma value (default: 1.0). If gamma is adjusted in other ways
- (like with the ``--gamma`` option or key bindings and the ``gamma``
- property), the value is multiplied with the other gamma value.
-
- Recommended values based on the environmental brightness:
-
- 1.0
- Brightly illuminated (default)
- 0.9
- Slightly dim
- 0.8
- Pitch black room
-
- NOTE: Typical movie content (Blu-ray etc.) already contains a gamma
- drop of about 0.8, so specifying it here as well will result in even
- even darker image than intended!
-
- ``gamma-auto``
- Automatically corrects the gamma value depending on ambient lighting
- conditions (adding a gamma boost for dark rooms).
-
- With ambient illuminance of 64lux, mpv will pick the 1.0 gamma value
- (no boost), and slightly increase the boost up until 0.8 for 16lux.
-
- NOTE: Only implemented on OS X.
-
- ``target-prim=<value>``
- Specifies the primaries of the display. Video colors will be adapted to
- this colorspace when ICC color management is not being used. Valid
- values are:
-
- auto
- Disable any adaptation (default)
- bt.470m
- ITU-R BT.470 M
- bt.601-525
- ITU-R BT.601 (525-line SD systems, eg. NTSC), SMPTE 170M/240M
- bt.601-625
- ITU-R BT.601 (625-line SD systems, eg. PAL/SECAM), ITU-R BT.470 B/G
- bt.709
- ITU-R BT.709 (HD), IEC 61966-2-4 (sRGB), SMPTE RP177 Annex B
- bt.2020
- ITU-R BT.2020 (UHD)
- apple
- Apple RGB
- adobe
- Adobe RGB (1998)
- prophoto
- ProPhoto RGB (ROMM)
- cie1931
- CIE 1931 RGB (not to be confused with CIE XYZ)
- dci-p3
- DCI-P3 (Digital Cinema Colorspace), SMPTE RP431-2
- v-gamut
- Panasonic V-Gamut (VARICAM) primaries
-
- ``target-trc=<value>``
- Specifies the transfer characteristics (gamma) of the display. Video
- colors will be adjusted to this curve when ICC color management is
- not being used. Valid values are:
-
- auto
- Disable any adaptation (default)
- bt.1886
- ITU-R BT.1886 curve (assuming infinite contrast)
- srgb
- IEC 61966-2-4 (sRGB)
- linear
- Linear light output
- gamma1.8
- Pure power curve (gamma 1.8), also used for Apple RGB
- gamma2.2
- Pure power curve (gamma 2.2)
- gamma2.8
- Pure power curve (gamma 2.8), also used for BT.470-BG
- prophoto
- ProPhoto RGB (ROMM)
- st2084
- SMPTE ST2084 (HDR) curve, PQ OETF
- std-b67
- ARIB STD-B67 (Hybrid Log-gamma) curve, also known as BBC/NHK HDR
- v-log
- Panasonic V-Log (VARICAM) curve
-
- NOTE: When using HDR output formats, mpv will encode to the specified
- curve but it will not set any HDMI flags or other signalling that
- might be required for the target device to correctly display the
- HDR signal. The user should independently guarantee this before
- using these signal formats for display.
-
- ``target-brightness=<1..100000>``
- Specifies the display's approximate brightness in cd/m^2. When playing
- HDR content on a SDR display (or SDR content on an HDR display), video
- colors will be tone mapped to this target brightness using the
- algorithm specified by ``hdr-tone-mapping``. The default of 250 cd/m^2
- corresponds to a typical consumer display.
-
- ``hdr-tone-mapping=<value>``
- Specifies the algorithm used for tone-mapping HDR images onto the
- target display. Valid values are:
-
- clip
- Hard-clip any out-of-range values.
- reinhard
- Reinhard tone mapping algorithm. Very simple continuous curve.
- Preserves dynamic range and peak but uses nonlinear contrast.
- hable
- Similar to ``reinhard`` but preserves dark contrast better
- (slightly sigmoidal). Developed by John Hable for use in video
- games. (default)
- gamma
- Fits a logarithmic transfer between the tone curves.
- linear
- Linearly stretches the entire reference gamut to (a linear multiple
- of) the display.
-
- ``tone-mapping-param=<value>``
- Set tone mapping parameters. Ignored if the tone mapping algorithm is
- not tunable. This affects the following tone mapping algorithms:
-
- reinhard
- Specifies the local contrast coefficient at the display peak.
- Defaults to 0.5, which means that in-gamut values will be about
- half as bright as when clipping.
- gamma
- Specifies the exponent of the function. Defaults to 1.8.
- linear
- Specifies the scale factor to use while stretching. Defaults to
- 1.0.
-
- ``icc-profile=<file>``
- Load an ICC profile and use it to transform video RGB to screen output.
- Needs LittleCMS 2 support compiled in. This option overrides the
- ``target-prim``, ``target-trc`` and ``icc-profile-auto`` options.
-
- ``icc-profile-auto``
- Automatically select the ICC display profile currently specified by
- the display settings of the operating system.
-
- NOTE: On Windows, the default profile must be an ICC profile. WCS
- profiles are not supported.
-
- ``icc-cache-dir=<dirname>``
- Store and load the 3D LUTs created from the ICC profile in this directory.
- This can be used to speed up loading, since LittleCMS 2 can take a while
- to create a 3D LUT. Note that these files contain uncompressed LUTs.
- Their size depends on the ``3dlut-size``, and can be very big.
-
- NOTE: This is not cleaned automatically, so old, unused cache files
- may stick around indefinitely.
-
- ``icc-intent=<value>``
- Specifies the ICC intent used for the color transformation (when using
- ``icc-profile``).
-
- 0
- perceptual
- 1
- relative colorimetric (default)
- 2
- saturation
- 3
- absolute colorimetric
-
- ``3dlut-size=<r>x<g>x<b>``
- Size of the 3D LUT generated from the ICC profile in each dimension.
- Default is 64x64x64. Sizes may range from 2 to 512.
-
- ``icc-contrast=<0-100000>``
- Specifies an upper limit on the target device's contrast ratio.
- This is detected automatically from the profile if possible, but for
- some profiles it might be missing, causing the contrast to be assumed
- as infinite. As a result, video may appear darker than intended. This
- only affects BT.1886 content. The default of 0 means no limit.
-
- ``blend-subtitles=<yes|video|no>``
- Blend subtitles directly onto upscaled video frames, before
- interpolation and/or color management (default: no). Enabling this
- causes subtitles to be affected by ``icc-profile``, ``target-prim``,
- ``target-trc``, ``interpolation``, ``gamma`` and ``post-shader``. It
- also increases subtitle performance when using ``interpolation``.
-
- The downside of enabling this is that it restricts subtitles to the
- visible portion of the video, so you can't have subtitles exist in the
- black margins below a video (for example).
-
- If ``video`` is selected, the behavior is similar to ``yes``, but subs
- are drawn at the video's native resolution, and scaled along with the
- video.
-
- .. warning:: This changes the way subtitle colors are handled. Normally,
- subtitle colors are assumed to be in sRGB and color managed
- as such. Enabling this makes them treated as being in the
- video's color space instead. This is good if you want
- things like softsubbed ASS signs to match the video colors,
- but may cause SRT subtitles or similar to look slightly off.
-
- ``alpha=<blend-tiles|blend|yes|no>``
- Decides what to do if the input has an alpha component.
-
- blend-tiles
- Blend the frame against a 16x16 gray/white tiles background (default).
- blend
- Blend the frame against a black background.
- yes
- Try to create a framebuffer with alpha component. This only makes sense
- if the video contains alpha information (which is extremely rare). May
- not be supported on all platforms. If alpha framebuffers are
- unavailable, it silently falls back on a normal framebuffer. Note
- that if you set the ``fbo-format`` option to a non-default value,
- a format with alpha must be specified, or this won't work.
- no
- Ignore alpha component.
-
- ``rectangle-textures``
- Force use of rectangle textures (default: no). Normally this shouldn't
- have any advantages over normal textures. Note that hardware decoding
- overrides this flag.
-
- ``background=<color>``
- Color used to draw parts of the mpv window not covered by video.
- See ``--osd-color`` option how colors are defined.
-
-``opengl-hq``
- Same as ``opengl``, but with default settings for high quality rendering.
-
- This is equivalent to::
-
- --vo=opengl:scale=spline36:cscale=spline36:dscale=mitchell:dither-depth=auto:correct-downscaling:sigmoid-upscaling:deband:es=no
-
- Note that some cheaper LCDs do dithering that gravely interferes with
- ``opengl``'s dithering. Disabling dithering with ``dither-depth=no`` helps.
+ with ``rgb32f``. If you have problems, you can also try enabling the
+ ``--opengl-dumb-mode=yes`` option.
``sdl``</