自己満足日記。
飽きっぽいので期待しないでください。
[1]
[2]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ROやっつけログ消しフィルタ for AviUtl ver0.99e以降(zip)
とりあえずエラーだけは発生しないようにして公開。
ROのチャットログ内での文字が最大高12pxでその右下に黒の影が付くという条件を決め打ちしたフィルタです。
よって、
・可逆であること。
・色空間がRGBであること。
・拡大縮小をしていないこと。
これらの条件を一つでも満たさない動画に対しては使えません。
また、キャラクターにカーソルを合わせた時に出る、全体を黒縁に囲まれた文字にも対応していません。
かなり頭の悪いコードになっているのは自覚しているので、可能な限り随時改善していくつもりですがあまり期待しないでください。
PR
わりと評判は良いようで。
RO チャット窓類伏せフィルタ&RO HP/SP/Zeny伏せフィルタ(zip)
面積平均法リサイズ"ジョーク"フィルタ(zip)
上の方は普通に使えると思います。
なんで名前とか伏せられないのとかの質問は禁止です。
あと今ROをプレイしてないので現状に合わないやも。
撤去。上のあればいらないですよね。
下はジョークです。
バカ正直にやると負荷が高いらしいというのを良い事に並列処理の実験場になってます。
大抵の場合他のフィルタを使えば足りてしまうでしょう。
撤去。メモリリーク起こしてましたワロタ。
旧版はDLできないようにしました。
もし旧版を利用してる奇特な方がいたら更新しておいてください。
面積平均法リサイズ"ジョーク"フィルタ(zip)
上の方は普通に使えると思います。
なんで名前とか伏せられないのとかの質問は禁止です。
あと今ROをプレイしてないので現状に合わないやも。
撤去。上のあればいらないですよね。
下はジョークです。
バカ正直にやると負荷が高いらしいというのを良い事に並列処理の実験場になってます。
大抵の場合他のフィルタを使えば足りてしまうでしょう。
撤去。メモリリーク起こしてましたワロタ。
旧版はDLできないようにしました。
もし旧版を利用してる奇特な方がいたら更新しておいてください。
作成していた習作のプラグインに分散処理にあたって、
当初利用していたOpenMPは必ず再頒布パッケージが必要になり、
こんな大したことないものを利用するために
一々ライブラリが必要だと言うのはとてもやりづらいので
動的にしかビルドできないOpenMPから
静的にビルド可能な内蔵の関数へと切り替える必要があり、
これらの間の構文の違いを吸収するためOpenMPで利用していたコードから、
これらの間で流用可能なコードに書き換えてみた。
OpenMPでのループの並列化は基本的にはこう。
この場合、仮に4threadで処理するのなら
1thread目:0~249番のループ
2thread目:250~499番のループ
3thread目:500~749番のループ
4thread目:750~999番のループ
てな感じで分散して処理される。処理の順番はバラバラ。
schedule句によってこの分配は変えられる。
実は特にループの為の構文を使わず、
若干の書き換えで一般のparallel構文でほぼ同様に分散することもできる。
総カウント数をthread数で割って0~249までは1thread目が~、
などと事前に計算する必要はない。
#pragma omp parallel
for(int x = omp_get_thread_num(); x<1000; x += omp_get_num_threads()){
//特に構えることなく並列化できるコード
}
omp_get_thread_num()
引数を取らず、並行領域内で自分が何thread目かを返す関数。
omp_get_num_threads()
引数を取らず、その並行領域の総thread数を返す関数。
この場合、上と同様に4threadで処理するのなら
1thread目:0,4, 8,12,16,20,24,...番のループ
2thread目:1,5, 9,13,17,21,25,...番のループ
3thread目:2,6,10,14,18,22,26,...番のループ
4thread目:3,7,11,15,19,23,27,...番のループ
という形で分散される。schedule(dynamic, 1)とほぼ同じ形になる。
そしてAviutlのvoid multi_thread_func関数においてほぼ同様の挙動になるように書き換えるとこうなる。
for(int x = thread_id; x < 1000; x += thread_num){
//特に構えることなく並列化できるコード
}
わぁ簡単(ぱちぱち
thread_idとthread_numの説明は良いでしょう。
当初利用していたOpenMPは必ず再頒布パッケージが必要になり、
こんな大したことないものを利用するために
一々ライブラリが必要だと言うのはとてもやりづらいので
動的にしかビルドできないOpenMPから
静的にビルド可能な内蔵の関数へと切り替える必要があり、
これらの間の構文の違いを吸収するためOpenMPで利用していたコードから、
これらの間で流用可能なコードに書き換えてみた。
OpenMPでのループの並列化は基本的にはこう。
#pragma omp parallel for for(int x = 0; x<1000; x++){ //特に構えることなく並列化できるコード }
この場合、仮に4threadで処理するのなら
1thread目:0~249番のループ
2thread目:250~499番のループ
3thread目:500~749番のループ
4thread目:750~999番のループ
てな感じで分散して処理される。処理の順番はバラバラ。
schedule句によってこの分配は変えられる。
実は特にループの為の構文を使わず、
若干の書き換えで一般のparallel構文でほぼ同様に分散することもできる。
総カウント数をthread数で割って0~249までは1thread目が~、
などと事前に計算する必要はない。
#pragma omp parallel
for(int x = omp_get_thread_num(); x<1000; x += omp_get_num_threads()){
//特に構えることなく並列化できるコード
}
omp_get_thread_num()
引数を取らず、並行領域内で自分が何thread目かを返す関数。
omp_get_num_threads()
引数を取らず、その並行領域の総thread数を返す関数。
この場合、上と同様に4threadで処理するのなら
1thread目:0,4, 8,12,16,20,24,...番のループ
2thread目:1,5, 9,13,17,21,25,...番のループ
3thread目:2,6,10,14,18,22,26,...番のループ
4thread目:3,7,11,15,19,23,27,...番のループ
という形で分散される。schedule(dynamic, 1)とほぼ同じ形になる。
そしてAviutlのvoid multi_thread_func関数においてほぼ同様の挙動になるように書き換えるとこうなる。
for(int x = thread_id; x < 1000; x += thread_num){
//特に構えることなく並列化できるコード
}
わぁ簡単(ぱちぱち
thread_idとthread_numの説明は良いでしょう。