summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungha Yang <sh.yang@lge.com>2017-01-01 14:06:28 +0900
committerSebastian Dröge <sebastian@centricular.com>2017-02-02 12:39:34 +0200
commitdab74c926b154e2b72955a8861bb916a2b50ac2f (patch)
treebcefeb0fa5d5429806125e05c28bf36ca2487cc3
parent7bc2ab5472ccc608c81bca7b184e834fd10f7dfb (diff)
downloadgstreamer-plugins-bad-dab74c926b154e2b72955a8861bb916a2b50ac2f.tar.gz
adaptivedemux: Handle SEEK event only once
send_event() of parent class (i.e., GstBinClass) iterates srcpads to send SEEK event. And performing it per srcpad is inefficient. So, let's drop duplicated SEEK event by checking seqnum https://bugzilla.gnome.org/show_bug.cgi?id=776612
-rw-r--r--gst-libs/gst/adaptivedemux/gstadaptivedemux.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index 1a307c866..e5b11a4c2 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -1550,6 +1550,13 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
switch (event->type) {
case GST_EVENT_SEEK:
{
+ guint32 seqnum = gst_event_get_seqnum (event);
+ if (seqnum == demux->priv->segment_seqnum) {
+ GST_LOG_OBJECT (pad,
+ "Drop duplicated SEEK event seqnum %" G_GUINT32_FORMAT, seqnum);
+ gst_event_unref (event);
+ return TRUE;
+ }
return gst_adaptive_demux_handle_seek_event (demux, pad, event);
}
case GST_EVENT_RECONFIGURE:{