QSVの問題点
1. 画質が悪い。
2. 特にビットレート指定モードの画質が悪い。
動きが激しかったり、場面の切り替わりだったり、フェードイン・アウトだったりするような容量を喰う場面で十分なビットレートを割り当られず、そうした場面で映像が破綻する。
3. CQP・VQPはそうした心配は無いものの、それでも画質が不安定。圧縮率がそもそも低いうえに、グラデーションのようなところを端折りがちで、ブロックのように見えたりする。
Lookaahead(先行探索付きレート制御)は、特にこの2番目の問題を解決できる。数多くのフレームを先行して分析しておくことで、ビットレートの配分の最適化と圧縮率の向上を狙っているみたい。
また、Lookahead depthというパラメータによってどのくらいフレーム分解析するかを指定できる。最大100まで。
環境・設定
環境
Core i7 4770K, 4C/8T
Core: 4.5GHz @ 1.305V
Cache: 4.3GHz @ 1.300V
GPU: 1250MHz(Auto)
DDR3-2666, 2ch, 16GB, 10-12-12-31-2
Win7 x64 SP1
Intel 3220ドライバ
Avisynth 2.6.0 alpha 4
LSMASHSource.dll r629 (POP氏ビルド)
x264 r2334 x64
ソース
この大空に、翼をひろげて FLIGHT DIARY オープニングムービー(Downloadできるやつ)
VC-1, 1280x720p, 30.00fps, 3140frmaes, 約1分45秒, 70.5MB
エンコード後のビットレートがほぼ2000kbpsとなるように以下のオプションでエンコードした結果を比較した。
Lookaheadモード depth=40 (la2000_40)
--la 2000 --maxbitrate 25000 -u best --scenechange --la-depth 40 --crop 0,0,0,16
Lookaheadモード depth=60 (la2000_60)
--la 2000 --maxbitrate 25000 -u best --scenechange --la-depth 60 --crop 0,0,0,16
Lookaheadモード depth=100 (la2000_100)
--la 2000 --maxbitrate 25000 -u best --scenechange --la-depth 100 --crop 0,0,0,16
CBRモード
--cbr 2000 --maxbitrate 25000 -u best --scenechange --crop 0,0,0,16
VBRモード
--vbr 2800 --maxbitrate 25000 -u best --scenechange --crop 0,0,0,16
CQPモード
--cqp 25:27:30 -u best --scenechange --crop 0,0,0,16
VQPモード
--vqp 24:26:29 -u best --scenechange --crop 0,0,0,16
x264 2000kbps
--preset slower --bitrate 2000 --pass x --stats "[statsfile]" --ipratio
1.5 --qcomp 0.75 --vbv-bufsize 25000 --vbv-maxrate 25000 --keyint 300 --min-keyint 4 --bframes 4 --ref 5
速度とビットレート
で、速度とビットレートから。

ビットレートが折れ線。すべてのケースでほぼ2000kbpsになうようにしていることの確認。
棒グラフがエンコード速度。CQP/VQPが一番高速で、Lookaheadモードはやや遅め。ただ、それでもかなりの速度が出ているし、lookahead depthを変更しても速度に大きな差はないことがわかる。ちなみに、全パターンについてGPU Boostはきっちりかかっていた。
画質の比較
今回は2箇所で。
1つめが動きの少ないところ。2つめは動きの大きいところ。
画像は一部切り取りなのだけど、右端が切れているので、もしよければ別ウィンドウで開いて比較などしてください。
画質1 (1721フレーム目)
まず1721フレーム目で比較してみる。
オリジナル見るところとしては、上のあたりとか、背景のテクスチャのあたりとか。

Lookaheadモード depth40髪のあたりの鮮明さもある程度保たれてるし、背景のテクスチャも少し潰れてるとはいえそれでも割と残ってる。

Lookaheadモード depth60背景のテクスチャの潰れ具合を見るにわずかにdepth40より劣化したかも。

Lookaheadモード depth100これも同様で、背景のテクスチャの潰れ具合から、わずかにdepth60よりも劣化した気がする。

CBRモード 2000kbps結構ひどい。

VBRモード 2800kbpsさらにひどい。というか2800kbpsで指定しないと2000kbpsにならないあたりもひどい。

CQPモード 25:27:30かなり綺麗だと思う。

VQPモード 24:26:29かなり綺麗なCQPよりももうちょい綺麗。ここは動きの少ないところなので、VQPはCQPより画質をあげようとする。

x264 2pass 2000kbpsx264はさすがというべきで、QSVEncで最も綺麗なVQPより更に綺麗だと思う。

画質2 (2127フレーム目)
オリジナル動きが大きく、かつQSVが苦手そうなところ。QSVは強い線は残っても、弱い線が潰れやすいので…

Lookaheadモード depth 40結構ひどい。クリックして別ウィンドウで開くと右端が見えると思うけど、右端とかは本当に線が見えなくなってしまっている。

Lookaheadモード depth 60まだひどいものの、depth 40よりは改善した。

Lookaheadモード depth 100depth 60よりいいかというと、場所による。ぱっと見はいい…かなあ。

CBRモード 2000kbps見るに耐えない。

VBRモード 2800kbpsCBRよりはマシだが、まだ相当ひどい。

CQPモード 25:27:30QSVEncのなかではこれが一番いいかも。

VQPモード 24:26:29今度はVQPのほうがCQPより汚い。これはVQPが動きの大きい所ではややビットレートをケチり、浮いたビットレートを動きの少ないところに回そうとするため。

x264 2pass 2000kbpsさすがに素晴らしい。

ビットレート分配
x264 2pass 2000kbpsまずx264から。大きくビットレートを変動させ、最適な配分を行なって画質を維持している。

Lookaheadモード depth 40ある程度ビットレートを変動させている模様。

Lookaheadモード depth 60変動幅はdepth 40より大きめか。

Lookaheadモード depth 100さらに大きく変動させている。

VBRモード 2800kbpsなぞの変動。たぶんあまり適切な分配ではない。

CQPモード 25:27:30CQPゆえの非常に大きな変動。

VQPモード 24:26:29VQPはCQPとはやや異なった分配を行う。CQPよりもやや変動を抑えよう、という方向性。

結局Lookaheadモードってどうよ?
わりと使えるんじゃないかと。
いままでのCBR/VBRのビットレート指定モードは、ビットレートを大きめに設定しておかないと部分的に破綻が目立った。しかし、Lookaheadモードは少しビットレートを小さめに設定しても目立った破綻なくエンコードしてくれるようだ。
もちろん、ビットレートをダイナミックに変動させ、圧縮率を高めたり画質を維持するという点ではCQP/VQPにはかなわないし、x264にかなうはずもない。
それでも、ビットレート指定モードで圧縮率を高めに設定できる初めての実用的なモードなんじゃないかな、と思う。
CPU性能はやや物足りず、冷却性能が残念(どころか最悪)だったHaswellにとって、このQSVのLookaheadモードの追加は、AVX2に次ぐ良い点だと思う。