AviSynthPlugins

プラグイン

これらの関数を用いて、AviSynthに外部プラグインを追加することができます。これらのプラグインの多くは、とっても役に立ちます!

LoadPlugin(string filename [, ...])

LoadPluginは、1つ以上の外部プラグインを読み込みます。これらのプラグインは、AviSynth外部プラグイン・インターフェイスを使用していなければなりません。これに関しては、FilterSDKにおいて、いくつかの予備のドキュメントが入手可能です。

LoadVirtualDubPlugin(string filename, string filtername, int preroll)

LoadVirtualDubPluginは、VirtualDub向けに書かれたプラグインを読み込みます。"filename"は、.vdfファイルの名前です。この関数を呼び出した後、AviSynthにおいて、そのフィルタは"filtername"として知られるでしょう。VirtualDubフィルタは、RGB32のみをサポートしています。いくつかのフィルタの出力は、前のフレームに依存しています。それらのフレームを得るために、prerollは、少なくとも、フィルタがバッファをいっぱいにし、そして/または、内部変数を更新するために、前処理(pre-process)するのに必要なフレーム数に設定されるべきです。

多くのVirtualDubプラグイン用の便利なAviSynth風インターフェイスが、vdub_filters.avsというファイルで利用できます。vdub_filters.avsは、いくつかのAviSynthのディストリビューションやShareFunctionsのセクションに含まれています。それを使用するためには、ファイルの一番上にある変数VirtualDub_plugin_directoryを、あなたのVirtualDubプラグイン・ディレクトリに向くように編集し、そのファイルを(ScriptFunctionsにあるImportを使って)あなたのスクリプトの中にインポートしてください。

LoadVFAPIPlugin(string filename, string filtername)

LoadVFAPIPluginによって、VFAPIプラグインを利用できるようになります。VFAPIプラグインはTMPGEncのインポートプラグインでもありますが、TMPGのサポートは、今のところ、バギーなようです。

前述のコマンドは依然として存在しますが、AviSynthのv2.06から、AviSynthが使用するプラグイン・ディレクトリを明示することが出来るようになりました。すべてのプラグイン、ネイティブなAviSynthプラグインとVirtualDubプラグイン(VFAPIについては確かではない)を、このディレクトリに置くことによって、これらのコマンドは不要の長物と化します。GordianKnotのようなAviSynthを利用するほとんどのアプリケーションは、この変更を反映するような更新がなされておらず、自動的に生成される.avsファイルから、これらの関数が削除されるべきであるということに注意してください。

LoadCPlugin(string filename [, ...])

C-プラグインは、LoadCPluginを使って読み込まれなければなりません。アドバイス: クラッシュを避けるために、このプラグインは、プラグインのオートローディング(自動読み込み)用ディレクトリの外に置いてください。[ディスカッション] [AVISynth C API (by kevina20723)]

プラグインのオートローディングと関数名の優先度 v2

すべてのプラグインとユーザー定義関数や(グローバル)変数が書かれたスクリプトファイルを、拡張子.AVSと.DLLのあらゆるファイルが、スタートアップ時に読み込まれ(load)、読み込み解除(unload)され、そして、スクリプトが必要とする時に動的に読み込まれる、そのようなディレクトリに置くことが可能です。

このディレクトリに置かれるスクリプトは、関数の定義やグローバル変数だけを含むべきであり、メインの処理を行う部門を含むべきではありません(さもなければ、おかしなエラーが起こるかもしれません)。また、そのディレクトリに他のファイルを置くことも勧められません。

そのディレクトリは、レジストリに登録されています(レジストリキーは、v2.5で変更されました)。パスを設定するために、次の行を含む.REGファイルをダブルクリックして実行することができます(もちろん、あなたの実際のパスを書き入れてください):

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Avisynth]
"PluginDir2_5"="c:\\program files\\avisynth\\plugins"

関数名の優先順位は、次のとおりです:

  1. ユーザー定義関数(つねに最も高い優先度を持ちます)
  2. プラグイン関数(内蔵関数より高い優先度を持ちます - 内蔵関数をオーバーライドするでしょう)
  3. 内蔵関数

それらのグループの内部で、最終的に読み込まれる関数が優先します。そのため、名前空間(namespace)の衝突*1におけるエラーはありません。

プラグインのオートローディングと衝突する関数名 v2.55

v2.55から、DLLName_function()のサポートが開始されました。問題は、2つのプラグインが同じ名前を付けられた異なる関数を持っているということにあります。必要とされる方の関数を呼び出すために、DLLName_function()のサポートが追加されました。それは、オートローディングされたプラグインとLoadPluginで読み込まれたプラグインの両方に対して、追加の名前を自動生成します。

いくつかのサンプル:

# decomb510.dllからfielddeinterlaceを使用
AviSource("D:\captures\jewel.avi")
decomb510_fielddeinterlace(blend=false)

自動プラグインディレクトリの中にmpeg2dec.dllとmpeg2dec3.dllの2つのプラグインがあり、なおかつ、mpeg2dec.dllを使ってd2vファイルを読み込みたい場合(YUY2で出力します):

# mpeg2dec.dllからmpeg2sourceを使用
mpeg2dec_mpeg2source("F:\From_hell\from_hell.d2v")
# mpeg2dec3.dllからmpeg2sourceを使用
mpeg2dec3_mpeg2source("F:\From_hell\from_hell.d2v")

[FAQ #3.4] [FAQ #3.5]では、ダウンロードすることのできる、巨大なAviSynthプラグイン選集を見つけることができます。*2


註: このページは、http://www.avisynth.nl/AviSynthPluginsの日本語訳です。


*1 訳者註: 「通信用語の基礎知識 - #名前空間」、および、「通信用語の基礎知識 - #名前衝突」を参照。
*2 訳者註: 外部プラグインのページも参照。

最終更新日時: 2014-03-12 (水) 23:36:18 (2044d)