L-SMASH Works r935 で何が変わったの?

 先週更新したのですが、今まで使用していて何ら問題がなければ r935 に更新したからといって特に気にする必要は無いはず……。と、これだけでは素っ気ないので、更新された主な部分を3点ほど。NVDEC については、これといった日本語記事が見当たらなかったため、少しだけボリューム増で書いてみた。

1. L-SMASH Works Muxer の日本語ファイル名出力における問題の修正

 これは、しろみちさんの報告と maki 氏の対策がコミットされたかたち(r934 git-0eccfd5)で修正に至ったものであり、お二方の貢献が問題解決の原動力となった。

2. フィールドピクチャの特定条件下におけるデコード不具合の修正

 特定条件下のフィールドピクチャをデコードする際に不具合があり、ffmpeg のほうに修正が入った。これは、Nekopanda さんが ffmpeg-dev にパッチを投げて実現した修正点*1 であり、茂木氏の MPEG-2 VIDEO VFAPI Plug-In においても ver.0.7.10 で対応*2 されている。

こういう映像に出会った記憶が無いため、再現された映像と条件を見てこういう事が起こり得るのかと勉強になった。

3. NVDEC(CUVID) でのデコード

 ffmpeg 3.3 系からサポートされた NVIDIA の H/W アクセラレーションにおける NVDEC(CUVID) が利用できるようになった(はず)。というのも、私の環境は AMD の GPU であるため、動作確認ができないのだ。ビルド時に CUVID が有効化されている確認はしたものの、本当に動作するのか、動作したとしても正常にシークできるのか等まったくもってわからない。

NVDEC は CUDA による GPU アクセラレータではなく CUDA コアとは別に実装された H/W ロジックなので、デコード処理をしながら CUDA コアを GPU 本来のグラフィックス処理や GPGPU としてほぼフル活用できるところに利点がある。


↑ サポートGPUとコーデックの対応表*3

ただし、同じアーキテクチャの GPU であっても対応表どおりの実装をしているとは限らず、例えば Pascal の GP100 および GP104 コアは表どおりのコーデック対応だけれど、GP102、GP106、GP107 コアの Pascal は NVDEC による VP8 デコードをサポートしていない。詳しくは NVDEC Support Matrix *4 にて確認できるので、所持または購入予定の NVIDIA 製ビデオカードがどのコアでコーデックの対応状況はどうであるか、予めチェックしておくといいかもしれない。

で、使用方法は Readme.txt の Preferred decoders(AviSynth は decoder) に書いてあるとおりで

 H.264/AVC → h264_cuvid
 H.265/HEVC → hevc_cuvid
 MPEG-2 → mpeg2_cuvid
 VP8 → vp8_cuvid
 VP9 → vp9_cuvid

このような指定をします。

 

3a. NVDEC(CUVID) のデコード性能
 NVIDIA が公表しているデータのひとつとして Tesla M60(Maxwell 2nd Gen [GM204] x2) と Tesla P40(Pascal [GP102] x1) における H.264/AVC YUV4:2:0 8bit depth(H.264 として広く使われている標準的なフォーマット)のデコード性能を示したものがある。


↑ H.264 のデコード性能*3

Profile と Level で表記すれば良くない? と思わなくもないけれど、4k 解像度で Tesla M60 は 120fps にやや満たない位、Tesla P40 で 150fps 少々のパフォーマンスが出ているので、マクロブロック(16×16)の処理性能を Tesla M60 が約 370万~380万 Macroblocks/s 、Tesla P40 は約 500万 Macroblocks/s 前後と見積もると──

    ・Tesla M60(GM204) = Main or High Profile Level 5.2 (Level 6 に少し届かない)
    ・Tesla P40(GP102) = Main or High Profile Level 6 (Level 6.1 には及ばない)

相当のデコード性能か。フル HD 映像であれば純粋に4倍近いデコード速度が得られるかもしれない(NVDEC の演算器以外の部分に大きなオーバーヘッドがなければ)。

 なお、Pascal(GP102) を載せたビデオカードは GTX 1080 Ti や Pascal 世代の TITAN X 、Maxwell 2nd Gen(GM204) 搭載ビデオカードが GTX 980/970 の前世代ハイエンドクラスではあるけれど、NVDEC の実装は GPU アーキテクチャごとに差があるものの、同アーキテクチャ間ではミドル・ローエンドでもデコード速度にそれほど差は無い模様。自身で確認できないため確定的な書き方はできないけれど、Pascal 世代の GP10x 系であれば Tesla P40 と同程度のパフォーマンスを期待できるかもしれない。

期待どおり「動けば」だけど。

 

■ 出典・参考文献(外部リンク)
*1 [FFmpeg-devel] [PATCH] mpeg2dec: fix decoding field pictures
*2 まるも製作所 MPEG-2 VIDEO VFAPI Plug-In ver. 0.7.10
*3 NVIDIA VIDEO CODEC SDK | NVIDIA Developer
*4 Video Encode and Decode GPU Support Matrix | NVIDIA Developer

コメントを残す

メールアドレスが公開されることはありません。

42 ÷ 6 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.