AviSynth+

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(AviSynth+ x64 plugins: add FredAverage and GamMac, update RoboCrop link)
(add link to readthedocs avisynth+ documentation)
 
(30 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<div style="max-width:62em" >This page will be dedicated to {{AvsPlusFullname}}, mainly to keep track all of its features, changes, bugs, and any other useful information.  
+
<div style="max-width:62em" >
 +
This page is dedicated to {{AvsPlusFullname}}, mainly to keep track all of its features, changes, bugs, and any other useful information.
 +
{| style="max-width:56em"
 +
|-
 +
| style="vertical-align:top;" |
 +
<div>
 +
<div style="float:right;clear:right;margin:1.0em;padding:2px 8px;">
 +
__TOC__
 +
</div>
 +
</div>
 +
| |&nbsp;
 +
| style="vertical-align:top;" |
 +
<div style="margin:1.0em;padding:2px 8px;">
 +
<div style="border:1px solid #aaa; background-color:#f9f9f9; padding:5px; font-size:95%; width:20em">
 +
{{HiddenAnchor|AviSynth.2B_x64_plugins}}
 +
<div style="margin=auto;text-align:center">'''Important Links:'''</div>
 +
* [https://www.avs-plus.net/ Homepage (avs-plus.net)&nbsp;]
 +
* [https://github.com/AviSynth/AviSynthPlus/releases '''Latest release''' (GitHub)&nbsp;]
 +
* [https://avisynthplus.readthedocs.io/en/latest/ Documentation (WIP)]
 +
* [https://forum.doom9.org/showthread.php?t=181351 Discussion (Doom9 Forum)]
 +
* [[Avisynthplus/Downloads|More AVS+ download links]]
 +
* [[AviSynth%2B_x64_plugins|'''AVS+ 64-bit plugins''']]
 +
* [[Avisynthplus/Developers|Developers' notes]]
 +
<div style="line-height:50%;margin:0;padding:0">&nbsp;</div>
 +
</div>
 +
</div>
 +
|}
 
</div>
 
</div>
  
  
__TOC__
 
  
==Downloads==
+
==Wiki Documentation==
 
<div style="max-width:62em" >
 
<div style="max-width:62em" >
Please see the [[Avisynthplus/Downloads|Downloads]] page.
+
The '''new content''' can be found under:
 +
* [[:Category:Avisynthplus|Category: AvisynthPlus]] (pages specific to AVS+) and
 +
* [[Special:WhatLinksHere/Template:AvsPluscon|Existing pages, updated]] (all pages that contain the {{Template:AvsPluscon}} icon)
  
 
+
So far, we have new pages for:
==Documentation==
+
<div style="max-width:62em" >
+
As of March 2017 and the release of AVS+ r2445, documentation is proceeding rapidly. So far, we have:
+
 
* [[Extract]] (ExtractY, U, V, etc)
 
* [[Extract]] (ExtractY, U, V, etc)
 
* [[CombinePlanes]] (includes AddAlphaPlane, RemoveAlphaPlane)
 
* [[CombinePlanes]] (includes AddAlphaPlane, RemoveAlphaPlane)
 +
* [[ConvertBits]] bit depth conversion.
 
* [[ConvertStacked]] (ConvertToStacked, ConvertFromStacked etc) filters to interface with legacy Stack16 filters.
 
* [[ConvertStacked]] (ConvertToStacked, ConvertFromStacked etc) filters to interface with legacy Stack16 filters.
 +
* [[Avisynthplus_color_formats|Avisynth+ color formats]], listing the new AVS+ color spaces
  
 
Along with AVS+ information added to:
 
Along with AVS+ information added to:
 
* [[Clip_properties]], listing many new items.
 
* [[Clip_properties]], listing many new items.
* [[Internal_functions#Runtime_functions]], listing the new runtime functions
+
* [[Internal_functions]], listing the new functions.
* [[Convert]], listing the new AVS+ color spaces
+
* [[Convert]], listing the new AVS+ functions and color spaces.
 +
* [[SetFilterMTMode]] and multithreading related functions.
 
* and many more
 
* and many more
You will see the {{AvsPluscon}} icon throughout the docs where differences exist. The new content can be found [[Special:WhatLinksHere/Template:AvsPluscon|here]]  (all pages that contain the icon &ndash; mostly existing pages with a few AVS+ notes added) and [[Special:WhatLinksHere/Template:AvsPlusFilter|here]] (new pages specific to AVS+)
 
  
Acting documentator: [[User_talk:Raffriff42|raffriff42]]
+
Still to do:
 +
* ''AddAutoloadDir'' and related functions.
 +
* ''StrToUtf8'' and related functions.
 +
* ''ColorSpaceNameToPixelType''.
 +
* [[Internal_functions#Global_Options]] &ndash; what do these options do?
 +
* [[Histogram]] &ndash; ''bits'' argument needs further explanation.
 +
* [[Tweak]] &ndash; ''realcalc'' argument needs further explanation.
 +
* Need updated change logs on all filter pages.
 +
</div>
  
:'''''Coming Soon'''''
 
:* [[Avisynthplus_color_formats]] &ndash; currently blank.
 
:* [[ConvertBits]] &ndash; blank.
 
  
:'''''Help Needed'''''
+
==New Features==
:* '''LogMsg''' and related functions &ndash; noted on [[Avisynthplus/Developers]], should these have user docs as well?
+
<div style="max-width:62em" >
:* '''AddAutoloadDir''' and related functions &ndash; ditto.
+
===Deep color===
:* '''ColorSpaceNameToPixelType''' &ndash; looks like a developers' function?
+
Since [https://github.com/pinterf/AviSynthPlus/releases/tag/r2290-MT r2290] (October 2016), AviSynth+ supports 10, 12, 14, 16 and 32-bit (float) color spaces. All color formats are listed [[Avisynthplus_color_formats|here]]. Support functions include [[ConvertBits]], [[ConvertStacked]], [[Extract]], [[CombinePlanes]]. Deep color support has been added to all [[Internal_filters|internal filters]] and many [[AviSynth%2B_x64_plugins|external plugins]]. See the [[#Wiki_Documentation|Wiki Documentation]] section below for more. ([[TODO]] - tutorial)
:* [[Internal_functions#Global_Options]] &ndash; what do these options do?
+
:* [[Convert]] &ndash; fact checkers are welcome.
+
:* [[ColorBars#A_note_on_notation|a note on notation]] a proposed multi-bit-depth notation, eg: 16{{D}}-235{{D}} (comments?)
+
:* [[Histogram]] &ndash; ''bits'' argument needs further explanation.
+
:* [[ColorYUV]] &ndash; ''bits'' argument may need further explanation.
+
:* [[Tweak]] &ndash; ''realcalc'' argument needs further explanation.
+
:* Need updated change logs on all filter pages.
+
</div>
+
  
 +
===Multithreading===
 +
See the [[#Multithreading (MT) Notes|Multithreading (MT) Notes]] section below. ([[TODO]] - tutorial)
  
==New Features==
+
{{HiddenAnchor|AviSynth.2B.27s_Plugin_Autoloader}}
===AviSynth+'s Plugin Autoloader===
+
===Plugin Autoloader===
 
*'''1st October 2013''' | Source: [http://forum.doom9.org/showthread.php?p=1646304#post1646304 here] and subsequent post.
 
*'''1st October 2013''' | Source: [http://forum.doom9.org/showthread.php?p=1646304#post1646304 here] and subsequent post.
 
Okay, so how do multiple plugin directories interact with plugin autoloading?
 
Okay, so how do multiple plugin directories interact with plugin autoloading?
Line 68: Line 93:
 
This means, if there are ever plugins which will only work with AviSynth+ but not with classic AviSynth, you can put them into one of the "PluginDir+" folders. AviSynth+ will then use the classic plugins from the normal AviSynth, but if there are versions of some plugins written for AviSynth+, it will use them instead, and the classic avisynth.dll will still not be bothered with them. This is all without you having to lift a finger (except for adding the "PluginDir+" values to the registry once, until we have an installer). So to summarize all this, you have the ability to define a plugin autoload folder in the registry which will only be used by AviSynth+, but not by AviSynth, in addition to your classic plugins.
 
This means, if there are ever plugins which will only work with AviSynth+ but not with classic AviSynth, you can put them into one of the "PluginDir+" folders. AviSynth+ will then use the classic plugins from the normal AviSynth, but if there are versions of some plugins written for AviSynth+, it will use them instead, and the classic avisynth.dll will still not be bothered with them. This is all without you having to lift a finger (except for adding the "PluginDir+" values to the registry once, until we have an installer). So to summarize all this, you have the ability to define a plugin autoload folder in the registry which will only be used by AviSynth+, but not by AviSynth, in addition to your classic plugins.
  
===New Functions===
+
====New Functions====
 
However, another new functionality offered by AviSynth+, is that now you can also specify autoload paths in the scripts. There are two functions for this:
 
However, another new functionality offered by AviSynth+, is that now you can also specify autoload paths in the scripts. There are two functions for this:
  
Line 85: Line 110:
 
* <tt>MACHINE_CLASSIC_PLUGINS</tt> is the string stored in PluginDir2_5 in Software/Avisynth in HKEY_LOCAL_MACHINE
 
* <tt>MACHINE_CLASSIC_PLUGINS</tt> is the string stored in PluginDir2_5 in Software/Avisynth in HKEY_LOCAL_MACHINE
 
... all these special constants are '''case-sensitive''' for now.
 
... all these special constants are '''case-sensitive''' for now.
 +
 
====Examples====
 
====Examples====
 
* If you want plugins to be autoloaded from the script's "autoload" directory too, you'd write:
 
* If you want plugins to be autoloaded from the script's "autoload" directory too, you'd write:
Line 111: Line 137:
  
 
===GScript===
 
===GScript===
[http://forum.doom9.org/showthread.php?t=147846 GScript] has been used as the starting point for the implementation in AviSynth+, and changes compared to GScript are not visible to the user (e.g. only important for AviSynth+ core developers). Two notable differences are between GScript and AviSynth+:[http://forum.doom9.org/showthread.php?p=1712511#post1712511]
+
GScript (''a plugin for AviSynth that provides new control-flow constructs such as loops'') has been incorporated natively into AviSynth+. Syntax is mostly unchanged, with two notable differences:
  
*In AviSynth+ there is no need to use GScript(""" and """) to encompass your GScript-specific code parts. The language extensions became native to AviSynth+ and can be used transparently like classic AviSynth syntax.
+
*In AviSynth+ there is no need to wrap your GScript code in a string. The language extensions are native to AviSynth+ and can be used transparently.
*The "return" statement has been slightly changed to not only exit the inner-most code block, but to terminate the whole function (or script), as anybody with even the slightest scripting experience would expect. This is one of the very few incompatible changes compared to classic AviSynth.
+
*The "return" statement has been changed to not only exit the GScript code block, but behaves like a normal AviSynth [[Grammar#Statements.2C_Expressions.2C_Types_and_Operators|return statement]]: it causes the termination of the active script block ([[User_functions|user function]]), or if not in a function, the entire script.
  
 
'''Links'''
 
'''Links'''
*[http://forum.doom9.org/showthread.php?p=1647005#post1647005 What kind of for-construct would you like to see?]
+
*[[GScript|GScript - main Wiki page]]
 +
*[http://forum.doom9.org/showthread.php?p=1712511#post1712511 ''Short description from developer'' Ultim] (doom9.org)
 +
*[http://forum.doom9.org/showthread.php?p=1647005#post1647005 ''What kind of for-construct would you like to see?''] (doom9.org)
  
 
===Logging Facility===
 
===Logging Facility===
Line 131: Line 159:
  
 
*Source: http://forum.doom9.org/showthread.php?p=1774770#post1774770
 
*Source: http://forum.doom9.org/showthread.php?p=1774770#post1774770
<br>
+
</div>
  
==MT Notes==
+
 
 +
==Multithreading (MT) Notes==
 +
<div style="max-width:62em" >
 +
See also at [[SetFilterMTMode]], where Prefetch, SetFilterMTMode, OnCPU and others are explained.
 
*Source: [http://forum.doom9.org/showthread.php?p=1666371#post1666371 Doom9 Forum]
 
*Source: [http://forum.doom9.org/showthread.php?p=1666371#post1666371 Doom9 Forum]
 
So, how to use MT in AviSynth+? Most of it has been posted earlier actually, but let me summarize it.
 
So, how to use MT in AviSynth+? Most of it has been posted earlier actually, but let me summarize it.
Line 145: Line 176:
  
 
===Enabling MT===
 
===Enabling MT===
The other difference is how you actually enable multithreading. Calling SetFilterMTMode() is not enough, it sets the MT mode, but the MT mode only has an effect if MT is enabled at all. Note this means you can safely include/import/autoload your SetFilterMTMode() calls in even single-threaded scripts, and they will not be messed up. Uhm, onto the point: You enable MT by placing a single call to Prefetch(X) at the *end* of your script, where X is the number of threads to use.
+
The other difference is how you actually enable multithreading. Calling SetFilterMTMode() is not enough, it sets the MT mode, but the MT mode only has an effect if MT is enabled at all. Note this means you can safely include/import/autoload your SetFilterMTMode() calls in even single-threaded scripts, and they will not be messed up. Uhm, onto the point: You enable MT by placing a single call to Prefetch(X) at the '''end''' of your script, where X is the number of threads to use. If there is a return statement in your script it must be placed '''after''' Prefetch().
  
 
===Example ===
 
===Example ===
<pre>
+
</div><div style="max-width:76em" ><pre>
 
# This line causes all filters that don't have an MT mode explicitly use mode 2 by default.
 
# This line causes all filters that don't have an MT mode explicitly use mode 2 by default.
 
# Mode 2 is a relatively safe choice until you don't know most of your calls to be either mode 1 or 3.
 
# Mode 2 is a relatively safe choice until you don't know most of your calls to be either mode 1 or 3.
Line 172: Line 203:
 
# Enable MT!
 
# Enable MT!
 
Prefetch(4)
 
Prefetch(4)
</pre>
+
</pre></div>
 +
<div style="max-width:62em" >
 +
 
 +
===Help filling MT modes===
 +
The following script contains MT modes for various plugins, save it as <tt>mtmodes.avsi</tt> and place in your auto-load folder. The script is a work-in-progess, there's still lots of plugins that need to be tested and validated. When the script is finalized, the only thing the user will have to write in his script is the <code>Prefetch</code> call, all <code>SetFilterMtMode</code> calls will be hidden in a single <tt>.avsi</tt> script.
 +
*You can find the latest revision here: [http://publishwith.me/ep/pad/view/ro.rDkwcdWn4k9/latest AviSynth+ MT modes], if you like to contribute please do so [http://publishwith.me/ooiV92hupl here]. Report any issues [http://forum.doom9.org/showthread.php?t=168856 here].
 +
 
 +
Note for filter writers: filters can report their mt modes in their SetCacheHint, in this case the manual setting is not necessary.
 +
 
 +
===Choosing the correct MT mode===
 +
Please do check if the actual output is correct. Fast but corrupted output is useless. Easy way of checking would be using something like <code>[[ColorBars]](1920, 1080, "YV12").[[AddGrainC]](10000, 10000, seed=1)</code> as a source filter. It doesn't always work right but will do for most stuff.[http://forum.doom9.org/showthread.php?p=1667434#post1667434]
 +
 
 +
Source: http://forum.doom9.org/showthread.php?p=1667439#post1667439
 +
 
 +
*<code>MT_NICE_FILTER</code>: Some filters (like nnedi3) use some buffers to do their dirty work and with mode 1 you get multiple threads writing data from different frames to the same buffer. This causes corruption when later someone tries to read from this buffer and gets not what was expected. Most of the "more complicated" filters use some kind of temporary storage thus won't work well with this mode. Simple filters might.
 +
 
 +
*<code>MT_MULTI_INSTANCE</code>: Mode 2 doesn't have this issue because multiple threads will get their own buffers and no data will be shared. Hence mode 2 is the "default" mode which should work with ''most'' filters, but it wastes memory like crazy (take SangNom2 for example - for 1080p YV12 frame, size of temporary buffers is about 10MB, so with 4 threads you get 40MBs on single filter invocation. Now add some usual supersampling to this and multiple invocations in most aa scripts and... you get the idea).
 +
 
 +
*<code>MT_SERIALIZED</code>: If the filter requires sequential access or uses some global storage, then mode 3 is the only way to go. Source filter (filters without clip parameter) are autodetected, they do not need an explicit MT mode setting, they will automatically use MT_SERIALIZED.
 +
 
 +
*<code>MT_SPECIAL_MT</code>: Experimental. Now use only for MP_Pipeline, the filter is like a source filter (no input clip parameter), internally multithreaded, and suffer heavy performance degradation from any of the three regular mt modes. Really, this is a workaround. Available from AviSynth+ version r2440. Avisynth+ 3.6 has serious mt fixes, maybe this mode is not needed anymore.
  
 
===Closing notes (don't skip!)===
 
===Closing notes (don't skip!)===
Line 195: Line 246:
 
*http://forum.doom9.org/showthread.php?p=1682034#post1682034
 
*http://forum.doom9.org/showthread.php?p=1682034#post1682034
 
*http://forum.doom9.org/showpost.php?p=1668101&postcount=92
 
*http://forum.doom9.org/showpost.php?p=1668101&postcount=92
 +
</div>
  
===Help filling MT modes===
 
The following script contains MT modes for various plugins, save it as <tt>mtmodes.avsi</tt> and place in your auto-load folder. The script is a work-in-progess, there's still lots of plugins that need to be tested and validated. When the script is finalized, the only thing the user will have to write in his script is the <code>Prefetch</code> call, all <code>SetFilterMtMode</code> calls will be hidden in a single <tt>.avsi</tt> script.
 
*You can find the latest revision here: [http://publishwith.me/ep/pad/view/ro.rDkwcdWn4k9/latest AviSynth+ MT modes], if you like to contribute please do so [http://publishwith.me/ooiV92hupl here]. Report any issues [http://forum.doom9.org/showthread.php?t=168856 here].
 
  
====Guidelines on choosing the correct MT mode====
+
==Changelog==
Please do check if the actual output is correct. Fast but corrupted output is useless. Easy way of checking would be using something like <code>[[ColorBars]](1920, 1080, "YV12").[[AddGrainC]](10000, 10000, seed=1)</code> as a source filter. It doesn't always work right but will do for most stuff.[http://forum.doom9.org/showthread.php?p=1667434#post1667434]
+
 
+
Source: http://forum.doom9.org/showthread.php?p=1667439#post1667439
+
 
+
*<code>MT_NICE_FILTER</code>: Some filters (like nnedi3) use some buffers to do their dirty work and with mode 1 you get multiple threads writing data from different frames to the same buffer. This causes corruption when later someone tries to read from this buffer and gets not what was expected. Most of the "more complicated" filters use some kind of temporary storage thus won't work well with this mode. Simple filters might.
+
 
+
*<code>MT_MULTI_INSTANCE</code>: Mode 2 doesn't have this issue because multiple threads will get their own buffers and no data will be shared. Hence mode 2 is the "default" mode which should work with ''most'' filters, but it wastes memory like crazy (take SangNom2 for example - for 1080p YV12 frame, size of temporary buffers is about 10MB, so with 4 threads you get 40MBs on single filter invocation. Now add some usual supersampling to this and multiple invocations in most aa scripts and... you get the idea).
+
 
+
*<code>MT_SERIALIZED</code>: If the filter requires sequential access or uses some global storage, then mode 3 is the only way to go. Source filter (filters without clip parameter) are autodetected, they do not need an explicit MT mode setting, they will automatically use MT_SERIALIZED.
+
 
+
*<code>MT_SPECIAL_MT</code>: Experimental. Now use only for MP_Pipeline, the filter is like a source filter (no input clip parameter), internally multithreaded, and suffer heavy performance degradation from any of the three regular mt modes. Really, this is a workaround. Available from AviSynth+ version r2440.
+
<br>
+
 
+
==Developers==
+
 
<div style="max-width:62em" >
 
<div style="max-width:62em" >
Please see the [[Avisynthplus/Developers|Developers]] page.
+
* [[Avisynthplus/Changelog|Changelog, Part 1]]
 +
* [https://github.com/pinterf/AviSynthPlus/releases Changelog, Part 2 (github)]
 
</div>
 
</div>
  
  
==AviSynth+ x64 plugins==
 
All listed plugins are the latest version unless stated otherwise.
 
{|class="wikitable sortable" style="height:100px; width:100%" border="1" cellpadding="4"
 
|-
 
!width=12%| Category
 
!width=12%| Filter
 
!class="unsortable" width=8%| Version
 
!class="unsortable" width=15%| Download
 
!Comments
 
|-
 
|Denoiser
 
|'''[[AdaptiveMedian]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/AdaptiveMedian/AdaptiveMedian64.7z AdaptiveMedian64.7z]
 
|
 
|-
 
|Effect
 
|'''[[AddGrainC]]'''
 
|1.7.1
 
|[http://ldesoras.free.fr/src/avs/AddGrainC-1.7.1.7z AddGrainC-1.7.1.7z]
 
|Compiled with  Microsoft Visual Studio C++ 2012. AddGrain v1.7.0 compiled with Intel C++ Compiler XE 14: [http://www.dropbox.com/s/y5ymzmgfzddw0pn/AddGrainC_1.7.0_x64.zip?dl=1 AddGrainC_1.7.0_x64.zip]
 
|-
 
|Adjust
 
|'''[http://forum.doom9.org/showthread.php?t=167573 AutoAdjust]'''
 
|2.6
 
|[http://latoninf.free.fr/d9/AA/AutoAdjust-v2.60.7z AutoAdjust-v2.60.7z]
 
|
 
|-
 
|Crop
 
|'''[[AutoCrop]]'''
 
|1.2
 
|[http://www.mediafire.com/download/mzddfmjjdyx/autocrop_3-14-2010.rar autocrop_3-14-2010.rar]
 
|Compiled by Joshy D.
 
|-
 
|Conversion
 
|'''[http://rationalqm.us/autoyuy2/autoyuy2.html AutoYUY2]'''
 
|20150905
 
|[http://github.com/jpsdr/AutoYUY2/releases AutoYUY2_20150905.7z]
 
|Compiled by jpsdr.
 
|-
 
|Averaging
 
|'''[[Average]]'''
 
|0.94
 
|[http://github.com/pinterf/Average/releases Average-v0.94.7z]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Unclassified
 
|'''[http://forum.doom9.org/showthread.php?t=172698 AviSynthShader]'''
 
|1.3.7
 
|[http://github.com/mysteryx93/AviSynthShader/releases AviSynthShader-1.3.7.zip]
 
|
 
|-
 
|Resizer/Format Conversion
 
|'''[http://forum.doom9.org/showthread.php?t=173986 avsresize]'''
 
|r1a
 
|[http://www.dropbox.com/s/y0gx5n7fabj405i/avsresize-r1a.zip?dl=1 avsresize-r1a.zip]
 
|
 
|-
 
|Support
 
|'''[http://forum.doom9.org/showthread.php?t=164407 AVSTP]'''
 
|1.0.3
 
|[http://ldesoras.free.fr/src/avs/avstp-1.0.3.zip avstp-1.0.3.zip]
 
|v1.0.1: [http://www.dropbox.com/s/59urdlk19pz6l2p/avstp-1.0.1_x64.zip?dl=1 avstp-1.0.1_x64.zip]
 
|-
 
|Sharpener
 
|'''[[aWarpSharp2]]'''
 
|20160624
 
|[http://github.com/pinterf/aWarpSharp/releases aWarpSharp2-20160624.7z]
 
|Compiled with  Microsoft Visual Studio C++ 2015. Older version compiled with Intel Parallel Studio XE 2015 Composer Edition for C++: [http://www.dropbox.com/s/5s6xht0xu80otbz/aWarpSharp_20120328_x64.zip?dl=1 aWarpSharp_20120328_x64.zip]
 
|-
 
|Audio
 
|'''[http://forum.doom9.org/showthread.php?t=135855 BassAudio]'''
 
|2.4
 
|[http://www.mediafire.com/download/gyqkvniqutr9r28/BassAudio_x64.7z BassAudio_x64.7z] - [http://www.mediafire.com/download/0ydinsk5br3imgr/BassAudioSource24_x64src.7z source]
 
|Compiled by yo4kazu - [http://www.un4seen.com/download.php?bass24 BASS audio library for Win64]
 
|-
 
|Restoration
 
|'''[[Bifrost]]'''
 
|2.0
 
|[http://www.mediafire.com/download/2nbolu9ebbrem20 bifrost-v2.0.7z]
 
|Compiled with  Microsoft Visual Studio C++ 2013. Compiled by [http://forum.doom9.org/showthread.php?p=1721946#post1721946 l33tmeatwad].
 
|-
 
|Restoration
 
|'''[[Checkmate]]'''
 
|0.9
 
|[http://github.com/tp7/checkmate/releases/download/0.9/checkmate-x64.zip checkmate-x64.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2012.
 
|-
 
|Multipurpose
 
|'''[http://github.com/tp7/CLExpr CLExpr]'''
 
|0.91
 
|[http://github.com/tp7/CLExpr/releases/download/0.91/CLExpr-x64.zip CLExpr-x64.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2013.
 
|-
 
|Denoisers
 
|'''[[Cnr2]]
 
|2.6.1_avs26
 
|[http://dl.dropboxusercontent.com/u/19797864/cnr2_v261-avs26.zip cnr2_v261-avs26.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2015. Compiled by [http://forum.doom9.org/showthread.php?p=1771784#post1771784 Chikuzen].
 
|-
 
|Restoration
 
|'''[http://github.com/chikuzen/CombMask/tree/master/avisynth CombMask]'''
 
|1.0.0
 
|[http://github.com/chikuzen/CombMask/releases CombMask-1.0.0.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2015.
 
|-
 
|Restoration
 
|'''[http://github.com/sekrit-twc/EdgeFixer ContinuityFixer]'''
 
|4fd4817
 
|[http://www.mediafire.com/download/0bmyjfvh2n872hm ContinuityFixer.7z]
 
|Compiled with  Microsoft Visual Studio C++ 2013. Compiled by [http://forum.doom9.org/showthread.php?p=1721946#post1721946 l33tmeatwad].
 
|-
 
|Transform
 
|'''[[DeBarrel]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/DeBarrel/DeBarrel64.7z DeBarrel64.7z]
 
|
 
|-
 
|Unclassified
 
|'''[[DctFilter|DCTFilter]]'''
 
|0.5.0
 
|[http://github.com/chikuzen/DCTFilter/releases DCTFilter-0.5.0.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2015.
 
|-
 
|Restoration
 
|'''[[DeBlock]]'''
 
|0.9
 
|[http://github.com/tp7/Deblock/releases/download/0.9/Deblock-x64.zip Deblock-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Restoration
 
|'''[[Decomb]]'''
 
|5.2.4
 
|[http://www.dropbox.com/s/wdnkly9xun1skj4/decomb_5.2.4_x64.zip?dl=1 decomb_5.2.4_x64.zip]
 
|Compiled with Intel C++ Compiler XE 14
 
|-
 
|Degrainer
 
|'''[[DeGrainMedian]]'''
 
|0.8.2
 
|[http://members.optusnet.com.au/squid_80/DeGrainMedian64.zip DeGrainMedian64.zip] - [http://members.optusnet.com.au/squid_80/sources/degrainmediansrc.zip source]
 
|Compiled by squid_80
 
|-
 
|Restoration
 
|'''[http://www.avisynth.nl/users/vcmohan/DeJitter/DeJitter.htm DeJitter]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/DeJitter/DeJitter64.7z DeJitter64.7z]
 
|
 
|-
 
|Logo removal
 
|'''[http://github.com/makiuchi-d/delogo-avisynth Delogo]'''
 
|0.05a
 
|[http://www.dropbox.com/s/5t3p2gh4znsjxpc/delogo_avs%2B.zip?dl=1 delogo_avs+.zip]
 
|Compiled with Intel C++ Compiler XE 14.
 
|-
 
|Denoiser
 
|'''[[DeNoise]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/DeNoise/DeNoise64.7z DeNoise64.7z]
 
|
 
|-
 
|Denoiser
 
|'''[[DeSaltPepper]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/DeSaltPepper/DeSaltPepper64.7z DeSaltPepper64.7z]
 
|
 
|-
 
|Denoiser
 
|'''[http://www.avisynth.nl/users/vcmohan/DeVeed/DeVeed.html DeVeed]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/DeVeed/DeVeed64.7z DeVeed64.7z]
 
|
 
|-
 
|Denoiser
 
|'''[[dfttest]]'''
 
|1.9.4
 
|[http://www.dropbox.com/s/b0rl1xz5hxlo6og/dfttest-1.9.4_x64.zip?dl=1 dfttest-1.9.4_x64.zip]
 
|Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
 
|-
 
|Source
 
|'''[http://forum.doom9.org/showthread.php?t=170237 DGDecIM] '''
 
|b50
 
|[http://rationalqm.us/dgdecim/dgdecim_b50.zip dgdecim_b50.zip]
 
|Requires license from DGDecNV
 
|-
 
|Source
 
|'''[http://rationalqm.us/dgdecnv/dgdecnv.html DGDecNV]'''
 
|205x
 
|
 
|Requires license.
 
|-
 
|Source
 
|'''[http://rationalqm.us/dgmpgdec/dgmpgdec.html DGMPGDec]'''
 
|1.5.8
 
|[http://www.mediafire.com/download/c0wmemj5jam/DGDecode_3-19-2010.rar DGDecode_3-19-2010.rar]
 
|Compiled by Joshy D, some IDCT modes are missing.
 
|-
 
|Multipurpose
 
|'''[[Dither]]'''
 
|1.27.2
 
|[http://ldesoras.free.fr/src/avs/dither-1.27.2.zip dither-1.27.2.zip]
 
|
 
|-
 
|Source
 
|'''[http://forum.doom9.org/showpost.php?p=1699301&postcount=33 DSS2mod]'''
 
|2.0.0.13
 
|[http://web.archive.org/web/20160224130625/https://filetea.me/t1siAfoCvW5Sy2d2BbRx2WBjg/dl avss_x64.zip]
 
|
 
|-
 
|Resizer/AA
 
|'''[[EEDI2]]'''
 
|0.9.2
 
|[http://www.dropbox.com/sh/6kb3723po5oqd4b/AACEoqsC5XTGlx_qDNp9ZF7Ea/EEDI2_092_64.7z?dl=1 EEDI2_092_64.7z] [http://web.archive.org/web/20160908025751/http://www.iol.ie/~schubert/avs/EEDI2_092_64.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173259 Groucho2004]. Compiled by Joshy D: [http://www.mediafire.com/download/znmyzdo2ize/EEDI2_4-10-2010.rar EEDI2_4-10-2010.rar]
 
|-
 
|Resizer/AA
 
|'''[[eedi3|EEDI3]]'''
 
|0.9.2.1
 
|[http://github.com/Elegant996/EEDI3/releases EEDI3_v0_9_2_1.7z]
 
|Compiled with Microsoft Visual Studio C++ 2013. See [http://forum.doom9.org/showthread.php?t=172414 discussion]. Older version (v0.9.1) compiled by [http://forum.doom9.org/showpost.php?p=1446772&postcount=320 tritical] (<strike>[http://web.archive.org/web/20131111121128/http://bengal.missouri.edu/~kes25c/eedi3_64.dll eedi3_64.dll]</strike>).
 
|-
 
|Multipurpose
 
|'''[[EffectsMany]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/EffectsMany/EffectsMany64.7z EffectsMany64.7z]
 
|
 
|-
 
|Restoration
 
|'''[[ExactDedup]]'''
 
|0.03
 
|[http://www.mediafire.com/download/9x2ax1rb5un02d5/ExactDedup+Version+0.03.zip ExactDedup+Version+0.03.zip]
 
|
 
|-
 
|Debanding
 
|'''[http://forum.doom9.org/showthread.php?t=161411 f3kdb]'''
 
|1.5.1
 
|[http://www.nmm-hd.org/upload/get~arIyHEnxIS8/flash3kyuu_deband_1.5.1_x64.7z flash3kyuu_deband_1.5.1_x64.7z]
 
|v2.0 prerelease (b98d6bc x86/x64): [http://web.archive.org/web/20150503191218/https://www.nmm-hd.org/upload/get~NfiLlgo1pX8/f3kdb-b98d6bc.rar f3kdb-b98d6bc.rar] - compiled with Intel C++ Compiler 2013. [http://web.archive.org/web/20160414135351/http://www.nmm-hd.org/upload/get~jW8DJGBDJro/f3kdb-rev410.7z f3kdb-rev410.7z] - compiled with Microsoft Visual Studio C++ 2013.
 
|-
 
|Resizer
 
|'''[http://github.com/chikuzen/FCBI FCBI]'''
 
|0.0.0
 
|[http://github.com/chikuzen/FCBI/releases fcbi-0.0.0.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Source
 
|'''[[FFmpegSource]]'''
 
|2.23.1
 
|[http://github.com/FFMS/ffms2/releases FFMS2]
 
|
 
|-
 
|Denoiser
 
|'''[http://avisynth.org.ru/fft3dfilter/fft3dfilter.html FFT3DFilter]'''
 
|2.1.1
 
|[http://www.dropbox.com/sh/6kb3723po5oqd4b/AACfNFsXH_WWXiE_7lkmK2KSa/fft3dfilter_64.7z?dl=1 fft3dfilter_64.7z] [http://web.archive.org/web/20160613122847/http://www.iol.ie/~schubert/avs/fft3dfilter_64.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173229 Groucho2004]. Needs the [http://www.fftw.org/install/windows.html 64-bit <tt>libfftw3f-3.dll</tt>] to be in your System32 directory. Compiled by Joshy D: [http://www.mediafire.com/download/2ymcyfuzzzw/FFT3DFilter_3-12-2010.rar FFT3DFilter_3-12-2010.rar]
 
|-
 
|Denoiser
 
|'''[http://avisynth.org.ru/fft3dfilter/fft3dfilter.html FFT3DFilter]'''
 
|2.3
 
|[https://github.com/pinterf/fft3dfilter/releases FFT3DFilter-v2.3.7z]
 
|10-16bits/float support. Compiled with VS2015 Update 3. Needs the [http://www.fftw.org/install/windows.html 64-bit <tt>libfftw3f-3.dll</tt>] to be in your System32 directory.
 
|-
 
|Denoiser
 
|'''[http://forum.doom9.org/showthread.php?t=89941 FFT3DGPU]'''
 
|0.8.2
 
|[http://www.mediafire.com/download/2chnt1jkwwm/FFT3DGPU_3-15-2010.rar FFT3DGPU_3-15-2010.rar]
 
|The HLSL (shader program) file is edited from the original to adhere to pixel shader 3.0 syntax rules. Please make sure to place the correct file in the same directory as the 64bit plugin. Compiled by Joshy D.
 
|-
 
|Denoiser
 
|'''[[FFTQuiver]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver64.7z FFTQuiver64.7z]
 
|
 
|-
 
|Deinterlacing
 
|'''[[FieldHint]]'''
 
|0.11
 
|[http://www.mediafire.com/download/ynkidzz4joz/fieldhint.rar fieldhint.rar]
 
|Compiled by Joshy D.
 
|-
 
|Denoiser
 
|'''[[FluxSmooth]]'''
 
|2nd December 2010
 
|[http://forum.doom9.org/attachment.php?attachmentid=11813&d=1291250198 FluxSmooth SSE DLLs.7z]
 
|[http://forum.doom9.org/showthread.php?t=158245 Discussion thread]
 
|-
 
|Sharpener
 
|'''[http://www.avisynth.nl/users/vcmohan/FQSharp/FQSharp.html FQSharp]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/FQSharp/FQSharp64.7z FQSharp64.7z]
 
|
 
|-
 
|Unclassified
 
|'''[http://forum.doom9.org/showthread.php?t=174161 FQPlus]'''
 
|30 Dec 2016
 
|[http://www.avisynth.nl/users/vcmohan/FQPlus/FQPlus.7z FQPlus.7z]
 
|
 
|-
 
|Color correction
 
|'''[http://forum.doom9.org/showthread.php?t=174520 FredAverage]'''
 
|0.01
 
|[http://www.dropbox.com/sh/7k79ey2urjekroi/AADQfBIc1Tyi52GVqjbqWo4Ga/FredAverage64_0.01.7z?dl=1 FredAverage64_0.01.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173259 Groucho2004]
 
|-
 
|Source
 
|'''[http://forum.doom9.org/showthread.php?t=169651 FRIMSource]'''
 
|1.25
 
|[http://forum.doom9.org/showpost.php?p=1720561&postcount=717 FRIMSource64.dll]
 
|
 
|-
 
|Effect
 
|'''[[Fusion]]'''
 
|5th March 2013
 
|[http://horman.net/fusionx64.zip fusionx64.zip]
 
|
 
|-
 
|Color correction
 
|'''[http://forum.doom9.org/showthread.php?t=173695 GamMac]'''
 
|1.07
 
|[http://www.dropbox.com/sh/7k79ey2urjekroi/AACjl5_nCU6YgfCgaC201Nq5a/GamMac64_1.07.7z?dl=1 GamMac64_1.07.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173259 Groucho2004]
 
|-
 
|Blurring
 
|'''[[GBlur]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/GBlur/GBlur64.7z GBlur64.7z]
 
|
 
|-
 
|Debanding
 
|'''[[GradFun2db]]'''
 
|1.0
 
|[http://www.mediafire.com/download/w0trndmni3j/gradfun2db_3-29-2010.rar gradfun2db_3-29-2010.rar]
 
|Compiled by Joshy D.
 
|-
 
|Debugging
 
|'''[[Grid]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/Grid/Grid64.7z Grid64.7z]
 
|
 
|-
 
|Support
 
|'''[[GRunT]]'''
 
|1.0.1a
 
|[http://forum.doom9.org/attachment.php?attachmentid=15400&d=1463511496 grunt-x64.rar]
 
|Compiled with Microsoft Visual Studio C++ 2015. Compiled by [http://forum.doom9.org/showthread.php?p=1767990#post1767990 yesmanitsbearman]
 
|-
 
|Uncategorized
 
|'''[http://github.com/ladipro/avisynth_filters/wiki/HealDeadPixels HealDeadPixels]'''
 
|1.0.0
 
|[http://github.com/ladipro/avisynth_filters/releases HealDeadPixels-1.0.0-x64.zip]
 
|
 
|-
 
|Blurring
 
|'''[http://www.avisynth.nl/users/vcmohan/HBlur/HBlur.html HBlur]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/HBlur/HBlur64.7z HBlur64.7z]
 
|
 
|-
 
|Support
 
|'''[http://web.archive.org/web/20160604220510/http://www.snovidenie.com/plugins/hdr/ HDRCore]'''
 
|1.1.0
 
|[http://web.archive.org/web/20160604220510/http://media.snovidenie.com/plugins/HDRCore.7z HDRCore.7z]
 
|
 
|-
 
|Conversion
 
|'''[http://web.archive.org/web/20160604220510/http://www.snovidenie.com/plugins/hdr/ HDRMatrix]'''
 
|1.0.0
 
|[http://web.archive.org/web/20160604220510/http://media.snovidenie.com/plugins/HDRMatrix.7z HDRMatrix.7z]
 
|
 
|-
 
|Effect
 
|'''[http://web.archive.org/web/20160604220510/http://www.snovidenie.com/plugins/hdr/ HDRNoise]'''
 
|1.2.0
 
|[http://web.archive.org/web/20160604220510/http://media.snovidenie.com/plugins/HDRNoise.7z HDRNoise.7z]
 
|
 
|-
 
|Sharpener
 
|'''[http://web.archive.org/web/20160604220510/http://www.snovidenie.com/plugins/hdr/ HDRSharp]'''
 
|1.0.0
 
|[http://web.archive.org/web/20160604220510/http://media.snovidenie.com/plugins/HDRSharp.7z HDRSharp.7z]
 
|
 
|-
 
|Adjust
 
|'''[[HistogramAdjust]]'''
 
|18 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/HistogramAdjust/HistogramAdjust64.7z HistogramAdjust64.7z]
 
|
 
|-
 
|Denoiser
 
|'''[[hqdn3d]]'''
 
|0.11
 
|[http://www.mediafire.com/download/gyvmmzx0v4z/hqdn3d_4-08-2010.rar hqdn3d_4-08-2010.rar]
 
|Compiled by Joshy D.
 
|-
 
|Denoiser
 
|'''hqdn3dY'''
 
|2016-02-13
 
|[http://forum.doom9.org/attachment.php?attachmentid=15589&d=1474456943 Hqdn3dY.7z]
 
|Modified by Rean.
 
|-
 
|IVTC
 
|'''[[IT|IT_YV12]]'''
 
|0103_width8K
 
|[http://www.dropbox.com/s/002p6yed7dzi8f3/IT_YV12_0103_width8K.zip?dl=1 IT_YV12_0103_width8K.zip]
 
|Compiled with Intel C++ Compiler XE 14.
 
|-
 
|IVTC
 
|'''[http://web.archive.org/web/20090220115721/http://members.at.infoseek.co.jp/kiraru2002/alpha_version.html Its]'''
 
|0.8.6
 
|
 
|Compiled by putin999
 
|-
 
|Resizer
 
|'''[[JincResize]]'''
 
|r44
 
|[http://www.dropbox.com/s/pj37t6ackhbs42k/jincresize_r44.zip?dl=1 jincresize_r44.zip]
 
|Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
 
|-
 
|Color correction
 
|'''[http://github.com/ladipro/avisynth_filters/wiki/KelvinColorShift KelvinColorShift]'''
 
|1.0.0
 
|[http://github.com/ladipro/avisynth_filters/releases KelvinColorShift-1.0.0-x64.zip]
 
|
 
|-
 
|Denoiser
 
|'''[http://forum.doom9.org/showthread.php?t=171379 KNLMeansCL]'''
 
|1.0.2
 
|[http://github.com/Khanattila/KNLMeansCL/releases KNLMeansCL-v1.0.2.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Source
 
|'''[[LSMASHSource]]'''
 
|r8xx
 
|{{Plugin/LSMASHSource}}
 
|Compiled with Microsoft Visual Studio C++ 2013.
 
|-
 
|Masking
 
|'''MaskCrop'''
 
|1.1.1
 
|[http://www.dropbox.com/s/98bcjuiy2ojkz75/MaskCrop0.1.1.7z?dl=1 MaskCrop0.1.1.7z]
 
|
 
|-
 
|Multipurpose
 
|'''[[MaskTools2]]'''
 
|b2
 
|[http://github.com/tp7/masktools/releases/download/b1/masktools2-x64.zip masktools2-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Multipurpose
 
|'''[[MaskTools2]]'''
 
|2.2.7
 
|[https://github.com/pinterf/masktools/releases masktools2-v2.2.7.7z (20170421)]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Blurring
 
|'''[[MedianBlur2]]'''
 
|0.94
 
|[http://github.com/tp7/MedianBlur2/releases/download/0.94/MedianBlur2-x64.zip MedianBlur2-x64.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2012.
 
|-
 
|Denoiser
 
|'''[http://avisynth.org.ru/docs/english/externalfilters/mipsmooth.htm MipSmooth]'''
 
|1.1.2
 
|[http://members.optusnet.com.au/squid_80/MipSmooth64.zip MipSmooth64.zip] - [http://members.optusnet.com.au/squid_80/sources/mipsmooth64src.zip source]
 
|Compiled by squid_80 - [http://forum.doom9.org/showthread.php?t=64940 discussion thread]
 
|-
 
|Unclassified
 
|'''[http://forum.doom9.org/showthread.php?t=174162 modPlus]'''
 
|30 Dec 2016
 
|[http://www.avisynth.nl/users/vcmohan/modPlus/modPlus.7z modPlus.7z]
 
|
 
|-
 
|Denoiser
 
|'''[[MosquitoNR]]'''
 
|0.10
 
|[http://www.dropbox.com/s/0dgrruxne80izus/MosquitoNR_0.10_x64.zip?dl=1 MosquitoNR_0.10_x64.zip]
 
|Compiled with Intel C++ Compiler XE 14.
 
|-
 
|Unclassified
 
|'''[http://forum.doom9.org/showthread.php?t=174163 movePlus]'''
 
|30 Dec 2016
 
|[http://www.avisynth.nl/users/vcmohan/movePlus/movePlus.7z movePlus.7z]
 
|
 
|-
 
|Source
 
|'''[http://github.com/chikuzen/MPEG2DecPlus MPEG2DecPlus]'''
 
|0.1.1
 
|[http://kuroko.fushizen.eu/bin/mpeg2decplus-0.1.1.zip mpeg2decplus-0.1.1.zip] [http://web.archive.org/web/20161102003551/https://kuroko.fushizen.eu/bin/mpeg2decplus-0.1.1.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Sharpener
 
|'''[[MSharpen]]'''
 
|0.9
 
|[http://github.com/tp7/msharpen/releases/download/0.9/msharpen-x64.zip msharpen-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Interpolation
 
|'''[[MVTools]]'''
 
|2.7.16.22
 
|[http://github.com/pinterf/mvtools/releases mvtools-2.7.16.22-with-depans.7z]
 
|Older MVTools 2.6.0.5 compiled with Intel Parallel Studio XE 2015 Composer Edition for C++: [http://www.dropbox.com/s/swk97z4q834vugk/mvtools_2.6.0.5_x64.zip?dl=1 mvtools_2.6.0.5_x64.zip]
 
|-
 
|Audio
 
|'''[[NicAudio]]'''
 
|2.0.5
 
|[http://www.dropbox.com/s/lroqakipuoqnzby/NicAudio2.0.5_x64.zip?dl=1 NicAudio2.0.5_x64.zip]
 
|Latest version is 2.0.6
 
|-
 
|Denoiser
 
|'''[http://www.avisynth.nl/users/vcmohan/NirMalam/NirMalam.html NirMalam]'''
 
|17 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/NirMalam/NirMalam64.7z NirMalam64.7z]
 
|
 
|-
 
|Resizer/AA
 
|'''[[nnedi3]]'''
 
|0.9.4.21
 
|[http://github.com/jpsdr/NNEDI3/releases NNEDI3_v0_9_4_21_x64.7z]
 
|Compiled by jpsdr, [http://forum.doom9.org/showthread.php?t=170083 discussion thread]. Original nnedi3 v0.9.4 compiled with Intel C++ Compiler XE 14: [http://www.dropbox.com/s/fovpn5z9jy4goft/nnedi3_0.9.4_x64.zip?dl=1 nnedi3_0.9.4_x64.zip]
 
|-
 
|Conversion
 
|'''[http://github.com/chikuzen/PlanarTools PlanarTools]'''
 
|0.2.0
 
|[http://github.com/chikuzen/PlanarTools/releases PlanarTools-0.2.0.zip]
 
|Compiled with Microsoft Visual Studio C++ 2013.
 
|-
 
|Resizer
 
|'''[[PointSize]]'''
 
|0.2
 
|[http://www.dropbox.com/s/2uvflijgrngvi7x/PointSize_0.2.zip?dl=1 PointSize_0.2.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Source
 
|'''[[RawSource26]]'''
 
|20160528
 
|[http://github.com/chikuzen/RawSource_2.6x/releases RawSource26-20160528.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Restoration
 
|'''[http://github.com/chikuzen/ReduceFlicker/tree/master/avisynth ReduceFlicker]'''
 
|0.0.0
 
|[http://github.com/chikuzen/ReduceFlicker/releases ReduceFlicker_26-0.0.0.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Transform
 
|'''[[Reformer]]'''
 
|14 Apr 2015
 
|[http://www.avisynth.nl/users/vcmohan/Reformer/Reformer64.7z Reformer64.7z]
 
|
 
|-
 
|Range Processing
 
|'''[[RemapFrames]]'''
 
|0.4.1-avs26
 
|[http://dl.dropboxusercontent.com/u/19797864/RemapFrames-0.4.1-avs26.zip RemapFrames-0.4.1-avs26.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
| Degrainer
 
|'''[[RemoveGrainHD]]'''
 
|0.5
 
|[http://www.dropbox.com/s/bb1mnshuuscs3jm/RemoveGrainHD_0.5_x64_bin.zip?dl=1 RemoveGrainHD_0.5_x64_bin.zip]
 
|
 
|-
 
|Resizer
 
|'''[http://svn.int64.org/viewvc/int64/resamplehq/doc/index.html ResampleHQ]'''
 
|r349
 
|[http://www.mediafire.com/download/4m31za3np4o5d24/ResampleHQ_r349_110905.7z ResampleHQ_r349_110905.7z]
 
|Compiled with Microsoft Visual Studio C++ 2013. Compiled by [http://forum.doom9.org/showthread.php?p=1722300#post1722300 l33tmeatwad] [http://forum.doom9.org/showthread.php?p=1722117#post1722117]. Older version: [http://sourceforge.net/projects/int64/files/ResampleHQ/ResampleHQ-v6.zip/download ResampleHQ-v6.zip]
 
|-
 
|Degrainer
 
|'''[[RgTools]]'''
 
|0.95
 
|[https://github.com/pinterf/RgTools/releases RgTools-0.95.7z]
 
|Compiled with  Microsoft Visual Studio C++ 2015.
 
|-
 
|Borders and Croppping
 
|'''[[RoboCrop]]'''
 
|1.10
 
|[http://www.dropbox.com/sh/7k79ey2urjekroi/AAAOmoOJDw-a56xxygbxS4VGa/RoboCrop64_1.10.7z?dl=1 RoboCrop64_1.10.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173259 Groucho2004]
 
|-
 
|Antialiasing
 
|'''[[SangNom2]]'''
 
|0.35
 
|[http://github.com/tp7/SangNom2/releases/download/0.35/SangNom2-x64.zip SangNom2-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Masking
 
|'''[[SCXvidMask]]'''
 
|1.0
 
|[http://github.com/tp7/SCXvidMask/releases/download/1.0/SCXvidMask-x64.zip SCXvidMask-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Adjust
 
|'''[http://forum.doom9.org/showthread.php?t=154971 SmoothAdjust]'''
 
|3.2
 
|[http://latoninf.free.fr/d9/SA/SmoothAdjust-v3.20.7z SmoothAdjust-v3.20.7z]
 
|
 
|-
 
|Deblocking
 
|'''[[SmoothD]]'''
 
|0.0.9pre2
 
|[http://www.dropbox.com/s/va45bi7k09t71pk/SmoothD_x64.zip?dl=1 SmoothD_x64.zip]
 
|
 
|-
 
|Deblocking
 
|'''[[SmoothD2]]'''
 
|1.0.a3
 
|[http://www.dropbox.com/s/ui8chlbzopuqs5a/SmoothD2-a3_x64.zip?dl=1 SmoothD2-a3_x64.zip]
 
|Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
 
|-
 
|Transform
 
|'''[[Spinner]]'''
 
|14 Apr 2015
 
|[http://www.avisynth.nl/users/vcmohan/Spinner/Spinner64.7z Spinner64.7z]
 
|
 
|-
 
|Interpolation
 
|'''[http://www.svp-team.com/wiki/Plugins:_SVPflow SVPflow]'''
 
|4.0.0.128
 
|[http://www.svp-team.com/files/gpl/svpflow-4.0.0.128.zip svpflow-4.0.0.128.zip]
 
|More information [http://forum.doom9.org/showpost.php?p=1722352&postcount=266 here].
 
|-
 
|Edges
 
|'''[[TCannyMod]]'''
 
|1.2.0
 
|[http://github.com/chikuzen/TCannyMod/releases TCannyMod-1.2.0.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Masking
 
|'''[http://github.com/tp7/tcolormask TColorMask]'''
 
|1.2
 
|[http://github.com/tp7/tcolormask/releases/download/1.2/tcolormask-x64.zip tcolormask-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Restoration
 
|'''[[TComb]]'''
 
|2.0
 
|[http://github.com/Elegant996/TComb/releases TComb_v2_0.7z]
 
|Compiled with Microsoft Visual Studio C++ 2013.
 
|-
 
|Unclassified
 
|'''TCPDeliver'''
 
|0.2
 
|[http://github.com/DJATOM/TCPDeliver/releases TCPDeliver-x64.7z]
 
|
 
|-
 
|Deinterlacing
 
|'''[[TDeint]]'''
 
|1.1
 
|[http://www.mediafire.com/download/kmcztm1xzjm/TDeinterlace_3-14-2010.rar TDeinterlace_3-14-2010.rar]
 
|
 
|-
 
|IVTC
 
|'''[[TelecideHints]]'''
 
|v1.1
 
|[http://www.mediafire.com/download/wnemmzntgnh/Telecidehints11.rar Telecidehints11.rar]
 
|
 
|-
 
|Edges
 
|'''[[TEMmod]]'''
 
|0.2.1
 
|[https://github.com/chikuzen/TEMmod/releases TEMmod-0.2.1.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|IVTC
 
|'''[[TIVTC]]'''
 
|1.0.6
 
|[https://github.com/pinterf/TIVTC/releases TIVTC-v1.0.6.7z (20170421)] [http://www.mediafire.com/download/i2qtli1mxik/TIVTC_3-13-2010.rar TIVTC_3-13-2010.rar 1.0.5 by JoshyD]
 
|1.0.6: Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Deflicker
 
|'''[http://www.zhitenev.com/avisynth/TimeLapseDF/ TimeLapseDF]'''
 
|1.0
 
|[http://www.zhitenev.com/avisynth/TimeLapseDF/x64/TimeLapseDF64.dll TimeLapseDF64.dll]
 
|
 
|-
 
|Masking
 
|'''[http://github.com/tp7/tmaskcleaner TMaskCleaner]'''
 
|0.91
 
|[http://github.com/tp7/tmaskcleaner/releases/download/0.91/tmaskcleaner-x64.zip tmaskcleaner-x64.zip]
 
|Compiled with Microsoft Visual Studio C++ 2012.
 
|-
 
|Masking
 
|'''[[TMM]]'''
 
|1.0
 
|[http://www.mediafire.com/download/dt2zmrjmamm/TMM_x64_20100603.7z TMM_x64_20100603.7z] - [http://www.mediafire.com/download/jrwumzfmzrd/TMM_x64src.7z source]
 
|Compiled by yo4kazu.
 
|-
 
|Masking
 
|'''[http://github.com/chikuzen/TMM2 TMM2]'''
 
|0.0
 
|[http://github.com/chikuzen/TMM2/releases TMM2-0.0.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Denoiser
 
|'''[[TNLMeans]]'''
 
|1.0.3
 
|[http://www.dropbox.com/sh/6kb3723po5oqd4b/AAAcTptSMl5v7H5HrZfz6x-ea/TNLMeans64.7z?dl=0 TNLMeans64.7z] [http://web.archive.org/web/20160817001322/http://www.iol.ie/~schubert/avs/TNLMeans64.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?t=173259 Groucho2004]. Slower version compiled by Joshy D: [http://www.mediafire.com/download/y4e3zd2zodd/TNLMeans_3-20-2010.rar TNLMeans_3-20-2010.rar]
 
|-
 
|Effects
 
|'''[[TransAll]]'''
 
|14 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/TransAll/TransAll64.7z TransAll64.7z]
 
|
 
|-
 
|Denoiser
 
|'''[[TTempSmooth]]'''
 
|0.9.4
 
|[http://www.mediafire.com/download/zv0jm3mtmzf/TTempSmooth_3-20-2010.rar TTempSmooth_3-20-2010.rar]
 
|Compiled by Joshy D.
 
|-
 
|Effects
 
|'''[http://forum.doom9.org/showthread.php?t=174399 TxPlus]'''
 
|8 Mar 2017
 
|[http://www.avisynth.nl/users/vcmohan/TxPlus/TxPlus.7z TxPlus.7z]
 
|
 
|-
 
|Source
 
|'''[[VapourSource]]'''
 
|0.0.4
 
|[http://github.com/chikuzen/VapourSource/releases VapourSource-0.0.4.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Denoiser
 
|'''[http://avisynth.org.ru/vague/vaguedenoiser.html VagueDenoiser]'''
 
|0.35.1
 
|[http://www.dropbox.com/sh/6kb3723po5oqd4b/AADj0CH9eq9d7CZqYbFgmP-va/VagueDenoiser_0351_64.7z?dl=1 VagueDenoiser0351_64.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?p=1777949#post1777949 Groucho2004].
 
|-
 
|Blurring
 
|'''[[VariableBlur]]'''
 
|0.5
 
|[http://www.mediafire.com/download/0z0hl43za6bwlb4/VariableBlur05_x64.7z VariableBlur05_x64.7z] - [http://www.mediafire.com/download/hzwtctzyu5vw9vc/variableblur05_x64src.7z source]
 
|Compiled by yo4kazu - '''Note:''' this version outdated, v0.7 is the latest version.
 
|-
 
|Debugging
 
|'''[[ViewAudio]]'''
 
|0.3.01
 
|[http://www.mediafire.com/download/iyeo4xjlm87hjwq/ViewAudio_x64.7z ViewAudio_x64.7z] - [http://www.mediafire.com/download/81kg55yaiqp1nxc/ViewAudio0301_x64src.7z source]
 
|Compiled by yo4kazu.
 
|-
 
|Restoration
 
|'''[[Vinverse]]'''
 
|0.9
 
|[http://github.com/tp7/vinverse/releases/download/0.9/vinverse-x64.zip vinverse-x64.zip]
 
|Compiled with  Microsoft Visual Studio C++ 2012.
 
|-
 
|Subtitles
 
|'''[http://web.archive.org/web/20141227072702/https://code.google.com/p/vsfiltermod/ VSFilterMod]'''
 
|r90
 
|[http://yadi.sk/d/Mz3AmI4PYwjPu VSFilterMod64.dll]
 
|'''Note:''' this version outdated, r111 is the latest version.
 
|-
 
|Sharpener
 
|'''[[WarpSharp]]'''
 
|2008
 
|[http://www.dropbox.com/s/xf49js31m1bw2o1/warpsharp64.zip?dl=1 warpsharp64.zip]
 
|
 
|-
 
|Unclassified
 
|'''[http://www.avisynth.nl/users/vcmohan/WaterShed/Watershed.html WaterShed]'''
 
|23 Oct 2015
 
|[http://www.avisynth.nl/users/vcmohan/WaterShed/Watershed64.7z Watershed64.7z]
 
|
 
|-
 
|Audio
 
|'''[[Waveform]]'''
 
|0.3
 
|[http://www.dropbox.com/s/ufkw5w0nn79qzd5/waveform.zip?dl=1 waveform.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015. Compiled by [http://forum.doom9.org/showthread.php?p=1751960#post1751960 `Orum].
 
|-
 
|Denoiser
 
|'''[http://forum.doom9.org/showthread.php?t=172966 xNLMeans]'''
 
|0.03
 
|[http://www.mediafire.com/download/4stpv24pvpfclzm/xNLMeans_0.03_20160324.zip xNLMeans_0.03_20160324.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Subtitles
 
|'''[http://forum.doom9.org/showthread.php?t=168282 xy-VSFilter]'''
 
|3.1.0.746
 
|[http://github.com/Cyberbeing/xy-VSFilter/releases XySubFilter_3.1.0.746_x64_BETA3.zip]
 
|
 
|-
 
|Deinterlacing
 
|'''[[yadif]]'''
 
|1.7
 
|[http://www.dropbox.com/s/eal13otcg712rhg/yadif_1.7_x64_asm.zip?dl=1 yadif_1.7_x64_asm.zip]
 
|Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++.
 
|-
 
|Deinterlacing
 
|'''[[yadifmod]]'''
 
|1.0
 
|[http://www.dropbox.com/s/ki4djibs994vdzb/yadifmod_x64.zip?dl=1 yadifmod_x64.zip]
 
|Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++.
 
|-
 
|Deinterlacing
 
|'''[//github.com/chikuzen/yadifmod2 yadifmod2]'''
 
|0.0.3
 
|[//github.com/chikuzen/yadifmod2/releases yadifmod2-0.0.3.zip]
 
|Compiled with Microsoft Visual Studio C++ 2015.
 
|-
 
|Conversion
 
|'''[http://github.com/chikuzen/YV12To422 YV12to422]'''
 
|1.0.2
 
|[http://github.com/chikuzen/YV12To422/releases YV12To422-1.0.2.zip]
 
|Compiled with Microsoft Visual Studio C++ 2013.
 
|-
 
|Transform
 
|'''[http://forum.doom9.org/showthread.php?t=49429 Zoom]'''
 
|20140216
 
|[http://forum.doom9.org/attachment.php?attachmentid=14054&d=1392574410 Zoom.7z]
 
|Compiled by [http://forum.doom9.org/showthread.php?p=1668648#post1668648 Paser]
 
|}
 
<br>
 
More 64-bit filters can be found in the following sites but be aware that some of the plugins listed are outdated.
 
*[http://code.google.com/p/avisynth64/wiki/PluginLinks 64-Bit plugin collection by JoshyD] 
 
*[http://members.optusnet.com.au/squid_80/ squid_80's 64-bit repository]
 
*[http://web.archive.org/web/20130922222259/http://yo4kazu.110mb.com/ 64-bit filters by yo4kazu]
 
*[http://sites.google.com/site/avisynth64bitplugin/download 64bit plugins download list by poodle]
 
</div>
 
  
==Changelog==
 
<div style="max-width:62em" >
 
Please see the [[Avisynthplus/Changelog|Changelog]].
 
</div>
 
 
[[Category:AviSynth]]
 
[[Category:AviSynth]]
 
[[Category:Avisynthplus]]
 
[[Category:Avisynthplus]]
 
[[Category:Deep_color_tools]]
 
[[Category:Deep_color_tools]]

Latest revision as of 10:19, 8 February 2022


[edit] Wiki Documentation

The new content can be found under:

So far, we have new pages for:

Along with AVS+ information added to:

Still to do:

  • AddAutoloadDir and related functions.
  • StrToUtf8 and related functions.
  • ColorSpaceNameToPixelType.
  • Internal_functions#Global_Options – what do these options do?
  • Histogrambits argument needs further explanation.
  • Tweakrealcalc argument needs further explanation.
  • Need updated change logs on all filter pages.


[edit] New Features

[edit] Deep color

Since r2290 (October 2016), AviSynth+ supports 10, 12, 14, 16 and 32-bit (float) color spaces. All color formats are listed here. Support functions include ConvertBits, ConvertStacked, Extract, CombinePlanes. Deep color support has been added to all internal filters and many external plugins. See the Wiki Documentation section below for more. (TODO - tutorial)

[edit] Multithreading

See the Multithreading (MT) Notes section below. (TODO - tutorial)

[edit] Plugin Autoloader

  • 1st October 2013 | Source: here and subsequent post.

Okay, so how do multiple plugin directories interact with plugin autoloading?

As a recap, here is how it used to work in the official Avisynth:

  • Look for the string HKEY_CURRENT_USER/Software/Avisynth/PluginDir2_5 in the registry. If it exists, load plugins from the path specified there and stop.
  • If the above string didn't exist, look in HKEY_LOCAL_MACHINE/Software/AviSynth/PluginDir2_5. Try to load plugins from the path specified there.
  • Done.

First thing to note, is that classic AviSynth only ever searches for plugins in one single directory. It only knows two directories (both specified in the registry), and it only tries the second path if there is no entry for the first one.

AviSynth+'s autoloader has a list of autoload directories. It iterates over all those directories and tries to load all plugins from each. But (and a big but!) it will not load a plugin from a directory if another plugin with the same basename is already loaded. The basename of a plugin is simply its file name without the extension.

The expected use case is that you can now overlay a new plugin directory on top of another one. AviSynth+ then would load all plugins from the first folder, then load only those plugins from the second that weren't loaded from the first, then those from the third that weren't loaded from the first or second and so on. For example, let's say your usual plugin folder has a lot of plugins you normally use. But at one time you have a small number of updated plugins that you only want to use from a few scripts, but you do not yet want to replace your existing plugins globally. Then you'd just add a new plugin overlay folder, with only the new plugins in it, and that's it. All scripts that specify the new folder will autoload all plugins from your usual one, except for the new plugins, which would get loaded from the new folder. All your other scripts will still use your old plugins.

By default, AviSynth+'s autoload folder list has four paths in it, in this order:

  1. PluginDir+ in Software/Avisynth in HKEY_CURRENT_USER
  2. PluginDir+ in Software/Avisynth in HKEY_LOCAL_MACHINE
  3. PluginDir2_5 in Software/Avisynth in HKEY_CURRENT_USER
  4. PluginDir2_5 in Software/Avisynth in HKEY_LOCAL_MACHINE

This means, if there are ever plugins which will only work with AviSynth+ but not with classic AviSynth, you can put them into one of the "PluginDir+" folders. AviSynth+ will then use the classic plugins from the normal AviSynth, but if there are versions of some plugins written for AviSynth+, it will use them instead, and the classic avisynth.dll will still not be bothered with them. This is all without you having to lift a finger (except for adding the "PluginDir+" values to the registry once, until we have an installer). So to summarize all this, you have the ability to define a plugin autoload folder in the registry which will only be used by AviSynth+, but not by AviSynth, in addition to your classic plugins.

[edit] New Functions

However, another new functionality offered by AviSynth+, is that now you can also specify autoload paths in the scripts. There are two functions for this:

  • AddAutoloadDir(string path, bool toFront): this will add a new autoload folder. The string parameter is obligatory, it is the folder path where to load from. The second boolean parameter is optional, and if true (default), it will add the path to the front/beginning of the autoloader's list, which means it will be searched earlier than the rest. If it is false, the path will get added to the end of the list, so it will get searched last (unless you again add another one to the end).
  • ClearAutoloadDirs(): This will clear all the paths from the autoloader's list. Note that it is NOT a reset to the default state. ClearAutoloadDirs() will clear all folders, so if you don't add new ones after that, you have disabled the autoload functionality. This is, BTW, also a way to disable autoloading for a particular script in AviSynth+.

Here's an important note: You can only call these functions if no plugin has been autoloaded yet. Autoloading happens if the first unknown function is looked up. This means you can only call AddAutoloadDir or ClearAutoloadDirs if you have only made calls to built-in functions up to that point in the script. I suggest you start your scripts with these calls to avoid any problems.

There is only one thing left to discuss: Are there any special directories you can reference from your script? You bet there are:

  • SCRIPTDIR is the folder of the most current script. It is the path of the imported script if your script calls import()
  • MAINSCRIPTDIR is the folder of your main script, the one where execution started
  • PROGRAMDIR is the folder of the executable running the current script
  • USER_PLUS_PLUGINS is the string stored in PluginDir+ in Software/Avisynth in HKEY_CURRENT_USER
  • MACHINE_PLUS_PLUGINS is the string stored in PluginDir+ in Software/Avisynth in HKEY_LOCAL_MACHINE
  • USER_CLASSIC_PLUGINS is the string stored in PluginDir2_5 in Software/Avisynth in HKEY_CURRENT_USER
  • MACHINE_CLASSIC_PLUGINS is the string stored in PluginDir2_5 in Software/Avisynth in HKEY_LOCAL_MACHINE

... all these special constants are case-sensitive for now.

[edit] Examples

  • If you want plugins to be autoloaded from the script's "autoload" directory too, you'd write:

AddAutoloadDir("MAINSCRIPTDIR/autoload")

  • If you want plugins to be autoloaded from the script's "autoload" directory, only from there and nowhere else, you'd write:

ClearAutoloadDirs()
AddAutoloadDir("MAINSCRIPTDIR/autoload")

  • If you wanted to manually recreate the default state of the autoloading folder list, you'd write:

ClearAutoloadDirs()
AddAutoloadDir("USER_PLUS_PLUGINS", false)
AddAutoloadDir("MACHINE_PLUS_PLUGINS", false)
AddAutoloadDir("USER_CLASSIC_PLUGINS", false)
AddAutoloadDir("MACHINE_CLASSIC_PLUGINS", false)

[edit] Notes

  • Both AviSynth and AviSynth+ already query interface versions. They try to load the 2.6 interface from a plugin first, and if that is not supported, they try to load the 2.5 interface. AviSynth+ also tries to load the C interface if both of the previous ones fail. In the future, the C interface should probably be prioritized over 2.5.
  • In what contexts do MAINSCRIPTDIR and the other 'special' names get replaced with the corresponding folders? In all strings, or only when used in the argument to AddAutoloadDir?
    -- Only in AddAutoloadDir(), and even there, only if they are at the very beginning of the string. These get replaced to absolute folder paths, so if they are not at the beginning of the string, replacing them would only result in an invalid path (e.g. you'd end up with "c:" in the middle of your path).
  • Source
  • AviSynth+ autoloads plugins if any of the following happens:[1]
    • AutoloadPlugins() is called
    • LoadPlugin() is called
    • A yet unknown (non-internal) function is called
  • avs_function_exists does not find the external source filter in this case because none of the above happened. So MasterNobody's patch is the right thing to do.

[edit] GScript

GScript (a plugin for AviSynth that provides new control-flow constructs such as loops) has been incorporated natively into AviSynth+. Syntax is mostly unchanged, with two notable differences:

  • In AviSynth+ there is no need to wrap your GScript code in a string. The language extensions are native to AviSynth+ and can be used transparently.
  • The "return" statement has been changed to not only exit the GScript code block, but behaves like a normal AviSynth return statement: it causes the termination of the active script block (user function), or if not in a function, the entire script.

Links

[edit] Logging Facility

Starting with r2069, AviSynth+ received a logging facility. You can enable it using SetLogParams(string target, int "level") at the beginning of your script.

  • 'target' can be either "stderr", "stdout", or a path to a file.
  • 'level' is 1: LOG_ERROR / 2 : LOG_WARNING / 3 : LOG_INFO/ 4 : LOG_DEBUG, with increasing verbosity. By default, logging is disabled (0).

Log messages can be output by scripts using LogMsg(string msg, int "level").

If logging is enabled, AviSynth+ will output log messages by itself too. It will automatically log errors, and will issue warnings and notes to the user to inform him about potential problems, buggy plugins, suboptimal settings et cetera. There are a couple of these log messages and they come in various colors.


[edit] Multithreading (MT) Notes

See also at SetFilterMTMode, where Prefetch, SetFilterMTMode, OnCPU and others are explained.

So, how to use MT in AviSynth+? Most of it has been posted earlier actually, but let me summarize it.

By default, your script will run in single-threaded mode, just like with SEt's build. Also, just like in SEt's build, you'll have to make sure that filters use the correct MT mode, or else they might wreak havoc. There are three basic MT modes (1,2,3) and an experimental workaround mode (4) since r2440, and modes 1-3 are the same modes as in (yeah you guessed correctly) SEt's build. Which means you can use the same modes that you have used with AviSynth-MT.

There are some things though that are different and/or new in AviSynth+. The first difference is *how* you set the MT mode. In AviSynth-MT, you had to use SetMTMode(X), which caused all filters following that line to use mode X (until the next call to SetMTMode()). This meant if you needed to use multiple MT modes, you had to insert all those calls in the middle of your script, littered over many places.

[edit] Setting MT modes

AviSynth+ does it differently. In AviSynth+, you specify the MT-mode for only specific filters, and those filters will then automatically use their own mode, even if there were other MT-modes inbetween. This means you can specify all the MT modes at the beginning without polluting your script. You can even make a SetMTMode.avsi if you wish and let it autoload for all of your scripts, or import() it from their top. This is much cleaner, and it allows you to maintain all your MT-modes centrally at a single place. To make this distinction clear from AviSynth+, SetMTMode() is called SetFilterMTMode() in AviSynth+.

[edit] Enabling MT

The other difference is how you actually enable multithreading. Calling SetFilterMTMode() is not enough, it sets the MT mode, but the MT mode only has an effect if MT is enabled at all. Note this means you can safely include/import/autoload your SetFilterMTMode() calls in even single-threaded scripts, and they will not be messed up. Uhm, onto the point: You enable MT by placing a single call to Prefetch(X) at the end of your script, where X is the number of threads to use. If there is a return statement in your script it must be placed after Prefetch().

[edit] Example

# This line causes all filters that don't have an MT mode explicitly use mode 2 by default.
# Mode 2 is a relatively safe choice until you don't know most of your calls to be either mode 1 or 3.
# Compared with mode 1, mode 2 trades memory for MT-safety, but only a select few filters will work with mode 1.
SetFilterMTMode("DEFAULT_MT_MODE", 2)
or
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)

# FFVideoSource(), like most of all source filters, needs MT mode 3. 
# Note: starting  with AviSynth+ r2069, it will now automatically recognize source filters.
# If it sees a source filter which has no MT-mode specified at all, it will automatically use 
# mode 3 instead of the default MT mode.
SetFilterMTMode("FFVideoSource", 3)
or 
SetFilterMTMode("FFVideoSource", MT_SERIALIZED)

# Now comes your script as usual
FFVideoSource(...)
Trim(...)
QTGMC(...)
...

# Enable MT!
Prefetch(4)

[edit] Help filling MT modes

The following script contains MT modes for various plugins, save it as mtmodes.avsi and place in your auto-load folder. The script is a work-in-progess, there's still lots of plugins that need to be tested and validated. When the script is finalized, the only thing the user will have to write in his script is the Prefetch call, all SetFilterMtMode calls will be hidden in a single .avsi script.

Note for filter writers: filters can report their mt modes in their SetCacheHint, in this case the manual setting is not necessary.

[edit] Choosing the correct MT mode

Please do check if the actual output is correct. Fast but corrupted output is useless. Easy way of checking would be using something like ColorBars(1920, 1080, "YV12").AddGrainC(10000, 10000, seed=1) as a source filter. It doesn't always work right but will do for most stuff.[2]

Source: http://forum.doom9.org/showthread.php?p=1667439#post1667439

  • MT_NICE_FILTER: Some filters (like nnedi3) use some buffers to do their dirty work and with mode 1 you get multiple threads writing data from different frames to the same buffer. This causes corruption when later someone tries to read from this buffer and gets not what was expected. Most of the "more complicated" filters use some kind of temporary storage thus won't work well with this mode. Simple filters might.
  • MT_MULTI_INSTANCE: Mode 2 doesn't have this issue because multiple threads will get their own buffers and no data will be shared. Hence mode 2 is the "default" mode which should work with most filters, but it wastes memory like crazy (take SangNom2 for example - for 1080p YV12 frame, size of temporary buffers is about 10MB, so with 4 threads you get 40MBs on single filter invocation. Now add some usual supersampling to this and multiple invocations in most aa scripts and... you get the idea).
  • MT_SERIALIZED: If the filter requires sequential access or uses some global storage, then mode 3 is the only way to go. Source filter (filters without clip parameter) are autodetected, they do not need an explicit MT mode setting, they will automatically use MT_SERIALIZED.
  • MT_SPECIAL_MT: Experimental. Now use only for MP_Pipeline, the filter is like a source filter (no input clip parameter), internally multithreaded, and suffer heavy performance degradation from any of the three regular mt modes. Really, this is a workaround. Available from AviSynth+ version r2440. Avisynth+ 3.6 has serious mt fixes, maybe this mode is not needed anymore.

[edit] Closing notes (don't skip!)

  • Remember that MT is only stable as long as you have specified a correct MT mode for all filters.
  • Instead of the numbers 1-2-3-4, you can also use symbolic names for MT modes: MT_NICE_FILTER (1), MT_MULTI_INSTANCE (2), MT_SERIALIZED (3), MT_SPECIAL_MT (4)
  • Mode 3 (MT_SERIALIZED) is evil. It is necessary for some filters, and it is usually no problem for source filters, but it can literally completely negate all advantages of MT, if such a filter is placed near the end of your script. Let us know if you meet a non-source mode 3 filter, we might be able to do something about it, but in general, avoid such calls if you want performance. (And of course, insert what you have found into here.)
  • The new caches will save you a lot of memory in single-threaded scripts, but due to the way they work, they will also use more memory than before with MT enabled. The memory usage will scale much closer with the number of threads you have. Just something to keep in mind.
  • MT-enabled AviSynth+ triggers a latent bug in AvsPmod. Until a new version of AvsPmod is officially released, use this build. A thousand thanks to vdcrim for the fix.
  • Using too many threads can easily hurt performance a lot, because there are other bottlenecks too in your PC than just the CPU. For example, if you have a quad-core machine with 8 logical cores, less than 8 threads will often work much better than 8 or more.

[edit] Informational links

Links contain bits and pieces of how MT works in AviSynth+, correct usage, and other things MT.


[edit] Changelog

Personal tools