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