From 6e7c724afadd6a4d04d6e68938d314e1be570f9e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 8 Jul 2015 19:59:13 +0300 Subject: [PATCH] rtpjitterbuffer: Calculate DTS from the clock if we had none for the first packet after a reset https://bugzilla.gnome.org/show_bug.cgi?id=749536 --- gst/rtpmanager/gstrtpjitterbuffer.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 9cf90f5..673a5ad 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -2586,6 +2586,28 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, } } else { GST_DEBUG_OBJECT (jitterbuffer, "First buffer #%d", seqnum); + + /* If we have no DTS here, i.e. no capture time, get one from the + * clock now to have something to calculate with in the future. + */ + if (dts == GST_CLOCK_TIME_NONE) { + GstClock *clock = gst_element_get_clock (GST_ELEMENT_CAST (jitterbuffer)); + + if (clock) { + GstClockTime base_time = + gst_element_get_base_time (GST_ELEMENT_CAST (jitterbuffer)); + GstClockTime clock_time = gst_clock_get_time (clock); + + if (clock_time > base_time) + dts = clock_time - base_time; + else + dts = 0; + pts = dts; + + gst_object_unref (clock); + } + } + /* we don't know what the next_in_seqnum should be, wait for the last * possible moment to push this buffer, maybe we get an earlier seqnum * while we wait */ -- 2.7.4