[asterisk-bugs] [Asterisk 0017403]: [patch] RTP directmedia is broken in some cases

Asterisk Bug Tracker noreply at bugs.digium.com
Sat Oct 16 03:51:56 CDT 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17403 
====================================================================== 
Reported By:                one47
Assigned To:                twilson
====================================================================== 
Project:                    Asterisk
Issue ID:                   17403
Category:                   Channels/chan_sip/CodecHandling
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     assigned
Target Version:             1.6.2.15
Asterisk Version:           SVN 
JIRA:                       SWP-1578 
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2010-05-26 09:45 CDT
Last Modified:              2010-10-16 03:51 CDT
====================================================================== 
Summary:                    [patch] RTP directmedia is broken in some cases
Description: 
It is "well known" that setting up directmedia paths between SIP devices
with different preferred-codec lists can be problematic. The solution has
previously been to either disable directmedia, or use the codec-negotiation
patch which is available for Asterisk 1.2 and 1.4.

PROBLEM: In its simplest form, the problem is (I believe) as follows:

When RTP tries to set up a direct media path, it does so by setting each
party separately, and giving each party free reign over their codec choice.
Thus under some circumstances the 2 remote devices can make 2 choices which
are different. If the 2 parties disagree on the negotiated codec, you
generally get silence in both directions.

SOLUTION: Make rtp.c just a bit more clever about what codecs each party
is offered - In fact, do not allow a choice, just tell them what is
acceptable.

EXAMPLE: Device A (g722|alaw) calls via asterisk to device B (alaw) -
Initially a transcoded path is setup between the 2 parties. directmedia is
enabled, and they have a common codec (alaw).

At present, during negotiation, RTP tells A to use (alaw) and B to use
(g722|alaw) - chan_sip.c then notes those codec requests, ignores them and
tells A to use (g722|alaw) and B to use (alaw)

Of course this results in A using g722, and B using alaw - Resulting in
silence.

The patch (to be attached) changes:

main/rtp.c to make it choose a single audio and video codec where possible
before passing the directmedia request on to the channels.

channels/chan_sip.c to make it use the passed in codec offering from RTP
as long as it is doing a directmedia reinvite - At any other time, old
behaviour remains, allowing better codec choices where possible.
====================================================================== 

---------------------------------------------------------------------- 
 (0128117) falves11 (reporter) - 2010-10-16 03:51
 https://issues.asterisk.org/view.php?id=17403#c128117 
---------------------------------------------------------------------- 
I need a patch for 1.6.2 urgently. This issue affects the performance of my
network since years ago. Congratulations to the author. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-10-16 03:51 falves11       Note Added: 0128117                          
======================================================================




More information about the asterisk-bugs mailing list