lwinput.aui + QSV decode

lwinput.auiでQSV deocdeを実装してくださっているので、試してみた。

時間ないのでメモ書き程度。

ビルド方法



mingwで

1. mfx_dispatchをインストール

2. ffmpegのconfigureオプションに--enable-libmfx --extra-libs="-lsupc++ -lstdc++"をつけてインストール

3. ビルドしたffmpegで "ffmpeg -decoders | grep qsv"としてqsv系のデコーダが有効になっているかを確認

4. この状態でlwinput.auiをビルド

5.Avisynth/VapourSynthはとりあえず放置

6. できたlwinput.auiをAviutlのプラグインフォルダに放り込む。

7. Aviutlフォルダにlibmfxsw32.dllがあったら消す! (重要)
どういうことなのかわからんが、これがあるとこちらが使われてしまう!

8. lwinput.auiの設定画面で"prefered decoder"のところに、"h264_qsv""mpeg2_qsv""hevc_qsv"のいずれかを使用したいものを記述する。



動作確認



環境1
OS : Windows 8.1 (x64)
CPU: Intel Core i7-6700K @ 4.00GHz [TB: 4.29GHz] (4C/8T)
GPU: Intel HD Graphics 530 (24EU) 350-1150MHz [95W] (20.19.15.4312)

環境2
OS : Windows 8.1 (x64)
CPU: Intel Core i7-4770K @ 3.50GHz [TB: 4.00GHz] (4C/8T)
GPU: Intel HD Graphics 4600 (20EU) 200-1250MHz [84W] (10.18.14.4170)

環境3
OS : Windows 10 (x64)
CPU: Intel Core i7-4610Y @ 1.70GHz [TB: 2.90GHz] (2C/4T)
GPU: Intel HD Graphics 4200 (20EU) 200-850MHz [11W] (20.19.15.4326)

環境4
OS: Windows 10 (x64)
CPU: Intel Celeron(R) N3150 @ 1.60GHz [TB: 2.06GHz] (4C/4T)
GPU: Intel HD Graphics (12EU) 200-640MHz (10.18.15.4256)

共通
lwinput r820
Aviutl 1.00



確認結果 & 気づいた点



下記結果は、上記4環境いずれでも同じだった。

コーデックコンテナ動作
H.264mp4正常動作
HEVCmp4libmfxhw32.dllは使用されているが、正常にデコードされない (画面が黒いまま)
MPEG2ts正常動作するが、無理なシークをするとフリーズ


・特にH.264はシークも含めて正常に動作していて、素晴らしいと思う。

・基本的にCPUよりシークが遅いが、Media SDKの初期化コスト(ResetPipeline)が高いためと考えられる。(パイプライン破棄→スレッド破棄→スレッド生成→パイプライン構築…)

・preferred decoderがひとつしか書けないのは仕様?


スポンサーサイト

コメントの投稿

非公開コメント

No title

CPU負荷が低いか、速度が速いか、メリットはあるのでしょうか?

No title

>libmfxhw32.dllは使用されているが、正常にデコードされない (画面が黒いまま)
HEVCの動作確認環境が無いので、すみません、原因が見当もつきません。

>・特にH.264はシークも含めて正常に動作していて、素晴らしいと思う。
フィールド符号ピクチャの時に、周期的に重複フレームが発生する問題を確認しました。

>基本的にCPUよりシークが遅いが
最初の出力フレームまでに8フレーム入力しないといけないのも原因の一つかもしれず。async_depthを減らせば改善する??まだ試してないです。

>正常動作するが、無理なシークをするとフリーズ
既知ですが、再現条件が不明です。
あと、最初の有効フレームの位置が正しく取得できておらず、中途半端にカットしたtsは最初のいくらかのフレームがずれて表示されるかもです。

>・preferred decoderがひとつしか書けないのは仕様?
直しました。

No title

>CPU負荷が低いか、速度が速いか、メリットはあるのでしょうか?

CPU負荷は圧倒的に低いです。速度のほうはまだ確認できていません。

>muken様
ありがとうございます。ちょっと全般的にまだ検証不足で申し訳ありません。

HEVCの動作確認については、もう少し詳しく見てみます。

シークの件ですが、CPU(libavcodec)より遅い、というだけで、パイプラインのResetをしていることを考えれば個人的には十分速いのではないかと思っています。

preferred decoderも、ありがとうございました。

HEVCのデコードについて

試してみたところ、ffmpeg本体でもデコードが成功しないことが分かりました。最初にこれを調べるべきでした。すみません。

そのため、lwinput.auiでデコードできないのは普通だと思います。

PAFFがデコードでおかしくなるのは、ffmpegがQSVのFramePictureをちゃんと設定していないことが原因かも

No title

んと、基本的にL-SMASH Worksではピクチャ符号かは.lwiを作った時の情報を元に判定しており、通常のlibavcodecのH.264/AVCデコーダで作った.lwiで再現しているのでその線は無いかと。

No title

あまり詳しく知らないのですが、libmfxhw32.dll なのですか? libmfxsw32.dllではなくて。
デフォルトでlibavcodecのQSV decoderはSWのプラグインをロードするようになっていますが。その他プラグインはオプションで指定する必要あり。

Re: No title

基本的には、libmfxhw32.dllを呼ばないとQSVデコードにならないはずです。libmfxsw32.dllではMedia SDKのCPUデコードになってしまいます。

ffmpegのデフォルトはlibmfxsw32.dllなのですか…。まあ、libmfxsw32.dllを呼べないようにしてやればよいだけなのですが…。

あと、HEVCのQSVデコードはいろいろ小細工が必要だったりするので、まだffmpegではうまく動かないのかもですね。

HEVCのデコードについて2

気になったので、ffmpegのqsvdec_h2645.cのコードを見てみましたが、一応、"HEVC (Intel Quick Sync Video acceleration)"とはなってはいるのですが…HEVCのhwデコードには対応していないようです。

No title

そ、そこはrigaya氏がパッチを送れば...

Re: No title

え、ああ、そういう発想も…

その前にわたしはNVEncCにデコード・リサイズ機能をですね…

それからサクラノ詩を…

No title

QSVが使えるavisynthのl-smash worksが実装される日も近いのかな?
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: まじぽか太郎様

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
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 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR