From: David Baelde <david.baelde@gm...> - 2005-10-02 21:05:50
I'm the main developper of liquidsoap, the streamer from the Savonet
project (http://savonet.sf.net). This streamer mainly uses shout2 as
an output plugin, but also alsa, raw data over rtp, etc. And many
outputs can be used in the same instance of liquidsoap. For that
reason, we don't use directly sync and delay from libshout, but have a
centralized scheduler, which should avoid having one output to sleep
and leave no time for the next output to process the current frame.
We're experiencing many kinds of problems, and trying to guess where
they come from. An observation is that icecast buffers seem to keep
growing -- information from liquidsoap is more and more in advance
compared to what one hears. So I decided to ask delay() if
liquidsoap's centralized scheduling is correct for shout outputs. It
appears that delay() is nearly a constant, about 150ms. I'm wondering
about the precise meaning of this.
First interpretation: icecast is warning us that the buffer is growing
too fast, something is wrong, liquidsoap shouldn't be so fast. Second
interpretation: everything's ok, the advance is a constant so it has
no impact on the buffer. I'd like to know which one is the good. We
believe in the second one, but then why do the buffer seem to grow ?