QSVEnc 5.01
QSVEncは2月ぐらいからかなりいじくりまわしていて、内部のコードを大きく変えて
・メインループのわかりにくいコードを削除し、コードをシンプルに書き直す
・フィルタの実装方法を変更し、OpenCLフィルタを実装可能とする
・これにより従来の不安定なカスタムフィルタを置き換える
・OpenCLフィルタは基本的にVCEEncと共通のコードにする
あたりを目指してきた。
結構時間がかかってしまったけど、ひととおりでやりたかったことは実装でき、従来のYUV420に関しては問題なく動作できていそう。
あとは5.00で壊してしまった(というか後回しにした)Linuxビルドも修正して、問題なくビルドできるようになった。
【 更新内容 】
[ 5.00beta1/2の問題点修正 ]
・5.00 beta1から動かなかったLinuxビルドを修正。
・OpenCLフィルタを使用時、またはAV1デコード時は、d3d11モードを優先するように。
d3d9では動作しない場合があるので、自動的にd3d11に切り替えるように。
・5.00betaで-c rawを指定してもraw出力されないのを修正。
[ OpenCLフィルタの追加 ]
・下記OpenCLによるvppフィルタを追加。
- --vpp-afs
- --vpp-colorspace
- --vpp-deband
- --vpp-decimate
- --vpp-edgelevel
- --vpp-mpdecimate
- --vpp-nnedi
- --vpp-pad
- --vpp-pmd
- --vpp-smooth
- --vpp-tweak
- --vpp-unsharp
- --vpp-warpsharp
これまでVCEEncで実装してきたフィルタの移植に加え、いくつかNVEncからフィルタを実装。OpenCLフィルタをQSVでも使用できるようにするのは先にも書いたように5.xxでの目標の一つで、これがやっと実現できた。
問題はまあ予想通りではあるけど、OpenCLフィルタを使うと速度が結構下がってしまうこと。最適化するとどうにかなるものなのだろうか? あるいは将来のiGPUでEU数が増えていけば少しは改善されるだろうか?
[ TVRemotePlus関連の機能拡張 ]
・avsw/avhwでのファイル読み込み時にファイル解析サイズの上限を設定するオプションを追加。(--input-probesize)
・--input-analyzeを小数点で指定可能なよう拡張。
・読み込んだパケットの情報を出力するオプションを追加。( --log-packets )
・data streamに限り、タイムスタンプの得られていないパケットをそのまま転送するようにする。
・オプションを記載したファイルを読み込む機能を追加。( --option-file )
・動画情報を取得できない場合のエラーメッセージを追加。
・コピーするtrackをコーデック名で選択可能に。
NVEncでも実施したTVRemotePlus関連でいただいた要望の反映。チャンネル切り替えの高速化、arib-subtitle-timedmetadaterによる字幕処理への対応など。
[ その他いろいろな問題点の修正 ]
・字幕の変換が必要な場合の処理が有効化されていなかったのを修正。
・--vpp-subburnでサイズが0の字幕がくると異常終了が発生したのを修正。
・--videoformatに関しては入力から容易に取得できないので、"auto"を削除。
・--audio-source/--sub-sourceを複数指定した場合の挙動を改善。
・字幕のmetadataが二重に出力されてしまっていた問題を修正。
・--sub-metadata, --audio-metadataを指定した場合にも入力ファイルからのmetadataをコピーするように。
このあたりはNVEncでも実施した修正項目。
[ その他機能拡張 ]
・yuv444→nv12/p010/ayuv/y410変換のAVX2/SSE2版を追加。
[ 注意点・既知の問題 ]
・YUV422/YUV444では、現状まだ動作しないvppフィルタが多いです。
ちょっとまだYUV422/YUV444あたりは、フィルタを使うとエラー終了してしまったりしている。どこまでがMediaSDKの仕様で、どこからが実装の不具合ののか、今後チェックしてみないといけなさそう。
QSVEnc ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。
QSVEncBenchmark.zipはベンチマーク用です。(重いので注意)。run_benchmark.batをダブルクリックで実行です。
QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>
ソースはこちら
・メインループのわかりにくいコードを削除し、コードをシンプルに書き直す
・フィルタの実装方法を変更し、OpenCLフィルタを実装可能とする
・これにより従来の不安定なカスタムフィルタを置き換える
・OpenCLフィルタは基本的にVCEEncと共通のコードにする
あたりを目指してきた。
結構時間がかかってしまったけど、ひととおりでやりたかったことは実装でき、従来のYUV420に関しては問題なく動作できていそう。
あとは5.00で壊してしまった(というか後回しにした)Linuxビルドも修正して、問題なくビルドできるようになった。
【 更新内容 】
[ 5.00beta1/2の問題点修正 ]
・5.00 beta1から動かなかったLinuxビルドを修正。
・OpenCLフィルタを使用時、またはAV1デコード時は、d3d11モードを優先するように。
d3d9では動作しない場合があるので、自動的にd3d11に切り替えるように。
・5.00betaで-c rawを指定してもraw出力されないのを修正。
[ OpenCLフィルタの追加 ]
・下記OpenCLによるvppフィルタを追加。
- --vpp-afs
- --vpp-colorspace
- --vpp-deband
- --vpp-decimate
- --vpp-edgelevel
- --vpp-mpdecimate
- --vpp-nnedi
- --vpp-pad
- --vpp-pmd
- --vpp-smooth
- --vpp-tweak
- --vpp-unsharp
- --vpp-warpsharp
これまでVCEEncで実装してきたフィルタの移植に加え、いくつかNVEncからフィルタを実装。OpenCLフィルタをQSVでも使用できるようにするのは先にも書いたように5.xxでの目標の一つで、これがやっと実現できた。
問題はまあ予想通りではあるけど、OpenCLフィルタを使うと速度が結構下がってしまうこと。最適化するとどうにかなるものなのだろうか? あるいは将来のiGPUでEU数が増えていけば少しは改善されるだろうか?
[ TVRemotePlus関連の機能拡張 ]
・avsw/avhwでのファイル読み込み時にファイル解析サイズの上限を設定するオプションを追加。(--input-probesize)
・--input-analyzeを小数点で指定可能なよう拡張。
・読み込んだパケットの情報を出力するオプションを追加。( --log-packets )
・data streamに限り、タイムスタンプの得られていないパケットをそのまま転送するようにする。
・オプションを記載したファイルを読み込む機能を追加。( --option-file )
・動画情報を取得できない場合のエラーメッセージを追加。
・コピーするtrackをコーデック名で選択可能に。
NVEncでも実施したTVRemotePlus関連でいただいた要望の反映。チャンネル切り替えの高速化、arib-subtitle-timedmetadaterによる字幕処理への対応など。
[ その他いろいろな問題点の修正 ]
・字幕の変換が必要な場合の処理が有効化されていなかったのを修正。
・--vpp-subburnでサイズが0の字幕がくると異常終了が発生したのを修正。
・--videoformatに関しては入力から容易に取得できないので、"auto"を削除。
・--audio-source/--sub-sourceを複数指定した場合の挙動を改善。
・字幕のmetadataが二重に出力されてしまっていた問題を修正。
・--sub-metadata, --audio-metadataを指定した場合にも入力ファイルからのmetadataをコピーするように。
このあたりはNVEncでも実施した修正項目。
[ その他機能拡張 ]
・yuv444→nv12/p010/ayuv/y410変換のAVX2/SSE2版を追加。
[ 注意点・既知の問題 ]
・YUV422/YUV444では、現状まだ動作しないvppフィルタが多いです。
ちょっとまだYUV422/YUV444あたりは、フィルタを使うとエラー終了してしまったりしている。どこまでがMediaSDKの仕様で、どこからが実装の不具合ののか、今後チェックしてみないといけなさそう。
QSVEnc ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。
QSVEncBenchmark.zipはベンチマーク用です。(重いので注意)。run_benchmark.batをダブルクリックで実行です。
QSVEncCのオプションについてはこちら。
QSVEncCオプション一覧>
ソースはこちら
スポンサーサイト