RDNA3世代のエンコード・デコード機能

12月16日にAMDの新世代GPU、RDNA3世代となるRX7900XTX/RX7900XTが発売された。

新しい世代ということで、エンコード・デコード機能も、もちろん刷新されている。

ということで、そのあたりの概要をざっとチェックしてみたい。



デコード



まずはデコードのほうから。

デコードについては、RDNA2→RDNA3で大きく変わってはいないが、AV1 12bitデコード機能が追加されている。

DXVA Checkerで確認するとこんな感じ。

DXVAChecker_20221218_RX7900XT.png

RDNA2で削除されたMPEG2 hwデコードは、RDNA3でも存在しないのはちょっと残念だ。(まあいったん削除したのならもう復活することはないのだろうが…)



エンコード



やっぱり一番大きいのは、Dual Media Engineで8K60PのAV1 HWエンコードに対応したこと。

エンコーダの対応状況を調べた結果はこちらで、ちゃんとAV1エンコーダが追加されていて、10bitにも対応していることが確認できる。

これで、QSV/NVENC/VCEにそれぞれAV1エンコードが出そろったことになる。

現状、配信等ではまだまだH.264がよく使われていると思うけど、今後AV1への対応がどんどん進んで、動画の高画質化が進んでいくといいなあと思う。

SafariのAV1対応は…?



AMDの発表によれば、RDNA3ではエンコードの画質向上のために、

(1). AI Enhanced Video Encode
機械学習モデルによって、入力フレームのエンコードによる圧縮劣化で「つぶれやすい」テキスト等の部分を強調し、エンコード後につぶれにくくする

(2). Pre Filter
エンコード前の入力フレームの画質を補正し、品質を向上させる

(3). 先行解析(Pre-analysis)
エンコード前に映像を詳細に解析することで、エンコーダのレート制御やビットレートの割り振りを改善し、画質を向上させる

あたりが強化されたみたい。

ただ、(1)(2)は言ってしまえば映像の前処理によって圧縮劣化の影響を抑制するという感じの話なので、エンコーダの圧縮劣化そのものの、つまり本質的な画質ー容量比の改善ではない。

そのため、本質的な画質ー容量比改善の取り組みは、(3)の先行解析関係がメインということになる。

VCEEncCでは、先行解析関係は--paオプションから使えるので、実際に動かして様子を見てみることにした。



先行解析



この先行解析、AV1エンコードでフルで使うとかなり遅い。

特に、motion-quality=autoを使用すると激烈に遅い。

-c av1 -u slow --pa lookahead=32,motion-quality=auto,taq=2,paq=caq

まず、固定品質モード使用時からエンコード速度を見ていくと、"motion-quality=auto"を使ったquality+motionと、"motion-quality=auto"を使ったqualityを比較すると、ものすごい速度差がついている。quality+motionは23fps前後と非常に遅い一方で、qualityでは120fps弱は出ている。

vceenc_motion_quality_fps_bitrate_20221220_qvbr.png

じゃあそんなに重いんだったら画質はすごくよくなるの? というのをvmaf-bitrateで確認したのがこちら。

"motion-quality=auto"を使ったquality+motionと、"motion-quality=auto"を使ったqualityにはほとんど差がない。

vceenc_motion_quality_vmaf_bitrate_20221220_qvbr.png



次にビットレート指定モード(VBR)でも見てみよう。まず速度から。

ここでもquality+motionと、qualityの差は大きい。

vceenc_motion_quality_fps_bitrate_20221220_vbr.png

一方、画質ー容量比を確認すると、固定品質モードと違ってVBRモードではquality+motionのほうがqualityより画質が改善しているのがわかる。VBR使用時には、有効にすると少し効果があるようだ。

vceenc_motion_quality_vmaf_bitrate_20221220_vbr.png



motion-qualityオプションがなぜ遅いのかなと思っていろいろみてみると、どうもGPUの演算ユニットでの解析演算が激増しているみたい。

まず、高速な"motion-quality=none"の時のGPUの状態をHWiNFOでみてみよう。

GPU Utilization 50%前後、D3D Usage 30%、Video Decoder(おそらくEncoderのこと)がほぼ100%近くで、消費電力が100W前後。





これが、"motion-quality=auto"にするとえらいことになってる。

Video Decoder(おそらくEncoderのこと)が逆に10%しかない一方で、GPU Utilization ほぼ100%、D3D Usage ほぼ100%、GPUが3GHzでぶんまわってるのもあって、消費電力が160W前後。



あと直接は関係ないけど、ほかと比べてGPUメモリ熱くない?



ということで先行解析にはGPUの演算ユニットが使われてるっぽくて、"motion-quality=auto"にすると結構重いよ、というところを見てきた。

GPU負荷があがるということは、エンコードのためだけにぶん回すときはまあいいかもしれないけど、ゲームをしながら録画・配信するといった用途には不向きかもしれない。(フレームレート落ちそう)



そのうち来る? Smart Access Video



AMDによれば、エンコード関係でさらにSmart Access Videoという機能が準備中(?)で、RX7xxxシリーズのGPUとRyzen CPUの内蔵GPUを連携させてより高速にエンコードするといったことができるようになるらしい。

もっとも、まだAMF SDKにも出てきていなくて、どんな感じでできるようになるのかはわからない。

AMDいわく、この機能を使うと4K AV1エンコードが最大30%高速になるらしい。

一応、手元の環境はR9 7950X + RX7900XTなので、このあたりの再現も将来できるはず。果たして本当に30%高速になるのか楽しみだ。(往々にしてこの手の別デバイスのエンジンを並列動作させるやつはいろいろ制限はありそうだが…)

コメントの投稿

非公開コメント

https://www.4gamer.net/games/660/G066019/20221212087/

こちらの記事後半にRDNA3世代のメディアエンジン関連の解説が少しありますが
どちらかと言うとQuality重視ではあまり無さそうな設計思想ぽいですかね?
正直なところ、⚫︎⚫︎先生の次回作にご期待ください!が思い浮かぶような気も…

ただご指摘されたように各主要ベンダーがAV1サポートした事、特にAMDの場合は廉価なAPU/CPU(zen4以降)でも
今後標準実装になることで裾野が広がっていくことは大事なのでそういう意義は大きいかもしれませんね

問題はスマホにおけるAppleの姿勢ですが、コーデックやブラウザのAPIはじめ色々閉鎖的・消極的で困ったもんですね…

No title

画質重視の場合、AI Enhanced Video EncodeとPre Filter、先行解析(Pre-analysis)をすべて使うより先行解析のみのほうが良いということでしょうか?

Re: No title

>> 2022-12-20(19:08) 様

> どちらかと言うとQuality重視ではあまり無さそうな設計思想ぽいですかね?

そうですね、ご指摘の記事をわたしも読みましたが、あまり画質重視のエンコード向けではなさそうですよね。

どちらかというと、低ビットレートでも破綻しないよう調整する感じの方向性に見えます。

> スマホにおけるAppleの姿勢

Appleに関しては、本当にスマホのブラウザ関連では消極的に過ぎる一方、一定のシェアがあるので無視もできず、悩ましい存在になっていると思います。AVIFも未対応みたいですし…

>> 2022-12-21(00:40) 様

> 画質重視の場合、AI Enhanced Video EncodeとPre Filter、先行解析(Pre-analysis)をすべて使うより先行解析のみのほうが良いということでしょうか?

Pre Filterについては、実装できておらずテストしていないので、何とも言えないです。

ただ、記事中に述べた機能の概要と主旨を考慮すれば、どちらかというと低ビットレートでの配信等で圧縮劣化が起こってもとりあえずその影響を抑えるものだというように理解できます。

その意味で、画質重視のエンコード向けではないのかな、と思っています。

No title

RDNA2にMPEG2デコーダーありますよ?

Re: No title

DXVA Checkerで調べたところ、RDNA2世代とされるR9 7950XのiGPUにはありませんでした。
https://rigaya34589.blog.fc2.com/blog-entry-1599.html

RX6xxxは確認できてないのでもしかするとあるのかもですが、iGPUのほうにはMPEG2 hwデコードのサポートはないようです。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: [email protected]
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら&gt

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら&gt

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法&gt
- QSVEncCオプション一覧&gt

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法&gt
- NVEncCオプション一覧&gt

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法&gt
- VCEEncCオプション一覧&gt

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら&gt

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト
- SSE2~AVX512による高速化版
- オリジナル: aji様

clcufilters 
- OpenCL/CUDAのGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

x264afs (ミラー)
- x264のafs対応版

aui_indexer (使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (使い方)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR