掲示板お問い合わせランダムジャンプ

トップスペース

2012年02月18日
【AviUtl】「60fpsフリッカ軽減」を0.2.1に更新
 「60fpsフリッカ軽減」の0.2.0が一部のウイルス対策ソフトで誤検出されるらしいので、0.2.1に更新してみました。

 AviUtl プラグイン フィルタ by うえぽん

 この更新で機能や性能はあまり変わって無いと思います。
 「簡易NR」のデフォルト値を0から18にしたぐらいです。

 なぜ誤検出されたのかはよく分かりません。
 使っているコンパイラーは http://komisar.gin.by/ のMingwで、バージョンgcc-4.6.2です。
 とりあえずプログラムの無駄を削ったり、コンパイルオプションを変更したりして、バイナリを別物にしすることで対応してみました。
[ 投稿者:うえぽん at 15:36 | AviUtlや画像処理 | コメント(17) ]

この記事へのコメント
無題
ウィルスの誤検出の件でコメントした者です。
素早い対応、有難う御座います。
遅ればせながらダウンロードし、試してみました。

流石に、スクロールしている文字のチラつきの低減は、無理の様ですが。
フィルタのON、OFFで画面を比較しても気持ち程度の変化しか無かった、
「3次元プログレッシブ化フィルタ」に比べると。
輪郭線のチラつき(ジャギ)がしっかり取れる等、目に見えて効果がありますね。
投稿者: 通りすがり at 2012-03-01 21:38:36
無題
スクロールしている文字については
60iで動いているなら実際の縦の解像度も低いと思うので
そこだけ縦方向のローパスフィルタをかければジャギが目立たなくなるのではないかなと考えてます。
調べてみたところ「インタレ縞低減プラグイン++」がちょうどそんな感じのプラグインのようです。
投稿者: うえぽん at 2012-03-02 19:40:41
無題
わざわざお調べ頂き有難う御座いました。

ただ、「インタレ縞低減プラグイン++」の方では
フィルタのON、OFFや設定を色々弄っても画面に全く変化無し(笑)でしたので
「60fpsフリッカ軽減」の方を使わせて頂きます。
投稿者: 通りすがり at 2012-03-04 01:24:18
付属ソースファイルで自前ビルドを試してみたのですが…
こちらの 「60fpsフリッカ軽減」 フィルタを用いれば
60fps 読み込み時のテロップちらつきを手軽に取り除けるため
日頃からたいへんありがたく使わせて頂いています。

配布されている zip ファイルにはソースが付属していたので
komisar.gin.by から Mingw gcc 4.6.x ( 現在は 4.6.4 の mingw-w64.gcc464.ml.20130412.7z ) を落として自分でビルドを試してみているのですが、どうも上手く行きません…

付属ソースの Makefile 内にコメントされていた

 mingw32-make.exe -f makefile

を頼りに
mingw-w64.gcc464.ml.20130412.7z の中から
mingw32-make.exe というバイナリを探したものの
mingw-w64.gcc464.ml.20130412.7z には含まれていないようで頓挫。

そこで
sourceforge.net/projects/mingw-w64/ から入手してインストールした MinGW-w64 内の
mingw32-make.exe だけ抜き取ってきて利用してみたものの
flicker60.o と flicker60.s
それか
ld.exe と collect2.exe
でビルドが止まってしまい完遂できませんでした。

日頃は.sln が用意された VS 向けのソースをお手軽ビルドする程度の力量であるため
MinGW を前に手も足も出ず、
諦めきれずに MinGW を利用したビルドについて検索してみても
ヒットするページごとに MinGW について書かれている内容が大きく違っていて
( 自分にはそのように見えてしまう )
さらなる迷路に迷い込んでしまいました。

自分の不勉強さを棚に上げて
たいへん厚かましいお願いとなり心苦しい限りなのですが
flicker60.auf をビルドを完遂させるためのヒントを何か頂けないものでしょうか
投稿者: regnar at 2016-02-25 04:02:57
regnarさん
すみません。こちらでも原因は分らないです…。

とりあえず基本的なことを説明しますと、通常はx264のビルドと同様にMSYS上でビルドします。
MSYS上なら Makefaile とするだけでビルドできるはずです。
(MSYSはWindows上でUnixの環境をエミュレートするものです)
このやり方を覚えればx264も自分でビルドできるかと思います。

MSYSを使わずにWindows上でビルドする方法もあります。
それがmingw32-make.exeを使ったやり方というわけです。
もしかしたら他のバージョンのmingw32-make.exeを使うともしかすると成功するかもしれませんが、断言はできません。申しわけありません。
投稿者: うえぽん at 2016-02-25 08:44:34
追記
makefileを使わない(MSYSもmingw32-make.exeも使わない)方法もあります。
下のようなコマンドでコンパイルできると思います。

gcc -msse2 flicker60.cpp -o flicker60.auf -shared -Wl,--dll,--add-stdcall-alias

上は一回で済ましていますが、二回に分けると下のようになります。

gcc -c -msse2 flicker60.cpp -o flicker60.o
gcc -shared -Wl,--dll,--add-stdcall-alias -o flicker60.auf flicker60.o

自分は最初このやり方でaviutlのプラグインを作成していました。
投稿者: うえぽん at 2016-02-25 09:19:45
さっそく試してみました
具体的なレスをいただき、ありがとうございます (^ ^)

「 makefile を使わない / MSYS も mingw32-make.exe も使わない)方法 」
を早速試してみました。

gcc -c -msse2 flicker60.cpp -o flicker60.o

を実行すると flicker60.o が生成されるものの

flicker60.cpp: In function 'BOOL func_proc(FILTER*, FILTER_PROC_INFO*)':
flicker60.cpp:498:92: warning: converting to non-pointer type 'int' from NULL [-Wconversion-null]
if( !fp->exfunc->set_ycp_filtering_cache_size( fp, tp.cache_w, tp.cache_h, 4, NULL ) ) return FALSE; ^
flicker60.cpp:526:92: warning: converting to non-pointer type 'int' from NULL [-Wconversion-null]
if( !fp->exfunc->set_ycp_filtering_cache_size( fp, tp.cache_w, tp.cache_h, 8, NULL ) ) return FALSE;

と警告が表示されています。


この flicker60.o を使って

gcc -shared -Wl,--dll,--add-stdcall-alias -o flicker60.auf flicker60.o

を実行することでエラーなしに flicker60.auf が出来上がりますが
この filker60.auf は AviUtl に認識されませんでした
( AviUtl 側の読込みエラーすら出ず )


コンパイルをニ回に分けずに

gcc -msse2 flicker60.cpp -o flicker60.auf -shared -Wl,--dll,--add-stdcall-alias

で一気に filcker60.auf の生成も試してみたところ
まず flicker60.o を一旦生成した場合とまったく同じ警告が表示され
出来上がった filkcer60.auf は AviUtl 側で
読み込みエラーダイアログが出てしまい、使用することが出来ませんでした。


filcker60.cpp 内で指摘されている箇所に何かしら手を加えることで
コンパイルが完遂しそうな状態なのでしょうか?
投稿者: regnar at 2016-02-25 22:33:36
無題
コンパイル時のwarningは問題ないと思います。
(AviUtlのfilter.hにある説明ではNULLを指定するよう記載されていますが、その通りにすると警告が出てしまうのです。NULLを0にすればwarningは出なくなるかと)

AviUtlが認識しない、読み込みエラーダイアログが出るというのは、原因は分かりません。
申し訳ないです。
コンパイルとリンクのオプションなどを色々変えて試してみてくださいとしか言えません。
もしかして作成されたaufが64bit版だったりしないでしょうか。
投稿者: うえぽん at 2016-02-26 07:51:17
お世話になりました
時間を割いてアドバイスを返して頂き、ありがとうございました (^ ^

あれこれ試しているうちに、無事コンパイルできるようになりました

mingw32-make.exe と makefile を使った方法に固執していたままだったなら
ここまで辿りつけなかったはずなので
勇気を出して開発者さんに直接質問してみてよかったです

自分のCPUに合わせたバイナリを生成してみることができるようになり
当初の目標を達成できてホクホクです

同様の手法を用いて、補間なし平均プラグインのコンパイルも行うことができました
投稿者: regnar at 2016-02-27 01:14:14
無題
ビルドしやすいようにとmakefileも用意しておいたのですが、それが逆に混乱を招いてしまったようでなんだか申し訳ないです。

gccのCPU最適化オプション(mtune)についてですが
指定したCPUに対して必ずしも最適なコードを吐いていないようなので
これも複数試してみて結果がよろしいものを選ぶのが良いと思います。
投稿者: うえぽん at 2016-02-27 07:49:49
無題
いえいえ、わたしが MinGW を満足に使えていないだけのことなので
わたし以外の方は makefile と mingw32-make.exe とで
問題なくコンパイルされていると思います (^ ^;

結局のところ MinGW を消したり入れたり
また導入するパッケージ構成を変えて入れなおしているうちに
コンパイル出来るようになったので
当初はインストールすべきものが足りていないなかったようです

gcc での最適化については -mtune を使わずに

 gcc -E -v -march=native - 2>&1

というコードを実行して返ってきた中から組み込んでみました
( -march=native と -mtune で gcc に最適化を判断させるコンパイルはまだ試していません )


補間なし平均プラグイン についても
同様にカスタムして AviUtl へ導入しているので 
今回自前ビルドした 60fpsフリッカ軽減プラグイン が
どの程度貢献してくれたのかは はっきりと判らないのですが
処理している毎秒フレーム数の表示を見る限りでは
以前と比べてエンコード速度が10%ほど高速化されたようです
投稿者: regnar at 2016-02-27 19:18:09
無題
10%も高速化されたということに驚いてます。
私が配布しているバイナリと比べてということですよね?
自分でビルドできる人は自分でやってもらうのが良いかもしれんせんね。
なんとなくソースファイルも同梱していましたが、そういう利点もあるようですね。
投稿者: うえぽん at 2016-02-28 08:43:12
無題
まず
「 このセッティングでエンコードしたときは最大でもこのフレームレートまでしか出ないよね 」
という一定のラインは判っていました

けれども、ソースをいくつか変更してそれぞれエンコードしてみたところ
エンコード終了時での平均エンコード速度(フレームレート)が
いままでは超えることのなかった一定のラインを軒並みを超えてきています

AviUtl 配下で差し替えたのは
60fpsフリッカ軽減プラグイン と 補間なし平均プラグイン だけなので
伸びた分のフレームレートを生み出してくれたのは
おそらくこの2つなんじゃないかと考えています
投稿者: regnar at 2016-02-28 23:21:36
無題
大変有用なフィルタでびっくりしました。

ところで、拡大縮小処理と併せてフィルタ適用すると、ソースの画像サイズにクロップ等されてしまうのですが、解決策などありますでしょうか?

aviutlのバージョンは1.00になります。
投稿者: ぶにゅ at 2017-09-15 04:06:10
ぶにゅさん、こんにちは
ぶにゅさん、こんにちは。

問題の現象を確認しました。
フィルタの実行順序で60fpsフリッカ軽減より前に画像サイズを変えるフィルタを入れていると、画像サイズを元に戻してしまうようです。
60fpsフリッカ軽減のような時間軸系フィルタは始めの方に実行するものだと思っていたので確認を怠ってしまいました。申し訳ありません。
あとで直しておきます。
投稿者: うえぽん at 2017-09-15 06:01:30
無題
早急な対応ありがとうございます。
フィルタ順の設定を確認しておりませんでした。

こちらこそお騒がせして申し訳ありません。
投稿者: ぶにゅ at 2017-09-15 12:13:27
「60fpsフリッカ軽減」をver 0.2.2に更新
「60fpsフリッカ軽減」をver 0.2.2に更新しました。
ttp://auf.jpn.xxxxxxxx.jp/
たぶんこれで画像サイズが変更されるバグは直ったと思います。
投稿者: うえぽん at 2017-09-16 21:45:21

この記事の固定URL
http://shinshu.fm/MHz/14.30/archives/0000381860.html

記事へのコメント
 
簡単演算認証: 8 x 7 + 5 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら