AviUtlフィルタをマルチスレッド化しようと思って失敗した。

Cが読めるわけではなく、画像処理の半端無ぇ数学的知識があるわけでもないので、
「リネームするだけでマルチスレッド化してくれるフィルター」を使いました。
デフォルトで2コアと4コアのしかなかったから、添付のソースのスレッド数定義を8コアに書き換えてコンパイルしようかと。
Cをビルドできそうなフル機能のNetBeansを前に入れておいたから、それでできるかな。


と思ったらできない。
どうやらgcc(cygwin)を入れなきゃいけないらしい。
しょーないからcygwinインスコに取り掛かる。
そしたらcygwinのインストールで日本国内のミラーサイトを選択したら切れるわ遅いわで…
最近Linuxを触る機会が無いもので、うっかり国内ミラーが大抵遅いってことを忘れとったわ…
台湾系が結構早い(2M出る)から、最後はソコに繋ぐ。
後発のところのほうが早いものなのかなぁ?
インフラの更新が大変で回線を早くできないとか?


何はともあれ、さあてNetBeansさん、ビルドしてもらいますか、と思ったらMS云々な定数(_MAX_PATHだったかな?)でコンパイルエラー
"MAX_PATH"に書き換えたら別のエラー「引数に渡されたものがCompatibleじゃないよ」って言われた。
Cを一から勉強する気もないヘタレなもんで、ソースフォルダを見たらvcprojってあからさまにVCプロジェクトファイルがあったから、結局Visual C++ Express EditionをMSから落としてきてインストール&ビルド。
ヤッターヽ(゚∀゚)ノ コレで激重フィルタをマルチスレッド化できる!!


あれ…?なんだか…画像が…途切れるよ?…
うあ゙ぁあ ・゚・(´Д⊂ヽ・゚・ あ゙ぁあぁ゙ああぁぁうあ゙ぁあ゙ぁぁ
元来、依存関係の無い並列処理が可能なフィルタじゃなければいけないってのは分かってた。
でもノイズ処理なんぞお互いに依存せんだろうと思ったし、一応バグフィックスログ内で対応を明記してたフィルタだった。
マルチコアじゃなくてマルチCPUだとダメなのか?んなわきゃねっか。
コンパイル済み4コア化フィルタでも同現象が起こるから、自分のPCがいけないんだろうけれどわからん。
画像をスレッド数に分割⇒フィルタを通す⇒元に戻す
ってことをきっとしてるんだろうけれど、最後の「元に戻す」でフィールド位置がチグハグになってる?
今日はもう体力が尽きそうだから今回は諦めよう…
作者さんに聞いてみるかね、気が向いたら。