DLLNAME Prefix
DLLNAME Prefixとは? †
同名の関数(フィルタ)を含むプラグインが複数存在する場合に、関数名の衝突*1という問題が生じます。
このため、AviSynth2.5.5から、DLLNAME Prefix(DLL名接頭辞)が導入されました。
これにより、同じ名前の関数を含むプラグインが2つ以上ある場合に、それらのプラグインを明示的に使い分けることができるようになりました。
v2.56からは、オートローディングされたプラグインとLoadPluginで読み込まれたプラグインの両方について、この記述法を利用できるようになりました。
DLLNAME Prefixを使った記述法 †
以下のように記述します:
DLLNAME_function()
DLLNAMEにDLL(プラグイン)名を記述し、アンダースコア(_)をはさんで、functionには関数(フィルタ)名を記述します。
DLLNAMEで指定したプラグインの関数(function)が優先的に使用されます。
通常の記述法との比較 †
foo.dllとbar.dllが同じhogeという名前の関数を持つものとします。
- 通常の記述法
# hoge関数を使用 hoge()
この場合、foo.dllのhoge関数が使用されるのか、bar.dllのhoge関数が使用されるのかわかりません。
- DLLNAME Prefix
# foo.dllのhoge関数を使用 foo_hoge()
DLLNAME Prefixを使えば、foo.dllのhoge関数を明示的に指定して、使用することができます。
例: MPEG2Sourceフィルタの場合 †
MPEG2DECプラグイン、MPEG2DECプラグイン、MPEG2Dec3プラグイン、そしてDGDecodeプラグインには、MPEG2Sourceという同名の関数が含まれています。
DLLNAME Prefixを使用することで、どのプラグインのMPEG2Sourceを使うかを指定することができます。
# 例1: MPEG2DEC.dllのMPEG2Sourceを使う MPEG2DEC_MPEG2Source("Source.d2v")
# 例2: DGDecode.dllのMPEG2Sourceを使う DGDecode_MPEG2Source("Source.d2v")