[Freeswitch-trunk] [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-trunk
mailing list