From: Mark Nauwelaerts Date: Wed, 9 Mar 2011 15:51:00 +0000 (+0100) Subject: jitterbuffer: handle position query X-Git-Tag: RELEASE-0.10.29~540 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6bc1aa0e594f9a0fe24020d8b4f2b6436347c92e;p=platform%2Fupstream%2Fgst-plugins-good.git jitterbuffer: handle position query --- 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;