>>560
言われて気になってしまってソース探してみたんだけど
vorbisfile.cでこんな呼び出ししてた。

long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);

まさかと思ってfreadでgrepしたら、
案の定ov_openを使った場合はread_func = freadになってました。
つまり読み出しバイト数は第2引数*第3引数だったらしい…orz

今までread_funcの第3引数の意味が分からなくて
第2引数のみでしてたから1バイトずつ読み込んでた。
つーかもう少しコールバックのドキュメントちゃんとしてくれないかなぁ
ってかもしかして書いてある?私の見落としかな。