<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://avisynth.nl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=F3kdb</id>
		<title>F3kdb - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=F3kdb"/>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=F3kdb&amp;action=history"/>
		<updated>2026-04-07T21:49:54Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.24</generator>

	<entry>
		<id>http://avisynth.nl/index.php?title=F3kdb&amp;diff=12103&amp;oldid=prev</id>
		<title>Reel.Deal: f3kdb v2.0 documentation</title>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=F3kdb&amp;diff=12103&amp;oldid=prev"/>
				<updated>2020-09-10T17:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;f3kdb v2.0 documentation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{FilterCat6|External_filters|Plugins|Plugins_x64|Restoration_filters|Debanding|Deep_color_tools}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|1=[https://github.com/SAPikachu SAPikachu]&lt;br /&gt;
|2=v1.5.1 / v2.0&lt;br /&gt;
|3=&lt;br /&gt;
[x86]: [https://web.archive.org/web/20160604190430if_/https://www.nmm-hd.org/upload/get~7JdW450vEN0/flash3kyuu_deband_1.5.1_x86.7z flash3kyuu_deband_1.5.1_x86.7z] &lt;br /&gt;
---------&lt;br /&gt;
[x64]: [https://web.archive.org/web/20170913010149if_/https://www.nmm-hd.org/upload/get~arIyHEnxIS8/flash3kyuu_deband_1.5.1_x64.7z flash3kyuu_deband_1.5.1_x64.7z]&lt;br /&gt;
---------&lt;br /&gt;
'''2.0pre2 [x86/x64]'''&lt;br /&gt;
* [https://web.archive.org/web/20150503191218if_/https://www.nmm-hd.org/upload/get~NfiLlgo1pX8/f3kdb-b98d6bc.rar f3kdb-b98d6bc.rar] - Compiled with Intel C++ Compiler 2013.&lt;br /&gt;
---------&lt;br /&gt;
* [https://web.archive.org/web/20160414135351if_/http://www.nmm-hd.org/upload/get~jW8DJGBDJro/f3kdb-rev410.7z f3kdb-rev410.7z] - Compiled with MSVC 2013.&lt;br /&gt;
|4=Debanding &lt;br /&gt;
|5=[https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]&lt;br /&gt;
|6=[https://forum.doom9.org/showthread.php?t=161411 Doom9 Thread]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
[[f3kdb]] (a.k.a. flash3kyuu_deband) is a deband library and AviSynth / VapourSynth filter. It was originally written for AviUtl by [https://twitter.com/bunyuchan bunyuchan] a.k.a [https://web.archive.org/web/20181121183125/http://www.geocities.jp/flash3kyuu/ flash3kyuu].&lt;br /&gt;
&lt;br /&gt;
It works by replacing banded pixels with average value of referenced pixels, and optionally add grain (random dithering) to them. See Wikipedia: [https://en.wikipedia.org/wiki/Color_banding Color Banding]&lt;br /&gt;
&lt;br /&gt;
* Official documentation: https://f3kdb.readthedocs.io/en/latest/&lt;br /&gt;
&lt;br /&gt;
* For native AviSynth+ high bit-depth support and a few more features, see [[neo_f3kdb]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
:{{Template:FuncDef|f3kdb (clip c, int &amp;quot;range&amp;quot;, int &amp;quot;Y&amp;quot;, int &amp;quot;Cb&amp;quot;, int &amp;quot;Cr&amp;quot;, int &amp;quot;grainY&amp;quot;, int &amp;quot;grainC&amp;quot;, int &amp;quot;sample_mode&amp;quot;, int &amp;quot;seed&amp;quot;, bool &amp;quot;blur_first&amp;quot;, bool &amp;quot;dynamic_grain&amp;quot;, int &amp;quot;opt&amp;quot;, bool &amp;quot;mt&amp;quot;, int &amp;quot;dither_algo&amp;quot;, bool &amp;quot;keep_tv_range&amp;quot;, int &amp;quot;input_mode&amp;quot;, int &amp;quot;input_depth&amp;quot;, int &amp;quot;output_mode&amp;quot;, int &amp;quot;output_depth&amp;quot;, int &amp;quot;random_algo_ref&amp;quot;, int &amp;quot;random_algo_grain&amp;quot;, float &amp;quot;random_param_ref&amp;quot;, float &amp;quot;random_param_grain&amp;quot;, string &amp;quot;preset&amp;quot;)}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2| |clip| }}&lt;br /&gt;
:::Input clip.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|range|int|15}}&lt;br /&gt;
:::Banding detection range.&lt;br /&gt;
:::*Default: 15&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|Y|int|64}}&lt;br /&gt;
::{{Par2|Cb|int|64}}&lt;br /&gt;
::{{Par2|Cr|int|64}}&lt;br /&gt;
:::Banding detection threshold for respective plane. If difference between current pixel and reference pixel is less than threshold, it will be considered as banded.&lt;br /&gt;
:::*Default: 64&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|grainY|int|64}}&lt;br /&gt;
::{{Par2|grainC|int|64}}&lt;br /&gt;
:::Specifies amount of grains added in the last debanding stage.&lt;br /&gt;
:::*Default: 64&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|sample_mode|int|2}}&lt;br /&gt;
:::Valid modes are:&lt;br /&gt;
:::* 1: Take 2 pixels as reference pixel. Reference pixels are in the same column of current pixel. Add grain after processing.&lt;br /&gt;
:::* 2: Take 4 pixels as reference pixel. Reference pixels are in the square around current pixel. Add grain after processing.&lt;br /&gt;
:::* Default: 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|seed|int|}}&lt;br /&gt;
:::Seed for random number generation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|blur_first|bool|true}}&lt;br /&gt;
:::*true: Current pixel is compared with average value of all pixels.&lt;br /&gt;
:::*false: Current pixel is compared with all pixels. The pixel is considered as banded pixel only if all differences are less than threshold.&lt;br /&gt;
:::*Default: true&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|dynamic_grain|bool|false}}&lt;br /&gt;
:::Use different grain pattern for each frame.&lt;br /&gt;
:::*Default: false&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|opt|int|-1}}&lt;br /&gt;
:::Specifies optimization mode.&lt;br /&gt;
:::*-1: Use highest optimization mode that is supported by host CPU&lt;br /&gt;
:::*0: No optimization (Intended for testing only)&lt;br /&gt;
:::*1: SSE2 (Pentium 4, AMD K8)&lt;br /&gt;
:::*2: SSSE3 (Core 2)&lt;br /&gt;
:::*3: SSE4.1 (Core 2 45nm)&lt;br /&gt;
:::*Default: -1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|mt|bool|}}&lt;br /&gt;
:::Only available in AviSynth&lt;br /&gt;
&lt;br /&gt;
:::Multi-threaded processing. If set to true, U and V plane will be proccessed in parallel with Y plane to speed up processing.&lt;br /&gt;
&lt;br /&gt;
:::Default: true if host has more than 1 CPU/cores, false otherwise.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|dither_algo|int|}}&lt;br /&gt;
:::*1: No dithering, LSB is truncated&lt;br /&gt;
:::*2: Ordered dithering&lt;br /&gt;
:::*3: Floyd-Steinberg dithering&lt;br /&gt;
&lt;br /&gt;
::::Notes:&lt;br /&gt;
::::Visual quality of mode 3 is the best, but the debanded pixels may easily be destroyed by x264, you need to carefully tweak the settings to get better result.&lt;br /&gt;
&lt;br /&gt;
::::Mode 1 and mode 2 don’t look the best, but if you are encoding at low bitrate, they may be better choice since the debanded pixels is easier to survive encoding, mode 3 may look worse than 1/2 after encoding in this situation.&lt;br /&gt;
&lt;br /&gt;
::::This parameter is ignored if output_depth = 16.&lt;br /&gt;
&lt;br /&gt;
:::Default: 3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|keep_tv_range|bool|false}}&lt;br /&gt;
:::If set to true, all processed pixels will be clamped to TV range (luma: 16 ~ 235, chroma: 16 ~ 240).&lt;br /&gt;
&lt;br /&gt;
::::*It is recommended to set this to true for TV-range videos, since pixel values may overflow/underflow after dithering.&lt;br /&gt;
::::*DON’T set this to true for full-range videos, as all out-of-range pixels will be clamped to TV range.&lt;br /&gt;
&lt;br /&gt;
:::*Default: false&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|input_mode|int|}}&lt;br /&gt;
:::Specify source video type.&lt;br /&gt;
&lt;br /&gt;
:::*0 : Regular 8 bit video&lt;br /&gt;
:::*1 : 9 ~ 16 bit high bit-depth video, stacked format ([[Stack16]])&lt;br /&gt;
:::*2 : 9 ~ 16 bit high bit-depth video, interleaved format&lt;br /&gt;
&lt;br /&gt;
:::Default: 0 (input_depth = 8 or not specified) / 1 (input_depth &amp;gt; 8)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|input_depth|int|}}&lt;br /&gt;
:::Specify bit-depth of source video.&lt;br /&gt;
&lt;br /&gt;
:::Range: 8 ~ 16&lt;br /&gt;
&lt;br /&gt;
:::Default: 8 (input_mode = 0 or not specified) / 16 (input_mode = 1 or 2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|output_mode|int|}}&lt;br /&gt;
:::Specify output video type. Meaning of values are the same as input_mode.&lt;br /&gt;
&lt;br /&gt;
:::When output_mode = 2, frames will be 2x wider and look garbled on preview, it will return to normal after correctly encoded by high bit-depth x264).&lt;br /&gt;
&lt;br /&gt;
:::Default: 0 (output_depth = 8 or not specified) / 1 (output_depth &amp;gt; 8)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|output_depth|int|}}&lt;br /&gt;
:::Specify output bit-depth.&lt;br /&gt;
&lt;br /&gt;
:::If output_depth = 16, dither algorithm specified by dither_algo won’t be applied.&lt;br /&gt;
&lt;br /&gt;
:::Range: 8 ~ 16&lt;br /&gt;
&lt;br /&gt;
:::Default: 8 (output_mode = 0 or not specified) / 16 (output_mode = 1 or 2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|random_algo_ref|int|1}}&lt;br /&gt;
::{{Par2|random_algo_grain|int|1}}&lt;br /&gt;
:::Choose random number algorithm for reference positions / grains.&lt;br /&gt;
:::*0: Algorithm in old versions&lt;br /&gt;
:::*1: Uniform distribution&lt;br /&gt;
:::*2: Gaussian distribution&lt;br /&gt;
:::**(StdDev (sigma) is settable through random_param_ref / random_param_grain, Only values in [-1.0, 1.0] is used for multiplication, numbers outside this range are simply ignored).&lt;br /&gt;
:::Default: 1 / 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|random_param_ref|float|1.0}}&lt;br /&gt;
::{{Par2|random_param_grain|float|1.0}}&lt;br /&gt;
:::Parameter for the respective random number generator. Currently only have effect for the Gaussian generator.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|preset|string|}}&lt;br /&gt;
:::Use preset parameters. Preset will be applied before other parameters so that you can easily override individual parameter.&lt;br /&gt;
::::{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;; width=&amp;quot;400px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Name&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Parameters&lt;br /&gt;
|-&lt;br /&gt;
|depth&lt;br /&gt;
|y=0/cb=0/cr=0/grainy=0/grainc=0&lt;br /&gt;
|-&lt;br /&gt;
|low&lt;br /&gt;
|y=32/cb=32/cr=32/grainy=32/grainc=32&lt;br /&gt;
|-&lt;br /&gt;
|medium&lt;br /&gt;
|y=48/cb=48/cr=48/grainy=48/grainc=48&lt;br /&gt;
|-&lt;br /&gt;
|high&lt;br /&gt;
|y=64/cb=64/cr=64/grainy=64/grainc=64&lt;br /&gt;
|-&lt;br /&gt;
|veryhigh&lt;br /&gt;
|y=80/cb=80/cr=80/grainy=80/grainc=80&lt;br /&gt;
|-&lt;br /&gt;
|nograin&lt;br /&gt;
|grainy=0/grainc=0&lt;br /&gt;
|-&lt;br /&gt;
|luma&lt;br /&gt;
|cb=0/cr=0/grainc=0&lt;br /&gt;
|-&lt;br /&gt;
|chroma&lt;br /&gt;
|y=0/grainy=0&lt;br /&gt;
|}&lt;br /&gt;
:::Presets can also be combined together, for example “medium/nograin” is the same as y=48/cb=48/cr=48/grainy=0/grainc=0 .&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples == &lt;br /&gt;
f3kdb with default settings:&lt;br /&gt;
 [[AviSource]](&amp;quot;blah.avi&amp;quot;)&lt;br /&gt;
 f3kdb()&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2.0.0&lt;br /&gt;
* Support VapourSynth natively&lt;br /&gt;
* New parameter: preset&lt;br /&gt;
* C++ API support&lt;br /&gt;
* Dropped YUY2 support, please process in YV16 instead&lt;br /&gt;
* Dropped f3kdb_dither, please use f3kdb(preset=&amp;quot;depth&amp;quot;, ...) for bitdepth conversion&lt;br /&gt;
* Dropped several deprecated parameter values (sample_mode=0 and dither_algo=0)&lt;br /&gt;
&lt;br /&gt;
1.5.1 (2012-04-07)&lt;br /&gt;
* Supports setting StdDev (sigma) for the Gaussian random number generator&lt;br /&gt;
&lt;br /&gt;
1.5.0 (2012-03-12)&lt;br /&gt;
* (There isn't any new feature in this version, only some parameters are modified to reduce user confusion)&lt;br /&gt;
* ditherY/ditherC are renamed to grainY/grainC&lt;br /&gt;
* dynamic_dither_noise is renamed to dynamic_grain&lt;br /&gt;
* precision_mode is renamed to dither_algo, mode 4 and 5 are removed&lt;br /&gt;
* random_algo_dither is renamed to random_algo_grain&lt;br /&gt;
* enable_fast_skip_plane is removed, this optimization will be enabled mplicitly whenever possible (Filter result won't be changed by this optimization)&lt;br /&gt;
&lt;br /&gt;
1.4.2 (2011-11-10)&lt;br /&gt;
* Fixed crash on some non-mod16 videos&lt;br /&gt;
&lt;br /&gt;
1.4.1 (2011-11-05)&lt;br /&gt;
* Fixed broken YUY2 support (still slow)&lt;br /&gt;
* Improved default value handling of bitdepth-related parameters&lt;br /&gt;
* precision_mode 4 / 5 are now deprecated and may be removed in future versions, you can use output_mode 1 / 2 to achieve the same result&lt;br /&gt;
&lt;br /&gt;
1.4.0 (2011-10-30)&lt;br /&gt;
* 9 ~ 16 bit-depth input/output&lt;br /&gt;
** Related parameters: input_mode/input_depth/output_mode/output_depth&lt;br /&gt;
* New random number generator, reference position and dither noise can be generated in uniform or gaussian distribution&lt;br /&gt;
** Related parameters: random_algo_ref / random_algo_dither&lt;br /&gt;
* diff_seed is replaced with dynamic_dither_noise, when enabled, noise pattern will be different for each frame&lt;br /&gt;
* Another new parameter: enable_fast_skip_plane&lt;br /&gt;
* Short filter alias: f3kdb&lt;br /&gt;
* Now the ICC-compiled DLL should be runnable on pre-SSE2 systems (untested)&lt;br /&gt;
* Several bug fixes&lt;br /&gt;
&lt;br /&gt;
1.3.0 (2011-09-07)&lt;br /&gt;
* Added x64 version&lt;br /&gt;
* Added a downsample filter: f3kdb_dither&lt;br /&gt;
* Internal precision is increased to 16bit&lt;br /&gt;
* New parameter: keep_tv_range, please see readme.txt for details&lt;br /&gt;
* Default sample_mode is changed to 2 as it is better in most cases&lt;br /&gt;
* Fixed: Floyd-Steinberg dithering may produce incorrect result for full-range videos&lt;br /&gt;
* Fixed: Broken YUY2 debanding&lt;br /&gt;
* Minor optimizations&lt;br /&gt;
&lt;br /&gt;
1.2.0 (2011-08-01)&lt;br /&gt;
* Added support for YUY2 (not optimized yet)&lt;br /&gt;
* Added support for all planar YUV format in AviSynth 2.6&lt;br /&gt;
* The filter is now compatible with both AviSynth 2.5 and 2.6&lt;br /&gt;
* 16bit output (precision_mode = 4/5)&lt;br /&gt;
* Note: The internal processing precision is still 14bit, this will be&lt;br /&gt;
improved in future versions&lt;br /&gt;
&lt;br /&gt;
1.1.0 (2011-06-18)&lt;br /&gt;
* Fixed a bug that high threshold values would produce incorrect result in high precision modes.&lt;br /&gt;
* Threshold values was scaled based on other parameter in previous versions, it is unscaled now to increase flexibility. &lt;br /&gt;
  Using same value has weaker effect in new version. Effect of default parameter set is also changed.&lt;br /&gt;
* SSE optimization for high precision mode.&lt;br /&gt;
* Rejects some invalid parameter combination instead of silently skips them&lt;br /&gt;
&lt;br /&gt;
1.0.2&lt;br /&gt;
* High precision mode&lt;br /&gt;
(currently non-optimized, SSE routine will be added later)&lt;br /&gt;
* Frame edges are properly processed now&lt;br /&gt;
* Fix crash in some cases (unaligned frames are handled correctly)&lt;br /&gt;
* Other bug fixes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Archived Downloads ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!!width=&amp;quot;100px&amp;quot;| Version&lt;br /&gt;
!!width=&amp;quot;500px&amp;quot;| Download&lt;br /&gt;
|-&lt;br /&gt;
!2.0pre2&lt;br /&gt;
|[x86/x64]&lt;br /&gt;
* [https://web.archive.org/web/20150503191218if_/https://www.nmm-hd.org/upload/get~NfiLlgo1pX8/f3kdb-b98d6bc.rar f3kdb-b98d6bc.rar] - Compiled with Intel C++ Compiler 2013.&lt;br /&gt;
---------&lt;br /&gt;
* [https://web.archive.org/web/20160414135351if_/http://www.nmm-hd.org/upload/get~jW8DJGBDJro/f3kdb-rev410.7z f3kdb-rev410.7z] - Compiled with MSVC 2013.&lt;br /&gt;
|-&lt;br /&gt;
!v1.5.1&lt;br /&gt;
|&lt;br /&gt;
[x86]: &lt;br /&gt;
* [https://web.archive.org/web/20160604190430if_/https://www.nmm-hd.org/upload/get~7JdW450vEN0/flash3kyuu_deband_1.5.1_x86.7z flash3kyuu_deband_1.5.1_x86.7z]&lt;br /&gt;
--------&lt;br /&gt;
[x64]: &lt;br /&gt;
* [https://web.archive.org/web/20170913010149if_/https://www.nmm-hd.org/upload/get~arIyHEnxIS8/flash3kyuu_deband_1.5.1_x64.7z flash3kyuu_deband_1.5.1_x64.7z]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== External Links ==&lt;br /&gt;
*[https://github.com/SAPikachu/flash3kyuu_deband GitHub] - Source code repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
'''Back to [[External_filters#Debanding|External Filters]] &amp;amp;larr;'''&lt;br /&gt;
-----------------------------------------------&lt;/div&gt;</summary>
		<author><name>Reel.Deal</name></author>	</entry>

	</feed>