ConvertBits

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (add link)
(ConvertBits: 3.7.1. changes, allowed parameters, frame props)
Line 30: Line 30:
  
 
:{{Par2|truerange|bool|true}}
 
:{{Par2|truerange|bool|true}}
 +
::Hint: forget it. Deprecated, do not use. Maybe once removed.
 
::When converting from true 10-16 bit formats, {{FuncArg|truerange}}=false indicates bitdepth of 16 bits regardless of the 10-12-14 bit format. Not applicable for non planar formats.
 
::When converting from true 10-16 bit formats, {{FuncArg|truerange}}=false indicates bitdepth of 16 bits regardless of the 10-12-14 bit format. Not applicable for non planar formats.
  
Line 37: Line 38:
 
::*If ''0'', add [[Ordered_dithering|ordered]] dither;
 
::*If ''0'', add [[Ordered_dithering|ordered]] dither;
 
::*If ''1'', add [[wikipedia:Floyd–Steinberg_dithering|error diffusion (Floyd-Steinberg)]] dither <sup>[http://forum.doom9.org/showthread.php?p=1838145#post1838145 doom9]</sup>
 
::*If ''1'', add [[wikipedia:Floyd–Steinberg_dithering|error diffusion (Floyd-Steinberg)]] dither <sup>[http://forum.doom9.org/showthread.php?p=1838145#post1838145 doom9]</sup>
::Dithering is allowed only for scaling down (bit depth reduction), not up.
+
::Dithering is allowed only for scaling down (bit depth reduction), not up. Bit depth can be kept though if a smaller dither_bits is given.
::Dithering is allowed only for 10-16bit (not 32bit float) sources.
+
::Until 3.7.1: Dithering is allowed only for 10-16bit (not 32bit float) sources.
 +
::From 3.7.1: no limit. Note: (behind the scenese) 32 bit float clips are first converted down to 16 (or less if needed) bits, then are further dithered down from this intermediate clip.
  
 
:{{Par2|dither_bits|int|{{Template:FuncArg|bits}}}}
 
:{{Par2|dither_bits|int|{{Template:FuncArg|bits}}}}
 
::Exaggerated dither effect: dither to a lower color depth than required by {{FuncArg|bits}} argument.
 
::Exaggerated dither effect: dither to a lower color depth than required by {{FuncArg|bits}} argument.
 
::Has no effect if {{FuncArg|dither}}=''-1'' (off).
 
::Has no effect if {{FuncArg|dither}}=''-1'' (off).
::* Must be an even number from ''2'' to {{FuncArg|bits}}, inclusive.
+
::* from 3.7.1 Arbitrary number from 1 to {{FuncArg|bits}}, inclusive.
::* In addition, must be >= ({{FuncArg|clip}}.[[Clip_properties#Color_Format|BitsPerComponent]]-8).
+
::* until 3.7.1: Must be an even number from ''2'' to {{FuncArg|bits}}, inclusive.
:::{| class="wikitable"
+
::* until 3.7.1: In addition, must be >= ({{FuncArg|clip}}.[[Clip_properties#Color_Format|BitsPerComponent]]-8).
|+ style="text-align:left"|''Examples''
+
!Conversion&nbsp;&nbsp;
+
!Allowed Values&nbsp;
+
|-
+
|16 &rarr; 12bit
+
|8, 10, 12
+
|-
+
|16 &rarr; 10bit
+
|8, 10
+
|-
+
|16 &rarr; &nbsp;&nbsp;8bit
+
|8
+
|-
+
|14 &rarr; 10bit
+
|6, 8, 10
+
|-
+
|14 &rarr; &nbsp;&nbsp;8bit
+
|6, 8
+
|-
+
|12 &rarr; 10bit
+
|4, 6, 8, 10
+
|-
+
|12 &rarr; &nbsp;&nbsp;8bit
+
|4, 6, 8
+
|-
+
|10 &rarr; &nbsp;&nbsp;8bit
+
|2, 4, 6, 8
+
|}
+
 
+
 
:{{Par2|fulls|bool|(auto)}}
 
:{{Par2|fulls|bool|(auto)}}
 
::''Use the default value unless you know what you are doing.''
 
::''Use the default value unless you know what you are doing.''
::If ''true'' (RGB default), scale by multiplication: 0-255 &rarr; 0-65535;
+
::Default value can come from <code>_ChromaRange</code> frame property
 +
::If ''true'' (RGB default), scale by multiplication: 0-255 &rarr; 0-65535; <p>Note: full scale U and V chroma is specially handled</p>
 
::if ''false'' (YUV default), scale by [[wikipedia:Arithmetic_shift|bit-shifting]].
 
::if ''false'' (YUV default), scale by [[wikipedia:Arithmetic_shift|bit-shifting]].
 
::Use case: override greyscale conversion to fullscale instead of bit-shifts.
 
::Use case: override greyscale conversion to fullscale instead of bit-shifts.
Line 85: Line 59:
 
:{{Par2|fulld|bool|{{Template:FuncArg|fulls}}}}
 
:{{Par2|fulld|bool|{{Template:FuncArg|fulls}}}}
 
::''Use the default value unless you know what you are doing.''
 
::''Use the default value unless you know what you are doing.''
::At the moment, ''must'' match {{FuncArg|fulls}}.
+
::From 3.7.1: can be any combination with {{FuncArg|fulls}}.
 +
::Until 3.7.1: ''must'' match {{FuncArg|fulls}}.
 +
 
  
 +
:ConvertBits writes <code>_ChromaRange</code> frame property (0-full or 1-limited)
  
 
<!--
 
<!--

Revision as of 15:16, 9 December 2021

AVS+
This feature is specific to AviSynthPlus.

It is not supported in other AviSynth versions.


ConvertBits

Changes bit depth while keeping color format the same, if possible.
If the conversion is not possible – for example, converting RGB32 to 14bit – an error is raised.


ConvertBits(clip, int bits [, bool truerange, int dither, int dither_bits, bool fulls, bool fulld ] )


(older bit-depth conversion filters – deprecated)

ConvertToFloat(clip, int bits [, bool truerange, int dither, int dither_bits, bool fulls, bool fulld ] )
ConvertTo16bit(clip, int bits [, bool truerange, int dither, int dither_bits, bool fulls, bool fulld ] )
ConvertTo8bit(clip, int bits [, bool truerange, int dither, int dither_bits, bool fulls, bool fulld ] )


clip   = (required)
Source clip.
bits   = (required)
Bit depth of output clip. Valid values: 8, 10, 12, 14, 16 (integer) or 32 (floating point).
bool  truerange = true
Hint: forget it. Deprecated, do not use. Maybe once removed.
When converting from true 10-16 bit formats, truerange=false indicates bitdepth of 16 bits regardless of the 10-12-14 bit format. Not applicable for non planar formats.
int  dither = -1
Dithering is allowed only for scaling down (bit depth reduction), not up. Bit depth can be kept though if a smaller dither_bits is given.
Until 3.7.1: Dithering is allowed only for 10-16bit (not 32bit float) sources.
From 3.7.1: no limit. Note: (behind the scenese) 32 bit float clips are first converted down to 16 (or less if needed) bits, then are further dithered down from this intermediate clip.
int  dither_bits = bits
Exaggerated dither effect: dither to a lower color depth than required by bits argument.
Has no effect if dither=-1 (off).
  • from 3.7.1 Arbitrary number from 1 to bits, inclusive.
  • until 3.7.1: Must be an even number from 2 to bits, inclusive.
  • until 3.7.1: In addition, must be >= (clip.BitsPerComponent-8).
bool  fulls = (auto)
Use the default value unless you know what you are doing.
Default value can come from _ChromaRange frame property
If true (RGB default), scale by multiplication: 0-255 → 0-65535;

Note: full scale U and V chroma is specially handled

if false (YUV default), scale by bit-shifting.
Use case: override greyscale conversion to fullscale instead of bit-shifts.
Conversion from and to float is always full-scale.
Alpha plane is always treated as full scale.
bool  fulld = fulls
Use the default value unless you know what you are doing.
From 3.7.1: can be any combination with fulls.
Until 3.7.1: must match fulls.


ConvertBits writes _ChromaRange frame property (0-full or 1-limited)


Changes

20170310 r2440 parameter dither_bits
20170202 r2420 parameters fulls, fulld
Personal tools