From 853337f1cc65aa8cfa9b1f9fb89de4175c2b64fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Thu, 4 Dec 2008 21:11:17 -0500 Subject: [PATCH] [MOVED FROM GST-P-FARSIGHT] Improve the minimum quanta to make it impossible for the duration to fall down to 0 --- gst/dtmf/gstrtpdtmfdepay.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gst/dtmf/gstrtpdtmfdepay.c b/gst/dtmf/gstrtpdtmfdepay.c index 8e82865a79..85dac6fef9 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",