diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-08 18:28:53 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-08 18:28:53 +0000 |
commit | ef0433218d2ae2a6c6629ff7c52f00554d141059 (patch) | |
tree | 1a32dc5e6115898552b0b42ea38daf8c63b43a3e /channels | |
parent | 0493983b131159b5156d6ae163941d1d1cb8fdfe (diff) |
Merged revisions 47333 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r47333 | kpfleming | 2006-11-08 12:07:16 -0600 (Wed, 08 Nov 2006) | 2 lines
add simple fix for SDP to report proper sample rate for G.722 media sessions
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47337 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 37a1e1b8b..cc6fb01f5 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -6108,6 +6108,8 @@ static void get_our_media_address(struct sip_pvt *p, int needvideo, struct socka } +#define SDP_SAMPLE_RATE(x) (x == AST_FORMAT_G722) ? 16000 : 8000 + /*! \brief Add Session Description Protocol message */ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p) { @@ -6232,31 +6234,33 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p) Note that p->prefcodec can include video codecs, so mask them out */ if (capability & p->prefcodec) { - add_codec_to_sdp(p, p->prefcodec & AST_FORMAT_AUDIO_MASK, 8000, + int codec = p->prefcodec & AST_FORMAT_AUDIO_MASK; + + add_codec_to_sdp(p, codec, SDP_SAMPLE_RATE(codec), &m_audio_next, &m_audio_left, &a_audio_next, &a_audio_left, debug, &min_audio_packet_size); - alreadysent |= p->prefcodec & AST_FORMAT_AUDIO_MASK; + alreadysent |= codec; } /* Start by sending our preferred audio codecs */ for (x = 0; x < 32; x++) { - int pref_codec; + int codec; - if (!(pref_codec = ast_codec_pref_index(&p->prefs, x))) + if (!(codec = ast_codec_pref_index(&p->prefs, x))) break; - if (!(capability & pref_codec)) + if (!(capability & codec)) continue; - if (alreadysent & pref_codec) + if (alreadysent & codec) continue; - add_codec_to_sdp(p, pref_codec, 8000, + add_codec_to_sdp(p, codec, SDP_SAMPLE_RATE(codec), &m_audio_next, &m_audio_left, &a_audio_next, &a_audio_left, debug, &min_audio_packet_size); - alreadysent |= pref_codec; + alreadysent |= codec; } /* Now send any other common audio and video codecs, and non-codec formats: */ @@ -6268,7 +6272,7 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p) continue; if (x <= AST_FORMAT_MAX_AUDIO) - add_codec_to_sdp(p, x, 8000, + add_codec_to_sdp(p, x, SDP_SAMPLE_RATE(x), &m_audio_next, &m_audio_left, &a_audio_next, &a_audio_left, debug, &min_audio_packet_size); |