]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
implement fmtp 16 in rtp (bug #2999)
authorRussell Bryant <russell@russellbryant.com>
Fri, 10 Dec 2004 11:32:12 +0000 (11:32 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 10 Dec 2004 11:32:12 +0000 (11:32 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@4415 65c4cc65-6c06-0410-ace0-fbb531ad65f3

rtp.c

diff --git a/rtp.c b/rtp.c
index 3c6a5ea82910c3c8b25b1b7361625ed90148fa7f..3d60c3abb49125b5123f604c099799a5b97f6e3d 100755 (executable)
--- a/rtp.c
+++ b/rtp.c
@@ -188,8 +188,13 @@ static struct ast_frame *send_dtmf(struct ast_rtp *rtp)
                return &null_frame;
        }
        ast_log(LOG_DEBUG, "Sending dtmf: %d (%c), at %s\n", rtp->resp, rtp->resp, ast_inet_ntoa(iabuf, sizeof(iabuf), rtp->them.sin_addr));
-       rtp->f.frametype = AST_FRAME_DTMF;
-       rtp->f.subclass = rtp->resp;
+       if (rtp->resp == 'X') {
+               rtp->f.frametype = AST_FRAME_CONTROL;
+               rtp->f.subclass = AST_CONTROL_FLASH;
+       } else {
+               rtp->f.frametype = AST_FRAME_DTMF;
+               rtp->f.subclass = rtp->resp;
+       }
        rtp->f.datalen = 0;
        rtp->f.samples = 0;
        rtp->f.mallocd = 0;
@@ -218,6 +223,8 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
                resp = '#';
        } else if (event < 16) {
                resp = 'A' + (event - 12);
+       } else if (event < 17) {
+               resp = 'X';
        }
        if (rtp->resp && (rtp->resp != resp)) {
                f = send_dtmf(rtp);
@@ -252,6 +259,8 @@ static struct ast_frame *process_rfc2833(struct ast_rtp *rtp, unsigned char *dat
                resp = '#';
        } else if (event < 16) {
                resp = 'A' + (event - 12);
+       } else if (event < 17) {
+               resp = 'X';
        }
        if (rtp->resp && (rtp->resp != resp)) {
                f = send_dtmf(rtp);