QSVEnc 2.21

いろいろな問題の修正に加えて、音声エンコード時の速度を大幅に改善した。

[共通]
・qpmin/qpmaxを指定すると落ちてしまう問題を修正。


[QSVEncC]
・x64版で--check-environmentを使用すると、落ちてしまう問題を修正。


・ベンチマーク時に測定する品質設定の対象を変更できるように。またデフォルトを「すべて」でなく「1,4,7」に変更。
結構時間がかかるし、目安としては1,4,7だけで十分かなと。これを変更したい場合は、--bench-qualityで数値で指定する。

--bench-quality allでこれまで通り1~7まですべての計測を行う。--bench-quality 4,7とかすれば、品質4と7について計測する。


・パフォーマンス分析を行うオプションを追加。
これはもともと、開発用(高速化)に作成した機能。正直開発用以外には役には立たないとは思う。

--perf-monitor
パフォーマンスモニタリングを行い、結果をcsvファイルに出力する。


・音声エンコード時の速度を大幅に改善。(Windowsのみ)
前回、音声エンコードすると遅いかも?という話をしたやつ。



QSVEncCの音声エンコード時の高速化



音声エンコードをしている時、QSVEncC内のスレッドの役割分担はこんな感じだった。

qsvencc_out_parallel_01.png

この状態で、エンコードスレッドが飽和していて遅い原因になってた。

しょうがないので、エンコードスレッドの「映像フレーム投入・回収出力部分」と「出力・音声エンコード部分」の間に適当にキューを挟んで切り離し、「出力・音声エンコード部分」部分を別のスレッドに行わせるようにした。

qsvencc_out_parallel_02.png

まあいわゆるパイプライン並列というやつで、どうせCPUは遊んでいるのだから、ひとつのスレッドにやらせていたものを分けてしまって同時にやらせるようにすれば速くなるでしょ、という考え。



高速化の結果



環境1:
Win 8.1 x64
Core i7 6700K (4C/8T) @ 4.3GHz
DDR4-3200, 2ch, 16GB
4274ドライバ

環境2:
Win 10 x64
Celeron N3150 (4C/4T) @ 2.06GHz
DDR3-1600, 2ch, 8GB
4256ドライバ

共通:
QSVEncC 2.21 x86
入力: MPEG2 1440x1080 29.97fps
--cqp 24:26:27
--audio-copy / --audio-codec aac

測定結果:
audio-copyaudio-codec aac
高速化前高速化後高速化前高速化後
Core i7 6700K369fps373fps273fps368fps
Celeron N3150146fps182fps82fps134fps


i7 6700Kでは、音声をコピーするだけの時と変わらない速度が出るようになった。N3150でもかなり高速化したけど、こっちは音声をコピーするだけの時もだいぶ速くなったので、まだそれなりに差がある。




実際どうなってんの?



N3150でどうなっているか、もう少し細かく見てみる。

まず高速化前。80fps前後。

qsvencc_audio_copy_n3150_05.png

CPU使用率などの様子を、リアルタイムにグラフにしてみると、

qsvencc_audio_copy_n3150_06.png

こんな感じ。enc speed (fps)はだいたい80fps前後をうろうろしていて、enc threadのCPU使用率が25%(4コアのN3150では1スレッドの上限)に達している。



今度は高速化後。130fps前後と結構速くなった。

qsvencc_audio_copy_n3150_07.png

CPU使用率などの様子を、リアルタイムにグラフにしてみると、

qsvencc_audio_copy_n3150_08.png

enc thread以外にもout threadができて、動作しているのがわかる。ただ、両方とも25%近くに達していて、余裕があるわけではなさそう。enc speed (fps)も80fps前後と170fps前後を行ったり来たりしている。音声エンコードをすると音声コピーと比べて遅くなっているし、高速化できたとはいっても、やはりCPU側の処理がまだボトルネックになってそう。



というわけで、パイプライン並列で音声エンコード時も高速に動作するようにした。正直音声エンコードが遅いというのは意外だった。まあ、動画の処理速度が異常に高速なので、音声処理もそれに見合うだけ高速に行わないといけない。

パイプライン化は結構面倒だけど、それなりに効果があって、たぶんCore系CPUのようにシングルスレッドの強いCPUなら、音声コピーの時と似たような速度でエンコードできるようになったと思う。

N3150のようにシングルスレッドの弱いCPUでも、かなりの高速化にはなったが、これでもまだCPU側の処理が足を引っ張っている感じみたい。QSVEncCのCPU使用率はまだ50%強なので、さらにパイプラインの段数を増やしてやれば(つまり音声処理とmuxを分けるとか、音声エンコードとデコードを分けるとか、そういうの)、さらに速くなるのだろうけど、さすがにコードを書くのが辛いので勘弁してほしいところ。

てか、シングルスレッドが強ければそんな心配はしなくていいわけで、やっぱりシングルスレッドの弱いコアを集めりゃ速いなんてのは幻想で、実際にはかなりつらいってことが実感できる。



QSVEnc ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(dropbox)からどうぞ。同じものです。

QSVEncBenchmark.zipはベンチマーク用です。(約220MBと重いので注意)。run_benchmark.batをダブルクリックで実行です。

QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>


スポンサーサイト



コメントの投稿

非公開コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
プロフィール

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