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 の指定
あたりはできてほしいな。…無理かなあ。
[共通]
・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 の指定
あたりはできてほしいな。…無理かなあ。
スポンサーサイト