LoadCPlugin
LoadCPlugin とは? †
LoadCPlugin は、AviSynth C インターフェイスを使って書かれたプラグイン(C プラグイン)を読み込むための関数です。Load_Stdcall_plugin という LoadCPlugin の別名の関数も用意されています(詳しくは下記参照)。
代表的な C プラグインには、SmartDecimate、iBob や ffavisynth*1 などがあります。
古い C プラグインと新しい C プラグインの違い †
C プラグインには、Kevin Atkinson 氏によるオリジナルの AviSynth C インターフェイスを使用した古い C プラグイン(SmartDecimate など)と、新しい C インターフェイスを使用した新しい C プラグイン(Yadif など)の 2 種類があります。両者の違いは、以下のとおりです:
- 古い C プラグイン
- Kevin Atkinson 氏によるオリジナルの AviSynth C インターフェイスを使用。
- 内部でシンタックスを呼び出すのに C 言語を使用。
- LoadCPlugin 関数を使って読み込む。
- C プラグインの読み込みよりも前に、LoadPlugin 関数を使って avisynth_c.dll を読み込む必要がある。
- Kevin Atkinson 氏によるオリジナルの AviSynth C インターフェイスを使用。
- 新しい C プラグイン
- 新しい C インターフェイスを使用。
- 内部でシンタックスを呼び出すのに stdcall*2 を使用。
- LoadCPlugin 関数または Load_Stdcall_plugin 関数を使って読み込む。
- avisynth_c.dll の読み込みは不要。
- AviSynth 組み込みの LoadCPlugin 関数が利用可能なため。
- 新しい C インターフェイスを使用。
上記の説明は、Port of MPlayer Yadif deinterlace filter (C-Plugin) - Page 2 - Doom9's Forum における Fizick 氏の投稿を参考にしました。
Load_Stdcall_plugin 関数が存在する理由 †
avisynth_c.dll を読み込むと、avisynth_c.dll の古い LoadCPlugin 関数によって、AviSynth に内蔵されている同名の LoadCPlugin 関数が オーバーライドされます。つまり、LoadCPlugin 関数は古い C プラグインのみ読み込み可能な関数に再定義されるため、以後、LoadCPlugin 関数を使って新しい C プラグインを読み込むことができなくなってしまいます。
これに対して Load_Stdcall_plugin 関数は、avisynth_c.dll の読み込みによってオーバーライドされることがありません。古い C プラグインを使うために avisynth_c.dll を読み込んだ後でも、Load_Stdcall_plugin 関数を使えば新しい C プラグインを読み込むことが可能となります。
書式 †
LoadCPlugin(string filename [, ...])
引数 †
- filename: プラグインのパス。
使用例 †
- 古い C プラグインの場合
LoadPlugin("C:\foo\avisynth_c.dll") # avisynth_c.dll を LoadPlugin で読み込む LoadCPlugin("C:\foo\SmartDecimate.dll") # C プラグインを LoadCPlugin で読み込む SmartDecimate()
- 新しい C プラグインの場合
Load_Stdcall_plugin("C:\foo\yadif.dll") # または LoadCPlugin("C:\foo\yadif.dll") yadif()
関連ページ †
- AviSynthPlugins
- ffavisynthプラグインのインストール(とくに備考: ffavisynthプラグインのインストール場所についてを参照。)