[gst-plugins-farsight/master] Improve the minimum quanta to make it impossible for the duration to fall down to 0

Olivier Crête olivier.crete at collabora.co.uk
Mon Feb 16 13:12:20 PST 2009


---
 gst/dtmf/gstrtpdtmfdepay.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gst/dtmf/gstrtpdtmfdepay.c b/gst/dtmf/gstrtpdtmfdepay.c
index 8e82865..85dac6f 100644
--- a/gst/dtmf/gstrtpdtmfdepay.c
+++ b/gst/dtmf/gstrtpdtmfdepay.c
@@ -371,8 +371,19 @@ gst_rtp_dtmf_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
 
   /* clip to whole units of unit_time */
   if (rtpdtmfdepay->unit_time)
-    dtmf_payload.duration -= dtmf_payload.duration %
-        ((rtpdtmfdepay->unit_time * depayload->clock_rate) / 1000);
+  {
+    guint unit_time_clock =
+        (rtpdtmfdepay->unit_time * depayload->clock_rate) / 1000;
+    if (dtmf_payload.duration % unit_time_clock)
+    {
+      /* Make sure we don't overflow the duration */
+      if (dtmf_payload.duration < G_MAXUINT16 - unit_time_clock)
+        dtmf_payload.duration += unit_time_clock -
+            (dtmf_payload.duration % unit_time_clock);
+      else
+        dtmf_payload.duration -= dtmf_payload.duration % unit_time_clock;
+    }
+  }
 
   GST_DEBUG_OBJECT (depayload, "Received new RTP DTMF packet : "
       "marker=%d - timestamp=%u - event=%d - duration=%d",
-- 
1.5.6.5




More information about the farsight-commits mailing list