ビデオカードをNVIDIA 9600GTに変えてから、AvisynthのGPU 3DノイズリダクションプラグインFFT3DGPUを複数回使ってもエンコ速度が落ちない事に気が付きました。

現在私がエンコする際に使用しているスクリプトは以下

MPEG2Source("movie.d2v")
mt("LanczosResize(960,last.height)",4)
mt("LanczosResize(last.width,544)",4,splitvertical=true)
return last

これで約80FPSの変換速度が出ます。
(ちなみに Core i7 920@3.5Ghz Xvidで変換)
上記にFFT3DGPUをひとつ

FFT3DGPU(sigma=2,beta=1,plane=0,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)

てな具合に掛けるとGPUフィルタは律速にならず
これまた約80FPSの速度で変換可能。
ちなみに
plane=0は輝度にのみノイズリダクションを掛けるオプション。
plane=1~3は(GPU版では)色差(U/V)両方にノイズリダクションを掛けるオプション。
plane=0、1で処理速度は ほぼ同じ。
  (各種パラメータの意味が知りたい方はコチラをどうぞ≫FFT3DGPU(覚書き)

( 注意:オリジナルのFFT3Dとplaneパラメータの指定が若干異なります
 オリジナルFFT3Dのplane(default = 0)
 0 - luma(Y)
 1 - chroma U
 2 - chroma V
 3 - chroma planes U and V
 4 - both luma and chroma  )

次に

FFT3DGPU(sigma=2,beta=1,plane=4,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)

plane=4は輝度・色差の両方一度にノイズリダクションを掛けるオプション。
この場合は変換速度は約35FPSにガクンと落ちてしまう。

しかしである

FFT3DGPU(sigma=2,beta=1,plane=1,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
FFT3DGPU(sigma=2,beta=1,plane=0,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)

上記の様に色差、輝度を別々にノイズリダクションを掛けてやれば
変換速度は約75FPSと殆ど低下しない。
960X544サイズでノイズリダクションかけて75FPSで変換できて超満足。
9600GTバンジャーイ∩( ・ω・)∩
Core i7バンジャーイ∩( ・ω・)∩

やはりマルチスレッドCPUでエンコする場合は、重いフィルタを一つだけチョイスして使用するよりも、軽いフィルタを複数使って処理したほうが高速に変換できるっぽい。
それが例えGPUプラグインでも。

スポンサー リンク

Direct Xで相性問題アリ

ちなみに Windows XP Home SP3のインストールCDに付属したDirectX9.0cとNVIDIA 9600GT(ドライバ182.06)の組み合わせでは

FFT3DGPU(sigma=2,beta=1,plane=0,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
FFT3DGPU(sigma=2,beta=1,plane=1,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)

の順でフィルタを掛けないとエラーが出ましたが、DirectX9.0c最新版
DirectX End-User Runtimes (November 2008)
▲上記をインストールした所

FFT3DGPU(sigma=2,beta=1,plane=1,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
FFT3DGPU(sigma=2,beta=1,plane=0,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=0,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)

こんな感じに色差と輝度のフィルタの順番を逆にしないとエラーが出るようになりました。

新しいDirectXで_GPU25動いた

で、DirectXを上記最新版にした所、ここまで満足に作動してくれなかった_GPU25がキチンと作動し始めました。
NVIDIA系でもDirectXを最新版にすれば動くんですね。。。DirectXは9.0cならば最新と思っていましたが、何やら色々足りないDLLがあったみたいです。≫必須DLL
以前のPC&ビデオカード(6600GT)では問題なく動いていたんですが。。。なんでだろ。

ちなみに_GPU25付属のLanczosResizeで1440≫1280≫940の二段リサイズは60FPS。
残念ながらMTプラグイン使用したLanczosResizeよりチョット遅め。
Convolution3dは70FPS。FFT3DGPUよりやや落ちるものの十分高速。
そしてオリジナルConvolution3dとやや画質が異なるものの、これまた十分使える画質。
ガッツリ圧縮掛けたい時は、FFT3DGPUと_GPU25 Convolution3dの二重掛けで行こうと思います。