Skip to content
Snippets Groups Projects
Commit 014feba4 authored by Joshua Colp's avatar Joshua Colp
Browse files

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
parent ce321f87
Branches
Tags
No related merge requests found
...@@ -5263,6 +5263,9 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req) ...@@ -5263,6 +5263,9 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
if (newnoncodeccapability & AST_RTP_DTMF) { if (newnoncodeccapability & AST_RTP_DTMF) {
/* XXX Would it be reasonable to drop the DSP at this point? XXX */ /* XXX Would it be reasonable to drop the DSP at this point? XXX */
ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833); 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 { } else {
ast_set_flag(&p->flags[0], SIP_DTMF_INBAND); ast_set_flag(&p->flags[0], SIP_DTMF_INBAND);
} }
...@@ -17120,14 +17123,19 @@ static int sip_dtmfmode(struct ast_channel *chan, void *data) ...@@ -17120,14 +17123,19 @@ static int sip_dtmfmode(struct ast_channel *chan, void *data)
if (!strcasecmp(mode,"info")) { if (!strcasecmp(mode,"info")) {
ast_clear_flag(&p->flags[0], SIP_DTMF); ast_clear_flag(&p->flags[0], SIP_DTMF);
ast_set_flag(&p->flags[0], SIP_DTMF_INFO); ast_set_flag(&p->flags[0], SIP_DTMF_INFO);
p->jointnoncodeccapability &= ~AST_RTP_DTMF;
} else if (!strcasecmp(mode,"rfc2833")) { } else if (!strcasecmp(mode,"rfc2833")) {
ast_clear_flag(&p->flags[0], SIP_DTMF); ast_clear_flag(&p->flags[0], SIP_DTMF);
ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833); ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833);
p->jointnoncodeccapability |= AST_RTP_DTMF;
} else if (!strcasecmp(mode,"inband")) { } else if (!strcasecmp(mode,"inband")) {
ast_clear_flag(&p->flags[0], SIP_DTMF); ast_clear_flag(&p->flags[0], SIP_DTMF);
ast_set_flag(&p->flags[0], SIP_DTMF_INBAND); ast_set_flag(&p->flags[0], SIP_DTMF_INBAND);
p->jointnoncodeccapability &= ~AST_RTP_DTMF;
} else } else
ast_log(LOG_WARNING, "I don't know about this dtmf mode: %s\n",mode); 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 (ast_test_flag(&p->flags[0], SIP_DTMF) == SIP_DTMF_INBAND) {
if (!p->vad) { if (!p->vad) {
p->vad = ast_dsp_new(); p->vad = ast_dsp_new();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment