gst-plugins-good: jitterbuffer: handle position query
Mark Nauwelaerts
mnauw at kemper.freedesktop.org
Wed Mar 9 08:21:23 PST 2011
Module: gst-plugins-good
Branch: master
Commit: 6bc1aa0e594f9a0fe24020d8b4f2b6436347c92e
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=6bc1aa0e594f9a0fe24020d8b4f2b6436347c92e
Author: Mark Nauwelaerts <mark.nauwelaerts at collabora.co.uk>
Date: Wed Mar 9 16:51:00 2011 +0100
jitterbuffer: handle position query
---
gst/rtpmanager/gstrtpjitterbuffer.c | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
index 9f08203..1d253eb 100644
--- a/gst/rtpmanager/gstrtpjitterbuffer.c
+++ b/gst/rtpmanager/gstrtpjitterbuffer.c
@@ -2129,6 +2129,35 @@ gst_rtp_jitter_buffer_query (GstPad * pad, GstQuery * query)
}
break;
}
+ case GST_QUERY_POSITION:
+ {
+ GstClockTime start, last_out;
+ GstFormat fmt;
+
+ gst_query_parse_position (query, &fmt, NULL);
+ if (fmt != GST_FORMAT_TIME) {
+ res = gst_pad_query_default (pad, query);
+ break;
+ }
+
+ JBUF_LOCK (priv);
+ start = priv->npt_start;
+ last_out = priv->last_out_time;
+ JBUF_UNLOCK (priv);
+
+ GST_DEBUG_OBJECT (jitterbuffer, "npt start %" GST_TIME_FORMAT
+ ", last out %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
+ GST_TIME_ARGS (last_out));
+
+ if (GST_CLOCK_TIME_IS_VALID (start) && GST_CLOCK_TIME_IS_VALID (last_out)) {
+ /* bring 0-based outgoing time to stream time */
+ gst_query_set_position (query, GST_FORMAT_TIME, start + last_out);
+ res = TRUE;
+ } else {
+ res = gst_pad_query_default (pad, query);
+ }
+ break;
+ }
default:
res = gst_pad_query_default (pad, query);
break;
More information about the gstreamer-commits
mailing list