Hi,
In the ocaml-vorbis binding for libvorbis/libogg, we're having trouble
with the function encoder_reset which is intended to finish the
current track and start a new one with given metadata.
Used in liquidsoap (audio streamer) I first noticed that this function
is quite slow, and can lead to (very small) latencies of outputs. But
it gets more serious now, since we start to suspect it to run into
loops. Liquidsoap stays blocked with 100% CPU, sometimes for 10
minutes, and then suddenly continues -- of course it gets an error
from shout and has to reconnect first.
We're still investigating the problem. I thought it might be useful to
post here the revelean bit of code. If someone thinks there is a
misconception, please tell us. Also, I'd be interested to look at a
similar "reference" code.
The function is line 727 of
http://savonet.svn.sourceforge.net/viewvc/savonet/trunk/ocaml-vorbis/src/vorbis_stubs.c?view=markup
it's written in C, and you shouldn't bother about the OCaml
interfacing stuff: actually starting to read at line 734 is ok.
Thanks for any help.
--
David