[Freeswitch-svn] [commit] r12699 - freeswitch/trunk/src/mod/endpoints/mod_sofia

FreeSWITCH SVN anthm at freeswitch.org
Fri Mar 20 19:30:05 PDT 2009


Author: anthm
Date: Fri Mar 20 21:30:05 2009
New Revision: 12699

Log:
MODENDP-205

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Fri Mar 20 21:30:05 2009
@@ -396,7 +396,8 @@
 
 void sofia_glue_tech_prepare_codecs(private_object_t *tech_pvt)
 {
-	const char *abs, *codec_string = NULL;
+	const char *abs, *codec_string, *uuid;
+	switch_core_session_t *b_session = NULL;
 	const char *ocodec = NULL;
 
 	if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) || switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MEDIA)) {
@@ -409,7 +410,17 @@
 
 	switch_assert(tech_pvt->session != NULL);
 
-	if ((abs = switch_channel_get_variable(tech_pvt->channel, "absolute_codec_string"))) {
+	if ((abs = switch_channel_get_variable(tech_pvt->channel, "inherit_codec")) && (switch_true(abs)) && (uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE)) != NULL && (b_session = switch_core_session_locate(uuid)) != NULL) {
+		switch_codec_implementation_t impl = {0};
+		switch_core_session_get_read_impl(b_session, &impl);
+		if (impl.iananame == NULL || !(abs = switch_core_session_sprintf(tech_pvt->session, "%s@%uh", impl.iananame, impl.actual_samples_per_second))) {
+			abs = NULL;
+		}
+	} else {
+		abs = NULL;
+	}
+
+	if (abs || (abs = switch_channel_get_variable(tech_pvt->channel, "absolute_codec_string"))) {
 		codec_string = abs;
 	} else {
 		if (!(codec_string = switch_channel_get_variable(tech_pvt->channel, "codec_string"))) {



More information about the Freeswitch-svn mailing list