<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.avisynth.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArtificialSilence</id>
	<title>Avisynth wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.avisynth.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ArtificialSilence"/>
	<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php/Special:Contributions/ArtificialSilence"/>
	<updated>2026-08-06T19:55:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>http://www.avisynth.nl/index.php?title=SmoothAdjust&amp;diff=12567</id>
		<title>SmoothAdjust</title>
		<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php?title=SmoothAdjust&amp;diff=12567"/>
		<updated>2022-02-05T21:08:53Z</updated>

		<summary type="html">&lt;p&gt;ArtificialSilence: /* SmoothLevels - Limiting Settings */ darkSTR works on Lmodes 1 &amp;amp; 3, brightSTR works on Lmode 2 only&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FilterCat6|External_filters|Plugins|Plugins_x64|Adjustment_filters|Levels_and_Chroma_filters|Deep_color_tools}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|{{Author/LaTo}}&lt;br /&gt;
|v3.20&lt;br /&gt;
|3=[http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|4=Adjustment Filters&lt;br /&gt;
|5=Free for non-commercial use only&lt;br /&gt;
|6=[https://forum.doom9.org/showthread.php?t=154971 Doom9 Thread]&lt;br /&gt;
}}&lt;br /&gt;
== Description ==&lt;br /&gt;
SmoothAdjust is a set of 5 filters to make YUV adjustements:&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothLevels&amp;lt;/code&amp;gt; allows to change levels &amp;amp; gamma with optional limiting&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothTweak&amp;lt;/code&amp;gt; allows to change brightness, contrast, saturation &amp;amp; hue&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothCurve&amp;lt;/code&amp;gt;  allows to change a plane according to a fixed curve&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothCustom&amp;lt;/code&amp;gt; allows to change a plane according to a custom expression&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothTools&amp;lt;/code&amp;gt;  allows to use all the previous filters in one single pass&lt;br /&gt;
&lt;br /&gt;
These 5 filters have a smoothing &amp;amp; dithering algorithm to avoid banding issue.  Calculations are made in 32bits float to avoid rounding errors and artifacts.  SmoothAdjust is multithreaded (up to 16 threads) and SSE2/AVX2 optimized.&lt;br /&gt;
&lt;br /&gt;
For automatic adjustments, see the &amp;quot;[[AutoAdjust]]&amp;quot; standalone plugin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]&lt;br /&gt;
** [[Stack16|Stacked 16-bit]] processing is also supported.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  - SmoothLevels( input_low, gamma, input_high, output_low, output_high, chroma, limiter, TVrange, preset,&lt;br /&gt;
                  Lmode, darkSTR, brightSTR, Ecurve, Ecenter, protect,&lt;br /&gt;
                  interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothTweak( brightness, contrast, saturation, hue1, hue2, limiter, TVrange,&lt;br /&gt;
                 Lmode, limitSTR, Ecenter,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothCurve( Ycurve, Ucurve, Vcurve, mode, limiter, TVrange,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothCustom( Yexpr, Uexpr, Vexpr, limiter, TVrange,&lt;br /&gt;
                  interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothTools( filename,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothLevels16(...), SmoothTweak16(...), SmoothCurve16(...), SmoothCustom16(...), SmoothTools16(...) for 16 bits&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Common Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    interp [default: 100]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Strength of the interpolation&lt;br /&gt;
     0   = disable (faster +++)&lt;br /&gt;
     1   = weak&lt;br /&gt;
     xx  = intermediary&lt;br /&gt;
     200 = strong&lt;br /&gt;
&lt;br /&gt;
    dither [default: 75]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Type of the dithering&lt;br /&gt;
     -1  = dithering OFF&lt;br /&gt;
     0   = pattern&lt;br /&gt;
     xx  = intermediary&lt;br /&gt;
     100 = noise&lt;br /&gt;
&lt;br /&gt;
    HQ [default: false]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Enable high quality interpolation (slower)&lt;br /&gt;
&lt;br /&gt;
    useMT [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Use multithreading (number of internal threads)&lt;br /&gt;
     0  = automatic choice (=cores in Avs2.6 and =1 in Avs+/AvsMT)&lt;br /&gt;
     xx = xx threads (max = 16 threads)&lt;br /&gt;
&lt;br /&gt;
    useOPT [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Use ASM optimization when available&lt;br /&gt;
     0 = automatic choice&lt;br /&gt;
     1 = use C code&lt;br /&gt;
     2 = use SSE2 code&lt;br /&gt;
     3 = use AVX2 code&lt;br /&gt;
&lt;br /&gt;
    debug [default: false]&lt;br /&gt;
    ----------------------&lt;br /&gt;
     Show the debug view at fullscreen resolution&lt;br /&gt;
&lt;br /&gt;
    screenW / screenH [default: -1 / -1]&lt;br /&gt;
    ------------------------------------&lt;br /&gt;
     Specific screen resolution for debug view&lt;br /&gt;
&lt;br /&gt;
    scale [default: true]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Auto-scale the size of parameters in debug viewn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothLevels - General Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    levels parameters [default: 16, 1.0, 235, 16, 235]&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
     input_low   [0-255]&lt;br /&gt;
     gamma       [&amp;gt; 0.0]&lt;br /&gt;
     input_high  [0-255]&lt;br /&gt;
     output_low  [0-255]&lt;br /&gt;
     output_high [0-255]&lt;br /&gt;
&lt;br /&gt;
    chroma [default: 100]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Strength for chroma (conversion based on levels parameters)&lt;br /&gt;
      0   = no chroma processing&lt;br /&gt;
      xx  = weak&lt;br /&gt;
      100 = normal chroma processing&lt;br /&gt;
      xx  = strong&lt;br /&gt;
      200 = maximum chroma processing&lt;br /&gt;
&lt;br /&gt;
    limiter [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Clamp the output values&lt;br /&gt;
      0 = no limiter&lt;br /&gt;
      1 = clamp to output_low/output_high&lt;br /&gt;
      2 = clamp to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: true]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     Range of the clip (affects only limiting, see Lmode)&lt;br /&gt;
&lt;br /&gt;
    preset [default: &amp;quot;default&amp;quot;]&lt;br /&gt;
    ---------------------------&lt;br /&gt;
     &amp;quot;fullrange&amp;quot; = use &amp;quot;0, 1.0, 255, 0, 255&amp;quot; as default &amp;amp; set &amp;quot;TVrange = false&amp;quot;&lt;br /&gt;
     &amp;quot;pc2tv&amp;quot;     = PC -&amp;gt; TV conversion&lt;br /&gt;
     &amp;quot;tv2pc&amp;quot;     = TV -&amp;gt; PC conversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothLevels - Limiting Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Lmode [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Mode to reduce conversion on special areas for better looking result&lt;br /&gt;
      0 = no limiting&lt;br /&gt;
      1 = limit conversion on dark areas          (apply conversion @0%   at luma=0 &amp;amp; @100% at luma=255)&lt;br /&gt;
      2 = limit conversion on bright areas        (apply conversion @100% at luma=0 &amp;amp; @0%   at luma=255)&lt;br /&gt;
      3 = limit conversion on dark &amp;amp; bright areas (apply conversion @0%   at luma=0 &amp;amp; @100% at luma=Ecenter &amp;amp; @0% at luma=255)&lt;br /&gt;
     (If TVrange=true, 16 &amp;amp; 235 are used instead of 0 &amp;amp; 255)&lt;br /&gt;
&lt;br /&gt;
    darkSTR [default: 100] &lt;br /&gt;
    ----------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on dark areas (for Lmode=1&amp;amp;3)&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    brightSTR [default: 100]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on bright areas (for Lmode=2)&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    Ecurve [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Type of curve used for limiting&lt;br /&gt;
      0 = sine curve&lt;br /&gt;
      1 = linear curve&lt;br /&gt;
&lt;br /&gt;
    Ecenter [default: 128]&lt;br /&gt;
    ----------------------&lt;br /&gt;
     Center of expression for Lmode=3 (0~255)&lt;br /&gt;
&lt;br /&gt;
    protect [default: -1]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     -1  = protecting off&lt;br /&gt;
     &amp;gt;=0 = black zone protection&lt;br /&gt;
           ---&amp;gt; don&#039;t apply conversion on pixels egal or below this value &lt;br /&gt;
                (ex: with 16, the black areas like borders &lt;br /&gt;
                     and generic are untouched so they don&#039;t look washed out)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SmoothTweak - General Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    brigthness [default: 0]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     -255...0 = decrease the brigthness&lt;br /&gt;
     0...+255 = increase the brigthness&lt;br /&gt;
&lt;br /&gt;
    contrast [default: 1.0]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     0.0...1.0  = decrease the contrast&lt;br /&gt;
     1.0...10.0 = increase the contrast&lt;br /&gt;
&lt;br /&gt;
    saturation [default: 1.0]&lt;br /&gt;
    -------------------------&lt;br /&gt;
     0.0...1.0  = decrease the saturation&lt;br /&gt;
     1.0...10.0 = increase the saturation&lt;br /&gt;
&lt;br /&gt;
    hue1 [default: 0]&lt;br /&gt;
    -----------------&lt;br /&gt;
     -255...0 = shift the hue towards yellow&lt;br /&gt;
     0...+255 = shift the hue towards blue&lt;br /&gt;
&lt;br /&gt;
    hue2 [default: 0]&lt;br /&gt;
    -----------------&lt;br /&gt;
     -255...0 = shift the hue towards green&lt;br /&gt;
     0...+255 = shift the hue towards red&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: true]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     Range of the clip (affects only contrast adjustment)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothTweak - Limiting Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   Lmode [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Mode to reduce conversion on special areas for better looking result (vibrance effect)&lt;br /&gt;
      0 = no limiting&lt;br /&gt;
      1 = limit conversion on dark areas (for luma) and on low saturated areas (for chroma)&lt;br /&gt;
      2 = limit conversion on bright areas (for luma) and on high saturated areas (for chroma)&lt;br /&gt;
&lt;br /&gt;
    limitSTR [default: 100] &lt;br /&gt;
    -----------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on specified areas&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    Ecurve [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Type of curve used for limiting&lt;br /&gt;
      0 = sine curve&lt;br /&gt;
      1 = linear curve&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothCurve Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Ycurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the Y plane (luma)&lt;br /&gt;
      Syntax: &amp;quot;a-b;c-d;e-f;...&amp;quot; a, c &amp;amp; e are source values and b, d &amp;amp; f are destination values&lt;br /&gt;
       ---&amp;gt; Examples: &amp;quot;0-0;255-255&amp;quot;  = do nothing&lt;br /&gt;
                      &amp;quot;0-255;255-0&amp;quot;  = invert the clip&lt;br /&gt;
                      &amp;quot;0-16;255-235&amp;quot; = PC to TV conversion&lt;br /&gt;
                      &amp;quot;0-0;16-0;235-255;255-255&amp;quot; = TV to PC conversion&lt;br /&gt;
&lt;br /&gt;
    Ucurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the U plane (chroma)&lt;br /&gt;
&lt;br /&gt;
    Vcurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the V plane (chroma)&lt;br /&gt;
&lt;br /&gt;
    mode [default: 100]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Interpolation mode between control points&lt;br /&gt;
      0   = linear&lt;br /&gt;
      xx  = intermediary&lt;br /&gt;
      100 = cubic&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Convert the curves to TVrange(16-235/16-240) before applying conversion&lt;br /&gt;
      0 = OFF&lt;br /&gt;
      1 = ON, clip values outside TVrange&lt;br /&gt;
      2 = ON, process values outside TVrange&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothCustom Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Yexpr [default: &amp;quot;Y&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the Y plane (luma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; OPERATORS:&lt;br /&gt;
            ----------&lt;br /&gt;
            Arithmetic : ^ * / % + -&lt;br /&gt;
            Comparison : ! &amp;gt; &amp;lt; &amp;gt;= &amp;lt;= == != &amp;amp;&amp;amp; ||&lt;br /&gt;
            Ternary    : ? :&lt;br /&gt;
            Constant   : pi&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; FUNCTIONS:&lt;br /&gt;
            ----------&lt;br /&gt;
            sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log, ln, sqrt, abs, round, floor, ceil&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Examples: &amp;quot;Y&amp;quot;     = do nothing&lt;br /&gt;
                      &amp;quot;255-Y&amp;quot; = invert the clip&lt;br /&gt;
                      &amp;quot;Y+32&amp;quot;  = adjust brightness&lt;br /&gt;
                      &amp;quot;Y*2&amp;quot;   = adjust contrast&lt;br /&gt;
&lt;br /&gt;
    Uexpr [default: &amp;quot;U&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the U plane (chroma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Example: &amp;quot;abs(U-128)+128&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Vexpr [default: &amp;quot;V&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the V plane (chroma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Example: &amp;quot;round(V/16)*16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Convert the expressions to TVrange(16-235/16-240) before applying conversion&lt;br /&gt;
      0 = OFF&lt;br /&gt;
      1 = ON, clip values outside TVrange&lt;br /&gt;
      2 = ON, process values outside TVrange&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothTools Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    SmoothTools allows to use all the previous filters in one single pass.&lt;br /&gt;
    The benefits are significant speedup, no rounding errors between each filters (internal 32-bits),&lt;br /&gt;
    one pass smoothing/dithering (much better quality) and preset support (one file by settings).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    filename [default: &amp;quot;default.smt&amp;quot;]&lt;br /&gt;
    ---------------------------------&lt;br /&gt;
     File used for processing&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; SYNTAX:&lt;br /&gt;
            -------&lt;br /&gt;
            The file syntax is the same as avisynth but all parameters must be named.&lt;br /&gt;
            Common settings between filters (smooth, dither, useMT, useOPT, ...) should not be used.&lt;br /&gt;
            There is no limit to the number of filters in one file (but only one filter by line).&lt;br /&gt;
            8-bits and 16-bits filters can not be mixed.&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; EXAMPLES:&lt;br /&gt;
            ---------&lt;br /&gt;
               SmoothLevels(gamma=1.4,Lmode=1)&lt;br /&gt;
               SmoothCurve(Ycurve=&amp;quot;0-255;255-0&amp;quot;)&lt;br /&gt;
            OR&lt;br /&gt;
               SmoothTweak16(saturation=1.6,Lmode=2)&lt;br /&gt;
               SmoothCustom16(Yexpr=&amp;quot;65535-Y&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===16-Bits Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Some parameters must be mapped to the [0-65535] range before use:&lt;br /&gt;
&lt;br /&gt;
      - SmoothLevels: input_low, input_high, output_low, output_high, Ecenter, protect&lt;br /&gt;
      - SmoothTweak:  brightness, hue1, hue2&lt;br /&gt;
      - SmoothCurve:  Ycurve, Ucurve, Vcurve&lt;br /&gt;
      - SmoothCustom: Yexpr, Uexpr, Vexpr&lt;br /&gt;
      - SmoothTools:  *&lt;br /&gt;
&lt;br /&gt;
    For example: SmoothCurve(&amp;quot;0-255;128-128;255-0&amp;quot;) --&amp;gt; SmoothCurve16(&amp;quot;0-65535;32768-32768;65535-0&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==MultiThreading==&lt;br /&gt;
SmoothAdjust is internally multithreaded with official Avisynth version.  If AviSynthPlus or AviSynthMT is detected, internal multithreading is automatically disabled even if external multithreading isn&#039;t used (this can be reactivated in parameters).&lt;br /&gt;
&lt;br /&gt;
SmoothAdjust is designed to work with external multithreading, so fastest MT mode can be used.  With AviSynthPlus, this plugin is a [[MT_NICE_FILTER]] (automatic register, no need to call SetFilterMtMode).  With AviSynthMT, SetMtMode(1) must be called before SmoothAdjust.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[TODO]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  - v3.20: updated for Avs v2.6.0 final&lt;br /&gt;
           fixed AVX2 crash with Win7 without SP1&lt;br /&gt;
&lt;br /&gt;
  - v3.00: dropped Avs v2.5.x support&lt;br /&gt;
           added AVX2 code (10% faster)&lt;br /&gt;
           modified plugin to be thread-safe (MT_NICE_FILTER)&lt;br /&gt;
&lt;br /&gt;
  - v2.95: fixed minor things&lt;br /&gt;
           tweaked multi-threading code&lt;br /&gt;
&lt;br /&gt;
  - v2.90: fixed possible freeze in MT code&lt;br /&gt;
           added explicit error messages&lt;br /&gt;
&lt;br /&gt;
  - v2.85: fixed bugs inside multi-threading code&lt;br /&gt;
           removed user32 dependency&lt;br /&gt;
           added AVX2 detection (for future opt)&lt;br /&gt;
&lt;br /&gt;
  - v2.80: used new C++11 features&lt;br /&gt;
           rewritten multi-threading (native)&lt;br /&gt;
           speed optimization (40% faster)&lt;br /&gt;
           exception-safe code&lt;br /&gt;
           added a high quality interpolation mode&lt;br /&gt;
           changed some parameter names&lt;br /&gt;
           fixed bugs in SmoothTools parser&lt;br /&gt;
&lt;br /&gt;
  - v2.62: fixed minor things &amp;amp; bugs&lt;br /&gt;
           dropped ICL builds support&lt;br /&gt;
&lt;br /&gt;
  - v2.60: used new interface for v2.6.x builds&lt;br /&gt;
&lt;br /&gt;
  - v2.55: added small optimizations&lt;br /&gt;
&lt;br /&gt;
  - v2.51: fixed crash in SmoothCurve&lt;br /&gt;
&lt;br /&gt;
  - v2.50: added SmoothTools&lt;br /&gt;
           improved SmoothTweak&lt;br /&gt;
           improved dithering&lt;br /&gt;
           tweaked memory usage&lt;br /&gt;
           tweaked multithreading&lt;br /&gt;
           cleaned various stuff&lt;br /&gt;
&lt;br /&gt;
  - v2.00: added Avisynth 2.6.x support&lt;br /&gt;
           added Y8, YV411, YV16, YV24 support&lt;br /&gt;
           added 16bits support with stacked MSB/LSB&lt;br /&gt;
           added SmoothCustom filter&lt;br /&gt;
           added TVrange parameter&lt;br /&gt;
           added AVX optimization&lt;br /&gt;
&lt;br /&gt;
           improved smoothing algorithm&lt;br /&gt;
           improved debug view&lt;br /&gt;
           improved startup delay&lt;br /&gt;
           improved speed with smoothing OFF&lt;br /&gt;
&lt;br /&gt;
           added decimals support in SmoothCurve&lt;br /&gt;
           fixed interp scaling in SmoothCurve&lt;br /&gt;
           changed defaults in SmoothLevels&lt;br /&gt;
           fixed gamma clamping bug in SmoothLevels&lt;br /&gt;
&lt;br /&gt;
           fixed crash with mod4 clip &lt;br /&gt;
           fixed freeze in debug view&lt;br /&gt;
           deleted Smode parameter&lt;br /&gt;
           switched from ICL11 to ICL12&lt;br /&gt;
           cleaned a lot the code&lt;br /&gt;
           updated the documentation&lt;br /&gt;
&lt;br /&gt;
  - v1.74: updated preset=&amp;quot;tv2pc&amp;quot; &amp;amp; preset=&amp;quot;pc2tv&amp;quot;&lt;br /&gt;
           fixed a bug in smoothing algorithm&lt;br /&gt;
&lt;br /&gt;
  - v1.70: added curve in debug mode for SmoothLevels&lt;br /&gt;
&lt;br /&gt;
  - v1.68: improved multithreading&lt;br /&gt;
&lt;br /&gt;
  - v1.64: fixed cache problem with UV planes&lt;br /&gt;
&lt;br /&gt;
  - v1.62: fixed crash with misaligned clip&lt;br /&gt;
           added MOD2 support&lt;br /&gt;
&lt;br /&gt;
  - v1.60: improved startup time&lt;br /&gt;
           fixed MOD4 error message&lt;br /&gt;
           tweaked various things&lt;br /&gt;
           added ICC11 build&lt;br /&gt;
&lt;br /&gt;
  - v1.56: added SSSE3 code&lt;br /&gt;
           changed CPU detection routine&lt;br /&gt;
&lt;br /&gt;
  - v1.52: added SSE2 code (Smode=1 is 2x faster &amp;amp; Smode=2 is 3x faster)&lt;br /&gt;
           added useopt parameter&lt;br /&gt;
&lt;br /&gt;
  - v1.46: tweaked smoothing code&lt;br /&gt;
           removed useless Smode=1 &amp;amp; Smode=2&lt;br /&gt;
           prepared support for YV16 &amp;amp; YV24 in Avisynth 2.6.x&lt;br /&gt;
           switched from VS2008 to VS2010&lt;br /&gt;
&lt;br /&gt;
  - v1.44: added screenW &amp;amp; screenH for debugview&lt;br /&gt;
           fixed a bug in font drawing&lt;br /&gt;
           cleaned code&lt;br /&gt;
&lt;br /&gt;
  - v1.40: added debugview (see show=true)&lt;br /&gt;
&lt;br /&gt;
  - v1.30: fixed a bug in spline interpolation&lt;br /&gt;
           cleaned various stuff&lt;br /&gt;
&lt;br /&gt;
  - v1.26: Smode=3 is now the default (instead of Smode=1)&lt;br /&gt;
           tweaked smoothing sensitivity&lt;br /&gt;
           updated documentation about Smode&lt;br /&gt;
&lt;br /&gt;
  - v1.24: added new interpolation mode for SmoothCurve (see interp)&lt;br /&gt;
&lt;br /&gt;
  - v1.18: tweaked Smode 3 &amp;amp; 4&lt;br /&gt;
           updated avisynth header&lt;br /&gt;
&lt;br /&gt;
  - v1.16: replaced Smode 3 &amp;amp; 4 with stronger smoothing function&lt;br /&gt;
           changed minors things&lt;br /&gt;
&lt;br /&gt;
  - v1.02: added x64 build&lt;br /&gt;
           fixed a bug in SmoothLevels&lt;br /&gt;
&lt;br /&gt;
  - v1.00: first public release&lt;br /&gt;
&amp;lt;/pre&amp;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;150px&amp;quot;| Download&lt;br /&gt;
!!width=&amp;quot;150px&amp;quot;| Mirror&lt;br /&gt;
|-&lt;br /&gt;
!v3.20&lt;br /&gt;
|[http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|[https://web.archive.org/web/20170627062408/http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Links ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
&#039;&#039;&#039;Back to [[External_filters#Levels_and_Chroma|External Filters]] &amp;amp;larr;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>ArtificialSilence</name></author>
	</entry>
	<entry>
		<id>http://www.avisynth.nl/index.php?title=SmoothAdjust&amp;diff=12539</id>
		<title>SmoothAdjust</title>
		<link rel="alternate" type="text/html" href="http://www.avisynth.nl/index.php?title=SmoothAdjust&amp;diff=12539"/>
		<updated>2022-01-13T20:54:06Z</updated>

		<summary type="html">&lt;p&gt;ArtificialSilence: Ecenter typo, should read &amp;quot;Center of expression for Lmode=3&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FilterCat6|External_filters|Plugins|Plugins_x64|Adjustment_filters|Levels_and_Chroma_filters|Deep_color_tools}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|{{Author/LaTo}}&lt;br /&gt;
|v3.20&lt;br /&gt;
|3=[http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|4=Adjustment Filters&lt;br /&gt;
|5=Free for non-commercial use only&lt;br /&gt;
|6=[https://forum.doom9.org/showthread.php?t=154971 Doom9 Thread]&lt;br /&gt;
}}&lt;br /&gt;
== Description ==&lt;br /&gt;
SmoothAdjust is a set of 5 filters to make YUV adjustements:&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothLevels&amp;lt;/code&amp;gt; allows to change levels &amp;amp; gamma with optional limiting&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothTweak&amp;lt;/code&amp;gt; allows to change brightness, contrast, saturation &amp;amp; hue&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothCurve&amp;lt;/code&amp;gt;  allows to change a plane according to a fixed curve&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothCustom&amp;lt;/code&amp;gt; allows to change a plane according to a custom expression&lt;br /&gt;
* &amp;lt;code&amp;gt;SmoothTools&amp;lt;/code&amp;gt;  allows to use all the previous filters in one single pass&lt;br /&gt;
&lt;br /&gt;
These 5 filters have a smoothing &amp;amp; dithering algorithm to avoid banding issue.  Calculations are made in 32bits float to avoid rounding errors and artifacts.  SmoothAdjust is multithreaded (up to 16 threads) and SSE2/AVX2 optimized.&lt;br /&gt;
&lt;br /&gt;
For automatic adjustments, see the &amp;quot;[[AutoAdjust]]&amp;quot; standalone plugin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]&lt;br /&gt;
** [[Stack16|Stacked 16-bit]] processing is also supported.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  - SmoothLevels( input_low, gamma, input_high, output_low, output_high, chroma, limiter, TVrange, preset,&lt;br /&gt;
                  Lmode, darkSTR, brightSTR, Ecurve, Ecenter, protect,&lt;br /&gt;
                  interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothTweak( brightness, contrast, saturation, hue1, hue2, limiter, TVrange,&lt;br /&gt;
                 Lmode, limitSTR, Ecenter,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothCurve( Ycurve, Ucurve, Vcurve, mode, limiter, TVrange,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothCustom( Yexpr, Uexpr, Vexpr, limiter, TVrange,&lt;br /&gt;
                  interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothTools( filename,&lt;br /&gt;
                 interp, dither, HQ, useMT, useOPT, debug, screenW, screenH, scale )&lt;br /&gt;
&lt;br /&gt;
  - SmoothLevels16(...), SmoothTweak16(...), SmoothCurve16(...), SmoothCustom16(...), SmoothTools16(...) for 16 bits&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Common Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    interp [default: 100]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Strength of the interpolation&lt;br /&gt;
     0   = disable (faster +++)&lt;br /&gt;
     1   = weak&lt;br /&gt;
     xx  = intermediary&lt;br /&gt;
     200 = strong&lt;br /&gt;
&lt;br /&gt;
    dither [default: 75]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Type of the dithering&lt;br /&gt;
     -1  = dithering OFF&lt;br /&gt;
     0   = pattern&lt;br /&gt;
     xx  = intermediary&lt;br /&gt;
     100 = noise&lt;br /&gt;
&lt;br /&gt;
    HQ [default: false]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Enable high quality interpolation (slower)&lt;br /&gt;
&lt;br /&gt;
    useMT [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Use multithreading (number of internal threads)&lt;br /&gt;
     0  = automatic choice (=cores in Avs2.6 and =1 in Avs+/AvsMT)&lt;br /&gt;
     xx = xx threads (max = 16 threads)&lt;br /&gt;
&lt;br /&gt;
    useOPT [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Use ASM optimization when available&lt;br /&gt;
     0 = automatic choice&lt;br /&gt;
     1 = use C code&lt;br /&gt;
     2 = use SSE2 code&lt;br /&gt;
     3 = use AVX2 code&lt;br /&gt;
&lt;br /&gt;
    debug [default: false]&lt;br /&gt;
    ----------------------&lt;br /&gt;
     Show the debug view at fullscreen resolution&lt;br /&gt;
&lt;br /&gt;
    screenW / screenH [default: -1 / -1]&lt;br /&gt;
    ------------------------------------&lt;br /&gt;
     Specific screen resolution for debug view&lt;br /&gt;
&lt;br /&gt;
    scale [default: true]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Auto-scale the size of parameters in debug viewn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothLevels - General Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    levels parameters [default: 16, 1.0, 235, 16, 235]&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
     input_low   [0-255]&lt;br /&gt;
     gamma       [&amp;gt; 0.0]&lt;br /&gt;
     input_high  [0-255]&lt;br /&gt;
     output_low  [0-255]&lt;br /&gt;
     output_high [0-255]&lt;br /&gt;
&lt;br /&gt;
    chroma [default: 100]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     Strength for chroma (conversion based on levels parameters)&lt;br /&gt;
      0   = no chroma processing&lt;br /&gt;
      xx  = weak&lt;br /&gt;
      100 = normal chroma processing&lt;br /&gt;
      xx  = strong&lt;br /&gt;
      200 = maximum chroma processing&lt;br /&gt;
&lt;br /&gt;
    limiter [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Clamp the output values&lt;br /&gt;
      0 = no limiter&lt;br /&gt;
      1 = clamp to output_low/output_high&lt;br /&gt;
      2 = clamp to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: true]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     Range of the clip (affects only limiting, see Lmode)&lt;br /&gt;
&lt;br /&gt;
    preset [default: &amp;quot;default&amp;quot;]&lt;br /&gt;
    ---------------------------&lt;br /&gt;
     &amp;quot;fullrange&amp;quot; = use &amp;quot;0, 1.0, 255, 0, 255&amp;quot; as default &amp;amp; set &amp;quot;TVrange = false&amp;quot;&lt;br /&gt;
     &amp;quot;pc2tv&amp;quot;     = PC -&amp;gt; TV conversion&lt;br /&gt;
     &amp;quot;tv2pc&amp;quot;     = TV -&amp;gt; PC conversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothLevels - Limiting Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Lmode [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Mode to reduce conversion on special areas for better looking result&lt;br /&gt;
      0 = no limiting&lt;br /&gt;
      1 = limit conversion on dark areas          (apply conversion @0%   at luma=0 &amp;amp; @100% at luma=255)&lt;br /&gt;
      2 = limit conversion on bright areas        (apply conversion @100% at luma=0 &amp;amp; @0%   at luma=255)&lt;br /&gt;
      3 = limit conversion on dark &amp;amp; bright areas (apply conversion @0%   at luma=0 &amp;amp; @100% at luma=Ecenter &amp;amp; @0% at luma=255)&lt;br /&gt;
     (If TVrange=true, 16 &amp;amp; 235 are used instead of 0 &amp;amp; 255)&lt;br /&gt;
&lt;br /&gt;
    darkSTR [default: 100] &lt;br /&gt;
    ----------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on dark areas (for Lmode=1&amp;amp;2)&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    brightSTR [default: 100]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on bright areas (for Lmode=1&amp;amp;3)&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    Ecurve [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Type of curve used for limiting&lt;br /&gt;
      0 = sine curve&lt;br /&gt;
      1 = linear curve&lt;br /&gt;
&lt;br /&gt;
    Ecenter [default: 128]&lt;br /&gt;
    ----------------------&lt;br /&gt;
     Center of expression for Lmode=3 (0~255)&lt;br /&gt;
&lt;br /&gt;
    protect [default: -1]&lt;br /&gt;
    ---------------------&lt;br /&gt;
     -1  = protecting off&lt;br /&gt;
     &amp;gt;=0 = black zone protection&lt;br /&gt;
           ---&amp;gt; don&#039;t apply conversion on pixels egal or below this value &lt;br /&gt;
                (ex: with 16, the black areas like borders &lt;br /&gt;
                     and generic are untouched so they don&#039;t look washed out)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothTweak - General Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    brigthness [default: 0]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     -255...0 = decrease the brigthness&lt;br /&gt;
     0...+255 = increase the brigthness&lt;br /&gt;
&lt;br /&gt;
    contrast [default: 1.0]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     0.0...1.0  = decrease the contrast&lt;br /&gt;
     1.0...10.0 = increase the contrast&lt;br /&gt;
&lt;br /&gt;
    saturation [default: 1.0]&lt;br /&gt;
    -------------------------&lt;br /&gt;
     0.0...1.0  = decrease the saturation&lt;br /&gt;
     1.0...10.0 = increase the saturation&lt;br /&gt;
&lt;br /&gt;
    hue1 [default: 0]&lt;br /&gt;
    -----------------&lt;br /&gt;
     -255...0 = shift the hue towards yellow&lt;br /&gt;
     0...+255 = shift the hue towards blue&lt;br /&gt;
&lt;br /&gt;
    hue2 [default: 0]&lt;br /&gt;
    -----------------&lt;br /&gt;
     -255...0 = shift the hue towards green&lt;br /&gt;
     0...+255 = shift the hue towards red&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: true]&lt;br /&gt;
    -----------------------&lt;br /&gt;
     Range of the clip (affects only contrast adjustment)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothTweak - Limiting Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   Lmode [default: 0]&lt;br /&gt;
    ------------------&lt;br /&gt;
     Mode to reduce conversion on special areas for better looking result (vibrance effect)&lt;br /&gt;
      0 = no limiting&lt;br /&gt;
      1 = limit conversion on dark areas (for luma) and on low saturated areas (for chroma)&lt;br /&gt;
      2 = limit conversion on bright areas (for luma) and on high saturated areas (for chroma)&lt;br /&gt;
&lt;br /&gt;
    limitSTR [default: 100] &lt;br /&gt;
    -----------------------&lt;br /&gt;
     Strength for limiting: the higher, the more conversion are reduced on specified areas&lt;br /&gt;
      0   = OFF&lt;br /&gt;
      10  = weak limiting&lt;br /&gt;
      200 = strong limiting&lt;br /&gt;
&lt;br /&gt;
    Ecurve [default: 0]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Type of curve used for limiting&lt;br /&gt;
      0 = sine curve&lt;br /&gt;
      1 = linear curve&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothCurve Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Ycurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the Y plane (luma)&lt;br /&gt;
      Syntax: &amp;quot;a-b;c-d;e-f;...&amp;quot; a, c &amp;amp; e are source values and b, d &amp;amp; f are destination values&lt;br /&gt;
       ---&amp;gt; Examples: &amp;quot;0-0;255-255&amp;quot;  = do nothing&lt;br /&gt;
                      &amp;quot;0-255;255-0&amp;quot;  = invert the clip&lt;br /&gt;
                      &amp;quot;0-16;255-235&amp;quot; = PC to TV conversion&lt;br /&gt;
                      &amp;quot;0-0;16-0;235-255;255-255&amp;quot; = TV to PC conversion&lt;br /&gt;
&lt;br /&gt;
    Ucurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the U plane (chroma)&lt;br /&gt;
&lt;br /&gt;
    Vcurve [default: &amp;quot;0-0;255-255&amp;quot;]&lt;br /&gt;
    -------------------------------&lt;br /&gt;
     Curve for the V plane (chroma)&lt;br /&gt;
&lt;br /&gt;
    mode [default: 100]&lt;br /&gt;
    -------------------&lt;br /&gt;
     Interpolation mode between control points&lt;br /&gt;
      0   = linear&lt;br /&gt;
      xx  = intermediary&lt;br /&gt;
      100 = cubic&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Convert the curves to TVrange(16-235/16-240) before applying conversion&lt;br /&gt;
      0 = OFF&lt;br /&gt;
      1 = ON, clip values outside TVrange&lt;br /&gt;
      2 = ON, process values outside TVrange&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothCustom Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Yexpr [default: &amp;quot;Y&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the Y plane (luma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; OPERATORS:&lt;br /&gt;
            ----------&lt;br /&gt;
            Arithmetic : ^ * / % + -&lt;br /&gt;
            Comparison : ! &amp;gt; &amp;lt; &amp;gt;= &amp;lt;= == != &amp;amp;&amp;amp; ||&lt;br /&gt;
            Ternary    : ? :&lt;br /&gt;
            Constant   : pi&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; FUNCTIONS:&lt;br /&gt;
            ----------&lt;br /&gt;
            sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log, ln, sqrt, abs, round, floor, ceil&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Examples: &amp;quot;Y&amp;quot;     = do nothing&lt;br /&gt;
                      &amp;quot;255-Y&amp;quot; = invert the clip&lt;br /&gt;
                      &amp;quot;Y+32&amp;quot;  = adjust brightness&lt;br /&gt;
                      &amp;quot;Y*2&amp;quot;   = adjust contrast&lt;br /&gt;
&lt;br /&gt;
    Uexpr [default: &amp;quot;U&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the U plane (chroma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Example: &amp;quot;abs(U-128)+128&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Vexpr [default: &amp;quot;V&amp;quot;]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Expression for the V plane (chroma)&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; Example: &amp;quot;round(V/16)*16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    limiter [default: false]&lt;br /&gt;
    ------------------------&lt;br /&gt;
     Clamp the output to 16-235 for luma &amp;amp; 16-240 for chroma&lt;br /&gt;
      false = OFF&lt;br /&gt;
      true  = ON&lt;br /&gt;
&lt;br /&gt;
    TVrange [default: 0]&lt;br /&gt;
    --------------------&lt;br /&gt;
     Convert the expressions to TVrange(16-235/16-240) before applying conversion&lt;br /&gt;
      0 = OFF&lt;br /&gt;
      1 = ON, clip values outside TVrange&lt;br /&gt;
      2 = ON, process values outside TVrange&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===SmoothTools Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    SmoothTools allows to use all the previous filters in one single pass.&lt;br /&gt;
    The benefits are significant speedup, no rounding errors between each filters (internal 32-bits),&lt;br /&gt;
    one pass smoothing/dithering (much better quality) and preset support (one file by settings).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    filename [default: &amp;quot;default.smt&amp;quot;]&lt;br /&gt;
    ---------------------------------&lt;br /&gt;
     File used for processing&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; SYNTAX:&lt;br /&gt;
            -------&lt;br /&gt;
            The file syntax is the same as avisynth but all parameters must be named.&lt;br /&gt;
            Common settings between filters (smooth, dither, useMT, useOPT, ...) should not be used.&lt;br /&gt;
            There is no limit to the number of filters in one file (but only one filter by line).&lt;br /&gt;
            8-bits and 16-bits filters can not be mixed.&lt;br /&gt;
&lt;br /&gt;
       ---&amp;gt; EXAMPLES:&lt;br /&gt;
            ---------&lt;br /&gt;
               SmoothLevels(gamma=1.4,Lmode=1)&lt;br /&gt;
               SmoothCurve(Ycurve=&amp;quot;0-255;255-0&amp;quot;)&lt;br /&gt;
            OR&lt;br /&gt;
               SmoothTweak16(saturation=1.6,Lmode=2)&lt;br /&gt;
               SmoothCustom16(Yexpr=&amp;quot;65535-Y&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===16-Bits Settings===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Some parameters must be mapped to the [0-65535] range before use:&lt;br /&gt;
&lt;br /&gt;
      - SmoothLevels: input_low, input_high, output_low, output_high, Ecenter, protect&lt;br /&gt;
      - SmoothTweak:  brightness, hue1, hue2&lt;br /&gt;
      - SmoothCurve:  Ycurve, Ucurve, Vcurve&lt;br /&gt;
      - SmoothCustom: Yexpr, Uexpr, Vexpr&lt;br /&gt;
      - SmoothTools:  *&lt;br /&gt;
&lt;br /&gt;
    For example: SmoothCurve(&amp;quot;0-255;128-128;255-0&amp;quot;) --&amp;gt; SmoothCurve16(&amp;quot;0-65535;32768-32768;65535-0&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==MultiThreading==&lt;br /&gt;
SmoothAdjust is internally multithreaded with official Avisynth version.  If AviSynthPlus or AviSynthMT is detected, internal multithreading is automatically disabled even if external multithreading isn&#039;t used (this can be reactivated in parameters).&lt;br /&gt;
&lt;br /&gt;
SmoothAdjust is designed to work with external multithreading, so fastest MT mode can be used.  With AviSynthPlus, this plugin is a [[MT_NICE_FILTER]] (automatic register, no need to call SetFilterMtMode).  With AviSynthMT, SetMtMode(1) must be called before SmoothAdjust.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[TODO]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  - v3.20: updated for Avs v2.6.0 final&lt;br /&gt;
           fixed AVX2 crash with Win7 without SP1&lt;br /&gt;
&lt;br /&gt;
  - v3.00: dropped Avs v2.5.x support&lt;br /&gt;
           added AVX2 code (10% faster)&lt;br /&gt;
           modified plugin to be thread-safe (MT_NICE_FILTER)&lt;br /&gt;
&lt;br /&gt;
  - v2.95: fixed minor things&lt;br /&gt;
           tweaked multi-threading code&lt;br /&gt;
&lt;br /&gt;
  - v2.90: fixed possible freeze in MT code&lt;br /&gt;
           added explicit error messages&lt;br /&gt;
&lt;br /&gt;
  - v2.85: fixed bugs inside multi-threading code&lt;br /&gt;
           removed user32 dependency&lt;br /&gt;
           added AVX2 detection (for future opt)&lt;br /&gt;
&lt;br /&gt;
  - v2.80: used new C++11 features&lt;br /&gt;
           rewritten multi-threading (native)&lt;br /&gt;
           speed optimization (40% faster)&lt;br /&gt;
           exception-safe code&lt;br /&gt;
           added a high quality interpolation mode&lt;br /&gt;
           changed some parameter names&lt;br /&gt;
           fixed bugs in SmoothTools parser&lt;br /&gt;
&lt;br /&gt;
  - v2.62: fixed minor things &amp;amp; bugs&lt;br /&gt;
           dropped ICL builds support&lt;br /&gt;
&lt;br /&gt;
  - v2.60: used new interface for v2.6.x builds&lt;br /&gt;
&lt;br /&gt;
  - v2.55: added small optimizations&lt;br /&gt;
&lt;br /&gt;
  - v2.51: fixed crash in SmoothCurve&lt;br /&gt;
&lt;br /&gt;
  - v2.50: added SmoothTools&lt;br /&gt;
           improved SmoothTweak&lt;br /&gt;
           improved dithering&lt;br /&gt;
           tweaked memory usage&lt;br /&gt;
           tweaked multithreading&lt;br /&gt;
           cleaned various stuff&lt;br /&gt;
&lt;br /&gt;
  - v2.00: added Avisynth 2.6.x support&lt;br /&gt;
           added Y8, YV411, YV16, YV24 support&lt;br /&gt;
           added 16bits support with stacked MSB/LSB&lt;br /&gt;
           added SmoothCustom filter&lt;br /&gt;
           added TVrange parameter&lt;br /&gt;
           added AVX optimization&lt;br /&gt;
&lt;br /&gt;
           improved smoothing algorithm&lt;br /&gt;
           improved debug view&lt;br /&gt;
           improved startup delay&lt;br /&gt;
           improved speed with smoothing OFF&lt;br /&gt;
&lt;br /&gt;
           added decimals support in SmoothCurve&lt;br /&gt;
           fixed interp scaling in SmoothCurve&lt;br /&gt;
           changed defaults in SmoothLevels&lt;br /&gt;
           fixed gamma clamping bug in SmoothLevels&lt;br /&gt;
&lt;br /&gt;
           fixed crash with mod4 clip &lt;br /&gt;
           fixed freeze in debug view&lt;br /&gt;
           deleted Smode parameter&lt;br /&gt;
           switched from ICL11 to ICL12&lt;br /&gt;
           cleaned a lot the code&lt;br /&gt;
           updated the documentation&lt;br /&gt;
&lt;br /&gt;
  - v1.74: updated preset=&amp;quot;tv2pc&amp;quot; &amp;amp; preset=&amp;quot;pc2tv&amp;quot;&lt;br /&gt;
           fixed a bug in smoothing algorithm&lt;br /&gt;
&lt;br /&gt;
  - v1.70: added curve in debug mode for SmoothLevels&lt;br /&gt;
&lt;br /&gt;
  - v1.68: improved multithreading&lt;br /&gt;
&lt;br /&gt;
  - v1.64: fixed cache problem with UV planes&lt;br /&gt;
&lt;br /&gt;
  - v1.62: fixed crash with misaligned clip&lt;br /&gt;
           added MOD2 support&lt;br /&gt;
&lt;br /&gt;
  - v1.60: improved startup time&lt;br /&gt;
           fixed MOD4 error message&lt;br /&gt;
           tweaked various things&lt;br /&gt;
           added ICC11 build&lt;br /&gt;
&lt;br /&gt;
  - v1.56: added SSSE3 code&lt;br /&gt;
           changed CPU detection routine&lt;br /&gt;
&lt;br /&gt;
  - v1.52: added SSE2 code (Smode=1 is 2x faster &amp;amp; Smode=2 is 3x faster)&lt;br /&gt;
           added useopt parameter&lt;br /&gt;
&lt;br /&gt;
  - v1.46: tweaked smoothing code&lt;br /&gt;
           removed useless Smode=1 &amp;amp; Smode=2&lt;br /&gt;
           prepared support for YV16 &amp;amp; YV24 in Avisynth 2.6.x&lt;br /&gt;
           switched from VS2008 to VS2010&lt;br /&gt;
&lt;br /&gt;
  - v1.44: added screenW &amp;amp; screenH for debugview&lt;br /&gt;
           fixed a bug in font drawing&lt;br /&gt;
           cleaned code&lt;br /&gt;
&lt;br /&gt;
  - v1.40: added debugview (see show=true)&lt;br /&gt;
&lt;br /&gt;
  - v1.30: fixed a bug in spline interpolation&lt;br /&gt;
           cleaned various stuff&lt;br /&gt;
&lt;br /&gt;
  - v1.26: Smode=3 is now the default (instead of Smode=1)&lt;br /&gt;
           tweaked smoothing sensitivity&lt;br /&gt;
           updated documentation about Smode&lt;br /&gt;
&lt;br /&gt;
  - v1.24: added new interpolation mode for SmoothCurve (see interp)&lt;br /&gt;
&lt;br /&gt;
  - v1.18: tweaked Smode 3 &amp;amp; 4&lt;br /&gt;
           updated avisynth header&lt;br /&gt;
&lt;br /&gt;
  - v1.16: replaced Smode 3 &amp;amp; 4 with stronger smoothing function&lt;br /&gt;
           changed minors things&lt;br /&gt;
&lt;br /&gt;
  - v1.02: added x64 build&lt;br /&gt;
           fixed a bug in SmoothLevels&lt;br /&gt;
&lt;br /&gt;
  - v1.00: first public release&lt;br /&gt;
&amp;lt;/pre&amp;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;150px&amp;quot;| Download&lt;br /&gt;
!!width=&amp;quot;150px&amp;quot;| Mirror&lt;br /&gt;
|-&lt;br /&gt;
!v3.20&lt;br /&gt;
|[http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|[https://web.archive.org/web/20170627062408/http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Links ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
&#039;&#039;&#039;Back to [[External_filters#Levels_and_Chroma|External Filters]] &amp;amp;larr;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>ArtificialSilence</name></author>
	</entry>
</feed>