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
