QSVEnc 0.10

バグ修正、あとはいろいろ変更。

[共通]
v0.08以降、Intel iGPUがプライマリGPU(メインモニタに出力しているGPU)でない場合に、ビデオメモリモードが使用できず、error: null pointer というエラーを発生させていた問題を修正。
ご指摘ありがとうございました。

以下の環境でチェックし、エラーを解決。
Intel Core i7 3770K (4C/8T, 3.9GHz)
NVIDIA GeForce 8600GT (306.71, as primary GPU)
Intel HD Graphics 4000 (1150MHz, 2761ドライバ, as secondary GPU)
DDR3-2133 16GB
ASUS P8Z77-M
Win7 x64
Aviutl 0.99m

colormatrix, coloprim, transferの設定は、HWエンコ(QSV)では効かないので、設定画面やヘルプの表示をそのように変更。

[QSVEnc]
Bluray互換出力のチェックボックスが変更チェックから外れていたのを修正。
x264guiEx 1.59までの更新を反映。
- エンコ"前"バッチ処理を追加。
- ブログへのリンクを追加。



QSVEnc ダウンロード>>



また、Intel Media SDKに用意されているエンコードオプションについての調査結果は続きに。結論から言うと、いまのところ、品質: quality以上の品質は出ないようだ。

Intel Media SDK (QSV)の画質設定



Intel Media SDKには画質に効くオプションとして、

・品質 [quality / balanced / fast]

が用意されているけど、他に細かい設定として、

・参照距離
・フレーム内予測 / フレーム間予測
・MV探索範囲/精度
・RDO(歪みレート最適化)

なども用意されている。

しかし、SWエンコはともかく、HWエンコ(QSV固定回路使用)時には、ハードウェアの制限なのか、これらの設定を行っても正常に反映されない(効かない)場合がある

これらひとつひとつについて現状HWエンコに効果があるか調べた。

環境
Intel Core i7 3770K (4C/8T, 3.9GHz)
HD Graphics 4000 (1150MHz, 2761ドライバ, as Primary GPU)
DDR3-2133 16GB
ASUS P8Z77-M
Win7 x64
Aviutl 0.99m



参照距離



・設定の意味は、説明するまでもないでしょう。
・自動は"2"。
・一応設定すれば効く。ただし偶数だけ。
・参照距離を増やすと、画質にほとんど差はなく、圧縮率が低下するという、信じがたい結果になる。どうなってんねん。

→つまり自動("2")がベスト。



フレーム内予測 / フレーム間予測



・設定の意味としては、動き予測に使用する最小のブロックサイズ。
・16x16 / 8x8 / 4x4 が選択肢。

・一応設定すれば効く。4x4ブロックは一番圧縮率が高い。ブロックサイズを大きくすると圧縮率が低下。

・「品質」 quality では フレーム間 4x4, フレーム内 4x4 という設定になっているようだ。(つまり最も高品質な設定)

・「品質」 balance では フレーム間 4x4, フレーム内 16x16 という設定になっているようだ。

→ とりあえず品質:qualityにしていれば、すでに最も画質が良くなっている。



MV探索範囲/精度



・動きベクトルの探索範囲と、その精度を決定する。
効かない。



RDO(歪みレート最適化)



効かない。
というより「品質」によって決定されている。
品質: quality → ON (High Profile)
品質: balance → OFF (Main Profile)



その他



ほかにもHWエンコでは効かないものがある。代表的なものだと、
・colormatrix / colorprim / transfer の指定
・シーンチェンジ検出に基づく自動IDRフレーム挿入。



まとめ



残念ながら現状QSVの画質のオプションに関する自由度はかなり低い。Ivyになって少しは変わってるかなと思ったけど…。

結局のところ、QSVエンコードでは、品質:qualtiyの画質が最高画質、ということになってしまった。

HaswellではQSVの画質面の強化を行う、という話だったので、設定の自由度の向上も期待したい。

機能面では、特に

・参照距離 (別に偶数だけでもいいけど、ちゃんと増やせば圧縮率向上してほしい…)
・シーンチェンジ検出に伴う自動IDRフレーム挿入
・適応的Bフレーム挿入
・colormatrix / colorprim / transfer の指定

あたりはできてほしいな。…無理かなあ。
スポンサーサイト



コメントの投稿

非公開コメント

No title

こちらの環境でも無事、プライマリに外部GPUを使った状態でのビデオメモリモードONエンコードに成功しました。
アップデートありがとうございました。

No title

HWエンコ時のパラメータの効きについて、調査確認ありがとうございました。
画質に効果ありそうなパラメータは粗方有効になっていて、すでに現状で出せる最高の状態になっているということなのですね。
これ以上はintel先生の次回作に期待という事で。


> ・シーンチェンジ検出に伴う自動IDRフレーム挿入
ずいぶん前の記事でシーンチェンジ検出が無効になっているって話がありましたが、やっぱりまだ無効のままなのでしょうか。
ウチの環境ではエンコ結果のログを見るとIDRフレーム数とIフレーム数が常に同じ値だったので、CPQ時でのシーンチェンジはPなりBフレームをIフレーム相当の画質に無理やり上げているという事になるのかな…

No title

>chris様
無事動いてよかったです!

>HWエンコ時のパラメータの効きについて
そうですね、Haswellに期待ですね。

今のところQSVのフレームタイプ決定は、非常に機械的です。SWエンコだとSceneChangeDetectionで変えられるのですが、HWエンコでそれが効かないのはIvyでも変わっていません。

具体的なフレームタイプ決定は、
設定したGOP長おきに固定でIフレームが入り、
PフレームとBフレームは、
連続Bフレーム数2だと
IPBBPBBPBBPBB......
連続Bフレーム数3だと
IPBBBPBBBPBBB......
みたいな感じです。
めちゃくちゃ機械的です。

なので、非効率的な使い方をしていることもあるのではないかと思います。

QSVEncCでの--bluray

QSVEncC 0.10で--bluray --cbr 2000や--bluray --vbr 2000を試してみたのですが、"invalid video parameters.invalid video parameters.invalid video parameters."と表示されてエンコードできません。
同時に設定すべきパラメータはないでしょうか?
ちなみに--bluray付けずにcqpだと動作します。

Re: QSVEncCでの--bluray

--maxbitrateが必要です。
blurayの規格の上限は40000ほどだったと思います。そこまで必要なかったら、適当に減らした値を指定してください。

エンコードできました

ありがとうございます。
--maxbitrate指定でOKでした。
気付いたんですがbluray指定するとgopに30を指定しても28になるんですね。少し不思議。

Re: エンコードできました

gop長は、猫科さんの
http://up-cat.net/x264%25A4%25C8Blu%252Dray.html
の"bframes, keyint, min-keyint"を参考にこちらで(bframesの値+1)で割り切れる値に調整しています。デフォルトだとbframesが3なので、gop長30を入れると、3+1=4で割り切れる28で設定されます。

再生互換性を重視するとgop長は24がいい模様です。
プロフィール

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対応版

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