LoadCPlugin

LoadCPlugin とは?

LoadCPlugin は、AviSynth C インターフェイスを使って書かれたプラグイン(C プラグイン)を読み込むための関数です。Load_Stdcall_plugin という LoadCPlugin の別名の関数も用意されています(詳しくは下記参照)。

代表的な C プラグインには、SmartDecimateiBob や ffavisynth*1 などがあります。

古い C プラグインと新しい C プラグインの違い

C プラグインには、Kevin Atkinson 氏によるオリジナルの AviSynth C インターフェイスを使用した古い C プラグイン(SmartDecimate など)と、新しい C インターフェイスを使用した新しい C プラグイン(Yadif など)の 2 種類があります。両者の違いは、以下のとおりです:

  • 古い C プラグイン
  • 新しい C プラグイン
    • 新しい C インターフェイスを使用。
      • 内部でシンタックスを呼び出すのに stdcall*2 を使用。
    • LoadCPlugin 関数または Load_Stdcall_plugin 関数を使って読み込む。
    • avisynth_c.dll の読み込みは不要。
      • AviSynth 組み込みの LoadCPlugin 関数が利用可能なため。

上記の説明は、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()
    

関連ページ


*1 ffdshow-20051124.exe以降。ffavisynthを参照。
*2 参考: 呼出規約 - WikipediaWin32 MASM プログラミング入門

最終更新日時: 2014-03-11 (火) 03:48:37 (3689d)