自動フィールドシフト 高速化版+12

さらに高速化を試みた。

+11
・要らないメモリ確保を行わないようにした。fullHD時に4MB程度の節約。

+12
・フレームバッファへの書き込み方法を変更して高速化。
・ソフトウェアプリフェッチ再投入により高速化。

それほど大きな高速化ではないので、実際にはx264の比重が大きいと殆ど変わらないかも。QSV+afsとかなら変わると思う。



ダウンロード>> (skydrive) (dropbox)



続きは高速化のメモ書き。

以下、自分用メモ。

Core i7 4770K 4C/8T, Core/Uncore 4.2GHz
DDR3-2600, 16GB, 2ch, 10-12-12-31-2N, 1.64V
iGPU off, dGPU Geforce GTX660

Win7 x64 SP1
Aviutl 1.00

MPEG2 1440x1080i, 29.97fps, 10240frame
m2v.aui 0.7.5a

afs設定
映画/アニメ プリセット、スレッド数 8

計測は2回行い、2回目の値を使用 (1回目は無視)

1フレーム平均所要時間 (+10 → +12)
128bit-AVX / 256bit-AVX2
afs_speed_10_12

・+10 → +12
 - scan_frameをprefetch0により高速化。
  フレームを縦に分割したスレッド並列なので、
  やはり次の行をプリフェッチすることで高速化できるみたい。
  prefetchntaよりはprefetch0のほうが効いた。
  高速化率はAVXよりAVX2のほうが大きめ。

 - blendを_mm_stream_si128 (movntdq)により高速化。
  珍しく大きな効果があった。
  _mm_store_si128のほうがいい場面というのはわかりやすいけど、
  _mm_stream_si128のほうがいいかどうかは難しい…。
  高速化率はAVX2よりAVXのほうが大きめ。

・get_ycp_cacheはほとんどget_ycp_source_cacheを呼んでる時間なので高速化の余地はない

・並列化による高速化はもう無理かも?
 - 現在スレッド並列部はscan_frameのみ
 - blendの並列化を試したが、全く効果なし
  (並列数 2,4,8 いずれも効果なし、
    CPU使用率だけ増えて速度は変わらず)
 - 効果薄いだろうなとは思ってたけど、
  全く効果ないってそれはそれですごいなあ…。うーん。
 - ほかも並列化の見込みなし


スポンサーサイト



コメントの投稿

非公開コメント

高速化版+12

オリジナルの自動フィールドシフトプラグインとx265
高速版12とx265の組み合わせをAVIUTLで使用してみました
ごくまれに高速版12でmux,renuxが出来ない不正ファイルが
確実に出来る組み合わせがありました。
で、オリジナルにて同じ設定で再エンコすると正常に終わりました
高速版12でアニメ設定にてスムージングを切れば正常に終了します。
ただファイルサイズがかなり大きくなります。

Re: 高速化版+12

うーん、オリジナルとはスレッド数の設定次第でわずかに出力が違う結果になってしまうのは事実ですが、不正ファイルができてしまう…というのはちょっと原因が思いつきません。

いくつか質問させてください。

1.
自動フィールドシフトには様々な設定がありますが、どんな感じでしょうか。(特に解除Lv、スレッド数、フィールドシフト、間引き、24fps化など)

また、x265guiExのログなどもいただけると助かります。(いろいろな情報が得られるので)

2.
自動フィールドシフトを使う場合、mux段階は
mux → timelineeditor → remux
の3段階がありますが、この最初のmuxで不正ファイルとしてダメ、ということでしょうか。

3.
muxerのバージョンを教えていただければと思います。

4.
高速版+12を使ってx265でなく、x264のほうで出力した場合でもmuxが通らないでしょうか?

可能性が多岐にわたるため、いろいろ質問してすみません。よろしくおねがいします。

即答できる範囲では

複雑な操作はしてません
高速12をインストール後アニメボタンをポチっとすれば再現されると思います。
また、同一シリーズのアニメ11話分のエンコードで7話のみ異常が生じます。
x264で同じ設定でエンコードしましたがファイルサイズが大きくなっただけで正常に終了しました。
現在稼働中のAVIUTLから読み取ると上から
16,16,32,32
64,128,128,64
128,256,3(解除Lv.),2
フィールドシフト
間引き
スムージング
YUY2
それぞれにチェック
ログは今から再エンコしても3時間後かと
メッセージはmux出来ませんのような単純なものだった気が
nuxer,remuxerのタイムスタンプは2013.10.30.23:43で
コピー元のフォルダはL-SMASH rev785でした。

また、ファイルの1部分200フレーム程度の切り出しエンコでは
問題が出ません。
アニメ1本分で初めてエラーが出ます
フィールドシフトが途中で何らかの誤作動を起こし
最後までmux-remuxが実行できない様です。

追記

スムージングを外すと問題は出ません
さらに、スムージングを入れたままでも
x265の設定でVAQが切れるsuperfast以上の設定でも問題はでません
適応AQの設定をVAQやAutoVAQにすると問題が出ます。

>フィールドシフトが途中で何らかの誤作動を起こし
訂正->スムージング機能が途中で何らかの誤作動を起こし

Re: 追記

状況詳しく教えていただき、ありがとうございます。

x264だとうまくいく、x265でも設定次第、となるとx265側の問題の可能性もあるとは思いますが…。(入力映像がわずかに変化した関係でx265の地雷を踏んだとか…)

いずれにせよ、教えていただいた設定で、スムージングのオン/オフを中心にこちらでも試してみて原因を調査してみます。

お詫びと追記

標準のフィールドシフトでもエラーがでました。orz
ちなみに高速12でのmux-remuxには成功しています。
成功例
高速12使用
ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD7.asf.23.mp4

全般
完全名称 : D:\エンコワーク\ガリレイドンナ<ノイタミナ>\ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD7.asf.23.mp4
フォーマット : MPEG-4
プロファイル : Base Media / Version 2
コーデック ID : mp42
サイズ : 119 MiB
ながさ : 23分 0秒
OBR モード : VBR モード
オーバルビットレート : 725 Kbps
エンコード日 : UTC 2014-01-25 13:49:38
タグ付け日 : UTC 2014-01-25 13:49:38

ビデオ
ID : 1
フォーマット : HEVC
フォーマット/情報 : High Efficiency Video Coding
コーデック ID : hvc1
コーデック ID/情報 : High Efficiency Video Coding
ながさ : 23分 0秒
ビットレート : 577 Kbps
幅 : 1 440 ピクセル
高さ : 810 ピクセル
解像度 : 16:9
モード : VFR モード
フレームレート : 24.637 fps
最小 : 14.985 fps
最大 : 29.970 fps
ビット/(ピクセル*フレーム) : 0.020
ストリームサイズ : 94.9 MiB (80%)
エンコード日 : UTC 2014-01-25 13:49:38
タグ付け日 : UTC 2014-01-25 13:49:38

同じ設定の失敗ログ
標準フィールドシフト使用(設定同じ)
------------------------------------------------------------------------------------------------------------------------------
[D:\エンコワーク\ガリレイドンナ<ノイタミナ>\ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD9.asf.23.mp4]
------------------------------------------------------------------------------------------------------------------------------
auo [info]: NeroAacEnc で音声エンコードを行います。 Q-Based AAC 160~kbps
auo [info]: converting YUY2 -> i420p, using SSE2 AVX
auo [info]: x265 options...
--input-csp i420 --crf 23 --keyint 300 --input-res 1440x810 --fps 30 -o
"D:\エンコワーク\ガリレイドンナ<ノイタミナ>\ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD9.asf.23.265" "-"
yuv [info]: 1440x810 30Hz C420, unknown frame count
x265 [info]: using cpu capabilities: MMX2 SSE SSE2Fast SSSE3 SSE4.2 AVX
x265 [info]: HEVC encoder version 0.6+324-237bf6667405
x265 [info]: build info [Windows][MSVC 1800][64 bit] 8bpp
x265 [info]: Main profile, Level-4 (Main tier)
x265 [info]: WPP streams / pool / frames : 13 / 4 / 2
x265 [info]: CU size : 64
x265 [info]: Max RQT depth inter / intra : 1 / 1
x265 [info]: ME / range / subpel / merge : hex / 60 / 2 / 2
x265 [info]: Keyframe min / max : 300 / 300
x265 [info]: Rate Control / AQ-Strength / CUTree : CRF-23.0 / 1.0 / 1
x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / refs : 1 / 1 / 3
x265 [info]: tools: rect amp rd=3 lft sao-lcu sign-hide
x265 [info]: frame I: 418 kb/s: 7489.61
x265 [info]: frame P: 33578 kb/s: 616.85
x265 [info]: frame B: 3 kb/s: 289.92
x265 [info]: global : 33999 kb/s: 701.32
x265 [info]: 1037 of 33578 (3.09%) P frames weighted

encoded 33999 frames in 5507.88s (6.17 fps), 701.32 kb/s
auo [info]: drop 7360 / 41359 frames
auo [info]: x265エンコード時間 : 1時間31分48.0秒
auo [info]: L-SMASH muxer でmuxを行います。映像: on, 音声:off, tc:off, 拡張モード:なし
auo [error]: mux後ファイルが見つかりませんでした。
auo [error]: L-SMASH muxer でのmuxに失敗しました。
auo [error]: muxのコマンドラインは…
auo [error]: ".\exe_files\muxer.exe" -i "D:\エンコワーク\ガリレイドンナ<ノイタミナ>\ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD9.asf.23.265"?fps=30000/1001 -o "D:\エンコワーク\ガリレイドンナ<ノイタミナ>\ガリレイドンナ<ノイタミナ> #10 13年12月20日_HD9.asf.23_muxout.mp4"
L-SMASH muxer [error]: MP4 muxing mode
L-SMASH muxer [error]: Error: failed to open input file.
L-SMASH muxer [error]: Error: failed to open input files.
auo [info]: 総エンコード時間 : 1時間32分17.0秒

Re: お詫びと追記

うーん、オリジナル版でも高速化版でも起こりうるということなので、そもそも自動フィールドシフトの問題ではなさそうですね。

x265関係はまだ開発中ですから、まだ不安定なこともあり得るのでしょうか…。

いろいろ試していただき、また情報を頂き、ありがとうございました。

さらにごめんなさい

高速12でエラーを出したファイルを通常版での正常エンコを確認後
念のためPCにリセットをかけて再起動
高速12で再エンコしたらエラーが出ずに終了しました
PCへの長時間負荷などが原因の可能性が出てきました
ここにお詫びします。
おさがわせしました。

参考情報

エラーの出たファイルは
PCを再起動して確認する前
起動したままのAVIUTLで何回も
再エンコを試しましたが正常にエンコが出来ませんでした
長時間(1.5x11時間以上)を稼動により
何らかの不具合(メモリーリーク?)などの蓄積による
不具合も存在したのかも知れません。

Re: 参考情報

なるほど、了解です~。たしかに長時間稼働(連続バッチ処理)でおかしくなることはありますよね…。

バッチ処理中にエラー

高速版afs使わせてもらっています。
とても重宝しています。ありがとうございます。

バッチ出力を使っているときに起きるのですが、例えば
バッチ1:1440x1080ソース
バッチ2:1920x1080ソース
等と、エンコード対象が解像度小→大と並んでいるとき、
大のエンコード開始時にafsがエラーで終了します。
再現性100%じゃない気がしますが、afs+8から+12に更新後、エラー終了する(している)ことが多くなったように思えます。
(PC前から席をはずしていることが多いので、エラーの瞬間をまだ目撃できてません)
+11でメモリ回りを改善されたと書かれていましたので、ちょっと気になりました。
もしご迷惑でなければ、調査していただけませんでしょうか?
調査にあたり何か情報が必要でしたら、提供します。

Re: バッチ処理中にエラー

+11の更新は、+10以降使っていなかった必要のないメモリ領域の確保をやめたということで、動作に影響はないはず…でした。

エラー終了する原因、調べてみます。

いくつかお尋ねしたいことがあります。

1. エラーが発生するとのことですが、具体的にエラーメッセージはなんと出ていますでしょうか。やはり

「アドレス"xxxxxxxxxx"で、例外"0xc0000005"が発生しました」

というものでしょうか?

2. Aviutlのシステムの設定で、
・最大画像サイズ
・キャッシュフレーム数
・LargeAddressAware
はどのように設定していますでしょうか?

すみませんが、よろしくお願いします。


……もしLargeAddressAwareがオフでしたら、オンにすると改善するかもしれません。(根本的な解決ではない気もしますが…)

No title

お手を煩わせてしまって申し訳ありません。

>1. エラーが発生するとのことですが、具体的にエラーメッセージはなんと出ていますでしょうか。やはり
>「アドレス"xxxxxxxxxx"で、例外"0xc0000005"が発生しました」
>というものでしょうか?

はい。
つい先ほども発生して、おっしゃる通りの例外ID(0xc0000005)でした。
この時は、バッチエンコード用に
 ソース読み込み→フィルタの値設定→x264GUI出力設定→バッチ出力
を6回ほど繰り返した後に、
次のソースを読み込んだタイミングで発生しました。
※この時読み込んだソースは、最初からエラー発生まで全て同じ解像度(1440x1080)のものでした。

ダイアログは、
 「アドレス"0x5bc57ec4"で例外"0xc0000005"が発生しました」
 発生モジュール:afs.auf
 オフセットアドレス:0x00017ec4
 備考:FILTER::func_proc()[自動フィールドシフト]
となっていました。

>2. Aviutlのシステムの設定で、
>・最大画像サイズ
>・キャッシュフレーム数
>・LargeAddressAware
>はどのように設定していますでしょうか?

最大画像サイズ : 幅1920 高さ1080
キャッシュフレーム数 : 8
LaegeAddressAwareを有効にする : (チェックオフ)
としています。
この値を最近変更したことはありません。

>……もしLargeAddressAwareがオフでしたら、オンにすると改善するかもしれません。(根本的な解決ではない気もしますが…)
早速試してみます!
何か変化がりましたら報告させていただきます。

例外エラー

同じエラーでずっと苦労してました
ぐぐって検索キーワードが悪いのか不明のま使い続けてましたが、

質問者ではありませんが、改善しました
ありがとうございました

afs例外

>Luciole様
情報ありがとうございます。この情報をもとに調査させていただきます。

afs例外

やっと原因に気づくことが出来ました。高速化版afs+13で修正しています。
http://rigaya34589.blog135.fc2.com/blog-entry-448.html

報告ありがとうございました。

Re: afs例外

> やっと原因に気づくことが出来ました。高速化版afs+13で修正しています。
お役に立てたようで何よりです。早速ダウンロードさせて頂きました。
ありがとうございました!
プロフィール

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