dfttestを弄っていて、floyd-steinbergってSIMD化しにくいよね、とか思ったので他のditherアルゴリズムを調べてみました。
https://ja.wikipedia.org/wiki/ディザ
https://en.wikipedia.org/wiki/Dither (代替日本語と同じだけど、Gradient-based
が追加されている)
説明とかソースコードいろいろ
http://www.tannerhelland.com/4660/dithering-eleven-algorithms-source-code/
そしてgoogle先生に翻訳してもらった
日本語訳
ふむ・・・
2019/03/25
2019/03/23
それ何て無理ゲー?
if (q == 112) q = 0;
else if (q == 99) q = 1;
else if (q == 110) q = 2;
else if (q == 98) q = 3;
else if (q == 117) q = 4;
else if (q == 108) q = 5;
else if (q == 104) q = 6;
else
・・・というコードを読んで、
if (q == 112) q = 0; //p
else if (q == 99) q = 1; //c
else if (q == 110) q = 2; //n
else if (q == 98) q = 3; //b
else if (q == 117) q = 4; //u
else if (q == 108) q = 5; //l
else if (q == 104) q = 6; //h
と気づかなければ解けないという無理ゲー。
いや、まだ解いてないけど。
あとは45で"-"、43で"+"
いや、せめてhexで書こうよ・・・
else if (q == 99) q = 1;
else if (q == 110) q = 2;
else if (q == 98) q = 3;
else if (q == 117) q = 4;
else if (q == 108) q = 5;
else if (q == 104) q = 6;
else
・・・というコードを読んで、
if (q == 112) q = 0; //p
else if (q == 99) q = 1; //c
else if (q == 110) q = 2; //n
else if (q == 98) q = 3; //b
else if (q == 117) q = 4; //u
else if (q == 108) q = 5; //l
else if (q == 104) q = 6; //h
と気づかなければ解けないという無理ゲー。
いや、まだ解いてないけど。
あとは45で"-"、43で"+"
いや、せめてhexで書こうよ・・・
2019/03/11
簡単に高速化できる方法
ネットワーク上のファイルに対して読み書きするとHDD上と比べてすごく遅くなります。
というわけでメインマシンから鯖上のファイルをエンコードするとき、無音検出に使っているfaad(mod)がやたらと遅いのが気になったのでソースから再コンパイルして調整してみました。
DGIndexの高速化で使ったsetvbufが手っ取り早いんじゃね?と思ったので適用。
setvbuf(*FILE, NULL, _IOFBF, 131072);
とか書くだけです。
というわけでメインマシンから鯖上のファイルをエンコードするとき、無音検出に使っているfaad(mod)がやたらと遅いのが気になったのでソースから再コンパイルして調整してみました。
DGIndexの高速化で使ったsetvbufが手っ取り早いんじゃね?と思ったので適用。
setvbuf(*FILE, NULL, _IOFBF, 131072);
とか書くだけです。
2019/03/02
DGIndexでd2vを生成する処理ってなんか遅くないですか?
はたと、ファイルのインデックス処理をさせるだけなのに、100MB/s程度しか処理してくれないのはなんで?と疑問に思ったので調べてみました。
で、GOPの先頭のアドレスを記憶する(というかtelli64関数)のに尋常じゃなく時間を食っているということが分かったので、
とりあえずそこを必要な時にだけやるようにしたら、300MB/s程度までは出るようになりました。
が、ファイル構造を理解していないので、パケットが188じゃない時にどうするのかを悩み中・・・
と見ていたら、PS(DVDとか?)の時はGOPを開始するときしか処理してない。
TS(*.ts)対応を追加したときにさぼった?のか、なんか理由があるのか・・・まだちゃんと見切れていません。
で、GOPの先頭のアドレスを記憶する(というかtelli64関数)のに尋常じゃなく時間を食っているということが分かったので、
とりあえずそこを必要な時にだけやるようにしたら、300MB/s程度までは出るようになりました。
が、ファイル構造を理解していないので、パケットが188じゃない時にどうするのかを悩み中・・・
と見ていたら、PS(DVDとか?)の時はGOPを開始するときしか処理してない。
TS(*.ts)対応を追加したときにさぼった?のか、なんか理由があるのか・・・まだちゃんと見切れていません。
登録:
投稿 (Atom)