From 780c57d6bbc1d89a44ee34b612a58ddad18ff60e Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 1 Jan 2017 14:06:28 +0900 Subject: [PATCH] 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 --- gst-libs/gst/adaptivedemux/gstadaptivedemux.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c index 8cb800374e..ae61a5fea4 100644 --- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c +++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c @@ -1571,6 +1571,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:{