Section4 Importing filters from VirtualDub

Q4.1: VirtualDubのフィルタをインポートするスクリプトの最新版は、どこでダウンロードすることができますか?

A: AviSynthスクリプトは、ShareFunctionsページにあります。もしくは、vdub_filtersv15.zipというパッケージを[1][2]から、ダウンロードすることもできます。

Q4.2: どのフィルタがインポートされますか?

A: ほとんどのフィルタが。関連するキュメントを読んでください。

Q4.3: これらのスクリプトは、RGB空間やYUV空間で動作しますか?

A: RGB空間(RGB32)のみです。

Q4.4: そのようなスクリプトは、どうやって作るのですか?

A: スクリプト例(このVirtualDubフィルタは、[Donalds homepage]から、ダウンロードすることが出来ます):

Smart Bob by Donald Graft:

function VD_SmartBob(clip ''clip'', bool ''show_motion'', int ''threshold'', bool ''motion_map_denoising'')
LoadVirtualDubPlugin("d:\bob.vdf", "_VD_SmartBob", 1)
return clip.SeparateFields._VD_SmartBob(clip.GetParity?1:0,
\  default(show_motion,false)?1:0, default(threshold,10),
\  default(motion_map_denoising,true)?1:0)
}

VirtualDubのプラグインは、"LoadVirtualDubPlugin"というコマンドでインポートされます。1つ目の引数はプラグインのパスを、2つ目の引数はスクリプト内で使われるプラグインの名前を与え、3つ目の引数はプリロール(preroll)と呼ばれます。

プリロールは、少なくとも、フィルタがバッファをいっぱいにし、そして/または、内部変数を更新するために、前処理(pre-process)するのに必要なフレーム数に設定されるべきです。最後の引数は、SmartBob、SmartDeinterlace、TemporalCleanerなどのフィルタにおいて使われます。その理由は、VirtualDubのフィルタリング・アーキテクチャにより、未来フレームはフィルタによってアクセスされえないからです。Divideeは報告しています: "VirtualDubの"Add filter"ダイアログにおいて、いくつかのフィルタは、その説明の中に"Lag:"という値を持っています。これはプリロールとして使われなければならない値だと、私は考えます。不幸なことに、この表示が、いつもあるとは限りません。それらのケースでは、あなたは推測しなければなりません。" もちろん、あなたはいつでも、フィルタ作者に問い合わせることができます。

第1段階は、クリップが返される最後の行の中に、引数の連続を見つけ出すことです。VirtualDubでスクリプトを設定し、Fileメニューで"Save processing Settings"を選択するか、Ctrl+Sを押します。テキストエディタで生成された.vcfファイル*1を開いて、このような行を見つけます:

VirtualDub.video.filters.Add("smart bob (1.1 beta 2)");
VirtualDub.video.filters.instance[0].Config(1, 0, 10, 1);

引数の順番は、AviSynthで使われなければならない順番です。引数の役割を知るためには、それらの引数をVirtualDubでいじって、結果として生じる行を調べてください。

第2段階は、そのフィルタをテストして、VirtualDubでそのフィルタを使用した場合と比較することです。プログラミング自体に関しては、vdub_filters.avsに、すでに含まれているスクリプトを見ることによって、多くを学ぶことができます。

VD_SmartBobを使ったスクリプト例:

Import("d:\vdub_filters.avs")
AviSource("d:\filename.avi")
ConvertToRGB32()  # 必要な時のみ(しかし、クリップを傷つけることはない)
VD_SmartBob(false, 10, true)
ConvertBackToYUY2()  # 必要な時のみ

*1 vcf: VirtualDub configuration file

最終更新日時: 2014-03-12 (水) 23:40:35 (2070d)