40 lines
1.5 KiB
Text
40 lines
1.5 KiB
Text
|
Levels
|
||
|
======
|
||
|
|
||
|
.. function:: Levels(vnode clip[, float min_in, float max_in, float gamma=1.0, float min_out, float max_out, int[] planes=[0, 1, 2]])
|
||
|
:module: std
|
||
|
|
||
|
Adjusts brightness, contrast, and gamma.
|
||
|
|
||
|
The range [*min_in*, *max_in*] is remapped into [*min_out*, *max_out*]. Note that the
|
||
|
range behavior is unintuitive for YUV float formats since the assumed range will be
|
||
|
0-1 even for the UV-planes.
|
||
|
|
||
|
For example, to convert from limited range YUV to full range (8 bit)::
|
||
|
|
||
|
clip = std.Levels(clip, min_in=16, max_in=235, min_out=0, max_out=255, planes=0)
|
||
|
clip = std.Levels(clip, min_in=16, max_in=240, min_out=0, max_out=255, planes=[1,2])
|
||
|
|
||
|
The default value of *max_in* and *max_out* is the format's minimum and maximum
|
||
|
allowed values respectively. Note that all input is clamped to the input range
|
||
|
to prevent out of range output.
|
||
|
|
||
|
.. warning::
|
||
|
The default ranges are 0-1 for floating point formats. This may have an undesired
|
||
|
effect on YUV formats.
|
||
|
|
||
|
*clip*
|
||
|
Clip to process. It must have integer sample type and bit depth
|
||
|
between 8 and 16, or float sample type and bit depth of 32. If
|
||
|
there are any frames with other formats, an error will be
|
||
|
returned.
|
||
|
|
||
|
*gamma*
|
||
|
Controls the degree of non-linearity of the conversion. Values
|
||
|
greater than 1.0 brighten the output, while values less than 1.0
|
||
|
darken it.
|
||
|
|
||
|
*planes*
|
||
|
Specifies which planes will be processed. Any unprocessed planes
|
||
|
will be simply copied.
|