Files
staxrip/General/Package.vb
T

2322 lines
124 KiB
VB.net

Imports System.Text.RegularExpressions
Imports Microsoft.Win32
Public Class Package
Implements IComparable(Of Package)
Property Description As String
Property DirPath As String
Property DownloadURL As String
Property Filename As String
Property FileNotFoundMessage As String
Property HelpFile As String
Property HelpURL As String
Property HelpURLFunc As Func(Of ScriptEngine, String)
Property HintDirectories As String()
Property HintDirFunc As Func(Of String)
Property IgnoreVersion As Boolean
Property IsIncluded As Boolean = True
Property IsLaunchable As Boolean
Property IsRequiredFunc As Func(Of Boolean)
Property Name As String
Property SetupFilename As String
Property StatusFunc As Func(Of String)
Property TreePath As String
Property Version As String
Property VersionDate As Date
Property WebURL As String
Overridable Property FixedDir As String
Property URL As String
Get
Return WebURL
End Get
Set(value As String)
WebURL = value
HelpURL = value
End Set
End Property
Private SetupActionValue As Action
Property SetupAction As Action
Get
If SetupActionValue Is Nothing AndAlso File.Exists(Folder.Apps + SetupFilename) Then
SetupActionValue = Sub() g.StartProcess(Folder.Apps + SetupFilename)
End If
Return SetupActionValue
End Get
Set(value As Action)
SetupActionValue = value
End Set
End Property
Shared Property Items As New SortedDictionary(Of String, Package)
Shared Property Python As Package = Add(New PythonPackage)
Shared Property DGIndexIM As Package = Add(New DGIndexIMPackage)
Shared Property DGIndexNV As Package = Add(New DGIndexNVPackage)
Shared Property dsmux As Package = Add(New dsmuxPackage)
Shared Property Haali As Package = Add(New HaaliSplitter)
Shared Property NicAudio As Package = Add(New NicAudioPackage)
Shared Property qaac As Package = Add(New qaacPackage)
Shared Property UnDot As Package = Add(New UnDotPackage)
'Shared Property SvtAv1 As Package = Add(New Package With {
' .Name = "SVT-AV1",
' .Filename = "SvtAv1EncApp.exe",
' .DirPath = "Encoders\SVT-AV1",
' .WebURL = "https://github.com/OpenVisualCloud/SVT-AV1",
' .HelpURL = "https://github.com/OpenVisualCloud/SVT-AV1/blob/master/Docs/svt-av1_encoder_user_guide.md",
' .Description = "The Scalable Video Technology AV1 Encoder."})
Shared Property eac3to As Package = Add(New Package With {
.Name = "eac3to",
.Filename = "eac3to.exe",
.DirPath = "Audio\eac3to",
.WebURL = "http://forum.doom9.org/showthread.php?t=125966",
.HelpURL = "http://en.wikibooks.org/wiki/Eac3to/How_to_Use",
.Description = "Audio conversion command line app."})
Shared Property ffmpeg As Package = Add(New Package With {
.Name = "ffmpeg",
.Filename = "ffmpeg.exe",
.DirPath = "Encoders\ffmpeg",
.WebURL = "http://ffmpeg.org",
.HelpURL = "http://www.ffmpeg.org/ffmpeg-all.html",
.Description = "Versatile audio video converter."})
Shared Property MediaInfo As Package = Add(New Package With {
.Name = "MediaInfo",
.Filename = "MediaInfo.dll",
.DirPath = "Support\MediaInfo",
.WebURL = "http://mediaarea.net/en/MediaInfo",
.Description = "MediaInfo is used by StaxRip to read infos from media files."})
Shared Property MP4Box As Package = Add(New Package With {
.Name = "MP4Box",
.Filename = "MP4Box.exe",
.DirPath = "Support\MP4Box",
.WebURL = "http://gpac.wp.mines-telecom.fr/",
.HelpURL = "http://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation",
.Description = "MP4Box is a MP4 muxing and demuxing command line app."})
Shared Property AviSynth As Package = Add(New Package With {
.Name = "AviSynth+",
.Filename = "avisynth.dll",
.WebURL = "http://avisynth.nl/index.php/AviSynth%2B",
.Description = "StaxRip support both AviSynth+ and VapourSynth as scripting based video processing tool.",
.FixedDir = Folder.System,
.IsRequiredFunc = Function() p.Script.Engine = ScriptEngine.AviSynth,
.SetupFilename = "Installers\AviSynthPlus-MT-r2772.exe"})
Shared Property chapterEditor As Package = Add(New Package With {
.Name = "chapterEditor",
.DirPath = "Support\chapterEditor",
.Filename = "chapterEditor.exe",
.IsLaunchable = True,
.Description = "ChapterEditor is a chapter editor and menu editor for OGG, XML, TTXT, m.AVCHD, m.editions-mkv, Matroska Menu.",
.WebURL = "https://forum.doom9.org/showthread.php?t=169984"})
Shared Property xvid_encraw As Package = Add(New Package With {
.Name = "xvid_encraw",
.DirPath = "Encoders\xvid_encraw",
.Filename = "xvid_encraw.exe",
.Description = "XviD command line encoder",
.HelpFile = "help.txt",
.WebURL = "http://www.xvid.com"})
Shared Property Decomb As Package = Add(New PluginPackage With {
.Name = "Decomb",
.Filename = "Decomb.dll",
.WebURL = "http://rationalqm.us/decomb/decombnew.html",
.HelpFile = "DecombReferenceManual.html",
.Description = "This package of plugin functions for Avisynth provides the means for removing combing artifacts from telecined progressive streams, interlaced streams, and mixtures thereof. Functions can be combined to implement inverse telecine (IVTC) for both NTSC and PAL streams.",
.AvsFilterNames = {"Telecide", "FieldDeinterlace", "Decimate", "IsCombed"}})
Shared Property temporalsoften As Package = Add(New PluginPackage With {
.Name = "temporalsoften",
.Filename = "temporalsoften.dll",
.VSFilterNames = {"TemporalSoften"}})
Shared Property fdkaac As Package = Add(New Package With {
.Name = "fdkaac",
.Filename = "fdkaac.exe",
.DirPath = "Audio\fdkaac",
.HelpFile = "help.txt",
.Description = "Command line AAC encoder based on libfdk-aac.",
.URL = "http://github.com/nu774/fdkaac",
.IsRequiredFunc = Function() TypeOf p.Audio0 Is GUIAudioProfile AndAlso DirectCast(p.Audio0, GUIAudioProfile).Params.Encoder = GuiAudioEncoder.fdkaac OrElse TypeOf p.Audio1 Is GUIAudioProfile AndAlso DirectCast(p.Audio1, GUIAudioProfile).Params.Encoder = GuiAudioEncoder.fdkaac})
Shared Property AVSMeter As Package = Add(New Package With {
.Name = "AVSMeter",
.DirPath = "support\AVSMeter",
.Filename = "AVSMeter64.exe",
.Description = "AVSMeter runs an Avisynth script with virtually no overhead, displays clip info, CPU and memory usage and the minimum, maximum and average frames processed per second. It measures how fast Avisynth can serve frames to a client application and comes in handy when testing filters/plugins to evaluate their performance and memory requirements.",
.HelpFile = "doc\AVSMeter.html",
.WebURL = "http://forum.doom9.org/showthread.php?t=174797",
.StartAction = Sub()
If p.SourceFile = "" Then
g.DefaultCommands.ExecuteCommandLine(Package.AVSMeter.Path.Escape + " avsinfo" + BR + "pause", False, False, True)
Else
g.DefaultCommands.ExecuteCommandLine(Package.AVSMeter.Path.Escape + " " + p.Script.Path.Escape + BR + "pause", False, False, True)
End If
End Sub})
Shared Property vspipe As Package = Add(New Package With {
.Name = "vspipe",
.Filename = "vspipe.exe",
.Description = "vspipe is installed by VapourSynth and used to pipe VapourSynth scripts to encoding apps.",
.WebURL = "http://www.vapoursynth.com/doc/vspipe.html",
.IsRequiredFunc = Function() p.Script.Engine = ScriptEngine.VapourSynth,
.HintDirFunc = AddressOf Package.GetVapourSynthHintDir,
.StartAction = Sub()
If p.SourceFile = "" Then
g.DefaultCommands.ExecuteCommandLine(Package.vspipe.Path.Escape + BR + "pause", False, False, True)
Else
p.Script.Synchronize()
g.DefaultCommands.ExecuteCommandLine(Package.vspipe.Path.Escape + " --info " + p.Script.Path.Escape + " -" + BR + "pause", False, False, True)
End If
End Sub})
Shared Property VapourSynth As Package = Add(New Package With {
.Name = "VapourSynth",
.Filename = "vapoursynth.dll",
.Description = "StaxRip supports both AviSynth+ and VapourSynth as scripting based video processing tool.",
.WebURL = "http://www.vapoursynth.com",
.HelpURL = "http://www.vapoursynth.com/doc",
.SetupFilename = "Installers\VapourSynth64-R48.exe",
.IsRequiredFunc = Function() p.Script.Engine = ScriptEngine.VapourSynth,
.HintDirFunc = AddressOf Package.GetVapourSynthHintDir})
Shared Property DGIndex As Package = Add(New Package With {
.Name = "DGIndex",
.Filename = "DGIndex.exe",
.IsLaunchable = True,
.DirPath = "Support\DGIndex",
.HelpFile = "DGIndexManual.html",
.Description = "MPEG-2 demuxing and indexing app.",
.WebURL = "http://rationalqm.us/dgmpgdec/dgmpgdec.html"})
Shared Property BDSup2SubPP As Package = Add(New Package With {
.Name = "BDSup2Sub++",
.Filename = "bdsup2sub++.exe",
.IsLaunchable = True,
.DirPath = "Subtitles\BDSup2Sub++",
.WebURL = "http://forum.doom9.org/showthread.php?p=1613303",
.Description = "Converts Blu-ray subtitles to other formats like VobSub."})
Shared Property Rav1e As Package = Add(New Package With {
.Name = "rav1e",
.Filename = "rav1e.exe",
.DirPath = "Encoders\Rav1e",
.Description = "a Faster and Safer AV1 Encoder",
.WebURL = "https://github.com/xiph/rav1e",
.HelpFile = "help.txt"})
Shared Property MTN As Package = Add(New Package With {
.Name = "mtn",
.Filename = "mtn.exe",
.DirPath = "Thumbnails\MTN",
.Description = "movie thumbnailer saves thumbnails (screenshots) of movie or video files to jpeg files. StaxRip uses a custom built version with HEVC support added in and also includes the latest FFMPEG.",
.WebURL = "https://github.com/Revan654/Movie-Thumbnailer-mtn",
.HelpURL = "http://moviethumbnail.sourceforge.net/usage.en.html"})
Shared Property SubtitleEdit As Package = Add(New Package With {
.Name = "SubtitleEdit",
.Filename = "SubtitleEdit.exe",
.IsLaunchable = True,
.DirPath = "Support\SubtitleEdit",
.WebURL = "http://www.nikse.dk/SubtitleEdit",
.HelpURL = "http://www.nikse.dk/SubtitleEdit/Help",
.Description = "Subtitle Edit is a open source subtitle editor."})
Shared Property mpvnet As Package = Add(New Package With {
.Name = "mpv.net",
.Filename = "mpvnet.exe",
.IsLaunchable = True,
.URL = "https://github.com/stax76/mpv.net",
.Description = "libmpv based media player."})
Shared Property MpcBE As Package = Add(New Package With {
.Name = "MPC-BE",
.Filename = "mpc-be64.exe",
.IsLaunchable = True,
.IsIncluded = False,
.IgnoreVersion = True,
.IsRequired = False,
.URL = "https://sourceforge.net/projects/mpcbe/",
.Description = "DirectShow based media player.",
.HintDirectories = {Registry.LocalMachine.GetString("SOFTWARE\MPC-BE", "ExePath").Dir, Folder.Programs + "MPC-BE x64\"}})
Shared Property MpcHC As Package = Add(New Package With {
.Name = "MPC-HC",
.Filename = "mpc-hc64.exe",
.IsLaunchable = True,
.IsIncluded = False,
.IgnoreVersion = True,
.IsRequired = False,
.URL = "https://mpc-hc.org/",
.Description = "DirectShow based media player.",
.HintDirectories = {Registry.CurrentUser.GetString("Software\MPC-HC\MPC-HC", "ExePath").Dir, Folder.Programs + "MPC-HC\"}})
Shared Property modPlus As Package = Add(New PluginPackage With {
.Name = "modPlus",
.Filename = "modPlus.dll",
.URL = "http://www.avisynth.nl/users/vcmohan/modPlus/modPlus.html",
.Description = "This plugin has 9 functions, which modify values of color components to attenuate noise, blur or equalize input.",
.AvsFilterNames = {"GBlur", "MBlur", "Median", "minvar", "Morph", "SaltPepper", "SegAmp", "TweakHist", "Veed"}})
Shared Property checkmate As Package = Add(New PluginPackage With {
.Name = "checkmate",
.Filename = "checkmate.dll",
.WebURL = "http://github.com/tp7/checkmate",
.Description = "Spatial and temporal dot crawl reducer. Checkmate is most effective in static or low motion scenes. When using in high motion scenes (or areas) be careful, it's known to cause artifacts with its default values.",
.AvsFilterNames = {"checkmate"}})
Shared Property MedianBlur2 As Package = Add(New PluginPackage With {
.Name = "MedianBlur2",
.Filename = "MedianBlur2.dll",
.URL = "http://avisynth.nl/index.php/MedianBlur2",
.Description = "Implementation of constant time median filter for AviSynth.",
.AvsFilterNames = {"MedianBlur", "MedianBlurTemporal"}})
Shared Property AutoAdjust As Package = Add(New PluginPackage With {
.Name = "AutoAdjust",
.Filename = "AutoAdjust.dll",
.URL = "http://forum.doom9.org/showthread.php?t=167573",
.Description = "AutoAdjust is an automatic adjustement filter. It calculates statistics of clip, stabilizes them temporally and uses them to adjust luminance gain & color balance.",
.AvsFilterNames = {"AutoAdjust"}})
Shared Property SmoothAdjust As Package = Add(New PluginPackage With {
.Name = "SmoothAdjust",
.Filename = "SmoothAdjust.dll",
.URL = "http://forum.doom9.org/showthread.php?t=154971",
.Description = "SmoothAdjust is a set of 5 plugins to make YUV adjustements.",
.AvsFilterNames = {"SmoothTweak", "SmoothCurve", "SmoothCustom", "SmoothTools"}})
Shared Property EEDI3 As Package = Add(New PluginPackage With {
.Name = "EEDI3",
.Filename = "EEDI3.dll",
.URL = "http://avisynth.nl/index.php/EEDI3",
.Description = "EEDI3 (Enhanced Edge Directed Interpolation) resizes an image by 2x in the vertical direction by copying the existing image to 2*y(n) and interpolating the missing field.",
.AvsFilterNames = {"EEDI3"},
.AvsFiltersFunc = Function() {New VideoFilter("Field", "EEDI3", "EEDI3()")}})
Shared Property EEDI2 As Package = Add(New PluginPackage With {
.Name = "EEDI2",
.Filename = "EEDI2.dll",
.URL = "http://avisynth.nl/index.php/EEDI2",
.Description = "EEDI2 (Enhanced Edge Directed Interpolation) resizes an image by 2x in the vertical direction by copying the existing image to 2*y(n) and interpolating the missing field.",
.AvsFilterNames = {"EEDI2"}})
Shared Property VSRip As Package = Add(New Package With {
.Name = "VSRip",
.Filename = "VSRip.exe",
.DirPath = "subtitles\VSRip",
.Description = "VSRip rips VobSub subtitles.",
.IsLaunchable = True,
.WebURL = "http://sourceforge.net/projects/guliverkli"})
Shared Property flash3kyuu_deband As Package = Add(New PluginPackage With {
.Name = "flash3kyuu_deband",
.Filename = "flash3kyuu_deband.dll",
.WebURL = "http://forum.doom9.org/showthread.php?t=161411",
.HelpURL = "http://f3kdb.readthedocs.io/en/latest/#",
.Description = "Simple debanding filter that can be quite effective for some anime sources.",
.VSFilterNames = {"core.f3kdb.Deband"},
.AvsFilterNames = {"f3kdb"}})
Shared Property vinverse As Package = Add(New PluginPackage With {
.Name = "vinverse",
.Filename = "vinverse.dll",
.WebURL = "http://avisynth.nl/index.php/Vinverse",
.Description = "A modern rewrite of a simple but effective plugin to remove residual combing originally based on an AviSynth script by Did�e and then written as a plugin by tritical.",
.AvsFilterNames = {"vinverse", "vinverse2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "RCR | Vinverse", "$select:Vinverse|vinverse(sstr=2.7, amnt=255, uv=3, scl=0.25);Vinverse2|vinverse2(sstr=2.7, amnt=255, uv=3, scl=0.25)$")}})
Shared Property scenechange As Package = Add(New PluginPackage With {
.Name = "scenechange",
.Filename = "scenechange.dll",
.VSFilterNames = {"scenechange"}})
Shared Property avs2pipemod As Package = Add(New Package With {
.Name = "avs2pipemod",
.Filename = "avs2pipemod64.exe",
.DirPath = "Support\avs2pipemod",
.WebURL = "http://github.com/chikuzen/avs2pipemod",
.Description = "Given an AviSynth script as input, avs2pipemod can send video, audio, or information of various types to stdout for consumption by command line encoders or other tools.",
.StartAction = Sub()
If p.SourceFile = "" Then
g.DefaultCommands.ExecuteCommandLine(Package.avs2pipemod.Path.Escape + BR + "pause", False, False, True)
Else
p.Script.Synchronize()
g.DefaultCommands.ExecuteCommandLine(Package.avs2pipemod.Path.Escape + " -info " + p.Script.Path.Escape + BR + "pause", False, False, True)
End If
End Sub})
Shared Property x264 As Package = Add(New Package With {
.Name = "x264",
.Filename = "x264.exe",
.DirPath = "Encoders\x264",
.Description = "H.264 video encoding command line app.",
.WebURL = "http://www.videolan.org/developers/x264.html",
.HelpFile = "help.txt",
.HelpURL = "http://www.chaneru.com/Roku/HLS/X264_Settings.htm"})
Shared Property x265 As Package = Add(New Package With {
.Name = "x265",
.DirPath = "Encoders\x265",
.Filename = "x265.exe",
.WebURL = "http://x265.org",
.HelpURL = "http://x265.readthedocs.org",
.HelpFile = "help.txt",
.Description = "H.265 video encoding command line app."})
Shared Property mkvmerge As Package = Add(New Package With {
.Name = "mkvmerge",
.Filename = "mkvmerge.exe",
.DirPath = "Support\MKVToolNix",
.WebURL = "https://mkvtoolnix.download/",
.HelpURL = "https://mkvtoolnix.download/docs.html",
.Description = "MKV muxing tool."})
Shared Property mkvinfo As Package = Add(New Package With {
.Name = "mkvinfo",
.Filename = "mkvinfo.exe",
.DirPath = "Support\MKVToolNix",
.WebURL = "https://mkvtoolnix.download/",
.HelpURL = "https://mkvtoolnix.download/docs.html",
.Description = "MKV muxing tool."})
Shared Property PNGopt As Package = Add(New Package With {
.Name = "PNGopt",
.Filename = "apngopt.exe",
.HelpFile = "help.txt",
.DirPath = "Thumbnails\PNGopt",
.WebURL = "https://sourceforge.net/projects/apng/files/",
.Description = "Opt Tools For Creating PNG"})
Shared Property mkvextract As Package = Add(New Package With {
.Name = "mkvextract",
.Filename = "mkvextract.exe",
.DirPath = "Support\MKVToolNix",
.WebURL = "https://mkvtoolnix.download/",
.HelpURL = "https://mkvtoolnix.download/docs.html",
.Description = "MKV demuxing tool."})
Shared Property NVEnc As Package = Add(New Package With {
.Name = "NVEnc",
.Filename = "NVEncC64.exe",
.DirPath = "Encoders\NVEnc",
.WebURL = "http://github.com/rigaya/NVEnc",
.Description = "NVIDIA hardware video encoder.",
.HelpFile = "help.txt"})
Shared Property QSVEnc As Package = Add(New Package With {
.Name = "QSVEnc",
.Filename = "QSVEncC64.exe",
.DirPath = "Encoders\QSVEnc",
.Description = "Intel hardware video encoder.",
.HelpFile = "help.txt",
.WebURL = "http://github.com/rigaya/QSVEnc"})
Shared Property VCEEnc As Package = Add(New Package With {
.Name = "VCEEnc",
.Filename = "VCEEncC64.exe",
.DirPath = "Encoders\VCEEnc",
.Description = "AMD hardware video encoder.",
.HelpFile = "help.txt",
.WebURL = "http://github.com/rigaya/VCEEnc"})
Shared Property DGDecodeNV As Package = Add(New PluginPackage With {
.Name = "DGDecodeNV",
.Filename = "DGDecodeNV.dll",
.WebURL = "http://rationalqm.us/dgdecnv/dgdecnv.html",
.Description = Strings.DGDecNV,
.DirPath = "Support\DGIndexNV",
.HelpFile = "DGDecodeNVManual.html",
.IsIncluded = False,
.HintDirFunc = Function() DGIndexNV.GetStoredPath.Dir,
.IsRequiredFunc = Function() p.Script.Filters(0).Script.StartsWith("DGSource("),
.AvsFilterNames = {"DGSource"},
.VSFilterNames = {"DGSource"},
.AvsFiltersFunc = Function() {New VideoFilter("Source", "DGSource", "DGSource(""%source_file%"")")},
.VSFiltersFunc = Function() {New VideoFilter("Source", "DGSource", "clip = core.dgdecodenv.DGSource(r'%source_file%')")}})
Shared Property DGDecodeIM As Package = Add(New PluginPackage With {
.Name = "DGDecodeIM",
.Filename = "DGDecodeIM.dll",
.WebURL = "http://rationalqm.us/mine.html",
.Description = Strings.DGDecIM,
.DirPath = "Support\DGIndexIM",
.HelpFile = "Notes.txt",
.IsIncluded = False,
.HintDirFunc = Function() DGIndexIM.GetStoredPath.Dir,
.IsRequiredFunc = Function() p.Script.Filters(0).Script.StartsWith("DGSourceIM("),
.AvsFilterNames = {"DGSourceIM"},
.AvsFiltersFunc = Function() {New VideoFilter("Source", "DGSourceIM", "DGSourceIM(""%source_file%"")")}})
Shared Property FFT3DFilter As Package = Add(New PluginPackage With {
.Name = "FFT3DFilter",
.Filename = "fft3dfilter.dll",
.URL = "http://github.com/pinterf/fft3dfilter",
.Description = "FFT3DFilter uses Fast Fourier Transform method for image processing in frequency domain.",
.HelpFile = "fft3dfilter.html",
.AvsFilterNames = {"FFT3DFilter"},
.AvsFiltersFunc = Function() {New VideoFilter("Noise", "FFT3DFilter | FFT3DFilter", "FFT3DFilter()")}})
Shared Property ffms2 As Package = Add(New PluginPackage With {
.Name = "ffms2",
.Filename = "ffms2.dll",
.WebURL = "http://github.com/FFMS/ffms2",
.Description = "AviSynth+ and VapourSynth source filter supporting various input formats.",
.HelpURL = "http://github.com/FFMS/ffms2/blob/master/doc/ffms2-avisynth.md",
.AvsFilterNames = {"FFVideoSource", "FFAudioSource"},
.AvsFiltersFunc = Function() {New VideoFilter("Source", "FFVideoSource", $"FFVideoSource(""%source_file%"", cachefile=""%source_temp_file%.ffindex"")" + BR + "#AssumeFPS(25)")},
.VSFilterNames = {"ffms2"},
.VSFiltersFunc = Function() {New VideoFilter("Source", "ffms2", "clip = core.ffms2.Source(r'%source_file%', cachefile=r'%source_temp_file%.ffindex')" + BR + "#clip = core.std.AssumeFPS(clip, None, 25, 1)")}})
Shared Property VSFilterMod As Package = Add(New PluginPackage With {
.Name = "VSFilterMod",
.Filename = "VSFilterMod.dll",
.Description = "AviSynth subtitle plugin with support for vobsub srt and ass.",
.WebURL = "http://github.com/HomeOfVapourSynthEvolution/VSFilterMod",
.AvsFilterNames = {"VobSub", "TextSubMod"},
.VSFilterNames = {"vsfm.VobSub", "vsfm.TextSubMod"}})
Shared Property SangNom2 As Package = Add(New PluginPackage With {
.Name = "SangNom2",
.Filename = "SangNom2.dll",
.WebURL = "http://avisynth.nl/index.php/SangNom2",
.Description = "SangNom2 is a reimplementation of MarcFD's old SangNom filter. Originally it's a single field deinterlacer using edge-directed interpolation but nowadays it's mainly used in anti-aliasing scripts. The output is not completely but mostly identical to the original SangNom.",
.AvsFilterNames = {"SangNom2"}})
Shared Property DCTFilter As Package = Add(New PluginPackage With {
.Name = "DCTFilter",
.Filename = "DCTFilter.dll",
.DirPath = "Plugins\AVS\DCTFilter",
.Description = "A rewrite of DctFilter for Avisynth+.",
.URL = "http://github.com/chikuzen/DCTFilter",
.AvsFilterNames = {"DCTFilter", "DCTFilterD", "DCTFilter4", "DCTFilter4D", "DCTFilter8", "DCTFilter8D"}})
Shared Property DCTFilterF As Package = Add(New PluginPackage With {
.Name = "DCTFilter-f",
.Filename = "DCTFilter.dll",
.DirPath = "Plugins\VS\DCTFilter-f",
.Description = "Renewed VapourSynth port of DCTFilter.",
.URL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DCTFilter",
.VSFilterNames = {"dctf.DCTFilter"}})
Shared Property DCTFilterVS As Package = Add(New PluginPackage With {
.Name = "DCTFilter",
.Filename = "DCTFilter.dll",
.DirPath = "Plugins\VS\DCTFilter",
.Description = "Renewed VapourSynth port of DCTFilter.",
.URL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DCTFilter",
.VSFilterNames = {"dctf.DCTFilter"}})
Shared Property FFTW As Package = Add(New Package With {
.Name = "FFTW",
.DirPath = "support\FFTW",
.Filename = "libfftw3-3.dll",
.Description = "Library required by the FFT3DFilter AviSynth plugin.",
.URL = "http://www.fftw.org/",
.FixedDir = Folder.System,
.IsRequiredFunc = Function()
For Each filter In p.Script.Filters
If filter.Script.ContainsAny("fft", "FFT") Then
Return True
End If
Next
Return BM3D.IsRequired OrElse
DCTFilter.IsRequired OrElse
DCTFilterVS.IsRequired OrElse
DCTFilterF.IsRequired OrElse
DFTTestAvs.IsRequired OrElse
SMDegrain.IsRequired OrElse
MCTemporalDenoise.IsRequired OrElse
FFT3DGPU.IsRequired OrElse
FFT3DFilter.IsRequired OrElse
DFTTest.IsRequired OrElse
muvsfunc.IsRequired OrElse
havsfunc.IsRequired
End Function,
.SetupAction = Sub()
Using pr As New Process
pr.StartInfo.FileName = "xcopy.exe"
pr.StartInfo.Arguments = $"""{Folder.Apps + "\support\FFTW\"}*ff*"" ""{Folder.System}"" /Y"
pr.StartInfo.Verb = "runas"
pr.Start()
pr.WaitForExit()
If pr.ExitCode <> 0 Then MsgError("FFTW returned an error.")
End Using
End Sub})
Shared Property havsfunc As Package = Add(New PluginPackage With {
.Name = "havsfunc",
.WebURL = "http://github.com/HomeOfVapourSynthEvolution/havsfunc",
.HelpURL = "http://forum.doom9.org/showthread.php?t=166582",
.Description = "Various popular AviSynth scripts ported To VapourSynth.",
.Filename = "havsfunc.py",
.DirPath = "Plugins\VS\Scripts",
.VSFilterNames = {"havsfunc.aaf", "havsfunc.AverageFrames", "havsfunc.Bob", "havsfunc.ChangeFPS", "havsfunc.Clamp", "havsfunc.ContraSharpening", "havsfunc.daa", "havsfunc.Deblock_QED", "havsfunc.DeHalo_alpha", "havsfunc.DitherLumaRebuild", "havsfunc.EdgeCleaner", "havsfunc.FastLineDarkenMOD", "havsfunc.FineDehalo", "havsfunc.FixChromaBleedingMod", "havsfunc.GrainFactory3", "havsfunc.GrainStabilizeMC", "havsfunc.HQDeringmod", "havsfunc.InterFrame", "havsfunc.ivtc_txt60mc", "havsfunc.KNLMeansCL", "havsfunc.logoNR", "havsfunc.LSFmod", "havsfunc.LUTDeCrawl", "havsfunc.LUTDeRainbow", "havsfunc.MCTemporalDenoise", "havsfunc.MinBlur", "havsfunc.mt_deflate_multi", "havsfunc.mt_expand_multi", "havsfunc.mt_inflate_multi", "havsfunc.mt_inpand_multi", "havsfunc.Overlay", "havsfunc.Padding", "havsfunc.QTGMC", "havsfunc.Resize", "havsfunc.santiag", "havsfunc.sbr", "havsfunc.SCDetect", "havsfunc.SigmoidDirect", "havsfunc.SigmoidInverse", "havsfunc.smartfademod", "havsfunc.SMDegrain", "havsfunc.SmoothLevels", "havsfunc.srestore", "havsfunc.Stab", "havsfunc.STPresso", "havsfunc.TemporalDegrain", "havsfunc.Toon", "havsfunc.Vinverse", "havsfunc.Vinverse2", "havsfunc.Weave", "havsfunc.YAHR"},
.VSFiltersFunc = Function() {
New VideoFilter("Field", "QTGMC | QTGMC", $"clip = core.std.SetFieldBased(clip, 2) # 1=BFF, 2=TFF{BR}clip = havsfunc.QTGMC(clip, TFF=True, Preset='$select:msg:Select a preset.;Draft;Ultra Fast;Super Fast;Very Fast;Faster;Fast;Medium;Slow;Slower;Very Slow;Placebo$', InputType=$select:msg:Select Input Type;Interlaced|0;Progressive|1;Progressive Repair Details|2;Progressive Full Repair|3$, SourceMatch=3, Sharpness=0.2)"),
New VideoFilter("Field", "QTGMC | QTGMC with Repair", $"clip = core.std.SetFieldBased(clip, 2) # 1=BFF, 2=TFF{BR}QTGMC1 = havsfunc.QTGMC(clip, TFF=True, Preset='Slower', InputType=2){BR}QTGMC2 = havsfunc.QTGMC(clip, TFF=True, Preset='Slower', InputType=3){BR}clip = core.rgvs.Repair(QTGMC1,QTGMC2, mode=1)")}})
Shared Property LSmashWorks As Package = Add(New PluginPackage With {
.Name = "L-SMASH-Works",
.Filename = "LSMASHSource.dll",
.Description = "AviSynth and VapourSynth source filter based on Libav supporting a wide range of input formats.",
.WebURL = "http://avisynth.nl/index.php/LSMASHSource",
.HelpURL = "http://github.com/VFR-maniac/L-SMASH-Works/blob/master/AviSynth/README",
.AvsFilterNames = {"LSMASHVideoSource", "LSMASHAudioSource", "LWLibavVideoSource", "LWLibavAudioSource"},
.AvsFiltersFunc = Function() {
New VideoFilter("Source", "LSMASHVideoSource", "LSMASHVideoSource(""%source_file%"")" + BR + "#AssumeFPS(25)"),
New VideoFilter("Source", "LWLibavVideoSource", "LWLibavVideoSource(""%source_file%"", cachefile=""%source_temp_file%.lwi"")" + BR + "#AssumeFPS(25)")},
.VSFilterNames = {"lsmas.LibavSMASHSource", "lsmas.LWLibavSource"},
.VSFiltersFunc = Function() {
New VideoFilter("Source", "LibavSMASHSource", "clip = core.lsmas.LibavSMASHSource(r'%source_file%')" + BR + "#clip = core.std.AssumeFPS(clip, None, 25, 1)"),
New VideoFilter("Source", "LWLibavSource", "clip = core.lsmas.LWLibavSource(r'%source_file%', cachefile=r'%source_temp_file%.lwi')" + BR + "#clip = core.std.AssumeFPS(clip, None, 25, 1)")}})
Shared Property BM3D As Package = Add(New PluginPackage With {
.Name = "BM3D",
.Filename = "BM3D.dll",
.VSFilterNames = {"bm3d.RGB2OPP", "bm3d.OPP2RGB", "bm3d.Basic", "bm3d.Final", "bm3d.VBasic", "bm3d.VFinal", "bm3d.VAggregate"},
.Description = "BM3D denoising filter for VapourSynth",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D"})
Shared Property MCTemporalDenoise As Package = Add(New PluginPackage With {
.Name = "MCTemporalDenoise",
.Filename = "MCTemporalDenoise.avsi",
.WebURL = "http://avisynth.nl/index.php/Abcxyz",
.Description = "A motion compensated noise removal script with an accompanying post-processing component.",
.AvsFilterNames = {"MCTemporalDenoise", "MCTemporalDenoisePP"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "MCTemporalDenoise | MCTemporalDenoise", "MCTemporalDenoise(settings=""medium"")"),
New VideoFilter("Noise", "MCTemporalDenoise | MCTemporalDenoisePP", "source=last" + BR + "denoised=FFT3Dfilter()" + BR + "MCTemporalDenoisePP(denoised)")}})
Shared Property DFTTestAvs As Package = Add(New PluginPackage With {
.Name = "DFTTest",
.Filename = "dfttest.dll",
.Description = "2D/3D frequency domain denoiser using Discrete Fourier transform",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/Dfttest",
.AvsFilterNames = {"dfttest"},
.AvsFiltersFunc = Function() {New VideoFilter("Noise", "DFTTest", "dfttest($select:msg:Select Strength;Light|sigma=6, tbsize=3;Moderate|sigma=16, tbsize=5;Strong|sigma=64, tbsize=1$,$select:msg:Enable High Bit Depth?;True|lsb_in=true, lsb=true;False|lsb_in=false, lsb=false$)")}})
Shared Property muvsfunc As Package = Add(New PluginPackage With {
.Name = "muvsfunc",
.Filename = "muvsfunc.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "Muonium's VapourSynth functions.",
.WebURL = "https://github.com/WolframRhodium/muvsfunc",
.VSFilterNames = {
"muvsfunc.LDMerge", "muvsfunc.Compare", "muvsfunc.ExInpand", "muvsfunc.InDeflate", "muvsfunc.MultiRemoveGrain", "muvsfunc.GradFun3", "muvsfunc.AnimeMask",
"muvsfunc.PolygonExInpand", "muvsfunc.Luma", "muvsfunc.ediaa", "muvsfunc.nnedi3aa", "muvsfunc.maa", "muvsfunc.SharpAAMcmod", "muvsfunc.TEdge",
"muvsfunc.Sort", "muvsfunc.Soothe_mod", "muvsfunc.TemporalSoften", "muvsfunc.FixTelecinedFades", "muvsfunc.TCannyHelper", "muvsfunc.MergeChroma", "muvsfunc.firniture",
"muvsfunc.BoxFilter", "muvsfunc.SmoothGrad", "muvsfunc.DeFilter", "muvsfunc.scale", "muvsfunc.ColorBarsHD", "muvsfunc.SeeSaw", "muvsfunc.abcxyz",
"muvsfunc.Sharpen", "muvsfunc.Blur", "muvsfunc.BlindDeHalo3", "muvsfunc.dfttestMC", "muvsfunc.TurnLeft", "muvsfunc.TurnRight", "muvsfunc.BalanceBorders",
"muvsfunc.DisplayHistogram", "muvsfunc.GuidedFilter", "muvsfunc.GMSD", "muvsfunc.SSIM", "muvsfunc.SSIM_downsample", "muvsfunc.LocalStatisticsMatching", "muvsfunc.LocalStatistics",
"muvsfunc.TextSub16", "muvsfunc.TMinBlur", "muvsfunc.mdering", "muvsfunc.BMAFilter", "muvsfunc.LLSURE", "muvsfunc.YAHRmod", "muvsfunc.RandomInterleave"}})
Shared Property SMDegrain As Package = Add(New PluginPackage With {
.Name = "SMDegrain",
.Filename = "SMDegrain.avsi",
.URL = "http://avisynth.nl/index.php/SMDegrain",
.Description = "SMDegrain, the Simple MDegrain Mod, is mainly a convenience function for using MVTools.",
.AvsFilterNames = {"SMDegrain"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "RemoveGrain | SMDegrain | SMDGrain", "SMDegrain(tr=2, thSAD=250, contrasharp=false, refinemotion=true, lsb=false)"),
New VideoFilter("Noise", "RemoveGrain | SMDegrain | SMDGrain With Motion Vectors", "super_search = Dither_Luma_Rebuild(S0=1.0, c=0.0625).MSuper(rfilter=4)" + BR + "bv2 = super_search.MAnalyse(isb=true, delta=2, overlap=4)" + BR + "bv1 = super_search.MAnalyse(isb=true, delta=1, overlap=4)" + BR + "fv1 = super_search.MAnalyse(isb=false, delta=1, overlap=4)" + BR + "fv2 = super_search.MAnalyse(isb=false, delta=2, overlap=4)" + BR + "MDegrain2(MSuper(levels=1), bv1, fv1, bv2, fv2, thSAD=300, thSADC=150)"),
New VideoFilter("Noise", "RemoveGrain | SMDegrain | SMDGrain 16Bit", "sharp=last" + BR + "dfttest(tbsize=1, sigma=10, lsb=True)" + BR + "SMDegrain(tr=3, thSAD=300, CClip=sharp, lsb_in=True, lsb_out=True)")}})
Shared Property DFTTest As Package = Add(New PluginPackage With {
.Name = "DFTTest",
.Filename = "DFTTest.dll",
.Description = "VapourSynth port of dfttest.",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest",
.VSFilterNames = {"dfttest.DFTTest"},
.VSFiltersFunc = Function() {New VideoFilter("Noise", "DFTTest", "$select:msg:Select Strength;Light|clip = core.dfttest.DFTTest(clip, sigma=6, tbsize=3,opt=3);Moderate|clip = core.dfttest.DFTTest(clip, sigma=16, tbsize=5,opt=3);Strong|clip = core.dfttest.DFTTest(clip, sigma=64, tbsize=1,opt=3)$")}})
Shared Property FFT3DGPU As Package = Add(New PluginPackage With {
.Name = "FFT3DGPU",
.Filename = "FFT3dGPU.dll",
.Description = "Similar algorithm to FFT3DFilter, but uses graphics hardware for increased speed.",
.HelpFile = "Readme.txt",
.AvsFilterNames = {"FFT3DGPU"},
.AvsFiltersFunc = Function() {New VideoFilter("Noise", "FFT3DFilter | FFT3DGPU", "FFT3DGPU(sigma=1.5, bt=5, bw=32, bh=32, ow=16, oh=16, sharpen=0.4, NVPerf=$select:msg:Enable Nvidia Function;True;False$)")}})
Shared Function Add(pack As Package) As Package
Items(pack.ID) = pack
Return pack
End Function
Shared Sub New()
Add(New Package With {
.Name = "Visual C++ 2012",
.Filename = "msvcp110.dll",
.Description = "Visual C++ 2012 Redistributable is required by some tools used by StaxRip.",
.DownloadURL = "http://www.microsoft.com/en-US/download/details.aspx?id=30679",
.FixedDir = Folder.System,
.IgnoreVersion = True,
.IsRequiredFunc = Function() Items("SangNom2 avs").IsRequired OrElse
Items("Deblock avs").IsRequired OrElse
Items("mClean avs").IsRequired,
.TreePath = "Runtimes"})
Add(New Package With {
.Name = "Visual C++ 2013",
.Filename = "msvcp120.dll",
.Description = "Visual C++ 2013 Redistributable is required by some tools used by StaxRip.",
.DownloadURL = "http://www.microsoft.com/en-US/download/details.aspx?id=40784",
.IgnoreVersion = True,
.FixedDir = Folder.System,
.TreePath = "Runtimes"})
Add(New Package With {
.Name = "Visual C++ 2017",
.Filename = "msvcp140.dll",
.Description = "Visual C++ 2017 Redistributable is required by some tools used by StaxRip.",
.DownloadURL = "http://download.microsoft.com/download/8/9/d/89d195e1-1901-4036-9a75-fbe46443fc5a/vc_redist.x64.exe",
.FixedDir = Folder.System,
.IgnoreVersion = True,
.TreePath = "Runtimes",
.IsRequiredFunc = Function() SangNom2.IsRequired OrElse VSFilterMod.IsRequired OrElse
eac3to.IsRequired})
Add(New PluginPackage With {
.Name = "KNLMeansCL",
.Filename = "KNLMeansCL.dll",
.WebURL = "http://github.com/Khanattila/KNLMeansCL",
.Description = "KNLMeansCL is an optimized pixelwise OpenCL implementation of the Non-local means denoising algorithm. Every pixel is restored by the weighted average of all pixels in its search window. The level of averaging is determined by the filtering parameter h.",
.VSFilterNames = {"knlm.KNLMeansCL"},
.AvsFilterNames = {"KNLMeansCL"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "NLMeans | KNLMeansCL", "KNLMeansCL(D=1, A=1, h=$select:msg:Select Strength;Light|2;Medium|4;Strong|4$, device_type=""auto"")")},
.VSFiltersFunc = Function() {
New VideoFilter("Noise", "KNLMeansCL", "clip = core.knlm.KNLMeansCL(clip, d=1, a=1, h=$select:msg:Select Strength;Light|2;Medium|4;Strong|4$, device_type='auto')")}})
Add(New PluginPackage With {
.Name = "mvtools2",
.Filename = "mvtools2.dll",
.WebURL = "http://github.com/pinterf/mvtools",
.HelpFile = "mvtools2.html",
.Description = "MVTools is collection of functions for estimation and compensation of objects motion in video clips. Motion compensation may be used for strong temporal denoising, advanced framerate conversions, image restoration and other tasks.",
.AvsFilterNames = {"MSuper", "MAnalyse", "MCompensate", "MMask", "MDeGrain1", "MDeGrain2", "MDegrain3"}})
Add(New PluginPackage With {
.Name = "MPEG2DecPlus",
.Filename = "MPEG2DecPlus.dll",
.WebURL = "http://github.com/chikuzen/MPEG2DecPlus",
.Description = "Source filter to open D2V index files created with DGIndex or D2VWitch.",
.AvsFilterNames = {"MPEG2Source"},
.AvsFiltersFunc = Function() {New VideoFilter("Source", "MPEG2Source", "MPEG2Source(""%source_file%"")")}})
Add(New PluginPackage With {
.Name = "DSS2mod",
.Filename = "avss.dll",
.WebURL = "http://code.google.com/p/xvid4psp/downloads/detail?name=DSS2%20mod%20%2B%20LAVFilters.7z&can=2&q=",
.Description = "Direct Show source filter",
.AvsFilterNames = {"DSS2"},
.AvsFiltersFunc = Function() {New VideoFilter("Source", "DSS2", "DSS2(""%source_file%"")")}})
Add(New PluginPackage With {
.Name = "Deblock",
.Filename = "Deblock.dll",
.Description = "Deblocking plugin using the deblocking filter of h264.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/DeBlock",
.DirPath = "Plugins\AVS\Deblock",
.AvsFilterNames = {"Deblock"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | DeBock", "Deblock(quant=25, aOffset=0, bOffset=0, planes=""yuv"")")}})
Add(New PluginPackage With {
.Name = "VapourSource",
.Filename = "VapourSource_x64.dll",
.Description = "VapourSource is a VapourSynth script reader for AviSynth 2.6.",
.WebURL = "http://avisynth.nl/index.php/VapourSource",
.AvsFilterNames = {"VSImport", "VSEval"}})
Add(New PluginPackage With {
.Name = "TNLMeans",
.Filename = "TNLMeans.dll",
.WebURL = "http://avisynth.nl/index.php/TNLMeans",
.Description = "TNLMeans is an implementation of the NL-means denoising algorithm. Aside from the original method, TNLMeans also supports extension into 3D, a faster, block based approach, and a multiscale version.",
.HelpFile = "readme.txt",
.AvsFilterNames = {"TNLMeans"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "NLMeans | TNLMeans", "TNLMeans(Ax=4, Ay=4, Az=0, Sx=2, Sy=2, Bx=1, By=1, ms=false, rm=4, a=1.0, h=1.8, sse=true)")}})
Add(New PluginPackage With {
.Name = "VagueDenoiser",
.Filename = "VagueDenoiser.dll",
.Description = "This is a Wavelet based Denoiser. Basically, it transforms each frame from the video input into the wavelet domain, using various wavelet filters. Then it applies some filtering to the obtained coefficients.",
.HelpFile = "vaguedenoiser.html",
.WebURL = "http://avisynth.nl/index.php/VagueDenoiser",
.AvsFilterNames = {"VagueDenoiser"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "VagueDenoiser", "VagueDenoiser(threshold=0.8, method=1, nsteps=6, chromaT=0.8)")}})
Add(New PluginPackage With {
.Name = "DGTonemap",
.Filename = "DGTonemap.dll",
.URL = "http://rationalqm.us/mine.html",
.HelpFile = "Readme.txt",
.Description = "DGTonemap provides filters for HDR Tonemapping Reinhard and Hable.",
.AvsFilterNames = {"DGReinhard", "DGHable"}})
Add(New PluginPackage With {
.Name = "AnimeIVTC",
.Filename = "AnimeIVTC.avsi",
.URL = "http://avisynth.nl/index.php/AnimeIVTC",
.AvsFilterNames = {"AnimeIVTC"}})
Add(New PluginPackage With {
.Name = "DePan",
.Filename = "DePan.dll",
.DirPath = "Plugins\AVS\MVTools2",
.HelpFile = "DePan.html",
.WebURL = "http://avisynth.nl/index.php/DePan",
.AvsFilterNames = {"DePan", "DePanInterleave", "DePanStabilize", "DePanScenes"}})
Add(New PluginPackage With {
.Name = "DePanEstimate",
.DirPath = "Plugins\AVS\MVTools2",
.Filename = "DePanEstimate.dll",
.HelpFile = "DePan.html",
.WebURL = "http://avisynth.nl/index.php/DePan",
.AvsFilterNames = {"DePanEstimate"}})
Add(New PluginPackage With {
.Name = "Shader DLL",
.DirPath = "Plugins\AVS\Shader",
.Filename = "Shader.dll",
.HelpFile = "Readme.txt",
.WebURL = "https://github.com/mysteryx93/AviSynthShader/releases",
.AvsFilterNames = {"SuperRes", "SuperResXBR", "SuperXBR", "ResizeShader", "SuperResPass", "SuperXbrMulti", "ResizeShader"}})
Add(New PluginPackage With {
.Name = "Shader AVSI",
.DirPath = "Plugins\AVS\Shader",
.Filename = "Shader.avsi",
.HelpFile = "Readme.txt",
.WebURL = "https://github.com/mysteryx93/AviSynthShader/releases",
.AvsFilterNames = {"SuperRes", "SuperResXBR", "SuperXBR", "ResizeShader", "SuperResPass", "SuperXbrMulti", "ResizeShader"}})
Add(New PluginPackage With {
.Name = "JincResize",
.Filename = "JincResize.dll",
.Description = "Jinc (EWA Lanczos) resampling plugin for AviSynth 2.6/AviSynth+.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/JincResize",
.AvsFilterNames = {"Jinc36Resize", "Jinc64Resize", "Jinc144Resize", "Jinc256Resize"}})
Add(New PluginPackage With {
.Name = "HQDN3D",
.Filename = "Hqdn3d.dll",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/Hqdn3d",
.AvsFilterNames = {"HQDN3D"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "HQDN3D", "HQDN3D(ls=4.0, cs=3.0, lt=6.0, ct=4.5, restart=7)")}})
Add(New PluginPackage With {
.Name = "HQDeringmod",
.Filename = "HQDeringmod.avsi",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/HQDering_mod",
.Description = "Applies deringing by using a smart smoother near edges (where ringing occurs) only.",
.AvsFilterNames = {"HQDeringmod"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeHalo | HQDeringmod", "HQDeringmod()")}})
Add(New PluginPackage With {
.Name = "InterFrame",
.Filename = "InterFrame.avsi",
.HelpFile = "InterFrame.html",
.Description = "A frame interpolation script that makes accurate estimations about the content of frames",
.DirPath = "Plugins\AVS\InterFrame2",
.WebURL = "http://avisynth.nl/index.php/InterFrame",
.AvsFilterNames = {"InterFrame"},
.AvsFiltersFunc = Function() {
New VideoFilter("FrameRate", "InterFrame", "InterFrame(preset=""Medium"", tuning=""$select:msg:Select the Tuning Preset;Animation;Film;Smooth;Weak$"", newNum=$enter_text:Enter the NewNum Value.$, newDen=$enter_text:Enter the NewDen Value$, cores=$enter_text:Enter the Number of Cores You want to use$, overrideAlgo=$select:msg:Which Algorithm Do you want to Use?;Strong Predictions|2;Intelligent|13;Smoothest|23$, GPU=$select:msg:Enable GPU Feature?;True;False$)")}})
Add(New PluginPackage With {
.Name = "SVPFlow 1",
.DirPath = "Plugins\AVS\SVPFlow",
.HelpFile = "Readme.txt",
.Description = "Motion vectors search plugin is a deeply refactored and modified version of MVTools2 Avisynth plugin",
.Filename = "svpflow1.dll",
.WebURL = "http://avisynth.nl/index.php/SVPFlow",
.AvsFilterNames = {"analyse_params", "super_params", "SVSuper", "SVAnalyse"}})
Add(New PluginPackage With {
.Name = "SVPFlow 2",
.DirPath = "Plugins\AVS\SVPFlow",
.HelpFile = "Readme.txt",
.Description = "Motion vectors search plugin is a deeply refactored and modified version of MVTools2 Avisynth plugin",
.Filename = "svpflow2.dll",
.WebURL = "http://avisynth.nl/index.php/SVPFlow",
.AvsFilterNames = {"smoothfps_params", "SVConvert", "SVSmoothFps"}})
Add(New PluginPackage With {
.Name = "MipSmooth",
.Filename = "MipSmooth.dll",
.Description = "a reinvention of SmoothHiQ and Convolution3D. MipSmooth was made to enable smoothing of larger pixel areas than 3x3(x3), to remove blocks and smoothing out low-frequency noise.",
.HelpFile = "MipSmooth.html",
.WebURL = "http://avisynth.org.ru/docs/english/externalfilters/mipsmooth.htm",
.AvsFilterNames = {"MipSmooth"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | MipSmooth", "MipSmooth(downsizer=""lanczos"", upsizer=""bilinear"", scalefactor=1.5, method=""strong"")")}})
Add(New PluginPackage With {
.Name = "TMM2",
.Filename = "TMM2.dll",
.Description = "TMM builds a motion-mask for TDeint, which TDeint uses via its 'emask' parameter.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/TMM",
.AvsFilterNames = {"TMM2"}})
Add(New PluginPackage With {
.Name = "TDeint",
.Filename = "TDeint.dll",
.DirPath = "Plugins\AVS\TDeint",
.WebURL = "http://avisynth.nl/index.php/TDeint",
.Description = "TDeint is a bi-directionally, motion adaptive, sharp deinterlacer.",
.AvsFilterNames = {"TDeint"},
.AvsFiltersFunc = Function() {
New VideoFilter("Field", "TDent", "TDeint()")}})
Add(New PluginPackage With {
.Name = "FineDehalo",
.Filename = "FineDehalo.avsi",
.Description = "Halo removal script that uses DeHalo_alpha with a few masks and optional contra-sharpening to try remove halos without removing important details (like line edges). It also includes FineDehalo2, this function tries to remove 2nd order halos. See script for extensive information. ",
.WebURL = "http://avisynth.nl/index.php/FineDehalo",
.HelpFile = "Readme.txt",
.AvsFilterNames = {"FineDehalo"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeHalo | FineDehalo", "FineDehalo(rx=2.0, ry=2.0, thmi=80, thma=128, thlimi=50, thlima=100, darkstr=1.0, brightstr=1.0, showmask=0, contra=0.0, excl=true)")}})
Add(New PluginPackage With {
.Name = "CNR2",
.Filename = "CNR2.dll",
.HelpFile = "CNR2.html",
.Description = "A fast chroma denoiser. Very effective against stationary rainbows and huge analogic chroma activity. Useful to filter VHS/TV caps.",
.WebURL = "http://avisynth.nl/index.php/Cnr2",
.AvsFilterNames = {"cnr2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "RCR | CNR2", "Cnr2(mode=""oxx"", scdthr=10.0, ln=35, lm=192, un=47, um=255, vn=47, vm=255, log=false, sceneChroma=false)")}})
Add(New PluginPackage With {
.Name = "Lazy Utilities",
.Filename = "LUtils.avsi",
.Description = "A collection of helper and wrapper functions meant to help script authors in handling common operations ",
.WebURL = "https://github.com/AviSynth/avs-scripts",
.AvsFilterNames = {"LuStackedNto16", "LuPlanarToStacked", "LuRGB48YV12ToRGB48Y", "LuIsFunction", "LuSeparateColumns", "LuMergePlanes", "LuIsHD", "LuConvCSP", "Lu8To16", "Lu16To8", "LuIsEq", "LuSubstrAtIdx", "LuSubstrCnt", "LuReplaceStr", "LUIsDefined", "LuMerge", "LuLut", "LuLimitDif", "LuBlankClip", "LuIsSameRes"}})
Add(New PluginPackage With {
.Name = "MultiSharpen",
.Filename = "MultiSharpen.avsi",
.Description = "A small but useful Sharpening Function",
.AvsFilterNames = {"MultiSharpen"}})
Add(New PluginPackage With {
.Name = "Average",
.Filename = "Average.dll",
.Description = "A simple plugin that calculates a weighted frame-by-frame average from multiple clips. This is a modern rewrite of the old Average plugin but a bit faster, additional colorspace support, and some additional sanity checks.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/Average",
.AvsFilterNames = {"Average"}})
Add(New PluginPackage With {
.Name = "AvsResize",
.Filename = "avsresize.dll",
.HelpFile = "Readme.txt",
.WebURL = "http://forum.doom9.org/showthread.php?t=173986",
.AvsFilterNames = {"z_ConvertFormat", "z_PointResize", "z_BilinearResize", "z_BicubicResize", "z_LanczosResize", "z_Lanczos4Resize", "z_BlackmanResize", "z_Spline16Resize", "z_Spline36Resize", "z_Spline64Resize", "z_GaussResize", "z_SincResize"}})
Add(New PluginPackage With {
.Name = "ResizeX",
.Filename = "ResizeX.avsi",
.WebURL = "http://avisynth.nl",
.AvsFilterNames = {"ResizeX"}})
Add(New PluginPackage With {
.Name = "Deblock_QED",
.Filename = "Deblock_QED.avsi",
.Description = "Designed to provide 8x8 deblocking sensitive to the amount of blocking in the source, compared to other deblockers which apply a uniform deblocking across every frame. ",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/Deblock_QED",
.AvsFilterNames = {"Deblock_QED"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | DeBlock_QED", "Deblock_QED(quant1=24, quant2=26, aOff1=1, aOff2=1, bOff1=2, bOff2=2, uv=3)")}})
Add(New PluginPackage With {
.Name = "nnedi3 AVSI",
.Filename = "nnedi3_16.avsi",
.HelpFile = "Readme.txt",
.Description = "nnedi3 is an AviSynth 2.5 plugin, but supports all new planar colorspaces when used with AviSynth 2.6",
.DirPath = "Plugins\AVS\NNEDI3",
.WebURL = "http://avisynth.nl/index.php/nnedi3",
.AvsFilterNames = {"nnedi3_resize16"}})
Add(New PluginPackage With {
.Name = "nnedi3x AVSI",
.Filename = "nnedi3x.avsi",
.HelpFile = "Readme.txt",
.Description = "nnedi3x is an AviSynth 2.5 plugin, but supports all new planar colorspaces when used with AviSynth 2.6",
.DirPath = "Plugins\AVS\NNEDI3",
.WebURL = "http://avisynth.nl/index.php/nnedi3",
.AvsFilterNames = {"nnedi3x"}})
Add(New PluginPackage With {
.Name = "edi_rpow2 AVSI",
.Filename = "edi_rpow2.avsi",
.HelpFile = "Readme.txt",
.Description = "An improved rpow2 function for nnedi3, nnedi3ocl, eedi3, and eedi2.",
.DirPath = "Plugins\AVS\NNEDI3",
.WebURL = "http://avisynth.nl/index.php/nnedi3",
.AvsFilterNames = {"nnedi3_rpow2"}})
Add(New PluginPackage With {
.Name = "SmoothD2",
.DirPath = "Plugins\AVS\SmoothD2",
.Filename = "SmoothD2.dll",
.HelpFile = "Readme.txt",
.Description = "Deblocking filter. Rewrite of SmoothD. Faster, better detail preservation, optional chroma deblocking.",
.WebURL = "http://avisynth.nl/index.php/SmoothD2",
.AvsFilterNames = {"SmoothD2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | SmoothD2", "SmoothD2(quant=3, num_shift=3, Matrix=3, Qtype=1, ZW=1, ZWce=1, ZWlmDark=0, ZWlmBright=255, ncpu=4)")}})
Add(New PluginPackage With {
.Name = "SmoothD2c",
.DirPath = "Plugins/AVS/SmoothD2",
.HelpFile = "Readme.txt",
.Description = "Deblocking filter. Rewrite of SmoothD. Faster, better detail preservation, optional chroma deblocking.",
.Filename = "SmoothD2c.avs",
.WebURL = "http://avisynth.nl/index.php/SmoothD2",
.AvsFilterNames = {"SmoothD2c"}})
Add(New PluginPackage With {
.Name = "xNLMeans",
.Filename = "xNLMeans.dll",
.WebURL = "http://avisynth.nl/index.php/xNLMeans",
.Description = "XNLMeans is an AviSynth plugin implementation of the Non Local Means denoising algorithm",
.HelpFile = "Readme.txt",
.AvsFilterNames = {"xNLMeans"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "NLMeans | xNLMeans", "xnlmeans(a=4,h=2.2,vcomp=0.5,s=1)")}})
'Add(New PluginPackage With { 'Removed Since it can longer run on any newer systems.
' .Name = "XAA",
' .Filename = "xaa.avsi",
' .WebURL = "http://avisynth.nl/index.php/xaa",
' .Description = "A highly versatile anti-aliasing function.",
' .HelpFile = "Readme.txt",
' .AvsFilterNames = {"XAA"},
' .AvsFiltersFunc = Function() {
' New VideoFilter("Line", "Anti-Aliasing | XAA", "xaa()")}})
Add(New PluginPackage With {
.Name = "DehaloAlpha",
.Filename = "Dehalo_alpha.avsi",
.Description = "Reduce halo artifacts that can occur when sharpening.",
.HelpFile = "Readme.txt",
.AvsFilterNames = {"DeHalo_alpha_mt", "DeHalo_alpha_2BD"},
.AvsFiltersFunc = Function() {
New VideoFilter("Restoration", "DeHalo | DehaloAlpha", "DeHalo_alpha_mt(rx=2.0, ry=2.0, darkstr=1.0, brightstr=1.0, lowsens=50, highsens=50, ss=1.5)")}})
Add(New PluginPackage With {
.Name = "MAA2Mod",
.DirPath = "Plugins\AVS\MAA2",
.Filename = "maa2mod.avsi",
.Description = "Updated version of the MAA2+ antialising script from AnimeIVTC. MAA2 uses tp7's SangNom2, which provide a nice speedup for SangNom-based antialiasing. Mod version also includes support for EEDI3 along with a few other new functions.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/MAA2",
.AvsFilterNames = {"MAA2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Line", "Anti-Aliasing | MMA2", "MAA2(mask=1, chroma=false, ss=2.0, aa=48, aac=40, threads=4, show=0)")}})
Add(New PluginPackage With {
.Name = "DAA3Mod",
.Filename = "daa3mod.avsi",
.Description = "Motion-Compensated Anti-aliasing with contra-sharpening, can deal with ifade too, created because when applied daa3 to fixed scenes, it could damage some details and other issues.",
.WebURL = "http://avisynth.nl/index.php/daa3",
.AvsFilterNames = {"daa3mod", "mcdaa3"},
.AvsFiltersFunc = Function() {
New VideoFilter("Line", "Anti-Aliasing | DAA", "daa3mod()")}})
Add(New PluginPackage With {
.Name = "eedi3_resize",
.Filename = "eedi3_resize.avsi",
.DirPath = "Plugins\AVS\EEDI3",
.Description = "eedi3 based resizing script that allows to resize to arbitrary resolutions while maintaining the correct image center and chroma location.",
.HelpFile = "EEDI3 - Readme.txt",
.WebURL = "http://avisynth.nl/index.php/eedi3",
.AvsFilterNames = {"eedi3_resize"}})
Add(New PluginPackage With {
.Name = "DeNoise Histogram",
.DirPath = "Plugins\AVS\DeNoiseMD",
.Filename = "DiffCol.avsi",
.Description = "Histogram for both DenoiseMD and DenoiseMF",
.WebURL = "http://avisynth.nl",
.AvsFilterNames = {"DiffCol"}})
Add(New PluginPackage With {
.Name = "FrameRateConverter DLL",
.Filename = "FrameRateConverter-x64.dll",
.DirPath = "Plugins\AVS\FrameRateConverter",
.Description = "Increases the frame rate with interpolation and fine artifact removal ",
.WebURL = "https://github.com/mysteryx93/FrameRateConverter",
.AvsFilterNames = {"FrameRateConverter"}})
Add(New PluginPackage With {
.Name = "FrameRateConverter AVSI",
.Filename = "FrameRateConverter.avsi",
.DirPath = "Plugins\AVS\FrameRateConverter",
.Description = "Increases the frame rate with interpolation and fine artifact removal ",
.WebURL = "https://github.com/mysteryx93/FrameRateConverter",
.AvsFilterNames = {"FrameRateConverter"}})
Add(New PluginPackage With {
.Name = "DeNoiseMD",
.Filename = "DeNoiseMD.avsi",
.Description = "A fast and accurate denoiser for a Full HD video from a H.264 camera. ",
.WebURL = "http://avisynth.nl",
.AvsFilterNames = {"DeNoiseMD1", "DenoiseMD2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "DeNoise | Denoise MD", "DeNoiseMD1(sigma=4, overlap=2, thcomp=80, str=0.8)" + "DitherPost(mode=7, ampo=1, ampn=0)")}})
Add(New PluginPackage With {
.Name = "DeNoiseMF",
.Filename = "DeNoiseMF.avsi",
.Description = "A fast and accurate denoiser for a Full HD video from a H.264 camera. ",
.WebURL = "http://avisynth.nl",
.AvsFilterNames = {"DeNoiseMF1", "DenoiseMF2"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "DeNoise | Denoise MF", "DenoiseMF2(s1=2.0, s2=2.5, s3=3.0, s4=2.0, overlap=4, thcomp=80, str=0.8, gpu=$select:msg:Use GPU Enabled Feature?;True;False$)")}})
Add(New PluginPackage With {
.Name = "MT Expand Multi",
.DirPath = "Plugins\AVS\Dither",
.Description = "Calls mt_expand or mt_inpand multiple times in order to grow or shrink the mask from the desired width and height.",
.Filename = "mt_xxpand_multi.avsi",
.WebURL = "http://avisynth.nl/index.php/Dither",
.AvsFilterNames = {"mt_expand_multi", "mt_inpand_multi"}})
Add(New PluginPackage With {
.Name = "TEMmod",
.Description = "TEMmod creates an edge mask using gradient vector magnitude. ",
.Filename = "TEMmod.dll",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/TEMmod",
.AvsFilterNames = {"TEMmod"}})
Add(New PluginPackage With {
.Name = "AVSTP",
.DirPath = "Plugins\AVS\AVSTP",
.Description = "AVSTP is a programming library for Avisynth plug-in developers. It helps supporting native multi-threading in plug-ins. It works by sharing a thread pool between multiple plug-ins, so the number of threads stays low whatever the number of instantiated plug-ins. This helps saving resources, especially when working in an Avisynth MT environment. This documentation is mostly targeted to plug-ins developpers, but contains installation instructions for Avisynth users too.",
.HelpFile = "avstp.html",
.Filename = "avstp.dll",
.WebURL = "http://avisynth.nl/index.php/AVSTP",
.AvsFilterNames = {"avstp_set_threads"}})
Add(New PluginPackage With {
.Name = "Dither AVSI",
.Description = "This package offers a set of tools to manipulate high-bitdepth (16 bits per plane) video clips. The most proeminent features are color banding artifact removal, dithering to 8 bits, colorspace conversions and resizing.",
.HelpFile = "dither.html",
.DirPath = "Plugins\AVS\Dither",
.Filename = "dither.avsi",
.WebURL = "http://avisynth.nl/index.php/Dither",
.AvsFilterNames = {"Dither_y_gamma_to_linear", "Dither_y_linear_to_gamma", "Dither_convert_8_to_16", "Dither1Pre", "Dither1Pre", "Dither_repair16", "Dither_convert_yuv_to_rgb", "Dither_convert_rgb_to_yuv", "Dither_resize16", "DitherPost", "Dither_crop16", "DitherBuildMask", "SmoothGrad", "GradFun3", "Dither_box_filter16", "Dither_bilateral16", "Dither_limit_dif16", "Dither_resize16nr", "Dither_srgb_display", "Dither_convey_yuv4xxp16_on_yvxx", "Dither_convey_rgb48_on_yv12", "Dither_removegrain16", "Dither_median16", "Dither_get_msb", "Dither_get_lsb", "Dither_addborders16", "Dither_lut8", "Dither_lutxy8", "Dither_lutxyz8", "Dither_lut16", "Dither_add16", "Dither_sub16", "Dither_max_dif16", "Dither_min_dif16", "Dither_merge16", "Dither_merge16_8", "Dither_sigmoid_direct", "Dither_sigmoid_inverse", "Dither_add_grain16", "Dither_Luma_Rebuild"}})
Add(New PluginPackage With {
.Name = "Dither DLL",
.DirPath = "Plugins\AVS\Dither",
.Description = "This package offers a set of tools to manipulate high-bitdepth (16 bits per plane) video clips. The most proeminent features are color banding artifact removal, dithering to 8 bits, colorspace conversions and resizing.",
.HelpFile = "dither.html",
.Filename = "dither.dll",
.WebURL = "http://avisynth.nl/index.php/Dither",
.AvsFilterNames = {"Dither_y_gamma_to_linear", "Dither_y_linear_to_gamma", "Dither_convert_8_to_16", "Dither1Pre", "Dither1Pre", "Dither_repair16", "Dither_convert_yuv_to_rgb", "Dither_convert_rgb_to_yuv", "Dither_resize16", "DitherPost", "Dither_crop16", "DitherBuildMask", "SmoothGrad", "GradFun3", "Dither_box_filter16", "Dither_bilateral16", "Dither_limit_dif16", "Dither_resize16nr", "Dither_srgb_display", "Dither_convey_yuv4xxp16_on_yvxx", "Dither_convey_rgb48_on_yv12", "Dither_removegrain16", "Dither_median16", "Dither_get_msb", "Dither_get_lsb", "Dither_addborders16", "Dither_lut8", "Dither_lutxy8", "Dither_lutxyz8", "Dither_lut16", "Dither_add16", "Dither_sub16", "Dither_max_dif16", "Dither_min_dif16", "Dither_merge16", "Dither_merge16_8", "Dither_sigmoid_direct", "Dither_sigmoid_inverse", "Dither_add_grain16", "Dither_Luma_Rebuild"}})
Add(New PluginPackage With {
.Name = "DeGrainMedian",
.Filename = "DeGrainMedian.dll",
.Description = "DeGrainMedian is a spatio-temporal limited median filter mainly for film grain removal, but may be used for general denoising.",
.HelpFile = "Degrainmedian.html",
.WebURL = "http://avisynth.nl/index.php/DeGrainMedian",
.AvsFilterNames = {"DeGrainMedian"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "RemoveGrain | DeGrainMedian", "DeGrainMedian(limitY=4, limitUV=6, mode=1, interlaced=false, norow=false)")}})
Add(New PluginPackage With {
.Name = "pSharpen",
.Filename = "pSharpen.avsi",
.AvsFilterNames = {"pSharpen"},
.Description = "pSharpen performs two-point sharpening to avoid overshoot.",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/PSharpen",
.AvsFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | pSharpen", "pSharpen(strength=25, threshold=75, ss_x=1.0, ss_y=1.0)")}})
Add(New PluginPackage With {
.Name = "GradFun2DBmod",
.DirPath = "Plugins\AVS\GradFun2DB",
.Filename = "GradFun2DBmod.avsi",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/GradFun2dbmod",
.Description = "An advanced debanding script based on GradFun2DB.",
.AvsFilterNames = {"GradFun2DBmod"}})
Add(New PluginPackage With {
.Name = "GradFun2DB",
.DirPath = "Plugins\AVS\GradFun2DB",
.Filename = "gradfun2db.dll",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/GradFun2db",
.Description = "A simple and fast debanding filter.",
.AvsFilterNames = {"gradfun2db"}})
Add(New PluginPackage With {
.Name = "AddGrainC",
.Filename = "AddGrainC.dll",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/AddGrainC",
.Description = "Generate film-like grain or other effects (like rain) by adding random noise to a video clip.",
.AvsFilterNames = {"AddGrainC", "AddGrain"}})
Add(New PluginPackage With {
.Name = "YFRC",
.Filename = "YFRC.avsi",
.HelpFile = "Readme.txt",
.WebURL = "http://avisynth.nl/index.php/YFRC",
.Description = "Yushko Frame Rate Converter - doubles the frame rate with strong artifact detection and scene change detection. YFRC uses masks to reduce artifacts in areas where interpolation failed.",
.AvsFilterNames = {"YFRC"},
.AvsFiltersFunc = Function() {
New VideoFilter("FrameRate", "YRFC", "YFRC(BlockH=16, BlockV=16, OverlayType=0, MaskExpand=1)")}})
Add(New PluginPackage With {
.Name = "Deblock",
.Filename = "Deblock.dll",
.DirPath = "Plugins\VS\Deblock",
.Description = "Deblocking plugin using the deblocking filter of h264.",
.URL = "http://github.com/HomeOfVapourSynthEvolution/VapourSynth-Deblock/",
.VSFilterNames = {"deblock.Deblock"},
.VSFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | DeBlock", "clip = core.deblock.Deblock(clip, quant=25, aoffset=0, boffset=0)")}})
Add(New PluginPackage With {
.Name = "MSharpen",
.Filename = "msharpen.dll",
.WebURL = "http://avisynth.nl/index.php/MSharpen",
.HelpFile = "Readme.txt",
.AvsFilterNames = {"MSharpen"},
.AvsFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | MSharpen", "MSharpen(threshold=10, strength=100, highq=true, mask=false)")}})
Add(New PluginPackage With {
.Name = "QTGMC",
.Filename = "QTGMC.avsi",
.URL = "http://avisynth.nl/index.php/QTGMC",
.Description = "A very high quality deinterlacer with a range of features for both quality and convenience. These include a simple presets system, extensive noise processing capabilities, support for repair of progressive material, precision source matching, shutter speed simulation, etc. Originally based on TempGaussMC by Did�e.",
.AvsFilterNames = {"QTGMC"},
.AvsFiltersFunc = Function() {
New VideoFilter("Field", "QTGMC | QTGMC...", "QTGMC(preset=""$select:msg:Select a preset.;Draft;Ultra Fast;Super Fast;Very Fast;Faster;Fast;Medium;Slow;Slower;Very Slow;Placebo$"", InputType=$select:msg:Select Input Type;Interlaced|0;Progressive|1;Progressive Repair Details|2;Progressive Full Repair|3$, sourceMatch=3, sharpness=0.2, tr2=2, ediThreads=8)"),
New VideoFilter("Field", "QTGMC | QTGMC With Repair", "QTGMC1 = QTGMC(preset=""Slower"", inputType=2)" + BR + "QTGMC2 = QTGMC(preset=""Slower"", inputType=3, prevGlobals=""Reuse"")" + BR + "$select:msg:Select Repair Mode To Use;Repair|Repair(QTGMC1, QTGMC2, 1);Repair16|Repair16(QTGMC1, QTGMC2, 1)$")}})
Add(New PluginPackage With {
.Name = "mClean",
.Filename = "mClean.avsi",
.URL = "http://forum.doom9.org/showthread.php?t=174804",
.Description = "Removes noise whilst retaining as much detail as possible.",
.AvsFilterNames = {"mClean"},
.AvsFiltersFunc = Function() {New VideoFilter("Noise", "mClean", "mClean()")}})
Add(New PluginPackage With {
.Name = "LSFmod",
.Filename = "LSFmod.avsi",
.URL = "http://avisynth.nl/index.php/LSFmod",
.Description = "A LimitedSharpenFaster mod with a lot of new features and optimizations.",
.AvsFilterNames = {"LSFmod"},
.AvsFiltersFunc = Function() {New VideoFilter("Line", "Sharpen | LSFmod", "LSFmod(defaults=""slow"", strength=100, Smode=5, Smethod=3, kernel=11, preblur=""OFF"", secure=true, Szrp=16, Spwr=4, SdmpLo=4, SdmpHi=48, Lmode=4, overshoot=1, undershoot=1, Overshoot2=1, Undershoot2=1, soft=-2, soothe=true, keep=20, edgemode=0, edgemaskHQ=true, ss_x=1.50, ss_y=1.50, dest_x=%target_width%, dest_y=%target_height%, show=false, screenW=1280, screenH=1024)")}})
Add(New PluginPackage With {
.Name = "vsCube",
.Filename = "vscube.dll",
.Description = "Deblocking plugin using the deblocking filter of h264.",
.WebURL = "http://rationalqm.us/mine.html",
.DirPath = "Plugins\AVS\VSCube",
.AvsFilterNames = {"Cube"},
.AvsFiltersFunc = Function() {
New VideoFilter("Color", "HDRCore | Cube", "Cube(""$browse_file$"")")}})
Add(New PluginPackage With {
.Name = "RgTools",
.Filename = "RgTools.dll",
.URL = "http://github.com/pinterf/RgTools",
.HelpFile = "RemoveGrain.htm",
.Description = "RgTools is a modern rewrite of RemoveGrain, Repair, BackwardClense, Clense, ForwardClense and VerticalCleaner all in a single plugin.",
.AvsFilterNames = {"RemoveGrain", "Clense", "ForwardClense", "BackwardClense", "Repair", "VerticalCleaner"},
.AvsFiltersFunc = Function() {
New VideoFilter("Noise", "RemoveGrain | RemoveGrain | RemoveGrain", "RemoveGrain(mode=2, modeU=2, modeV=2, planar=false)"),
New VideoFilter("Noise", "RemoveGrain | RemoveGrain | RemoveGrain With Repair", "Processed = RemoveGrain(mode=2, modeU=2, modeV=2, planar=false)" + BR + "Repair(Processed, mode=2, modeU=2, modeV=2, planar=false)")}})
Add(New PluginPackage With {
.Name = "JPSDR",
.Filename = "Plugins_JPSDR.dll",
.WebURL = "http://forum.doom9.org/showthread.php?t=174248",
.Description = "Merge of AutoYUY2, NNEDI3, HDRTools, aWarpSharpMT and ResampleMT",
.AvsFilterNames = {"aBlur", "aSobel", "AutoYUY2", "aWarp", "aWarp4", "aWarpSharp2", "BicubicResizeMT", "BilinearResizeMT", "BlackmanResizeMT", "ConvertLinearRGBtoYUV", "ConvertRGB_Hable_HDRtoSDR", "ConvertRGB_Mobius_HDRtoSDR", "ConvertRGB_Reinhard_HDRtoSDR", "ConvertRGBtoXYZ", "ConvertXYZ_Hable_HDRtoSDR", "ConvertXYZ_Mobius_HDRtoSDR", "ConvertXYZ_Reinhard_HDRtoSDR", "ConvertXYZ_Scale_HDRtoSDR", "ConvertXYZ_Scale_SDRtoHDR", "ConvertXYZtoRGB", "ConvertXYZtoYUV", "ConvertYUVtoLinearRGB", "ConvertYUVtoXYZ", "DeBicubicResizeMT", "DeBilinearResizeMT", "DeBlackmanResizeMT", "DeGaussResizeMT", "DeLanczos4ResizeMT", "DeLanczosResizeMT", "DeSincResizeMT", "DeSpline16ResizeMT", "DeSpline36ResizeMT", "DeSpline64ResizeMT", "GaussResizeMT", "Lanczos4ResizeMT", "LanczosResizeMT", "nnedi3", "PointResizeMT", "SincResizeMT", "Spline16ResizeMT", "Spline36ResizeMT", "Spline64ResizeMT"},
.AvsFiltersFunc = Function() {
New VideoFilter("Field", "nnedi3", "nnedi3(field=1)"),
New VideoFilter("Resize", "ResizeMT", "$select:BicubicResizeMT;BilinearResizeMT;BlackmanResizeMT;GaussResizeMT;Lanczos4ResizeMT;LanczosResizeMT;PointResizeMT;SincResizeMT;Spline16ResizeMT;Spline36ResizeMT;Spline64ResizeMT$(%target_width%, %target_height%, prefetch=4)"),
New VideoFilter("Line", "Sharpen | aWarpSharp2", "aWarpSharp2(thresh=128, blur=2, type=0, depth=16, chroma=3)")}})
Add(New PluginPackage With {
.Name = "TIVTC",
.Filename = "TIVTC.dll",
.WebURL = "http://github.com/pinterf/TIVTC",
.HelpURL = "https://github.com/pinterf/TIVTC/tree/master/Doc_TIVTC",
.Description = "TIVTC is a plugin package containing 7 different filters and 3 conditional functions.",
.AvsFilterNames = {"TFM", "TDecimate", "MergeHints", "FrameDiff", "FieldDiff", "ShowCombedTIVTC", "RequestLinear"}})
Add(New PluginPackage With {
.Name = "masktools2",
.Filename = "masktools2.dll",
.URL = "http://github.com/pinterf/masktools",
.Description = "MaskTools2 contain a set of filters designed to create, manipulate and use masks. Masks, in video processing, are a way to give a relative importance to each pixel. You can, for example, create a mask that selects only the green parts of the video, and then replace those parts with another video.",
.AvsFilterNames = {"mt_adddiff", "mt_average", "mt_binarize", "mt_circle", "mt_clamp", "mt_convolution", "mt_diamond", "mt_edge", "mt_ellipse", "mt_expand", "mt_hysteresis", "mt_inflate", "mt_inpand", "mt_invert", "mt_logic", "mt_losange", "mt_lut", "mt_lutf", "mt_luts", "mt_lutxy", "mt_makediff", "mt_mappedblur", "mt_merge", "mt_motion", "mt_polish", "mt_rectangle", "mt_square"}})
Add(New PluginPackage With {
.Name = "FluxSmooth",
.Filename = "FluxSmooth.dll",
.AvsFilterNames = {"FluxSmoothT", "FluxSmoothST"},
.Description = "One of the fundamental properties of noise is that it's random. One of the fundamental properties of motion is that it's not. This is the premise behind FluxSmooth, which examines each pixel and compares it to the corresponding pixel in the previous and last frame. Smoothing occurs if both the previous frame's value and the next frame's value are greater, or if both are less, than the value in the current frame.",
.WebURL = "http://avisynth.nl/index.php/FluxSmooth"})
Add(New PluginPackage With {
.Name = "yadifmod2",
.Filename = "yadifmod2.dll",
.Description = "Yet Another Deinterlacing Filter mod for Avisynth2.6/Avisynth+",
.HelpURL = "http://github.com/chikuzen/yadifmod2/blob/master/avisynth/readme.md",
.WebURL = "http://github.com/chikuzen/yadifmod2",
.AvsFilterNames = {"yadifmod2"},
.AvsFiltersFunc = Function() {New VideoFilter("Field", "yadifmod2", "yadifmod2()")}})
Add(New PluginPackage With {
.Name = "FixTelecinedFades",
.Filename = "libftf_em64t_avx_fma.dll",
.DirPath = "Plugins\VS\FixTelecinedFades",
.Description = "InsaneAA Anti-Aliasing Script.",
.URL = "https://github.com/IFeelBloated/Fix-Telecined-Fades",
.VSFilterNames = {"ftf.FixFades"},
.VSFiltersFunc = Function() {
New VideoFilter("Restoration", "RCR | Fix Telecined Fades", "clip = core.fmtc.bitdepth (clip, bits=32)" + BR + "clip = core.ftf.FixFades(clip)" + BR + "clip = core.fmtc.bitdepth (clip, bits=8)")}})
Add(New PluginPackage With {
.Name = "vcmod",
.Filename = "vcmod.dll",
.HelpFile = "vcmod.html",
.Description = "vcmod plugin for VapourSynth.",
.URL = "http://www.avisynth.nl/users/vcmohan/vcmod/vcmod.html",
.VSFilterNames = {"vcmod.Median", "vcmod.Variance", "vcmod.Amplitude", "vcmod.GBlur", "vcmod.MBlur", "vcmod.Histogram", "vcmod.Fan", "vcmod.Variance", "vcmod.Neural", "vcmod.Veed", "vcmod.SaltPepper"}})
Add(New PluginPackage With {
.Name = "vcmove",
.Filename = "vcmove.dll",
.HelpFile = "vcmove.html",
.Description = "vcmove plugin for VapourSynth.",
.URL = "http://www.avisynth.nl/users/vcmohan/vcmove/vcmove.html",
.VSFilterNames = {"vcmove.Rotate", "vcmove.DeBarrel", "vcmove.Quad2Rect", "vcmove.Rect2Quad"}})
Add(New PluginPackage With {
.Name = "vcfreq",
.Filename = "vcfreq.dll",
.HelpFile = "vcfreq.html",
.Description = "vcvcfreq plugin for VapourSynth.",
.URL = "http://www.avisynth.nl/users/vcmohan/vcfreq/vcfreq.html",
.VSFilterNames = {"vcfreq.F1Quiver", "vcfreq.F2Quiver", "vcfreq.Blur", "vcfreq.Sharp"}})
Add(New PluginPackage With {
.Name = "Yadifmod",
.Filename = "Yadifmod.dll",
.Description = "Modified version of Fizick's avisynth filter port of yadif from mplayer. This version doesn't internally generate spatial predictions, but takes them from an external clip.",
.WebURL = "http://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod",
.VSFilterNames = {"yadifmod.Yadifmod"},
.VSFiltersFunc = Function() {
New VideoFilter("Field", "Yadifmod", "clip = core.yadifmod.Yadifmod(clip, core.nnedi3.nnedi3(clip, field=0), order=1, field=-1, mode=0)")}})
Add(New PluginPackage With {
.Name = "nnedi3",
.Filename = "libnnedi3.dll",
.DirPath = "Plugins\VS\nnedi3",
.WebURL = "http://github.com/dubhater/vapoursynth-nnedi3",
.Description = "nnedi3 is an intra-field only deinterlacer. It takes in a frame, throws away one field, and then interpolates the missing pixels using only information from the kept field.",
.VSFilterNames = {"nnedi3.nnedi3"}})
Add(New PluginPackage With {
.Name = "FFT3DFilter",
.Filename = "fft3dfilter.dll",
.WebURL = "http://github.com/VFR-maniac/VapourSynth-FFT3DFilter",
.Description = "FFT3DFilter uses Fast Fourier Transform method for image processing in frequency domain.",
.VSFilterNames = {"fft3dfilter.FFT3DFilter"}})
Add(New PluginPackage With {
.Name = "mvtools",
.Filename = "libmvtools.dll",
.WebURL = "http://github.com/dubhater/vapoursynth-mvtools",
.Description = "MVTools is a set of filters for motion estimation and compensation.",
.VSFilterNames = {"mv.Super", "mv.Analyse", "mv.Recalculate", "mv.Compensate", "mv.Degrain1", "mv.Degrain2",
"mv.Degrain3", "mv.Mask", "mv.Finest", "mv.Flow", "mv.FlowBlur", "mv.FlowInter", "mv.FlowFPS", "mv.BlockFPS", "mv.SCDetection",
"mv.DepanAnalyse", "mv.DepanEstimate", "mv.DepanCompensate", "mv.DepanStabilise"}})
Add(New PluginPackage With {
.Name = "mvtools-sf",
.Filename = "libmvtools_sf_em64t.dll",
.WebURL = "http://github.com/dubhater/vapoursynth-mvtools",
.Description = "MVTools is a set of filters for motion estimation and compensation.",
.VSFilterNames = {"mvsf.Super", "mvsf.Analyse", "mvsf.Recalculate", "mvsf.Compensate", "mvsf.Degrain1", "mvsf.Degrain2",
"mvsf.Degrain3", "mvsf.Mask", "mvsf.Finest", "mvsf.Flow", "mvsf.FlowBlur", "mvsf.FlowInter", "mvsf.FlowFPS", "mvsf.BlockFPS", "mvsf.SCDetection",
"mvsf.DepanAnalyse", "mvsf.DepanEstimate", "mvsf.DepanCompensate", "mvsf.DepanStabilise"}})
Add(New PluginPackage With {
.Name = "TemporalMedian",
.Filename = "libtemporalmedian.dll",
.WebURL = "https://github.com/dubhater/vapoursynth-temporalmedian",
.Description = "TemporalMedian is a temporal denoising filter. It replaces every pixel with the median of its temporal neighbourhood.",
.VSFilterNames = {"tmedian.TemporalMedian"}})
Add(New PluginPackage With {
.Name = "resamplehq",
.Filename = "resamplehq.py",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "https://gist.github.com/4re/b5399b1801072458fc80#file-mcdegrainsharp-py",
.Description = "TemporalMedian is a temporal denoising filter. It replaces every pixel with the median of its temporal neighbourhood.",
.VSFilterNames = {"resamplehq.resamplehq"},
.VSFiltersFunc = Function() {
New VideoFilter("Resize", "ReSampleHQ", "clip = resamplehq.resamplehq(clip, %target_width%, %target_height%, kernel='$select:Point;Rect;Linear;Cubic;Lanczos;Blackman;Blackmanminlobe;Spline16;Spline36;Spline64;Gauss;Sinc$')")}})
Add(New PluginPackage With {
.Name = "mcdegrainsharp",
.Filename = "mcdegrainsharp.py",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "https://gist.github.com/4re/b5399b1801072458fc80#file-mcdegrainsharp-py",
.Description = "TemporalMedian is a temporal denoising filter. It replaces every pixel with the median of its temporal neighbourhood.",
.VSFilterNames = {"mcdegrainsharp.mcdegrainsharp"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | McDegrainSharp", "clip = mcdegrainsharp.mcdegrainsharp(clip, plane=4)")}})
Add(New PluginPackage With {
.Name = "G41Fun",
.Filename = "G41Fun.py",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "https://github.com/Helenerineium/hnwvsfunc",
.Description = "The replaced script for hnwvsfunc with re-written functions.",
.VSFilterNames = {"G41Fun.mClean", "G41Fun.NonlinUSM", "G41Fun.DetailSharpen", "G41Fun.LUSM", "G41Fun.JohnFPS", "G41Fun.TemporalDegrain2",
"G41Fun.MCDegrainSharp", "G41Fun.FineSharp", "G41Fun.psharpen", "G41Fun.QTGMC", "G41Fun.SMDegrain", "G41Fun.daamod",
"G41Fun.STPressoHD", "G41Fun.MLDegrain", "G41Fun.Hysteria", "G41Fun.SuperToon", "G41Fun.EdgeDetect", "G41Fun.SpotLess",
"G41Fun.HQDeringmod", "G41Fun.LSFmod", "G41Fun.SeeSaw", "G41Fun.MaskedDHA"}})
Add(New PluginPackage With {
.Name = "fvsfunc",
.Filename = "fvsfunc.py",
.Description = "Small collection of VapourSynth functions",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "https://github.com/Irrational-Encoding-Wizardry/fvsfunc",
.VSFilterNames = {"fvsfunc.GradFun3mod", "fvsfunc.DescaleM", "fvsfunc.Downscale444", "fvsfunc.JIVTC", "fvsfunc.OverlayInter", "fvsfunc.AutoDeblock", "fvsfunc.ReplaceFrames", "fvsfunc.maa", "fvsfunc.TemporalDegrain",
"fvsfunc.DescaleAA", "fvsfunc.InsertSign"}})
Add(New PluginPackage With {
.Name = "nnedi3_rpow2",
.Filename = "nnedi3_rpow2.py",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "https://github.com/Irrational-Encoding-Wizardry/fvsfunc",
.Description = "nnedi3_rpow2 ported from Avisynth for VapourSynth",
.VSFilterNames = {"nnedi3_rpow2"}})
Add(New PluginPackage With {
.Name = "mvmulti",
.Filename = "mvmulti.py",
.DirPath = "Plugins\VS\Scripts",
.WebURL = "http://github.com/dubhater/vapoursynth-mvtools",
.Description = "MVTools is a set of filters for motion estimation and compensation.",
.VSFilterNames = {"mvmulti.StoreVect", "mvmulti.Analyse", "mvmulti.Recalculate", "mvmulti.Compensate", "mvmulti.Restore", "mvmulti.Flow", "mvmulti.DegrainN"}})
Add(New PluginPackage With {
.Name = "Sangnom",
.Filename = "libsangnom.dll",
.WebURL = "https://bitbucket.org/James1201/vapoursynth-sangnom/overview",
.Description = "SangNom is a single field deinterlacer using edge-directed interpolation but nowadays it's mainly used in anti-aliasing scripts.",
.VSFilterNames = {"sangnom.SangNom"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Anti-Aliasing | Sangnom", "clip = core.sangnom.SangNom(clip)")}})
Add(New PluginPackage With {
.Name = "znedi3",
.Filename = "vsznedi3.dll",
.DirPath = "Plugins\VS\nnedi3",
.HelpFile = "Readme.txt",
.WebURL = "https://github.com/sekrit-twc/znedi3",
.Description = "znedi3 is a CPU-optimized version of nnedi.",
.VSFilterNames = {"znedi3.nnedi3"}})
Add(New PluginPackage With {
.Name = "nnedi3cl",
.Filename = "NNEDI3CL.dll",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-NNEDI3CL",
.DirPath = "Plugins\VS\nnedi3",
.Description = "nnedi3 is an intra-field only deinterlacer. It takes a frame, throws away one field, and then interpolates the missing pixels using only information from the remaining field. It is also good for enlarging images by powers of two.",
.VSFilterNames = {"nnedi3cl.NNEDI3CL"}})
Add(New PluginPackage With {
.Name = "EEDI3m",
.Filename = "EEDI3m.dll",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI3",
.Description = "EEDI3 works by finding the best non-decreasing (non-crossing) warping between two lines by minimizing a cost functional.",
.VSFilterNames = {"eedi3m.EEDI3"}})
Add(New PluginPackage With {
.Name = "EEDI2",
.Filename = "EEDI2.dll",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-EEDI2",
.Description = "EEDI2 works by finding the best non-decreasing (non-crossing) warping between two lines by minimizing a cost functional.",
.VSFilterNames = {"eedi2.EEDI2"}})
Add(New PluginPackage With {
.Name = "W3FDIF",
.Filename = "W3FDIF.dll",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-W3FDIF/releases",
.Description = "Weston 3 Field Deinterlacing Filter. Ported from FFmpeg's libavfilter.",
.VSFilterNames = {"w3fdif.W3FDIF"}})
Add(New PluginPackage With {
.Name = "MiniDeen",
.Filename = "libminideen.dll",
.WebURL = "https://github.com/dubhater/vapoursynth-minideen",
.Description = "MiniDeen is a spatial denoising filter. It replaces every pixel with the average of its neighbourhood.",
.VSFilterNames = {"minideen.MiniDeen"}})
Add(New PluginPackage With {
.Name = "IT",
.Filename = "vs_it.dll",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-IT",
.Description = "VapourSynth Plugin - Inverse Telecine (YV12 Only, IT-0051 base, IT_YV12-0103 base).",
.VSFilterNames = {"it.IT"}})
Add(New PluginPackage With {
.Name = "TDeintMod",
.Filename = "TDeintMod.dll",
.HelpFile = "Readme.txt",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod",
.Description = "TDeintMod is a combination of TDeint and TMM, which are both ported from tritical's AviSynth plugin.",
.VSFilterNames = {"tdm.TDeintMod"}})
Add(New PluginPackage With {
.Name = "adjust",
.Filename = "adjust.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "very basic port of the built-in Avisynth filter Tweak.",
.URL = "http://github.com/dubhater/vapoursynth-adjust",
.VSFilterNames = {"adjust.Tweak"}})
Add(New PluginPackage With {
.Name = "Oyster",
.Filename = "Oyster.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "Oyster is an experimental implement of the Blocking Matching concept, designed specifically for compression artifacts removal.",
.URL = "https://github.com/IFeelBloated/Oyster",
.VSFilterNames = {"Oyster.Basic", "Oyster.Deringing", "Oyster.Destaircase", "Oyster.Deblocking", "Oyster.Super"}})
Add(New PluginPackage With {
.Name = "Plum",
.Filename = "Plum.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "Plum is a sharpening/blind deconvolution suite with certain advanced features like Non-Local error, Block Matching, etc..",
.URL = "https://github.com/IFeelBloated/Plum",
.VSFilterNames = {"Plum.Super", "Plum.Basic", "Plum.Final"}})
Add(New PluginPackage With {
.Name = "Vine",
.Filename = "Vine.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "Plum is a sharpening/blind deconvolution suite with certain advanced features like Non-Local error, Block Matching, etc..",
.URL = "https://github.com/IFeelBloated/Plum",
.VSFilterNames = {"Vine.Super", "Vine.Basic", "Vine.Final", "Vine.Dilation", "Vine.Erosion", "Vine.Closing", "Vine.Opening", "Vine.Gradient", "Vine.TopHat", "Vine.Blackhat"}})
Add(New PluginPackage With {
.Name = "TCanny",
.Filename = "TCanny.dll",
.Description = "Builds an edge map using canny edge detection.",
.URL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TCanny",
.VSFilterNames = {"tcanny.TCanny"}})
Add(New PluginPackage With {
.Name = "taa",
.Filename = "vsTAAmbk.py",
.Description = "A ported AA-script from Avisynth.",
.DirPath = "Plugins\VS\Scripts",
.URL = "https://github.com/HomeOfVapourSynthEvolution/vsTAAmbk",
.VSFilterNames = {"taa.TAAmbk", "taa.vsTAAmbk"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Anti-Aliasing | TAAmbk", "clip = taa.TAAmbk(clip, preaa=-1, aatype=4, mtype=1, mthr=24, sharp=-1,aarepair=-20, postaa=False, stabilize=1)")}})
Add(New PluginPackage With {
.Name = "mvsfunc",
.Filename = "mvsfunc.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "mawen1250's VapourSynth functions.",
.HelpURL = "http://forum.doom9.org/showthread.php?t=172564",
.WebURL = "http://github.com/HomeOfVapourSynthEvolution/mvsfunc",
.VSFilterNames = {
"mvsfunc.Depth", "mvsfunc.ToRGB", "mvsfunc.ToYUV", "mvsfunc.BM3D", "mvsfunc.VFRSplice",
"mvsfunc.PlaneStatistics", "mvsfunc.PlaneCompare", "mvsfunc.ShowAverage", "mvsfunc.FilterIf",
"mvsfunc.FilterCombed", "mvsfunc.Min", "mvsfunc.Max", "mvsfunc.Avg", "mvsfunc.MinFilter",
"mvsfunc.MaxFilter", "mvsfunc.LimitFilter", "mvsfunc.PointPower", "mvsfunc.CheckMatrix",
"mvsfunc.postfix2infix", "mvsfunc.SetColorSpace", "mvsfunc.AssumeFrame", "mvsfunc.AssumeTFF",
"mvsfunc.AssumeBFF", "mvsfunc.AssumeField", "mvsfunc.AssumeCombed", "mvsfunc.CheckVersion",
"mvsfunc.GetMatrix", "mvsfunc.zDepth", "mvsfunc.GetPlane", "mvsfunc.PlaneAverage",
"mvsfunc.Preview", "mvsfunc.GrayScale"}})
Add(New PluginPackage With {
.Name = "d2vsource",
.Filename = "d2vsource.dll",
.Description = "Source filter to open D2V index files created with DGIndex or D2VWitch.",
.URL = "http://github.com/dwbuiten/d2vsource",
.VSFilterNames = {"d2v.Source"},
.VSFiltersFunc = Function() {
New VideoFilter("Source", "d2vsource", "clip = core.d2v.Source(r'%source_file%')")}})
Add(New PluginPackage With {
.Name = "FluxSmooth",
.Filename = "libfluxsmooth.dll",
.VSFilterNames = {"flux.SmoothT", "flux.SmoothST"},
.Description = "FluxSmooth is a filter for smoothing of fluctuations.",
.WebURL = "http://github.com/dubhater/vapoursynth-fluxsmooth"})
Add(New PluginPackage With {
.Name = "CNR2",
.Filename = "libcnr2.dll",
.DirPath = "Plugins\VS\CNR2",
.VSFilterNames = {"cnr2.Cnr2"},
.Description = "Cnr2 is a temporal denoiser designed to denoise only the chroma.",
.WebURL = "https://github.com/dubhater/vapoursynth-cnr2"})
Add(New PluginPackage With {
.Name = "CTMF",
.Filename = "CTMF.dll",
.VSFilterNames = {"ctmf.CTMF"},
.Description = "Constant Time Median Filtering.",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-CTMF"})
Add(New PluginPackage With {
.Name = "msmoosh",
.Filename = "libmsmoosh.dll",
.VSFilterNames = {"msmoosh.MSmooth", "msmoosh.MSharpen"},
.Description = "MSmooth is a spatial smoother that doesn't touch edges." + BR + "MSharpen is a sharpener that tries to sharpen only edges.",
.WebURL = "http://github.com/dubhater/vapoursynth-msmoosh",
.VSFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | MSmooth", "clip = core.msmoosh.MSmooth(clip, threshold=3.0, strength=1)"),
New VideoFilter("Line", "Sharpen | MSharpen", "clip = core.msmoosh.MSharpen(clip, threshold=6.0, strength=39)")}})
Add(New PluginPackage With {
.Name = "SVPFlow 1",
.DirPath = "Plugins\VS\SVPFlow",
.Description = "Motion vectors search plugin is a deeply refactored and modified version of MVTools2 Avisynth plugin",
.Filename = "svpflow1_vs64.dll",
.WebURL = "https://www.svp-team.com/wiki/Manual:SVPflow",
.VSFilterNames = {"core.svp1.Super", "core.svp1.Analyse", "core.svp1.Convert"}})
Add(New PluginPackage With {
.Name = "SVPFlow 2",
.DirPath = "Plugins\VS\SVPFlow",
.Description = "Motion vectors search plugin is a deeply refactored and modified version of MVTools2 Avisynth plugin",
.Filename = "svpflow2_vs64.dll",
.WebURL = "https://www.svp-team.com/wiki/Manual:SVPflow",
.VSFilterNames = {"core.svp2.SmoothFps"}})
Add(New PluginPackage With {
.Name = "Dither",
.DirPath = "Plugins\VS\Scripts",
.Description = "VapourSynth port of DitherTools",
.Filename = "Dither.py",
.WebURL = "https://github.com/IFeelBloated/VaporSynth-Functions",
.VSFilterNames = {"Dither.sigmoid_direct", "Dither.sigmoid_inverse", "Dither.linear_to_gamma", "Dither.gamma_to_linear", "Dither.clamp16", "Dither.sbr16", "Dither.Resize16nr", "Dither.get_msb", "Dither.get_lsb"}})
Add(New PluginPackage With {
.Name = "DeblockPP7",
.Filename = "DeblockPP7.dll",
.Description = "VapourSynth port of pp7 from MPlayer.",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DeblockPP7",
.VSFilterNames = {"pp7.DeblockPP7"},
.VSFiltersFunc = Function() {
New VideoFilter("Restoration", "DeBlock | DeBlock PP7", "$select:msg:Select Strength;Medium|clip = core.pp7.DeblockPP7(clip=clip, mode=2);Hard|clip = core.pp7.DeblockPP7(clip=clip);Soft|clip = core.pp7.DeblockPP7(clip=clip, mode=1)$")}})
Add(New PluginPackage With {
.Name = "HQDN3D",
.Filename = "libhqdn3d.dll",
.Description = "Avisynth port of hqdn3d from avisynth/mplayer.",
.WebURL = "https://github.com/Hinterwaeldlers/vapoursynth-hqdn3d",
.VSFilterNames = {"hqdn3d.Hqdn3d"},
.VSFiltersFunc = Function() {
New VideoFilter("Noise", "HQDN3D", "clip = core.hqdn3d.Hqdn3d(clip=clip)")}})
Add(New PluginPackage With {
.Name = "VagueDenoiser",
.Filename = "VagueDenoiser.dll",
.Description = "VapourSynth port of VagueDenoiser.",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-VagueDenoiser",
.VSFilterNames = {"vd.VagueDenoiser"},
.VSFiltersFunc = Function() {
New VideoFilter("Noise", "VagueDenoiser", "clip = core.vd.VagueDenoiser(clip=clip, method=$select:msg:Select Strength;Soft|1;Hard|0$)")}})
Add(New PluginPackage With {
.Name = "TTempSmooth",
.Filename = "TTempSmooth.dll",
.Description = "VapourSynth port of TTempSmooth.",
.WebURL = "https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TTempSmooth",
.VSFilterNames = {"ttmpsm.TTempSmooth"},
.VSFiltersFunc = Function() {
New VideoFilter("Noise", "TTempSmooth", "clip = core.ttmpsm.TTempSmooth(clip)")}})
Add(New PluginPackage With {
.Name = "TimeCube",
.Filename = "vscube.dll",
.Description = "Allows Usage of 3DLuts.",
.WebURL = "https://github.com/sekrit-twc/timecube",
.VSFilterNames = {"timecube.Cube"}})
Add(New PluginPackage With {
.Name = "DegrainMedian",
.Filename = "libdegrainmedian.dll",
.Description = "VapourSynth port of DegrainMedian",
.WebURL = "https://github.com/dubhater/vapoursynth-degrainmedian",
.VSFilterNames = {"dgm.DegrainMedian"},
.VSFiltersFunc = Function() {
New VideoFilter("Noise", "RemoveGrain | DegrainMedian", "clip = core.dgm.DegrainMedian(clip=clip, interlaced=False)")}})
Add(New PluginPackage With {
.Name = "psharpen",
.Filename = "psharpen.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "VapourSynth port of pSharpen",
.VSFilterNames = {"psharpen.psharpen"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | pSharpen", "clip = psharpen.psharpen(clip)")}})
Add(New PluginPackage With {
.Name = "AWarpSharp2",
.Filename = "libawarpsharp2.dll",
.Description = "VapourSynth port of AWarpSharp2",
.WebURL = "https://github.com/dubhater/vapoursynth-awarpsharp2",
.VSFilterNames = {"warp.AWarpSharp2"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | aWarpSharpen2", "clip = core.warp.AWarpSharp2(clip=clip, blur=2)")}})
Add(New PluginPackage With {
.Name = "fmtconv",
.Filename = "fmtconv.dll",
.WebURL = "http://github.com/EleonoreMizo/fmtconv",
.HelpFile = "doc\fmtconv.html",
.Description = "Fmtconv is a format-conversion plug-in for the Vapoursynth video processing engine. It does resizing, bitdepth conversion with dithering and colorspace conversion.",
.VSFilterNames = {"fmtc.bitdepth", "fmtc.convert", " core.fmtc.matrix", "fmtc.resample", "fmtc.transfer", "fmtc.primaries", " core.fmtc.matrix2020cl", "fmtc.stack16tonative", "nativetostack16"}})
Add(New PluginPackage With {
.Name = "finesharp",
.Filename = "finesharp.py",
.DirPath = "Plugins\VS\Scripts",
.Description = "Port of Didie's FineSharp script to VapourSynth.",
.WebURL = "http://forum.doom9.org/showthread.php?p=1777860#post1777860",
.VSFilterNames = {"finesharp.sharpen"},
.VSFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | FineSharp", "$select:msg:Select Strength;Light|clip = finesharp.sharpen(clip, mode=1, sstr=2, cstr=0.8, xstr=0.19, lstr=1.49, pstr=1.272);Moderate|clip = finesharp.sharpen(clip, mode=2, sstr=2.0, cstr=1.3, xstr=0.0, lstr=1.49, pstr=1.472);Strong|clip = finesharp.sharpen(clip, mode=3, sstr=6.0, cstr=1.3, xstr=0.0, lstr=1.49, pstr=1.472)$")}})
Add(New PluginPackage With {
.Name = "FineSharp",
.Filename = "FineSharp.avsi",
.Description = "Small and fast realtime-sharpening function for 1080p, or after scaling 720p -> 1080p. It's a generic sharpener only for good quality sources!",
.WebURL = "http://avisynth.nl/index.php/FineSharp",
.AvsFilterNames = {"FineSharp"},
.AvsFiltersFunc = Function() {
New VideoFilter("Line", "Sharpen | FineSharp", "$select:msg:Select Strength;Light|FineSharp(mode=1, sstr=2, cstr=0.8, xstr=0.19, lstr=1.49, pstr=1.272);Moderate|FineSharp(mode=2, sstr=2.0, cstr=1.3, xstr=0.0, lstr=1.49, pstr=1.472);Strong|FineSharp(mode=3, sstr=6.0, cstr=1.3, xstr=0.0, lstr=1.49, pstr=1.472)$")}})
Add(New PluginPackage With {
.Name = "CropResize",
.Filename = "CropResize.avsi",
.Description = "Advanced crop and resize AviSynth script.",
.WebURL = "https://forum.videohelp.com/threads/393752-CropResize-Cropping-resizing-script",
.AvsFilterNames = {"CropResize"},
.AvsFiltersFunc = Function() {New VideoFilter("Resize", "CropResize", $"CropResize(%target_width%, %target_height%, \{BR} %crop_left%, %crop_top%, -%crop_right%, -%crop_bottom%, \{BR} InDAR=%source_dar%, OutDAR=%target_dar%, Info=true)")}})
Add(New PluginPackage With {
.Name = "DGHDRtoSDR",
.Filename = "DGHDRtoSDR.dll",
.Description = "Convert UHD BluRay HDR10 to SDR (CUDA).",
.WebURL = "http://rationalqm.us/mine.html",
.HelpFile = "DGHDRtoSDR.txt",
.AvsFilterNames = {"DGHDRtoSDR"},
.AvsFiltersFunc = Function() {New VideoFilter("Color", "DGHDRtoSDR", "DGHDRtoSDR()")},
.VSFilterNames = {"DGHDRtoSDR"},
.VSFiltersFunc = Function() {New VideoFilter("Color", "DGHDRtoSDR", "clip = core.dghdrtosdr.DGHDRtoSDR(clip, fulldepth=True)")}})
Dim fp = Folder.Settings + "Versions.txt"
Try
If Not File.Exists(fp) OrElse Not File.ReadAllText(fp).Contains(Application.ProductVersion + BR2) Then
FileHelp.Delete(fp)
fp = Folder.Apps + "Versions.txt"
End If
For Each line In File.ReadAllLines(fp)
For Each pack In Items.Values
If line Like "*=*;*" Then
Dim name = line.Left("=").Trim
If name = pack.ID Then
pack.Version = line.Right("=").Right(";").Trim
Dim a = line.Right("=").Left(";").Trim.Split("-"c)
pack.VersionDate = New DateTime(CInt(a(0)), CInt(a(1)), CInt(a(2)))
End If
End If
Next
Next
Catch ex As Exception
g.ShowException(ex)
End Try
End Sub
ReadOnly Property ID As String
Get
If TypeOf Me Is PluginPackage Then
Dim plugin = DirectCast(Me, PluginPackage)
If Not plugin.AvsFilterNames.NothingOrEmpty AndAlso
Not plugin.VSFilterNames.NothingOrEmpty Then
Return Name + " avs+vs"
ElseIf Not plugin.AvsFilterNames.NothingOrEmpty Then
Return Name + " avs"
ElseIf Not plugin.VSFilterNames.NothingOrEmpty Then
Return Name + " vs"
End If
End If
Return Name
End Get
End Property
Private StartActionValue As Action
Overridable Property StartAction As Action
Get
If IsLaunchable Then Return Sub() g.StartProcess(Path)
Return StartActionValue
End Get
Set(value As Action)
StartActionValue = value
End Set
End Property
Overridable ReadOnly Property LaunchTitle As String
Get
Return Name
End Get
End Property
Private IsRequiredValue As Boolean = True
Overridable Property IsRequired() As Boolean
Get
If Not IsRequiredFunc Is Nothing Then Return IsRequiredFunc.Invoke
Return IsRequiredValue
End Get
Set(value As Boolean)
IsRequiredValue = value
End Set
End Property
Function GetHelpPath(Optional engine As ScriptEngine = ScriptEngine.AviSynth) As String
If HelpFile <> "" Then
Return GetDir() + HelpFile
ElseIf HelpURL <> "" Then
Return HelpURL
ElseIf Not HelpURLFunc Is Nothing Then
Return HelpURLFunc.Invoke(engine)
ElseIf WebURL <> "" Then
Return WebURL
End If
End Function
Function VerifyOK(Optional showEvenIfNotRequired As Boolean = False) As Boolean
If (IsRequired() OrElse showEvenIfNotRequired) AndAlso IsStatusCritical() Then
Using f As New AppsForm
f.ShowPackage(Me)
f.ShowDialog()
End Using
If IsStatusCritical() Then Return False
End If
Return True
End Function
Function IsStatusCritical() As Boolean
Return GetStatusLocation() <> "" OrElse GetStatus() <> ""
End Function
Overridable Function GetStatus() As String
If IsOutdated() Then Return "Unsupported outdated version, continue with F12 if you must."
If Not StatusFunc Is Nothing Then Return StatusFunc.Invoke
End Function
Function GetStatusDisplay() As String
Dim ret = GetStatusLocation()
If ret <> "" Then Return ret
ret = GetStatus()
If ret <> "" Then Return ret
ret = GetStatusVersion()
If ret <> "" Then Return ret
Return "OK"
End Function
Function GetStatusVersion() As String
If Not IsCorrectVersion() Then
Dim text = If(IgnoreVersion, "OK", "Unknown version, press F12 to edit the version.")
If SetupFilename = "" Then
Return text
Else
Return text + " In case of problems download and install the required version."
End If
End If
End Function
Function GetAppNotFoundMessage() As String
If FixedDir <> "" Then
Return "App not found at '" + FixedDir.TrimEnd("\"c) + "'"
Else
Return "App not found, press F11 to locate the App."
End If
End Function
Function GetStatusLocation() As String
Dim pathVar = Path
If pathVar = "" Then
If FileNotFoundMessage <> "" Then
Return GetAppNotFoundMessage() + " " + FileNotFoundMessage
ElseIf SetupFilename <> "" Then
Return "Please install " + Name + "."
End If
Return GetAppNotFoundMessage()
End If
If FixedDir <> "" AndAlso pathVar <> "" AndAlso Not pathVar.ToLower.StartsWith(FixedDir.ToLower) Then
Return "The App has To be located at: " + FixedDir
End If
End Function
Function IsOutdated() As Boolean
Dim fp = Path
If fp <> "" AndAlso Not IgnoreVersion Then
If (VersionDate - File.GetLastWriteTimeUtc(fp)).TotalDays > 3 Then Return True
End If
End Function
Overridable Function IsCorrectVersion() As Boolean
Dim fp = Path
If fp <> "" Then
Dim dt = File.GetLastWriteTimeUtc(fp)
Return dt.AddDays(-2) < VersionDate AndAlso dt.AddDays(2) > VersionDate
End If
End Function
Function GetDir() As String
Return Path.Dir
End Function
Sub SetPath(pathParam As String)
s?.Storage?.SetString(Name + "custom path", pathParam)
End Sub
Shared Function GetVapourSynthHintDir() As String
Dim ret = Registry.LocalMachine.GetString("Software\VapourSynth", "VapourSynthDLL").Dir
If File.Exists(ret + "VapourSynth.dll") Then
Return ret
End If
Return Registry.CurrentUser.GetString("Software\VapourSynth", "VapourSynthDLL").Dir
End Function
Function GetStoredPath() As String
Dim ret As String
If Not s Is Nothing AndAlso Not s.Storage Is Nothing Then
ret = s.Storage.GetString(Name + "custom path")
If ret <> "" Then
If File.Exists(ret) Then
Return ret
Else
s.Storage.SetString(Name + "custom path", Nothing)
End If
End If
End If
Return ret
End Function
Overridable ReadOnly Property Path As String
Get
Dim ret = GetStoredPath()
If File.Exists(ret) Then Return ret
If FixedDir <> "" Then
If File.Exists(FixedDir + Filename) Then Return FixedDir + Filename
Return Nothing
End If
If DirPath <> "" AndAlso File.Exists(Folder.Apps + DirPath + "\" + Filename) Then
Return Folder.Apps + DirPath + "\" + Filename
End If
If Not HintDirectories.NothingOrEmpty Then
For Each hintDir In HintDirectories
If File.Exists(hintDir + Filename) Then Return hintDir + Filename
Next
End If
If Not HintDirFunc Is Nothing Then
If File.Exists(HintDirFunc.Invoke + Filename) Then Return HintDirFunc.Invoke + Filename
End If
Dim plugin = TryCast(Me, PluginPackage)
If Not plugin Is Nothing Then
If Not plugin.VSFilterNames Is Nothing AndAlso Not plugin.AvsFilterNames Is Nothing Then
ret = Folder.Apps + "Plugins\both\" + Name + "\" + Filename
If File.Exists(ret) Then Return ret
Else
If plugin.VSFilterNames Is Nothing Then
ret = Folder.Apps + "Plugins\avs\" + Name + "\" + Filename
If File.Exists(ret) Then Return ret
Else
ret = Folder.Apps + "Plugins\vs\" + Name + "\" + Filename
If File.Exists(ret) Then Return ret
End If
End If
End If
ret = Folder.Apps + Name + "\" + Filename
If File.Exists(ret) Then Return ret
If Filename?.EndsWith(".exe") Then
Using key = Registry.ClassesRoot.OpenSubKey("Local Settings\Software\Microsoft\Windows\Shell\MuiCache")
If Not key Is Nothing Then
For Each valueName In key.GetValueNames
If valueName.Contains(Filename) Then
ret = valueName.Left(Filename) + Filename
If File.Exists(ret) Then Return ret
End If
Next
End If
End Using
End If
End Get
End Property
Overrides Function ToString() As String
Return Name
End Function
Function CompareTo(other As Package) As Integer Implements System.IComparable(Of Package).CompareTo
Return Name.CompareTo(other.Name)
End Function
End Class
Public Class UnDotPackage
Inherits PluginPackage
Sub New()
Name = "UnDot"
Filename = "UnDot.dll"
WebURL = "http://avisynth.nl/index.php/UnDot"
Description = "UnDot is a simple median filter for removing dots, that is stray orphan pixels and mosquito noise."
AvsFilterNames = {"UnDot"}
End Sub
End Class
Public Class NicAudioPackage
Inherits PluginPackage
Sub New()
Name = "NicAudio"
Filename = "NicAudio.dll"
WebURL = "http://avisynth.org.ru/docs/english/externalfilters/nicaudio.htm"
Description = "AviSynth audio source filter."
AvsFilterNames = {"NicAC3Source", "NicDTSSource", "NicMPASource", "RaWavSource"}
End Sub
End Class
Public Class PythonPackage
Inherits Package
Sub New()
Name = "Python"
Filename = "python.exe"
TreePath = "Runtimes"
WebURL = "http://www.python.org"
Description = "Python is required by VapourSynth."
SetupFilename = "Installers\python-3.7.4-amd64-webinstall.exe"
End Sub
Public Overrides Property IsRequired As Boolean
Get
Return p.Script.Engine = ScriptEngine.VapourSynth
End Get
Set(value As Boolean)
End Set
End Property
Public Overrides ReadOnly Property Path As String
Get
Dim ret = MyBase.Path
If File.Exists(ret) Then Return ret
For Each i In {
Registry.CurrentUser.GetString("SOFTWARE\Python\PythonCore\3.7\InstallPath", "ExecutablePath"),
Registry.LocalMachine.GetString("SOFTWARE\Python\PythonCore\3.7\InstallPath", "ExecutablePath")}
If File.Exists(i) Then Return i
Next
Dim paths = Environment.GetEnvironmentVariable("path").SplitNoEmpty(";")
For Each i In paths
i = i.FixDir + "python.exe"
If File.Exists(i) Then
SetPath(i)
Return i
End If
Next
End Get
End Property
End Class
Public Class PluginPackage
Inherits Package
Property AvsFilterNames As String()
Property VSFilterNames As String()
Property VSFiltersFunc As Func(Of VideoFilter())
Property AvsFiltersFunc As Func(Of VideoFilter())
Public Overrides Property IsRequired As Boolean
Get
Return IsPluginPackageRequired(Me)
End Get
Set(value As Boolean)
End Set
End Property
Shared Function IsPluginPackageRequired(package As PluginPackage) As Boolean
If p Is Nothing Then Return False
If p.Script.Engine = ScriptEngine.AviSynth AndAlso
Not package.AvsFilterNames.NothingOrEmpty Then
Dim scriptLower = p.Script.GetScript().ToLowerInvariant
For Each filterName In package.AvsFilterNames
If scriptLower.Contains(filterName.ToLowerInvariant + "(") Then Return True
If scriptLower.Contains("import") Then
Dim match = Regex.Match(scriptLower, "\bimport\s*\(\s*""\s*(.+\.avsi*)\s*""\s*\)",
RegexOptions.IgnoreCase)
If match.Success AndAlso File.Exists(match.Groups(1).Value) Then
If File.ReadAllText(match.Groups(1).Value).ToLowerInvariant.Contains(
filterName.ToLowerInvariant) Then
Return True
End If
End If
End If
Next
ElseIf p.Script.Engine = ScriptEngine.VapourSynth AndAlso
Not package.VSFilterNames.NothingOrEmpty Then
For Each filter In p.Script.Filters
If filter.Active Then
For Each filterName In package.VSFilterNames
If filter.Script.Contains(filterName) Then Return True
Next
End If
Next
End If
End Function
End Class
Public Class qaacPackage
Inherits Package
Sub New()
Name = "qaac"
Filename = "qaac64.exe"
DirPath = "Audio\qaac"
WebURL = "http://github.com/nu774/qaac"
Description = "qaac is a command line AAC encoder frontend based on the Apple AAC encoder. qaac requires libflac which StaxRip includes and it requires AppleApplicationSupport64.msi which can be extracted from the x64 iTunes installer using a decompression tool like 7-Zip. The makeportable script found on the qaac website can also be used."
End Sub
Overrides Property IsRequired As Boolean
Get
Return TypeOf p.Audio0 Is GUIAudioProfile AndAlso
DirectCast(p.Audio0, GUIAudioProfile).Params.Encoder = GuiAudioEncoder.qaac OrElse
TypeOf p.Audio1 Is GUIAudioProfile AndAlso
DirectCast(p.Audio1, GUIAudioProfile).Params.Encoder = GuiAudioEncoder.qaac
End Get
Set(value As Boolean)
End Set
End Property
Overrides Function GetStatus() As String
Dim pathVar = Folder.Programs + "Common Files\Apple\Apple Application Support\CoreAudioToolbox.dll"
If Not File.Exists(pathVar) AndAlso Not File.Exists(GetDir() + "QTfiles64\CoreAudioToolbox.dll") Then
Return "Failed to locate CoreAudioToolbox, read the description below. Expected paths:" +
BR2 + pathVar + BR2 + GetDir() + "QTfiles64\CoreAudioToolbox.dll"
End If
End Function
End Class
Public Class DGIndexNVPackage
Inherits Package
Sub New()
Name = "DGIndexNV"
DirPath = "Support\DGIndexNV"
Filename = "DGIndexNV.exe"
WebURL = "http://rationalqm.us/dgdecnv/dgdecnv.html"
Description = Strings.DGDecNV
HelpFile = "DGIndexNVManual.html"
IsLaunchable = True
IsIncluded = False
FileNotFoundMessage = "DGIndexNV can be disabled under Tools/Settings/Demux."
HintDirFunc = Function() DGDecodeNV.GetStoredPath.Dir
End Sub
Overrides Function GetStatus() As String
If Not File.Exists(GetDir() + "License.txt") Then
Return "DGDecNV is shareware requiring a license file but the file is missing."
End If
End Function
Overrides Property IsRequired As Boolean
Get
Return CommandLineDemuxer.IsActive("DGIndexNV")
End Get
Set(value As Boolean)
End Set
End Property
End Class
Public Class DGIndexIMPackage
Inherits Package
Sub New()
Name = "DGIndexIM"
Filename = "DGIndexIM.exe"
DirPath = "Support\DGIndexIM"
IsIncluded = False
WebURL = "http://rationalqm.us/mine.html"
Description = Strings.DGDecIM
HelpFile = "Notes.txt"
FileNotFoundMessage = "DGIndexIM can be disabled under Tools/Settings/Demux."
HintDirFunc = Function() DGDecodeIM.GetStoredPath.Dir
End Sub
Overrides Function GetStatus() As String
If Not File.Exists(GetDir() + "License.txt") Then
Return "DGIndexIM is shareware requiring a license file but the file is missing."
End If
End Function
Overrides Property IsRequired As Boolean
Get
Return CommandLineDemuxer.IsActive("DGIndexIM")
End Get
Set(value As Boolean)
End Set
End Property
End Class
Public Class dsmuxPackage
Inherits Package
Sub New()
Name = "dsmux"
Filename = "dsmux.exe"
Description = Strings.dsmux
WebURL = "http://haali.su/mkv"
IsRequired = False
IsIncluded = False
End Sub
Public Overrides ReadOnly Property Path As String
Get
Dim ret = Registry.ClassesRoot.GetString("CLSID\" + GUIDS.HaaliMuxer.ToString + "\InprocServer32", Nothing)
ret = FilePath.GetDir(ret) + Filename
If File.Exists(ret) Then Return ret
End Get
End Property
Overrides Property IsRequired As Boolean
Get
Return CommandLineDemuxer.IsActive("dsmux")
End Get
Set(value As Boolean)
End Set
End Property
End Class
Public Class HaaliSplitter
Inherits Package
Sub New()
Name = "Haali Splitter"
Filename = "splitter.ax"
WebURL = "http://haali.su/mkv"
Description = "Haali Splitter is used by eac3to and dsmux to write MKV files. Haali Splitter and LAV Filters overrite each other, most people prefer LAV Filters, therefore it's recommended to install Haali first and LAV Filters last."
IsRequired = False
IsIncluded = False
End Sub
Public Overrides ReadOnly Property Path As String
Get
Dim ret = Registry.ClassesRoot.GetString("CLSID\" + GUIDS.HaaliMuxer.ToString + "\InprocServer32", Nothing)
If File.Exists(ret) Then Return ret
End Get
End Property
End Class