まるも製作所の茂木氏が久しぶりに「MPEG-2 VIDEO VFAPI Plug-In」を更新し、ver.0.7.1になりました。デコード処理に専用スレッドを割り当て、デコードを大幅に高速化。この度の改良は、Core i7-2600のHTT有効時、x264出力でCPUを使い切れない(MPEG-2のデコードが遅いため、x264側がデータを待つ間CPUに空き時間ができやすい)事への対策を施したものであり、結果として条件次第では DGMPGDec のデコード速度を凌ぐまでに至りました。
では、そのベンチ結果を紹介しましょう。
■計測環境
いずれも、Windows7 professional 64bit SP1 RC、Core i5-2500K(定格)。
DDR3 1333 8GB(4GB×2)
AviUtl ver.0.99i8test(マイナス座標不具合修正版)
AviSynth v2.5.8
avs2avi v1.40a
MPEG-2 VIDEO VFAPI Plug-In ver.0.6.55a
MPEG-2 VIDEO VFAPI Plug-In ver.0.7.1
DGMPGDec 1.58
■セッティング
MPEG-2 VIDEO VFAPI Plug-Inの拡張子を aui に変更し、入力プラグインモードとして動作させます。これによりYUV色空間のまま読み込めるため、VFAPIで発生するYUV→RGB色空間変換を回避し、出来る限りMPEG-2のデコード速度を計測する狙いです。
DGMPGDec ver.1.5.8のデコードオプションスイッチは idct=3, upConv=1 とし、インタレースを維持したままYUY2へピクセルフォーマット変換します。これはAviUtlの入力がYUY2を要求するためで、upConv=0(デフォルト)の後 ConvertToYUY2(interlaced=true) と指定した場合と同様の処理結果をもたらせます。
いずれの設定も、1440x1080(60i)のYUY2でAviUtlに入力されます。
MPEG-2 VIDEO Plug-In v0.6.55a | 86.7fps |
MPEG-2 VIDEO Plug-In v0.7.1 | 159.5fps |
DGMPGDec ver.1.58(YUY2) | 107.5fps |
高速 → |
また、MPEG-2 VIDEO VFAPI Plug-In 新旧バージョンで、スレッドの扱いにどのような差があるのか処理中のCPUロードアベレージをグラフ化しました。旧バージョン(ver.0.6.55a)は1コアのみを使い切り、他のコアが遊んでいますが、新バージョン(ver.0.7.1)は処理が各コアに分散され、全体的にCPUのロードアベレージが上昇しています(DGMPGDecはMPEG-2 VIDEO VFAPI Plug-In 旧バージョンと似たような挙動であるため割愛)。
AviSynthでは warpsharpプラグインのLoadAviUtlInputPluginフィルタでMPEG-2 VIDEO VFAPI Plug-In(m2v.aui)をロードします。この際も m2vconf の設定が反映されるため、AviUtlと同様のセッティングを流用します。DGMPGDecの設定も基本的にAviUtlと同じですが、AviSynthオンリーで扱う人はYV12のままロードすることが多いため、YV12のベンチマークは idct=3, upConv=0 としています。
出力はavs2avi(v1.40a)を利用し、null出力にてMPEG-2のデコード速度を計測し、AviUtlと同様に処理時間からフレームレートを算出します。解像度1440x1080(60i)入出力はAviUtlと同条件。
■結果(AviSynth v2.5.8)
MPEG-2 VIDEO Plug-In v0.6.55a | 134.8fps |
MPEG-2 VIDEO Plug-In v0.7.1 | 174.4fps |
DGMPGDec ver.1.58(YUY2) | 147.4fps |
DGMPGDec ver.1.58(YV12) | 173.1fps |
高速 → |
裏を返せば、DGMPGDecのYUY2出力は速度ペナルティが意外に大きく、YV12処理で一貫するならDGMPGDec一択であるものの、何らかの理由でYUY2処理を考慮するならMPEG-2 VIDEO VFAPI Plug-Inのほうがデコードは高速であると言えるでしょう。
これらの結果から、MPEG-2 VIDEO VFAPI Plug-In でデコードしようかな~と思っている人は、バッチ処理を再検討してみてはいかがでしょうか。
追記:
MPEG-2 VIDEO VFAPI Plug-In ver.0.7.5 あたりで、環境によってはデコード速度が大幅に低下するケースを確認したため、茂木氏に報告し、この件を修正した ver.0.7.5a がリリースされました。記事ほど速度が出ないな……と感じられた場合はバージョンを確認し、ver.0.7.5a へ更新してみるのも手かと思われます。
AviUtl
AviSynth