]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Make sure that the timestamp for DTMF is not the same as the previous voice frame...
authorJoshua Colp <jcolp@digium.com>
Tue, 9 Dec 2008 19:47:07 +0000 (19:47 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 9 Dec 2008 19:47:07 +0000 (19:47 +0000)
(closes issue #13209)
Reported by: ip-rob
Patches:
      13209.diff uploaded by file (license 11)
Tested by: ip-rob, bujones

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@162204 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/rtp.c

index 2cdfeedc1e0a95385bc3e13eecdc120ddbf0406a..c11d4cecf3752f80cbef99f983f89b9b0911dc17 100644 (file)
@@ -2215,6 +2215,7 @@ int ast_rtp_senddigit_begin(struct ast_rtp *rtp, char digit)
 
        rtp->dtmfmute = ast_tvadd(ast_tvnow(), ast_tv(0, 500000));
        rtp->send_duration = 160;
+       rtp->lastdigitts = rtp->lastts + rtp->send_duration;
        
        /* Get a pointer to the header */
        rtpheader = (unsigned int *)data;
@@ -2334,10 +2335,9 @@ int ast_rtp_senddigit_end(struct ast_rtp *rtp, char digit)
                                    ast_inet_ntoa(rtp->them.sin_addr),
                                    ntohs(rtp->them.sin_port), rtp->send_payload, rtp->seqno, rtp->lastdigitts, res - hdrlen);
        }
+       rtp->lastts += rtp->send_duration;
        rtp->sending_digit = 0;
        rtp->send_digit = 0;
-       /* Increment lastdigitts */
-       rtp->lastdigitts += 960;
        rtp->seqno++;
 
        return res;
@@ -2621,6 +2621,10 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec
        int pred;
        int mark = 0;
 
+       if (rtp->sending_digit) {
+               return 0;
+       }
+
        ms = calc_txstamp(rtp, &f->delivery);
        /* Default prediction */
        if (f->frametype == AST_FRAME_VOICE) {