Small Cisco's RTP DTMF update
authorPaul Cadach <paul@odt.east.telecom.kz>
Sun, 24 Sep 2006 12:15:49 +0000 (12:15 +0000)
committerPaul Cadach <paul@odt.east.telecom.kz>
Sun, 24 Sep 2006 12:15:49 +0000 (12:15 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43546 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/rtp.c

index 3ea8d31..1e79ea4 100644 (file)
@@ -605,8 +605,7 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
        char resp = 0;
        struct ast_frame *f = NULL;
        unsigned char seq;
-       unsigned int datalen;
-       unsigned int flag;
+       unsigned int flags;
        unsigned int power;
 
        /* We should have at least 4 bytes in RTP data */
@@ -616,14 +615,9 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
        /*      The format of Cisco RTP DTMF packet looks like next:
                +0                              - sequence number of DTMF RTP packet (begins from 1,
                                                  wrapped to 0)
-               +1 (bits 7-0)   - count of bytes carrying DTMF information (if DTMF
-                                                 information repeates 3 times, i.e. packet have 6
-                                                 bytes of DTMF information, this value equal to 6).
-                                                 Last bit should always be zero (because DTMF info
-                                                 is multiple of 2 bytes) but really uses as described
-                                                 below.
+               +1                              - set of flags
                +1 (bit 0)              - flaps by different DTMF digits delimited by audio
-                                                 or repeated digit without audio
+                                                 or repeated digit without audio???
                +2 (+4,+6,...)  - power level? (rises from 0 to 32 at begin of tone
                                                  then falls to 0 at its end)
                +3 (+5,+7,...)  - detected DTMF digit (0..9,*,#,A-D,...)
@@ -649,13 +643,12 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
        */
 
        seq = data[0];
-       datalen = data[1] & ~1;
-       flag = data[1] & 1;
+       flags = data[1];
        power = data[2];
        event = data[3] & 0x1f;
 
        if (option_debug > 2 || rtpdebug)
-               ast_log(LOG_DEBUG, "Cisco DTMF Digit: %02x (len=%d, seq=%d, repeat=%d, power=%d, history count=%d)\n", event, len, seq, flag, power, datalen / 2 - 1);
+               ast_log(LOG_DEBUG, "Cisco DTMF Digit: %02x (len=%d, seq=%d, flags=%02x, power=%d, history count=%d)\n", event, len, seq, flags, power, (len - 4) / 2);
        if (event < 10) {
                resp = '0' + event;
        } else if (event < 11) {