Revision
15904
Author
anthm
Date
2009-12-10 23:14:45 -0600 (Thu, 10 Dec 2009)

Log Message

FSCORE-510

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_rtp.c (15903 => 15904)


--- freeswitch/trunk/src/switch_rtp.c	2009-12-11 05:14:23 UTC (rev 15903)
+++ freeswitch/trunk/src/switch_rtp.c	2009-12-11 05:14:45 UTC (rev 15904)
@@ -215,6 +215,7 @@
 	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 @@
 				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 @@
 			}
 		}
 
-		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;