[Asterisk-Dev] changing codec during call

Race Vanderdecken asterisk at vanderdecken.com
Fri Feb 25 10:30:51 MST 2005


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.

Race "The Tyrant" Vanderdecken

-----Original Message-----
From: asterisk-dev-bounces at lists.digium.com
[mailto:asterisk-dev-bounces at lists.digium.com] On Behalf Of Steve Kann
Sent: Friday, February 25, 2005 12:04 PM
To: Asterisk Developers Mailing List
Subject: Re: [Asterisk-Dev] changing codec during call

Michael Giagnocavo wrote:

>Not knowing much about this at all, I ask why wouldn't the jitterbuffer
>handle this monitoring, as it has the most details of what's going on
(such
>as packet loss, where switching to a packet-loss-friendly codec would
be a
>good idea).
>
>-Michael
>
>-----Original Message-----
>From: asterisk-dev-bounces at lists.digium.com
>[mailto:asterisk-dev-bounces at lists.digium.com] On Behalf Of Jesse
Kaijen
>Sent: Friday, February 25, 2005 8:40 AM
>To: asterisk-dev at lists.digium.com
>Subject: [Asterisk-Dev] changing codec during call
>
>Hello I'm a student and for my bachelor-assignment I'm looking into
VoIP.
>I'm researching if the audio perceptive of the end-user will get higher
if
>during a call a switch of codec is made.
>I was wondering if it's possible to switch codec's during a call with
IAX.
>Can someone help me on that?
>
>This is the idea:
>During a call with ulaw (64kb) the available bandwidth drops from 80kb
>(sufficient) to 40kb for a longer period. The losses are great and the
>call-quality is horrible. At that point changing codec to GSM for
instance
>may result in a better quality. When the bandwidth is restored change
the
>codec back. A monitor must listen after a jitterbuffer and then decide
to
>change codec. 
>
>Picture:
>                        +----*asterisk*-----+
>UA--->---->|---->up---->|--jitbuf---decoder-|--PSTN
>UA---jitbuf|<---down<---|-----------encoder-|--PSTN
>   ^                    +-------------------+
>   |
> point where the monitor must listen
>
>My question is (if possible) which command do I have to send during a
call
>to switch codecs? And can the current iax-clients handle a codec
change?
>  
>

I've thought about this a bit already.

1) I'm pretty sure the iaxclients could handle the change, although it's

not really tested. By design, it should be OK.

2) If bandwidth is constrained, a more useful way to lower bandwidth 
consumption is often to just use larger frames; i.e. instead of sending 
20ms frames (with like 13kbps overhead), send 60ms frames with (13/3 =) 
4.1kbps overhead. Especially if you're already using a good codec, like 
Speex ABR, you really can't go much lower..

3) The issue is detecting the bandwidth constraint. I don't think it's 
trivial to discover (unless you use trial and error, I guess), that the 
cause of packet loss is a bandwidth constraint that this change will 
have any effect on. For example, your packets might take this route from

server to client:

<server> (100mbps ethernet) <router> (T3 or something) <lots of routers 
and hops> (DSL/modem) <client>.

If you see loss, it could be from the last hop (the DSL or modem), where

changing codecs might help. But it _could_ be from the T3 (45Mbps) being

congested, in which case changing your codec won't make a bit of 
difference for your call, and, will probably make things worse. In that 
case, you probably want to actually send _more_ bits, by using FEC or 
some other means of redundancy to improve the effective loss ratio..

-SteveK

_______________________________________________
Asterisk-Dev mailing list
Asterisk-Dev at lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-dev
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev





More information about the asterisk-dev mailing list