[Speex-dev] Jitter buffer

Steve Kann stevek at stevek.com
Wed Dec 22 04:34:02 PST 2004


On Dec 22, 2004, at 12:38 AM, Jean-Marc Valin wrote:

> Hi Steve,
>
> Though it may work (haven't thought about all the details), I think it
> would be much more messy than just using a codec abstraction layer (the
> one in Speex or a custom one). I don't understand why you don't like
> that idea.
>

I guess I should have changed the subject of this message, because this 
API suggestion isn't really tied to the jitter buffer at all.

The codec abstraction in the jitterbuffer, though, assumes that the 
jitterbuffer will always be used for taking jittered input, and then 
decoding it to unjittered PCM.

That's not always what it's needed for, sometimes you just want to 
dejitter, and not decode.   Also, these operations often happen at 
differing places in a larger system, and coupling them so closely will 
require a much more complicated architecture.

Here's two examples of dejittering and not decoding:

1) iaxclient can handle an arbitrary number of calls, some of which may 
be active, and some of which may be "on hold".  For calls on hold, 
presently, we keep dejittering the input (so the buffer stays full, and 
we follow the network jitter), but we don't decode, because we're not 
playing the audio.

2) In asterisk, the jitterbuffer is presently at the network-protocol 
layer, but decoding is done much later.  Sometimes the call may be in 
an application which doesn't decode audio at all (i.e. it's playing you 
IVR prompts, or whatnot), or only decodes under certain circumstances 
(app_conference).  The network layer doesn't know anything about this.

-SteveK



More information about the Speex-dev mailing list