]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FSCORE-510
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 11 Dec 2009 05:14:45 +0000 (05:14 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 11 Dec 2009 05:14:45 +0000 (05:14 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15904 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_rtp.c

index eec2baec8bafeeefd21f39bcbbe587c8ee2976d6..6f950f28f21b7d08eb8121de91edf6c2d8b9394f 100644 (file)
@@ -215,6 +215,7 @@ struct switch_rtp {
        switch_rtp_stats_t stats;
        uint32_t hot_hits;
        uint32_t sync_packets;
+       uint32_t dtmf_wait;
 
 #ifdef ENABLE_ZRTP
        zrtp_session_t *zrtp_session;
@@ -1604,6 +1605,7 @@ static void do_2833(switch_rtp_t *rtp_session)
                                rtp_session->next_write_samplecount = rtp_session->timer.samplecount + samples * 5;
                        }
                        rtp_session->dtmf_data.out_digit_dur = 0;
+                       rtp_session->dtmf_wait = rtp_session->samples_per_interval ? ((rtp_session->samples_per_second / 4) / rtp_session->samples_per_interval) : 12;
                }
        }
 
@@ -1616,7 +1618,11 @@ static void do_2833(switch_rtp_t *rtp_session)
                        }
                }
 
-               if (switch_queue_trypop(rtp_session->dtmf_data.dtmf_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+               if (rtp_session->dtmf_wait) {
+                       rtp_session->dtmf_wait--;
+               }
+
+               if (!rtp_session->dtmf_wait && switch_queue_trypop(rtp_session->dtmf_data.dtmf_queue, &pop) == SWITCH_STATUS_SUCCESS) {
                        switch_dtmf_t *rdigit = pop;
                        int64_t offset;
                        switch_size_t wrote;