Sorry for the double posting. I sent this question also from my office email giovanni.visciano@italtel.it. Please ignore this one. Thanks. Giovanni -----Original Message----- From: freeswitch-dev-bounces@lists.freeswitch.org [mailto:freeswitch-dev-bounces@lists.freeswitch.org] On Behalf Of Giovanni Visciano Sent: Friday, October 21, 2011 7:35 AM To: freeswitch-dev@lists.freeswitch.org Subject: [Freeswitch-dev] Sofia and "ep_codec_string" 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