ConvertBits
|  (→Changes:  3.7.1) | m (→Changes:   fix table formatting) | ||
| Line 112: | Line 112: | ||
| |- | |- | ||
| | 3.7.1 | | 3.7.1 | ||
| − | | parameter ''bits'' optional | + | |parameter ''bits'' optional | 
| − | + | <p>_ChromaRange frame property handling</p> | |
| − | + | <p>Free fulls-fulld combination</p> | |
| − | + | <p>Free target dither_bits down to 1</p> | |
| − | + | <p>Allow dithering from 32 bit float</p> | |
| − | + | <p>Allow dithering while keeping actual bit depth (but with a smaller dither_bits)</p> | |
| − | + | <p>Specially handled full scale chroma</p> | |
| |- | |- | ||
| | 20170310 r2440 | | 20170310 r2440 | ||
Revision as of 15:28, 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.
 
- int  bits = (actual bit depth) 
 - Bit depth of output clip. If provided valid values are: 8, 10, 12, 14, 16 (integer) or 32 (floating point).
- From 3.7.1 parameter is optional since no bitdepth change is needed when doing only range conversion (fulls-fulld) or artistic dithering (dither_bits<bit depth)
- <3.7.1: required
 
- 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 
 - If -1 (default), do not add dither;
- If 0, add ordered dither;
- If 1, add error diffusion (Floyd-Steinberg) dither doom9
 
- 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.
- 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.
- <3.7.1: Dithering is allowed only for 10-16bit (not 32bit float) sources.
 
- 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.
- <3.7.1: Must be an even number from 2 to bits, inclusive.
- <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 _ChromaRangeframe 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.
- <3.7.1: must match fulls.
 
- ConvertBits writes _ChromaRangeframe property (0-full or 1-limited)
Changes
| 3.7.1 | parameter bits optional _ChromaRange frame property handling Free fulls-fulld combination Free target dither_bits down to 1 Allow dithering from 32 bit float Allow dithering while keeping actual bit depth (but with a smaller dither_bits) Specially handled full scale chroma | 
| 20170310 r2440 | parameter dither_bits | 
| 20170202 r2420 | parameters fulls, fulld | 
