[Asterisk-Dev] changing codec during call

Jesse Kaijen jesse at kayen.nl
Fri Feb 25 12:34:26 MST 2005


Just had my dinner and look at all the reactions! :P
Thanks!

> Steve Underwood wrote:
>
>> Steve Kann wrote:
>>
>>> Race Vanderdecken wrote:
>>>
>>>> Detecting the the bandwidth constraint constraint might be possible
>>>> using RTCP. http://www.nwfusion.com/news/tech/2003/1117techupdate.html
>>>>
>>>> I have not looked to see if Asterisk is using RTCP, but that would be
>>>> the correct way to control and detect.
>>>>  
>>>>
>>>
>>> IAX2 now supports sending all of the parameters that are described in 
>>> the _extended_ RTCP XR stuff you quote there (the basic RTCP RR does 
>>> not support all of this).
>>>
>>> But I still fail to see how you can determine from this information 
>>> alone, whether reducing your bandwidth usage by 5kbps or whatever is 
>>> going to affect the call quality in a positive or negative way.
>>>
>>> Certainly, it would be good network policy for us to lower our 
>>> consumption when we see congestion (like TCP does), but it is not 
>>> necessarily going to improve the quality of our call.
>>
>>
>> High packet loss rate, or even high jitter, might give us a clue that 
>> a lower bit rate would be beneficial. 
>
> If you read my previous message on the topic, depending on the location 
> of the congestion, it might just make things worse.
>
> If the congestion is a very low bandwidth last-hop, it might help.  But 
> if the congestion is on a high-bandwidth link (and caused by other 
> applications, or even line errors), it will just make things sound 
> worse.   For example, imagine that the loss is on some 45mbps link in 
> the middle of the internet, being caused by some network-unfriendly 
> application.  If we lower our bandwidth consumption, it's unlikely to 
> make any difference at all in the loss rate.  However, it will probably 
> make the loss _more_ noticable to the user, and not less noticable.  
> (i.e. going from 20ms uLaw frames, to 60ms highly-compressed frames will 
> probably end up causing the same loss percentage to be much more 
> noticable, and more difficult to conceal).
>
Well here's the deeper problem I'm going to investigate. And try to solve.
If I can't solve the problem or a monitor makes it worse than that research
is also of great value. Guessing what is better won't solve the discussion.
Some lab-tests already gave as result that changing codec to often (6 times
in 8 sec) lowers the MOS-value. And the user hears some clicking (DUH!). 
Having a adaptive jitterbuffer is certainly better for the MOS than changing
codec. But that's not what I want. I want to combine these solutions to get
an even higher result.
The reason I like to use the IAX-protocol is that the new jitterbuffer is
based on the E-MOS algorithm (PLEASE CORRECT ME IF I'M WRONG). **see_below**
Also the JB_reports are getting send which are quite handy for monitoring.

So far the only problem I have is changing codec during a call. I hope the
option of opening a second call isn't the solution. Because making the call
to the PSTN doesn't give you the option to 'open' a new call and close the
other.

If I have that problem solved and let a call change codec in a neat way, I
will work on the monitor and ask your opinion on that one quite often I'm
sure of that.

>> I have no idea how to meaningfully determine that a higher bit rate 
>> would be harmless. Probing with the higher rate every time the loss 
>> and jitter are low is quite likely to cause far too much juggling of 
>> rates.
>
> 
> There's a lot of research on this kind of stuff out there for TCP 
> behavior and algorithms.   If we wanted to make our protocol 
> network-friendly, we would definately slow down our rates when we saw 
> loss, to do congestion-avoidance like TCP does.  But I'm not sure we 
> want our VoIP streams to be as nice as TCP is, because in general, the 
> VoIP streams are going to be considered a higher priority in the 
> network.  (And surely, those RTP streams that fight against IAX sure 
> aren't going to slow down!).
>
> -SteveK

**see_below**
Adaptive Playout Buffer Algorithm for Enhancing Perceived Quality of
Streaming Applications.





More information about the asterisk-dev mailing list