AMDのVCEを試す

2週間ちょい前ぐらいからRadeon HD 7770というものを使っている。

こんなの。
radeon_hd_7770

ただ、わたしの場合放っておくと、これを普通の描画と、madVRと、NL-Means計算ボードとしてしか利用しない。これでは1万円の使い方として大変もったいないので、ちょっと違った使い方として、Radeon HD 7xxxについているVideo Codec Engine (以下VCE)を有効利用することを考えてみる。
 
 
 


Video Codec Engine (VCE)



まあようはあれです、AMD版QSVというかなんというか。GPUに載っているハードウェア回路でH.264エンコードを行うもの。

QSVと違うのは、QSVが動き探索・動き予測などをGPU EUで、符号化などをQSVのハードウェアで実行するのに対し、VCEはすべてをハードウェアで行う模様。そのほうが速度は出そうなので、よさそうなものなのだけど、これがあとあと懸念材料に…。



テスト環境



VCE環境
Win7 x64
Intel Xeon W3680 (6C/12T @ 3.6GHz)
ASUS P6T Deluxe V2
DDR3-1333 18GB
QPI 4.8GT (理論帯域 19.2GB/s)
Radeon HD 7770 (1020MHz, PCIe 2.0 x16)
Aviutl 0.99m
Catalyst Control Center 12.10
VCEEnc 0.00


比較のためのQSV環境
Win7 x64
Intel Core i7 3770K (4C/8T @ 3.9GHz)
ASUS P8Z77-M
DDR3-2133 16GB
Intel HD Graphics 4000 (1150MHz)
Intel 2867ドライバ
Aviutl 0.99m
QSVEnc 0.11



わかってきたこと



VCEを使用するためのライブラリは、AMD APP SDKに含まれる。現在のバージョンは2.7。またCatalyst Control Centerの12.8以降が必要。

Sampleコードとかをいじっていろいろ動かしてみた。するといろいろとわかってきたことが…。

・H.264 Basline / Main Profile。High Profileはなし?
・H.264 I/Pフレームのみ。Bフレームサポート無し。
・プログレッシブのみ。インターレース保持はなし。
・SAR比指定なし。
・解像度が16で割り切れない場合不安定。なんか下に緑の線が入ったり?
・限定的なフレームレートサポート。普通じゃない変なフレームレートを指定できない。
・ほかいろいろ…

な…なんじゃこりゃ。


あと、いまいち速くない…。

結局AviutlからVCEで出力するVCEEncというのを作ったのだが、1080pのエンコード結果は…

VCEEnc_QSVEnc_VCE

66.82fps。

つぎに同じ動画をQSVEncでエンコード。

VCEEnc_QSVEnc_QSV

159.31fps。速いっすね。まあそもそも環境が違うし、良い比較とは言えないけれど。XeonはWestmere世代だし、クロックも低めなので、Ivyのほうがシングルスレッド性能はそれなりに優位にあるからそれも速度に効いてはいるだろう。

画質の差もあるはずだし(そのへんはまだよくわからない)、「VCEは遅い」とだけ言うことはできない。それに言ってしまえばわたしのコードが悪い、つまりチューニングが足りないんだろうとは思う。

でもやはりそもそも(QSVと比べて)遅いんじゃないかな、という気はする。A's Video ConverterとかでもVCEはそんなに速度でてない。

SDKとかSampleコードにドキュメントが少なすぎて、どうチューニングすればいいのやらわからんところがなんとも。OvEncodeTaskの引数ってどういう意味なんでしょう…。こういったことが全くわからないのでチューニングは手詰まり…。わからないことは他にもあって、参照距離ってどう指定するのかな…、とかも。



VCEの実力?



気になるのは、速度的な面はチューニングの問題だとしても、H.264の機能的な面でこれがVCEの実力なのかどうなのか。

ただSampleコードが不十分なだけなのか。それともハードウェア的にインタレとかBフレームとかはもう無理なのか。

ここで問題となるのはQSVと違ってVCEはほとんどハードウェアで実装されているということ。GPUを使った部分もあるならドライバなどソフトウェアでなんとかなるかもしれない、と期待できる。でもほとんどハードとなると…。というわけでやや悲観的に考えている。



VCEの画質



感想としては、「健闘している」。

CABACとインループデブロックフィルタはあるものの、肝心の(?)Bフレームがない割には、頑張っている、と思う。特に中~高ビットレートではそこそこ良い画質だと思う。ただBフレームがない以上、低ビットレートだと…。

低ビットレートはやっぱりx264の独壇場。こうして見ると、やはりx264の画質は素晴らしいと思う。時間をかけるだけの価値はある。

まあ画質については、自分で試してみていただければと。



拡張 VCE 出力



基本的にVCEのサンプルコードをx264guiExにくっつけ、やや高速化を行ったものです。VCEを使用したエンコードが可能です。

必須動作環境
Windows Vista,7,8 (x86/x64)
Aviutl 0.99g4 以降
VCEが載ったハードウェア
AMD製 GPU Radeon HD 7xxx以降
AMD製 APU Trinity世代(第2世代)以降
Catalyst Control Center 12.8以降 (フルインストール推奨)

※XPでは動作しません。

使用可能かは設定画面で確認できます。

VCE_logo ←使用可能

VCE_logo_disabled ←使用不可



使用方法



ダウンロードしたら解凍して出てくるauo_setupを実行してください。

以下のものを必要なら自動でダウンロード・インストール・配置します。
・.NET Framework 4.0 Client Profile
・neroaacenc
・L-SMASH
・msvcr110.dll
・msvcp110.dll

VCEEncは.NET 4.0系を使用します。ただ、Catalyst Control Centerも使用しているので、通常は問題無いと思います。



注意事項



自分で作っといてあれですが、遅いです。いろいろ高速化に役立ちそうなことはしてみて、だいぶ速くなったのですが、それでもです。

あと、今後の更新で設定ファイルの互換性がなくなるかもしれません。



いつもの注意事項など



無保証です。自己責任で使用してください。拡張 VCE 出力 (VCEEnc.auo)を使用したことによる、いかなる損害・トラブルについても責任を負いません。



ダウンロード>>



厄介なのは、問題が起こっても、自分ほうのバグなのか、VCE・APP SDKの仕様なのか区別ができない点。フレームレートが原因で止まるとは思わなかった…。

いずれにせよ、ハードウェアエンコの画質はQSVにしろVCEにしろ、x264に遠く及ばない。x264の凄さを改めて実感した。
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

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

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

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

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

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

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

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

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

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


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

clfilters 
- OpenCLベースの複数の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対応版

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

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