実験: QSVでデコードしてみると?
通常、QSVEncCを使ったエンコードでは、デコードはCPUで行ってる(SWデコード)。これをQSVでデコードできるようにするとより速いらしい。
そこで、QSVEncもQSVでデコードできるように改造して、
・QSVデコード → QSVエンコード
・SWデコード → QSVエンコード (avs読み込み(LSMASHSource.dll))
の2種類を比較して、実際どのくらい速いの? というのを調べてみた。
ソースはMPEG2とH.264の二通り。出力は1920x1080(リサイズなし)と1280x720(vppでリサイズ)の二通り。この2x2の4パターンについて比べる。
計測方法と環境
環境1
Core i7 4610Y (2C/4T) @ 1.7GHz [TB: 2.9GHz]
DDR3-1600, 2ch, 11-11-11-28-1
環境2
Core i7 4770K (4C/8T) @ 3.9GHz
DDR3-2400, 2ch, 10-12-12-31-2
使用ソフト
Avisynth 2.6.0 alpha5
LSMASHSource.dll
QSVEncC (特別版) (x86)、ffmpeg demux + QSV decode + CPU使用率計測追加版
ソース
MPEG2 1920x1080p 10.6Mbps 5203フレーム
H.264 1920x1080p 25.1Mbps 2293フレーム
QSVEnc エンコード設定
--cqp 24:25:27 --benchmark result.txt --output-res 1920x1080 or 1280x720
計測
一発勝負
結果
まずはCore i7 4610Yから。棒グラフがエンコード速度(下の目盛り)、折れ線グラフ(上の目盛り)がCPU使用率。

入力フォーマットによらず、QSVでデコードすることで大きく高速化している。CPUが非力なため、SWデコードが大きなボトルネックになっていて、これをQSVデコードに切り替えたことでそのボトルネックが解消したみたい。
CPU使用率も大幅に低下している。
つぎにCore i7 4770K。同じく、棒グラフがエンコード速度(下の目盛り)、折れ線グラフ(上の目盛り)がCPU使用率。

こちらはCPUが強力なため、SWデコードでも十分な速度が出ているようで、i7 4610Yと比べるとさほど大きな高速化にはなっていない。特にデコードのCPU負荷の小さいMPEG2からの変換では、1280x720にリサイズした際にも、大きな差は出ていない。それでも、多少高速化しているし、CPU使用率が大幅に低下しているのが見て取れる。
注: ただこの速度、オーバークロックなメモリ速度がかなり効いてる疑惑も…。
というわけで、QSVでデコードすると予想通り速くなり、特に非力なCPUでは効果があるみたい。
だからHandbrakeのQSVは速いんでしょうなあ…。
そこで、QSVEncもQSVでデコードできるように改造して、
・QSVデコード → QSVエンコード
・SWデコード → QSVエンコード (avs読み込み(LSMASHSource.dll))
の2種類を比較して、実際どのくらい速いの? というのを調べてみた。
ソースはMPEG2とH.264の二通り。出力は1920x1080(リサイズなし)と1280x720(vppでリサイズ)の二通り。この2x2の4パターンについて比べる。
計測方法と環境
環境1
Core i7 4610Y (2C/4T) @ 1.7GHz [TB: 2.9GHz]
DDR3-1600, 2ch, 11-11-11-28-1
OS : Windows 8.1 (x64)
CPU: Intel Core i7-4610Y @ 1.70GHz [TB: 2.90GHz] (2C/4T)
L1 : Read: 308.44GB/s, Write: 154.11GB/s
L2 : Read: 140.28GB/s, Write: 43.92GB/s
L3 : Read: 56.45GB/s, Write: 25.52GB/s
RAM: Read: 18.55GB/s, Write: 8.23GB/s
Used 1974 MB, Total 3991 MB
環境2
Core i7 4770K (4C/8T) @ 3.9GHz
DDR3-2400, 2ch, 10-12-12-31-2
OS : Windows 8.1 (x64)
CPU: Intel Core i7-4770K @ 3.50GHz [TB: 3.90GHz] (4C/8T)
L1 : Read: 929.28GB/s, Write: 464.52GB/s
L2 : Read: 416.73GB/s, Write: 131.70GB/s
L3 : Read: 184.83GB/s, Write: 88.15GB/s
RAM: Read: 33.49GB/s, Write: 15.91GB/s
Used 7026 MB, Total 16063 MB
使用ソフト
Avisynth 2.6.0 alpha5
LSMASHSource.dll
QSVEncC (特別版) (x86)、ffmpeg demux + QSV decode + CPU使用率計測追加版
ソース
MPEG2 1920x1080p 10.6Mbps 5203フレーム
H.264 1920x1080p 25.1Mbps 2293フレーム
QSVEnc エンコード設定
--cqp 24:25:27 --benchmark result.txt --output-res 1920x1080 or 1280x720
計測
一発勝負
結果
まずはCore i7 4610Yから。棒グラフがエンコード速度(下の目盛り)、折れ線グラフ(上の目盛り)がCPU使用率。

入力フォーマットによらず、QSVでデコードすることで大きく高速化している。CPUが非力なため、SWデコードが大きなボトルネックになっていて、これをQSVデコードに切り替えたことでそのボトルネックが解消したみたい。
CPU使用率も大幅に低下している。
つぎにCore i7 4770K。同じく、棒グラフがエンコード速度(下の目盛り)、折れ線グラフ(上の目盛り)がCPU使用率。

こちらはCPUが強力なため、SWデコードでも十分な速度が出ているようで、i7 4610Yと比べるとさほど大きな高速化にはなっていない。特にデコードのCPU負荷の小さいMPEG2からの変換では、1280x720にリサイズした際にも、大きな差は出ていない。それでも、多少高速化しているし、CPU使用率が大幅に低下しているのが見て取れる。
注: ただこの速度、オーバークロックなメモリ速度がかなり効いてる疑惑も…。
というわけで、QSVでデコードすると予想通り速くなり、特に非力なCPUでは効果があるみたい。
だからHandbrakeのQSVは速いんでしょうなあ…。
スポンサーサイト