From 56d67eadf66c1b22652ff1f77002a8d024a93fca Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 1 Aug 2011 10:22:55 -0500 Subject: [PATCH] sdp_m_per_ptime is now implied to be true, if you don't like this set it to false but its going to be undefined behaviour. This basically means if you call in with ptime 30 then you have a bunch of ptime 20 codecs in your outbound list that there will be one m= line with 30 and the original inbound codec and more m= lines for each discinct ptime in your list. This is, of course, will depend on disable_trancoding or absolute_codec_string as well --- src/mod/endpoints/mod_sofia/sofia_glue.c | 14 +++++++++++--- src/switch_core_session.c | 5 ++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 1c3999c110..590723b8bd 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -208,6 +208,7 @@ static void generate_m(private_object_t *tech_pvt, char *buf, size_t buflen, if (!noptime) { if (!cur_ptime) { +#if 0 if (ptime) { if (ptime != imp->microseconds_per_packet / 1000) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, @@ -225,6 +226,11 @@ static void generate_m(private_object_t *tech_pvt, char *buf, size_t buflen, } else { ptime = imp->microseconds_per_packet / 1000; } +#else + if (!ptime) { + ptime = imp->microseconds_per_packet / 1000; + } +#endif } else { if ((imp->microseconds_per_packet / 1000) != cur_ptime) { continue; @@ -544,7 +550,7 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch } else if (tech_pvt->num_codecs) { int i; int cur_ptime = 0, this_ptime = 0, cng_type = 0; - + const char *mult; if (!sofia_test_pflag(tech_pvt->profile, PFLAG_SUPPRESS_CNG) && tech_pvt->cng_pt && use_cng) { cng_type = tech_pvt->cng_pt; @@ -553,8 +559,10 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch tech_pvt->cng_pt = 0; } } - - if (!switch_true(switch_channel_get_variable(tech_pvt->channel, "sdp_m_per_ptime"))) { + + mult = switch_channel_get_variable(tech_pvt->channel, "sdp_m_per_ptime"); + + if (mult && switch_false(mult)) { char *bp = buf; if ((!zstr(tech_pvt->local_crypto_key) && sofia_test_flag(tech_pvt, TFLAG_SECURE))) { diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 038dda1b83..168bec3695 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -503,7 +503,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ if (channel) { const char *val; switch_codec_t *vid_read_codec = NULL, *read_codec = switch_core_session_get_read_codec(session); - const char *max_forwards = switch_core_session_sprintf(session, "%d", forwardval); + const char *ep, *max_forwards = switch_core_session_sprintf(session, "%d", forwardval); switch_channel_set_variable(peer_channel, SWITCH_MAX_FORWARDS_VARIABLE, max_forwards); @@ -523,6 +523,9 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ switch_snprintf(tmp, sizeof(tmp), "%s%s", rc, vrc); switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_CODEC_VARIABLE, tmp); + } else if ((ep = switch_channel_get_variable(channel, "ep_codec_string"))) { + printf("SET [%s] [%s]\n", switch_channel_get_name(peer_channel), ep); + switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_CODEC_VARIABLE, ep); } switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_VARIABLE, switch_core_session_get_uuid(session));