いまさらだけど…

なんとなくVC++2010を使ってみたら、
VC++2010をよく使ってる人からはいまさらなんだろうけど…

VC2010
どうしてこうなった…

C++/CLIではIntelliSenseが使えない…らしい。

CLIでないC++なら2010でもちゃんと効くし、そのときはVC#2010程じゃないけど、VC++2008よりは優秀なんだけど。

x264 エンコード実験 --weightp 2

r1788でx264はchroma-weightpに対応…ということで、実際どんくらい効果あんの? ということで実験してみた。重み付け予測ということはとりあえず、フェードとかに強くなるらしいよ?

x264gui 改造版 r1804+347

・x264,x264_L-SMASHの更新。
109.1790+345 -> 110.1804+347

・guiで色について(--colormatrixとか)の設定をしたときに、コマンドの表示がおかしかった問題を修正。


今回も設定ファイルに互換性がありません…
ダウンロード>>


FAWCheckについて

私が勝手にくっつけたFAWCheckなる機能について、どういうことをやってるのかちょっと詳しめな説明。

そもそもFakeAACWaveとは、AACをwavに偽装して、wavとして読み込んでカットしたりできるようにするもの。FAW.exeのGUIなし版がfawcl.exe。

たとえば、
aac -> [FAW.exe] -> 偽装wav -> [Aviutlでカット編集(CMカットとか)] -> カットされた偽装wav -> [FAW.exe] -> カットされたaac
のように使用し、音声をエンコードすることなくカット編集ができる。

(2011.01.04追記)
FAWには一般的な1/1サイズと、もうひとつ1/2サイズってのがあって、1/2サイズは16bitwavではなく、8bitwavで偽装されている。この1/2サイズを使う場合、Aviutl内部は16bitwavなので、16bit->8bit変換をしてやらなければならない。x264guiEx 0.12からこの16bit->8bit変換を行って1/2サイズFAWも扱えるようにした。(もっとも、0.12はバグ持ちなので使えるのは0.13からなるが)


偽装wavはAviutlで出力する際にはきちんとFAW.exeで処理する必要があるけども、たまに設定を間違えて、普通のwavをFAW.exeで処理しようとしてしまい止まったり、逆に偽装wavをneroでエンコードしてしまいおかしなことになったり、ということになってorz


そこで、音声の設定は常に普通のwav用のものにしておき、偽装wavのときには自動的にFAW.exe(fawcl.exe)を使用するようにできないか、と思ってFAWCheckを作ってみた。


・パスの指定
FAW.exe(fawcl.exe)のパスは、外部エンコーダのリストにあるものを使うので、FAWCheckをオンにするには、一度外部エンコーダのところのFAW.exe(fawcl.exe)のパスを正しく指定しておく。指定した後で、外部エンコーダの選択を普通のwavの時の設定(たとえばneroaacencとか)に戻しておく。一度指定してあればおk。


・ファイル出力時の動作
FAWCheckをオンにしておくと、音声のエンコードを開始する前に、まずFakeAACWave(偽装wav)かどうかの判定し、

偽装wavでない(普通のwavだ)、と判定された場合、guiの設定通りに音声エンコードを実行。
偽装wavである、と判定されたときは、guiで設定された音声エンコードの方法を無視して、FAW.exe(fawcl.exe)で音声を処理する。

というふうになる。

つぎに、どうやって判定しているかという話。

x264afs.exe r1790+345

auo同様、x264afs.exeもtimecodeが怪しいのを修正しとかんといかんと思ったので更新。自動フィールドシフト使用時にカクカクする(ことがあった)問題が改善される。

実は昨日r1788+345でビルドしたんだけど、バグがあるらしい…と聞いて公開はやめといた。


ダウンロード>>


さて、イカ娘でも見るか。

x264gui 改造版 r1790+345

・x264の更新。

r1788では、chroma weightp で画像が壊れることが
あったらしく、その修正のよう。


・guiでスレッド数に2桁の値を指定できるようにした。

まあ、基本的には 0 のままにして
--thread auto でいいとは思うけど。
(自動的にCPUの論理コア数×1.5になる、
これがちょうどいいらしい)


・改造版r1788では、コンパイルをミスったのかx264audioからqtaacが使えなくなっていた。すみません。
r1790ではテストしたところ大丈夫。


今回も設定ファイルの互換性がないようです…orz
ダウンロード>>


x264gui 改造版 r1788+344v2

r14xx以降、自動フィールドシフト使用時に怪しいtimecodeを
吐き続けていた問題をやっと解決。
疲れた…


ダウンロード>>


かなりいろいろと試行錯誤してみたが、結局は実に簡単なところだった…orz


細かいこと言うと、gui/x264auo.c の 1050-1051行目、

second_largest_pts = largest_pts;
largest_pts = pic.i_pts;

をドロップ時はしてはいけないっていう、ただそれだけ。
これをやってしまっていたため、1038行目からの

if( pic.i_pts <= largest_pts )
{
//(...コメントアウト部 中略...)
pic.i_pts = largest_pts + ticks_per_frame;
}

が不必要に動いてしまって、timecodeが壊れる原因となっていた。

同じ動画をエンコードしたときのtimecodeの比較。
自動フィールドシフトでは、24fps化を指定している。
そのため、1000ms/23.976fps = 41.7..ms/frame
なわけだが…

比較のエクセルファイル>>

x264gui 改造版 r1788+344

変更点は…
・x264, x264_L-SMASHの更新
r1772 -> r1788の更新のほとんどはHigh-depth Encodingについてなので、x264gui.auoには関係ない…と思いきや、実はchroma weighted predictionが実現したようでこれが重要かもしれない。


・コメントにあったご指摘より。iniのプロファイルから読み込んだ時に、--preset, --tune, --profile の項目についてもguiに反映するようにした。たとえばiniのプロセットに--profile mainと書いてあるのにguiに反映されないのは不自然な気がするので、改善してみた。


・guiのプロファイル(H.264のprofileを設定する項目)を上位制限項目として適用するようにした。
たとえば、プロファイルでmainとなっていれば、8x8dctを指定しても、自動的に8x8dctを解除するようになる。x264.exe では --profile main とか --profile baseline とかすると、それによって制限されるので、gui.auoでも制限がかかるようにした。そのほうが自然だと思う。high指定で制限がかからないので、制限をかけたくない場合はhighで。


・iniに Lame mp3, ffmpeg ac3 の設定を追加。
やってみたかっただけ。特に意味はない。

・iniのx264のプロファイルを微修正。
高画質でも --ref 8 もいらんでしょという反省。

・いくつかのコンボボックスの内容について、x264の構造体から値をロードするようにした。
これは私が楽をするため。使用上の変化なし。ただ、色についてのコンボボックスのあたり(colormatrixとか)で、表示の順番が変わった。


r1772+326 -> r1788+334r1772+336 -> r1788+344では設定ファイルの互換性はありません。
(追記)十の位間違えてた

ダウンロード>>

x264gui 改造版 r1772+336

変更点は…
・ADTS-AAC + --ademuxer lavf で12秒長くなる問題が解決されたようなのでFAWのときの例外処理を廃止。
・iniにqtaacenc.exe用の設定を追加してみた。

外部muxer(mp4boxとか)でmuxしたい人でqtaacを使いたい人は、qtaacenc.exeでエンコードするといいかも。
qtaacenc.exeはこちら


ダウンロード>>


ところで…
x264.exeを使用して自動フィールドシフトもできるAviutl出力プラグインをYan氏が作ったそうです。Aviutl総合スレにある。x264 for Aviutlというらしい。素晴らしい。ちょっと使ってみる。x64なx264も使えれば…

x264gui 改造版 r1766+331v2

外部エンコーダ + 内部muxer の場合にエラーで止まってしまう問題を修正。
改造版 r1766+326v2, r1766+331 でのバグ。


ダウンロード>>


プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: [email protected]
github twitter

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

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら&gt

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら&gt

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法&gt
- QSVEncCオプション一覧&gt

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法&gt
- NVEncCオプション一覧&gt

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法&gt
- VCEEncCオプション一覧&gt

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら&gt

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト
- SSE2~AVX512による高速化版
- オリジナル: aji様

clcufilters 
- OpenCL/CUDAの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対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

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