diff options
author | Joshua Colp <jcolp@digium.com> | 2007-02-03 21:06:36 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2007-02-03 21:06:36 +0000 |
commit | 014feba426f73be5309adbddac68513dd0676c2e (patch) | |
tree | dd897545f73a592b070ac2406887926e85ec7810 | |
parent | ce321f87e9da1374dc86b9a360df0bdf3460f4fb (diff) |
Merged revisions 53138 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r53138 | file | 2007-02-03 15:05:02 -0600 (Sat, 03 Feb 2007) | 2 lines
Make SIPDtmfMode application work with recent capability changes, and also fix an RTP stack issue when the auto option was used. (issue #8972 reported by mdu113)
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@53139 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | channels/chan_sip.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index d0d3dd0d2..2360f7a2a 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -5263,6 +5263,9 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req) if (newnoncodeccapability & AST_RTP_DTMF) { /* XXX Would it be reasonable to drop the DSP at this point? XXX */ ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833); + /* Since RFC2833 is now negotiated we need to change some properties of the RTP stream */ + ast_rtp_setdtmf(p->rtp, 1); + ast_rtp_setdtmfcompensate(p->rtp, ast_test_flag(&p->flags[1], SIP_PAGE2_RFC2833_COMPENSATE)); } else { ast_set_flag(&p->flags[0], SIP_DTMF_INBAND); } @@ -17120,14 +17123,19 @@ static int sip_dtmfmode(struct ast_channel *chan, void *data) if (!strcasecmp(mode,"info")) { ast_clear_flag(&p->flags[0], SIP_DTMF); ast_set_flag(&p->flags[0], SIP_DTMF_INFO); + p->jointnoncodeccapability &= ~AST_RTP_DTMF; } else if (!strcasecmp(mode,"rfc2833")) { ast_clear_flag(&p->flags[0], SIP_DTMF); ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833); + p->jointnoncodeccapability |= AST_RTP_DTMF; } else if (!strcasecmp(mode,"inband")) { ast_clear_flag(&p->flags[0], SIP_DTMF); ast_set_flag(&p->flags[0], SIP_DTMF_INBAND); + p->jointnoncodeccapability &= ~AST_RTP_DTMF; } else ast_log(LOG_WARNING, "I don't know about this dtmf mode: %s\n",mode); + if (p->rtp) + ast_rtp_setdtmf(p->rtp, ast_test_flag(&p->flags[0], SIP_DTMF) == SIP_DTMF_RFC2833); if (ast_test_flag(&p->flags[0], SIP_DTMF) == SIP_DTMF_INBAND) { if (!p->vad) { p->vad = ast_dsp_new(); |