[Freeswitch-dev] Sofia and "ep_codec_string"

Giovanni Visciano giovanni_visciano at yahoo.it
Fri Oct 21 09:34:49 MSD 2011


Preconditions on sip profile
----------------------------
inbound-codec-prefs NOT set
outbound-codec-prefs NOT set
inbound-proxy-media=TRUE
inbound-bypass-media=FALSE
inbound-late-negotiation=TRUE + inherit_codec=TRUE
 
TEST scenario
-------------
SIP phone send INVITE with SDP to FS
 
INVITE
SDP[codelist=PCMA, PCMU, G722, G729] --> FS
 
FS has just the CORE_PC_MODULE [PCMA, PCMU, PASS-THR,
VIDEO-PASS-THR, L16]
 
The "ep_codec_string" channel variable is
loaded with [PCMA, PCMU]
 
EXPECTED
--------
In "proxy-media + late-negotiation" scenario:
ep_codec_string=[PCMA,PCMU,G722,G729]
 
PROBLEM
-------
According to the documentation (http://wiki.freeswitch.org/wiki/Codec_negotiation):
 
"ep_codec_string: This variable is only available if
late negotiation is enabled on the profile. It's a readable string containing
all the codecs proposed by the calling endpoint."
and
"inherit_codec=true (only applicable when
late-negotiation is enabled) will take the codec negotiated when the B leg
answers and pass it to the A leg so it also uses the same codec (if the A leg
supports it); otherwise, it will use whatever it can from its own list"
 
The variable ep_codec_string doesn't contain ALL the
codecs proposed by the calling endpoint. It contains the intersection between
the codecs proposed by the calling and the codecs loaded in FS.
In proxy-media / no-media configuration the called
endpoint doesn't have the calling codec list so he can't negotiate using all
the capabilities available.
(I'm working on a test endpoint module that should work
in proxy and no-media configuration ... mod_sofia vs mod_sofia works because they
look at the remote sdp variable)
 
Source reference -
sofia_glue.c->sofia_glue_set_r_sdp_codec_string()
 
 
Regards,
Giovanni




Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-dev mailing list