From 3ba066029cb526b86da3c24720d3386c9cceed4e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 7 Mar 2007 20:23:14 +0000 Subject: [PATCH] a need a drink git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4469 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/mod_sofia.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index f7aca27239..7992c33b38 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -695,6 +695,7 @@ static void set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, c char buf[2048]; switch_time_t now = switch_time_now(); int ptime = 0; + int rate; if (!force && !ip && !sr && switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { return; @@ -757,6 +758,7 @@ static void set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, c snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "\n"); if (tech_pvt->rm_encoding) { + rate = tech_pvt->rm_rate; snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=rtpmap:%d %s/%ld\n", tech_pvt->pt, tech_pvt->rm_encoding, tech_pvt->rm_rate); if (tech_pvt->fmtp_out) { snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=fmtp:%d %s\n", tech_pvt->pt, tech_pvt->fmtp_out); @@ -769,6 +771,9 @@ static void set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, c int i; for (i = 0; i < tech_pvt->num_codecs; i++) { const switch_codec_implementation_t *imp = tech_pvt->codecs[i]; + if (!rate) { + rate = imp->samples_per_second; + } if (ptime && ptime != imp->microseconds_per_frame / 1000) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "ptime %u != advertised ptime %u\n", imp->microseconds_per_frame / 1000, ptime); } @@ -783,7 +788,7 @@ static void set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, c snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=rtpmap:%d telephone-event/8000\na=fmtp:%d 0-16\n", tech_pvt->te, tech_pvt->te); } - snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=rtpmap:%d CN/%d\n", tech_pvt->cng_pt, tech_pvt->read_codec.implementation->samples_per_second); + snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=rtpmap:%d CN/%d\n", tech_pvt->cng_pt, rate); if (ptime) { snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=ptime:%d\n", ptime);