gst-plugins-bad: rtpdtmfsrc: Make sure rtpdtmfsrc timestamps don't overlap

Olivier Crête tester at kemper.freedesktop.org
Thu Aug 25 09:59:59 PDT 2011


Module: gst-plugins-bad
Branch: master
Commit: 7c55ff3023c576c79e88dc2995fc011c927744d6
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=7c55ff3023c576c79e88dc2995fc011c927744d6

Author: Olivier Crête <olivier.crete at collabora.com>
Date:   Mon Jul 11 20:47:23 2011 -0400

rtpdtmfsrc: Make sure rtpdtmfsrc timestamps don't overlap

---

 gst/dtmf/gstrtpdtmfsrc.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gst/dtmf/gstrtpdtmfsrc.c b/gst/dtmf/gstrtpdtmfsrc.c
index 19acc6c..90e63fc 100644
--- a/gst/dtmf/gstrtpdtmfsrc.c
+++ b/gst/dtmf/gstrtpdtmfsrc.c
@@ -506,7 +506,6 @@ gst_rtp_dtmf_prepare_timestamps (GstRTPDTMFSrc * dtmfsrc)
   GST_OBJECT_UNLOCK (dtmfsrc);
 
   if (GST_CLOCK_TIME_IS_VALID (last_stop)) {
-    dtmfsrc->timestamp = last_stop;
     dtmfsrc->start_timestamp = last_stop;
   } else {
     GstClock *clock = gst_element_get_clock (GST_ELEMENT (dtmfsrc));
@@ -516,10 +515,15 @@ gst_rtp_dtmf_prepare_timestamps (GstRTPDTMFSrc * dtmfsrc)
 
     dtmfsrc->start_timestamp = gst_clock_get_time (clock)
         - gst_element_get_base_time (GST_ELEMENT (dtmfsrc));
-    dtmfsrc->start_timestamp = dtmfsrc->timestamp;
     gst_object_unref (clock);
   }
 
+  /* If the last stop was in the past, then lets add the buffers together */
+  if (dtmfsrc->start_timestamp < dtmfsrc->timestamp)
+    dtmfsrc->start_timestamp = dtmfsrc->timestamp;
+
+  dtmfsrc->timestamp = dtmfsrc->start_timestamp;
+
   dtmfsrc->rtp_timestamp = dtmfsrc->ts_base +
       gst_util_uint64_scale_int (gst_segment_to_running_time (&GST_BASE_SRC
           (dtmfsrc)->segment, GST_FORMAT_TIME, dtmfsrc->timestamp),
@@ -976,6 +980,7 @@ gst_rtp_dtmf_src_ready_to_paused (GstRTPDTMFSrc * dtmfsrc)
   else
     dtmfsrc->ts_base = dtmfsrc->ts_offset;
 
+  dtmfsrc->timestamp = 0;
 }
 
 static GstStateChangeReturn



More information about the gstreamer-commits mailing list