AviSynth2.6(まだアルファ版扱い)へのバージョンアップ、および現行バージョンへ戻す方法が思いっきり簡単な事に今更ながら気が付いたので、ちょこっとAviSynth2.6を体験してみました。
AviSynth2.6の主な改良点
AviSynth 2.6.0 Alpha1 [August 20th] - Doom9's Forum
SetMTModeとGetMTModeという関数でマルチスレッドをサポート。
SSE3+に最適化
SSSE3, SSE4.1 & SSE4.2 あたりの強化・バグフィックス
扱える色空間にYV24, YV16, Y8, YV411などを追加
TCP関連の改良
上記は実装予定であり、現行どこまで進んでいるかは良く分かりません。
AviSynth2.5X⇒2.6へのバージョンアップ方法
- AviSynth2.5系(出来れば2.5.8)をあらかじめインストール。
- Doom9's ForumのAviSynthスレッドから最新バージョンをダウンロード。
Avisynth 2.6 - Doom9's Forum
▲ここから。
ダウンロードできるのはavisynth.dll単体です。 - x86 Windowsの場合はwindows/system32フォルダ
x64 Windowsの場合はWindows/SysWOW64フォルダ
にダウンロードしたavisynth.dllを移動。というか置き換え。
▲その際以前のバージョンのavisynth.dllを残しておくと、元の環境に戻すのも簡単です。 - PC再起動
実は再起動しなくてもOKだけど、念の為。 - AviSynth2.6のアンインストール
「3.」で置き換えたavisynth.dllを元に戻せばAviSynthは元のバージョンに戻ります
AviSynth2.6を試してみた
AviSynth2.6を試してみました。(x64 Windows7 環境にて)
私のよく利用するスクリプトでは約15%の高速化。といっても2.5.8でMTプラグインを利用する場合と殆ど変わらず。
1.とりあえず安定
噂どおり、若干の高速化(10~15%)がなされている&マルチスレッド(MTモード)には現時点で対応しているようです。簡単なプラグインならば、エラーもなく順調にエンコードできます。
2.GPUプラグインはまだまだ未対応
FFT3DGPUや_GPU25を利用すると、エラーが出てAviSyhthは強制終了。この辺りはまだまだこれから対応なのかも。恐らく3DNR系のプラグイン全般これからっぽい。
私の環境で2.6を利用するのはまだ速いみたい。
速攻で2.5.8に戻しました(^_^;
逆テレシネプラグインを再評価中
メインPCのOSをx64Windows7(RC)に変更してから、地デジ録画したTSファイルをエンコするAviSynthスクリプトに若干の変化があるのでご紹介。
以前にも似たエントリを書いていますが、その時はバックエンドとの相性、MTプラグインの速度低下や、GPUプラグインの速度低下の話題がメイン。
それ以外に逆テレシネプラグインの挙動がx86 XP時代と若干違う挙動をみせています。
mt("""IT(fps = 24, ref = "TOP", blend = false)""",4,4)
x86 XP時代には、MTモードを利用して上記のようにスクリプトを組んで逆テレシネを行っていました。が、x64 Win7では時々コーミング解除ミスの残像が発生。
mt("""IT(fps = 24, ref = "TOP", blend = false)""",4,0)
これでコーミング解除ミスは無くなるけど、MTモードのスレッド分割ミスが発生し、キレイな結果が得られない。
mt("""IT(fps = 24, ref = "TOP", blend = false)""",2,0)
2スレッドで作動するよう指定すると、コーミングの解除残しも、スレッド分割ミスも皆無に。
x64 Win7でMTモードを利用しても、x86 WinXPの時ほどマルチスレッドを有効活用してくれないので、処理速度に変化は無し。
mt("""Auto24FPS()""",4,4)
ちなみに.a60224もx86時代より安定。
MTモードとx64 Windows、逆テレシネの相性
x86 XPでMTモードを利用した場合、逆テレシネの解除残しが発生するタイミングでAviSynthは頻繁に落ちていたけれど、x64 Win7では解除残しが発生してもAviSynthは落ちない(同じ動画サンプル使用)
長時間テストを何本もしたワケではないけれど、この辺りは何かしら安定したかも?
このページのメインとなる話はここまで。
以下、最近の私のAviSynthメモ
現在の私のスクリプト
実写や30i素材は以前と設定変わらず。
24FPS化の必要のあるものだけ以下に変更。
お気に入りの映画をエンコする時
MPEG2Source("H:\000.d2v")
AddRange("F:\000.vcf")
mt("""IT(fps = 24, ref = "TOP", blend = false)""",2,0)
mt("LanczosResize(960,last.height)",4)
mt("LanczosResize(last.width,544)",4,splitvertical=true)
GPU_Begin()
GPU_Convolution3d(preset="movieHQ")
GPU_End()
FFT3DGPU(sigma=2,beta=1,plane=2,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=1,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
return last
ITが律速になるのでリサイズにLanczosResizeを利用。
x64 OSでは現状GPUプラグインを3個重ねると速度低下が著しいので2個。
(NVIDIA9600GT使用)
ちなみにx86で同じスクリプト走らせるより30%遅い。
とりあえず保存しておくかってレベルの映画をエンコする時
MPEG2Source("H:\000.d2v")
AddRange("F:\000.vcf")
mt("""Auto24FPS()""",4,4)
mt("BicubicResize(960,last.height)",4)
mt("BicubicResize(last.width,544)",4,splitvertical=true)
GPU_Begin()
GPU_Convolution3d(preset="movieHQ")
GPU_End()
FFT3DGPU(sigma=2,beta=1,plane=2,bw=32,bh=32,ow=16,oh=16,bt=3,
mode=1,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
return last
あとがき
こうやって色々試してみているけど、PC環境が変わる度に(AviSynthやプラグイン、動画ファイルは同じでも)かなり異なる結果が出ています。細かい部分の調整は、このページ含めネットの情報を丸呑みせず、自分で試すってのが重要ですね(^_^;