AviSynth+

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (reorder sections)
(moved *New Features* and less-technical portion of *MT Notes* to main page as stopgap)
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 will be dedicated to {{AvsPlusFullname}}, mainly to keep track all of its features, changes, bugs, and any other useful information.  
 
</div>
 
</div>
 +
  
 
__TOC__
 
__TOC__
Line 41: Line 42:
 
:* Need updated change logs on all filter pages.
 
:* Need updated change logs on all filter pages.
 
</div>
 
</div>
 +
 +
==New Features==
 +
===AviSynth+'s Plugin Autoloader===
 +
*'''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?
 +
 +
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:
 +
# PluginDir+ in Software/Avisynth in HKEY_CURRENT_USER
 +
# PluginDir+ in Software/Avisynth in HKEY_LOCAL_MACHINE
 +
# PluginDir2_5 in Software/Avisynth in HKEY_CURRENT_USER
 +
# 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.
 +
 +
===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:
 +
 +
*<code> AddAutoloadDir(string path, bool toFront)</code>: 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).
 +
*<code> ClearAutoloadDirs()</code>: 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 <code>AddAutoloadDir</code> or <code>ClearAutoloadDirs</code> 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:
 +
* <tt>SCRIPTDIR</tt> is the folder of the most current script. It is the path of the imported script if your script calls import()
 +
* <tt>MAINSCRIPTDIR</tt> is the folder of your main script, the one where execution started
 +
* <tt>PROGRAMDIR</tt> is the folder of the executable running the current script
 +
* <tt>USER_PLUS_PLUGINS</tt> is the string stored in PluginDir+ in Software/Avisynth in HKEY_CURRENT_USER
 +
* <tt>MACHINE_PLUS_PLUGINS</tt> is the string stored in PluginDir+ in Software/Avisynth in HKEY_LOCAL_MACHINE
 +
* <tt>USER_CLASSIC_PLUGINS</tt> is the string stored in PluginDir2_5 in Software/Avisynth in HKEY_CURRENT_USER
 +
* <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.
 +
====Examples====
 +
* If you want plugins to be autoloaded from the script's "autoload" directory too, you'd write:
 +
<code>AddAutoloadDir("MAINSCRIPTDIR/autoload")</code>
 +
 +
* If you want plugins to be autoloaded from the script's "autoload" directory, only from there and nowhere else, you'd write:
 +
<code>ClearAutoloadDirs()<br>
 +
AddAutoloadDir("MAINSCRIPTDIR/autoload")</code>
 +
 +
* If you wanted to manually recreate the default state of the autoloading folder list, you'd write:
 +
<code>ClearAutoloadDirs()<br>
 +
AddAutoloadDir("USER_PLUS_PLUGINS", false)<br>
 +
AddAutoloadDir("MACHINE_PLUS_PLUGINS", false)<br>
 +
AddAutoloadDir("USER_CLASSIC_PLUGINS", false)<br>
 +
AddAutoloadDir("MACHINE_CLASSIC_PLUGINS", false)</code>
 +
 +
====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 <tt>MAINSCRIPTDIR</tt> and the other 'special' names get replaced with the corresponding folders? In all strings, or only when used in the argument to AddAutoloadDir?<br>-- Only in <code>AddAutoloadDir()</code>, 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).
 +
*[http://forum.doom9.org/showthread.php?p=1646392#post1646392 Source]
 +
*AviSynth+ autoloads plugins if any of the following happens:[http://forum.doom9.org/showthread.php?p=1662402#post1662402]
 +
**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.
 +
 +
===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]
 +
 +
*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.
 +
*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.
 +
 +
'''Links'''
 +
*[http://forum.doom9.org/showthread.php?p=1647005#post1647005 What kind of for-construct would you like to see?]
 +
 +
===Logging Facility===
 +
Starting with r2069, AviSynth+ received a logging facility. You can enable it using <code>SetLogParams(string target, int "level")</code> at the beginning of your script.
 +
 +
* <code>'target'</code> can be either <code>"stderr"</code>, <code>"stdout"</code>, or a path to a file.
 +
 +
* <code>'level'</code> 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 <code>LogMsg(string msg, int "level")</code>.
 +
 +
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.
 +
 +
*Source: http://forum.doom9.org/showthread.php?p=1774770#post1774770
 +
<br>
 +
 +
==MT Notes==
 +
*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.
 +
 +
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.
 +
 +
===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+.
 +
 +
===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.
 +
 +
===Example ===
 +
<pre>
 +
# 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 source filters, needs MT mode 3.
 +
# Note that source filters are automatically set to this mode in recent builds.
 +
SetFilterMTMode("FFVideoSource", 3)
 +
or
 +
SetFilterMTMode("FFVideoSource", MT_SERIALIZED)
 +
 +
# Now comes your script as usual
 +
FFVideoSource(...)
 +
Trim(...)
 +
MCTemporalDenoise(...)
 +
...
 +
 +
# Enable MT!
 +
Prefetch(4)
 +
</pre>
  
 
==Developers==
 
==Developers==

Revision as of 20:50, 28 April 2017

This page will be dedicated to AviSynth+, mainly to keep track all of its features, changes, bugs, and any other useful information.


Contents


Downloads

Please see the Downloads page.

Documentation

As of March 2017 and the release of AVS+ r2445, documentation is proceeding rapidly. So far, we have:

  • Extract (ExtractY, U, V, etc)
  • CombinePlanes (includes AddAlphaPlane, RemoveAlphaPlane)
  • ConvertStacked (ConvertToStacked, ConvertFromStacked etc) filters to interface with legacy Stack16 filters.

Along with AVS+ information added to:

You will see the AVS+ icon throughout the docs where differences exist. The new content can be found here (all pages that contain the icon – mostly existing pages with a few AVS+ notes added) and here (new pages specific to AVS+)

Acting documentator: raffriff42

Coming Soon
Help Needed
  • LogMsg and related functions – noted on Avisynthplus/Developers, should these have user docs as well?
  • AddAutoloadDir and related functions – ditto.
  • ColorSpaceNameToPixelType – looks like a developers' function?
  • Internal_functions#Global_Options – what do these options do?
  • Convert – fact checkers are welcome.
  • a note on notation a proposed multi-bit-depth notation, eg: 16d-235d (comments?)
  • Histogrambits argument needs further explanation.
  • ColorYUVbits argument may need further explanation.
  • Tweakrealcalc argument needs further explanation.
  • Need updated change logs on all filter pages.

New Features

AviSynth+'s 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.

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.

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)

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.

GScript

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+:[2]

  • 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.
  • 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.

Links

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.


MT Notes

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.

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+.

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.

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 source filters, needs MT mode 3. 
# Note that source filters are automatically set to this mode in recent builds.
SetFilterMTMode("FFVideoSource", 3)
or
SetFilterMTMode("FFVideoSource", MT_SERIALIZED)

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

# Enable MT!
Prefetch(4)

Developers

Please see the Developers page.

AviSynth+ x64 plugins

All listed plugins are the latest version unless stated otherwise.

Category Filter Version Download Comments
Denoiser AdaptiveMedian 14 Oct 2015 AdaptiveMedian64.7z
Effect AddGrainC 1.7.1 AddGrainC-1.7.1.7z Compiled with Microsoft Visual Studio C++ 2012. AddGrain v1.7.0 compiled with Intel C++ Compiler XE 14: AddGrainC_1.7.0_x64.zip
Adjust AutoAdjust 2.6 AutoAdjust-v2.60.7z
Crop AutoCrop 1.2 autocrop_3-14-2010.rar Compiled by Joshy D.
Conversion AutoYUY2 20150905 AutoYUY2_20150905.7z Compiled by jpsdr.
Averaging Average 0.94 Average-v0.94.7z Compiled with Microsoft Visual Studio C++ 2015.
Unclassified AviSynthShader 1.3.7 AviSynthShader-1.3.7.zip
Resizer/Format Conversion avsresize r1a avsresize-r1a.zip
Support AVSTP 1.0.3 avstp-1.0.3.zip v1.0.1: avstp-1.0.1_x64.zip
Sharpener aWarpSharp2 20160624 aWarpSharp2-20160624.7z Compiled with Microsoft Visual Studio C++ 2015. Older version compiled with Intel Parallel Studio XE 2015 Composer Edition for C++: aWarpSharp_20120328_x64.zip
Audio BassAudio 2.4 BassAudio_x64.7z - source Compiled by yo4kazu - BASS audio library for Win64
Restoration Bifrost 2.0 bifrost-v2.0.7z Compiled with Microsoft Visual Studio C++ 2013. Compiled by l33tmeatwad.
Restoration Checkmate 0.9 checkmate-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Multipurpose CLExpr 0.91 CLExpr-x64.zip Compiled with Microsoft Visual Studio C++ 2013.
Denoisers Cnr2 2.6.1_avs26 cnr2_v261-avs26.zip Compiled with Microsoft Visual Studio C++ 2015. Compiled by Chikuzen.
Restoration CombMask 1.0.0 CombMask-1.0.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Restoration ContinuityFixer 4fd4817 ContinuityFixer.7z Compiled with Microsoft Visual Studio C++ 2013. Compiled by l33tmeatwad.
Transform DeBarrel 14 Oct 2015 DeBarrel64.7z
Unclassified DCTFilter 0.5.0 DCTFilter-0.5.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Restoration DeBlock 0.9 Deblock-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Restoration Decomb 5.2.4 decomb_5.2.4_x64.zip Compiled with Intel C++ Compiler XE 14
Degrainer DeGrainMedian 0.8.2 DeGrainMedian64.zip - source Compiled by squid_80
Restoration DeJitter 14 Oct 2015 DeJitter64.7z
Logo removal Delogo 0.05a delogo_avs+.zip Compiled with Intel C++ Compiler XE 14.
Denoiser DeNoise 14 Oct 2015 DeNoise64.7z
Denoiser DeSaltPepper 14 Oct 2015 DeSaltPepper64.7z
Denoiser DeVeed 14 Oct 2015 DeVeed64.7z
Denoiser dfttest 1.9.4 dfttest-1.9.4_x64.zip Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
Source DGDecIM b50 dgdecim_b50.zip Requires license from DGDecNV
Source DGDecNV 205x Requires license.
Source DGMPGDec 1.5.8 DGDecode_3-19-2010.rar Compiled by Joshy D, some IDCT modes are missing.
Multipurpose Dither 1.27.2 dither-1.27.2.zip
Source DSS2mod 2.0.0.13 avss_x64.zip
Resizer/AA EEDI2 0.9.2 EEDI2_092_64.7z [3] Compiled by Groucho2004. Compiled by Joshy D: EEDI2_4-10-2010.rar
Resizer/AA EEDI3 0.9.2.1 EEDI3_v0_9_2_1.7z Compiled with Microsoft Visual Studio C++ 2013. See discussion. Older version (v0.9.1) compiled by tritical (eedi3_64.dll).
Multipurpose EffectsMany 14 Oct 2015 EffectsMany64.7z
Restoration ExactDedup 0.03 ExactDedup+Version+0.03.zip
Debanding f3kdb 1.5.1 flash3kyuu_deband_1.5.1_x64.7z v2.0 prerelease (b98d6bc x86/x64): f3kdb-b98d6bc.rar - compiled with Intel C++ Compiler 2013. f3kdb-rev410.7z - compiled with Microsoft Visual Studio C++ 2013.
Resizer FCBI 0.0.0 fcbi-0.0.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Source FFmpegSource 2.23.1 FFMS2
Denoiser FFT3DFilter 2.1.1 fft3dfilter_64.7z [4] Compiled by Groucho2004. Needs the 64-bit libfftw3f-3.dll to be in your System32 directory. Compiled by Joshy D: FFT3DFilter_3-12-2010.rar
Denoiser FFT3DFilter 2.3 FFT3DFilter-v2.3.7z 10-16bits/float support. Compiled with VS2015 Update 3. Needs the 64-bit libfftw3f-3.dll to be in your System32 directory.
Denoiser FFT3DGPU 0.8.2 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 FFTQuiver64.7z
Deinterlacing FieldHint 0.11 fieldhint.rar Compiled by Joshy D.
Denoiser FluxSmooth 2nd December 2010 FluxSmooth SSE DLLs.7z Discussion thread
Sharpener FQSharp 14 Oct 2015 FQSharp64.7z
Unclassified FQPlus 30 Dec 2016 FQPlus.7z
Source FRIMSource 1.25 FRIMSource64.dll
Effect Fusion 5th March 2013 fusionx64.zip
Blurring GBlur 14 Oct 2015 GBlur64.7z
Debanding GradFun2db 1.0 gradfun2db_3-29-2010.rar Compiled by Joshy D.
Debugging Grid 14 Oct 2015 Grid64.7z
Support GRunT 1.0.1a grunt-x64.rar Compiled with Microsoft Visual Studio C++ 2015. Compiled by yesmanitsbearman
Uncategorized HealDeadPixels 1.0.0 HealDeadPixels-1.0.0-x64.zip
Blurring HBlur 14 Oct 2015 HBlur64.7z
Support HDRCore 1.1.0 HDRCore.7z
Conversion HDRMatrix 1.0.0 HDRMatrix.7z
Effect HDRNoise 1.2.0 HDRNoise.7z
Sharpener HDRSharp 1.0.0 HDRSharp.7z
Adjust HistogramAdjust 18 Oct 2015 HistogramAdjust64.7z
Denoiser hqdn3d 0.11 hqdn3d_4-08-2010.rar Compiled by Joshy D.
Denoiser hqdn3dY 2016-02-13 Hqdn3dY.7z Modified by Rean.
IVTC IT_YV12 0103_width8K IT_YV12_0103_width8K.zip Compiled with Intel C++ Compiler XE 14.
IVTC Its 0.8.6 Compiled by putin999
Resizer JincResize r44 jincresize_r44.zip Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
Color correction KelvinColorShift 1.0.0 KelvinColorShift-1.0.0-x64.zip
Denoiser KNLMeansCL 1.0.2 KNLMeansCL-v1.0.2.zip Compiled with Microsoft Visual Studio C++ 2015.
Source LSMASHSource r8xx L-SMASH-Works Compiled with Microsoft Visual Studio C++ 2013.
Masking MaskCrop 1.1.1 MaskCrop0.1.1.7z
Multipurpose MaskTools2 b2 masktools2-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Multipurpose MaskTools2 2.2.7 masktools2-v2.2.7.7z (20170421) Compiled with Microsoft Visual Studio C++ 2015.
Blurring MedianBlur2 0.94 MedianBlur2-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Denoiser MipSmooth 1.1.2 MipSmooth64.zip - source Compiled by squid_80 - discussion thread
Unclassified modPlus 30 Dec 2016 modPlus.7z
Denoiser MosquitoNR 0.10 MosquitoNR_0.10_x64.zip Compiled with Intel C++ Compiler XE 14.
Unclassified movePlus 30 Dec 2016 movePlus.7z
Source MPEG2DecPlus 0.1.1 mpeg2decplus-0.1.1.zip [5] Compiled with Microsoft Visual Studio C++ 2015.
Sharpener MSharpen 0.9 msharpen-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Interpolation MVTools 2.7.16.22 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++: mvtools_2.6.0.5_x64.zip
Audio NicAudio 2.0.5 NicAudio2.0.5_x64.zip Latest version is 2.0.6
Denoiser NirMalam 17 Oct 2015 NirMalam64.7z
Resizer/AA nnedi3 0.9.4.21 NNEDI3_v0_9_4_21_x64.7z Compiled by jpsdr, discussion thread. Original nnedi3 v0.9.4 compiled with Intel C++ Compiler XE 14: nnedi3_0.9.4_x64.zip
Conversion PlanarTools 0.2.0 PlanarTools-0.2.0.zip Compiled with Microsoft Visual Studio C++ 2013.
Resizer PointSize 0.2 PointSize_0.2.zip Compiled with Microsoft Visual Studio C++ 2015.
Source RawSource26 20160528 RawSource26-20160528.zip Compiled with Microsoft Visual Studio C++ 2015.
Restoration ReduceFlicker 0.0.0 ReduceFlicker_26-0.0.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Transform Reformer 14 Apr 2015 Reformer64.7z
Range Processing RemapFrames 0.4.1-avs26 RemapFrames-0.4.1-avs26.zip Compiled with Microsoft Visual Studio C++ 2015.
Degrainer RemoveGrainHD 0.5 RemoveGrainHD_0.5_x64_bin.zip
Resizer ResampleHQ r349 ResampleHQ_r349_110905.7z Compiled with Microsoft Visual Studio C++ 2013. Compiled by l33tmeatwad [6]. Older version: ResampleHQ-v6.zip
Degrainer RgTools 0.95 RgTools-0.95.7z Compiled with Microsoft Visual Studio C++ 2015.
Borders and Croppping RoboCrop 1.10 RoboCrop64.7z Compiled by Groucho2004
Antialiasing SangNom2 0.35 SangNom2-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Masking SCXvidMask 1.0 SCXvidMask-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Adjust SmoothAdjust 3.2 SmoothAdjust-v3.20.7z
Deblocking SmoothD 0.0.9pre2 SmoothD_x64.zip
Deblocking SmoothD2 1.0.a3 SmoothD2-a3_x64.zip Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++
Transform Spinner 14 Apr 2015 Spinner64.7z
Interpolation SVPflow 4.0.0.128 svpflow-4.0.0.128.zip More information here.
Edges TCannyMod 1.2.0 TCannyMod-1.2.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Masking TColorMask 1.2 tcolormask-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Restoration TComb 2.0 TComb_v2_0.7z Compiled with Microsoft Visual Studio C++ 2013.
Unclassified TCPDeliver 0.2 TCPDeliver-x64.7z
Deinterlacing TDeint 1.1 TDeinterlace_3-14-2010.rar
IVTC TelecideHints v1.1 Telecidehints11.rar
Edges TEMmod 0.2.1 TEMmod-0.2.1.zip Compiled with Microsoft Visual Studio C++ 2015.
IVTC TIVTC 1.0.6 TIVTC-v1.0.6.7z (20170421) TIVTC_3-13-2010.rar 1.0.5 by JoshyD 1.0.6: Compiled with Microsoft Visual Studio C++ 2015.
Deflicker TimeLapseDF 1.0 TimeLapseDF64.dll
Masking TMaskCleaner 0.91 tmaskcleaner-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Masking TMM 1.0 TMM_x64_20100603.7z - source Compiled by yo4kazu.
Masking TMM2 0.0 TMM2-0.0.zip Compiled with Microsoft Visual Studio C++ 2015.
Denoiser TNLMeans 1.0.3 TNLMeans64.7z [7] Compiled by Groucho2004. Slower version compiled by Joshy D: TNLMeans_3-20-2010.rar
Effects TransAll 14 Oct 2015 TransAll64.7z
Denoiser TTempSmooth 0.9.4 TTempSmooth_3-20-2010.rar Compiled by Joshy D.
Effects TxPlus 8 Mar 2017 TxPlus.7z
Source VapourSource 0.0.4 VapourSource-0.0.4.zip Compiled with Microsoft Visual Studio C++ 2015.
Denoiser VagueDenoiser 0.35.1 VagueDenoiser0351_64.7z Compiled by Groucho2004.
Blurring VariableBlur 0.5 VariableBlur05_x64.7z - source Compiled by yo4kazu - Note: this version outdated, v0.7 is the latest version.
Debugging ViewAudio 0.3.01 ViewAudio_x64.7z - source Compiled by yo4kazu.
Restoration Vinverse 0.9 vinverse-x64.zip Compiled with Microsoft Visual Studio C++ 2012.
Subtitles VSFilterMod r90 VSFilterMod64.dll Note: this version outdated, r111 is the latest version.
Sharpener WarpSharp 2008 warpsharp64.zip
Unclassified WaterShed 23 Oct 2015 Watershed64.7z
Audio Waveform 0.3 waveform.zip Compiled with Microsoft Visual Studio C++ 2015. Compiled by `Orum.
Denoiser xNLMeans 0.03 xNLMeans_0.03_20160324.zip Compiled with Microsoft Visual Studio C++ 2015.
Subtitles xy-VSFilter 3.1.0.746 XySubFilter_3.1.0.746_x64_BETA3.zip
Deinterlacing yadif 1.7 yadif_1.7_x64_asm.zip Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++.
Deinterlacing yadifmod 1.0 yadifmod_x64.zip Compiled with Intel Parallel Studio XE 2015 Composer Edition for C++.
Deinterlacing yadifmod2 0.0.3 yadifmod2-0.0.3.zip Compiled with Microsoft Visual Studio C++ 2015.
Conversion YV12to422 1.0.2 YV12To422-1.0.2.zip Compiled with Microsoft Visual Studio C++ 2013.
Transform Zoom 20140216 Zoom.7z Compiled by Paser


More 64-bit filters can be found in the following sites but be aware that some of the plugins listed are outdated.

Changelog

Please see the Changelog.

Personal tools