本文は2015年時点の話だが、2018年と2019年のファイルも公開されている。

2018年:https://on-demand.gputechconf.com/gtc/2018/presentation/s8601-nvidia-gpu-video-technologies.pdf
2019年:https://developer.download.nvidia.com/video/gputechconf/gtc/2019/presentation/s9331-nvidia-gpu-video-technologies-overview-applications-and-optimization-techniques.pdf

公式発表のPDFのまとめ:NVIDIA Corporation – Events & Presentations – Presentations

公開されている PDF から GPU エンコーディングの利点と活用方法を考える。
PDF:Slide 1 – S5613-Abhijit-Patait.pdf

利点

  • CPUを使わず、メモリー間の転送量を減らす
  • 低遅延で高性能で高密度
  • スケール化がしやすい
  • プログラミングがしやすい(Linux, Windows, C/C++)

現状の仕様

  • H.264 base, main, high profiles
  • H.265/HEVC main profile
  • 4K 60fps での高速エンコード
  • YUV 4:2:0 と 4:4:4 対応
  • QP マップ
  • 4K 解像度のハードウェアエンコーダー
  • API – NV Encode SDK & GRID SDK
  • CUDA から独立

世代毎の仕様の比較

Kepler Maxwell Gen 1 (GM10x) Maxwell Gen 2 (GM20x)
H.264 only H.264 only H.264 and HEVC/H.265
Planar 4:4:4 and proprietary 4:4:4; no lossless encoding Standard 4:4:4 and H.264 lossless encoding Standard 4:4:4 and H.264 lossless encoding
~240 fps 2-pass encoding @720p ~500 fps 2-pass encoding @720p ~900 fps 2-pass encoding @720p
GRID K340/K520, K1/K2, Quadro, Tesla K10/K20 Maxwell-based GRID & Quadro products TBA
GeForce 2 full-speed encode sessions/system GeForce 2 full-speed encode sessions/system GeForce – 2 full-speed encode sessions/system
NV Encode SDK 1.0-5.0 (Now) NV Encode SDK 4.0+ (Now) NV Encode SDK 5.0+ (Now)
GRID SDK 1.x, 2.2, 2.3 (Now) GRID SDK 3.0+ (Now) In development

ハードウェアで新しくなったところ

HEVC

  • 8bit エンコード
  • Main 8bit profile
  • I, P フレームを最適化し遅延を軽減
  • 720P を高画質で 300fps(のエンコード速度)

H.264

  • 高速化(第1世代の Maxwell と比較して 80% 高速化
  • YUV 4:4:4 対応と可逆圧縮対応

ソフトウェアで新しくなったところ

  • NVENC SDK 5.0 について
  • NVIDIA GPU driver 347.18 以上に対応
  • HEVC
    • 統一された H.264 と HEVC の API
    • Linux と Windows のサポート
    • Intra refresh, ref-pic invalidation など H.264 と HEVC
  • GM20x 以上は全て NVENC に対応
  • Adaptive quantization(AQ)
  • 品質向上
  • SDK 内のサンプルを一新

NVENC, GRID の SDK 比較

NVENC SDK

  • No capture
  • Transcoding
  • Archiving
  • Video editing
  • CUDA pre-process + encoding
  • Granular encoder settings
  • D3D, CUDA 相互運用
NVENC_SDK

NVENC SDK の詳細

  • ダウンロード先:NVIDIA VIDEO CODEC SDK:現在のバージョンは 5.0
  • インターフェースヘッダ、ドキュメント、サンプルアプリも含まれる
  • .dll/.so はドライバーに含まれる
  • x86/x64 で実行できる
  • API, プリセット, レート制御あり
    • 低遅延による配信
    • トランスコード
    • ビデオ会議用途
  • H.264 と HEVC 向けの API が統一されている
  • 柔軟性
    • 動的に解像度とビットレートを変更できる
    • Low-level(低画質?、プロファイルレベルが低い)エンコード設定
    • Windows, Linux, DirectX, CUDA, OpenGL(CUDA 経由)
    • GeForce(2 セッション/システム)で機能する
  • エラー隠蔽
    • 参照ピクチャ(ref)を無効化
    • I フレームを刷新
  • 画質と処理速度はトレードオフ
  • 可逆圧縮対応は GRID SDK ではなく、NVENC SDK だけ

GRID SDK

  • Capture + encode
  • アプリ向けに低遅延に最適化
  • Capture + CUDA preprocess + encoding
  • 配信用途にエンコード設定を最適化
  • D3D, CUDA 相互運用
GRID_SDK

GRID SDK の詳細

  • NDA の古いバージョンはデベロッパーのみに提供
    ダウンロード先:GRID Application and Game Streaming
  • 現在のバージョン:3.1(NDA)、2.3(一般公開バージョン)
  • インターフェースヘッダ、ドキュメント、サンプルアプリも含まれる
  • .dll/.so はドライバーに含まれる
  • Windows と Linux の x86/x64 で実行できる
  • 用意されている API のプリセット
    • 遠隔地での描写(クラウド経由のゲームプレイ、リモートデスクトップ、キャプチャと配信)
    • 低遅延に最適化

処理能力の比較

低ビットレートで HEVC は H.264 に比べて大きくメリットがある。これは現状のソフトウェアエンコーダーの x264, x265 と比較しても同じである。x265 は x264 と比べてプリセットの medium 以降で大きく処理が重たくなるがハードウェアエンコーダー同じプリセット比較ではないがそこまで遅くなっていない。

処理速度グラフはPDFを参照。

関連記事
How to Encode to HEVC: A Simple Guide for H.265 First-Timers – Streaming Media Magazine

ロードマップ

今後はビット深度をより深く、高圧縮が期待できる HEVC B-frames の対応、処理の高速化、可逆圧縮と YUV 4:4:4 対応など。

  • Core GPU chip IP
  • Motion estimation only mode – 2H2015
  • SAO(Sample Adaptive Offset), 10/12-bit, HEVC B-frames
  • 可逆圧縮/4:4:4
  • Improved quality for screen content encoding
  • ME performance and quality enhancements
  • Today: 4K@60fps
  • Next: 8K@??

感想

H.264、HEVC の 4:4:4 対応や、H.264 の可逆圧縮対応で一時出力にもマスター出力にも高速で作ることがでる。そして高速で 4K 以上にも速度面で実用的になれば今後の高解像度化が進む映像制作の現場にはかなりメリットが多くなる。ただしアルファチャンネルには対応していないのでその部分の合成にはいつも通りのエンコーダーを使うことになる。同様に高解像度の映像のデコードにはそれなりのマシンパワーが必要だがその部分もハードウェアデコーダーの進歩が求められる。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)