adaptivedemux: Handle SEEK event only once
authorSeungha Yang <sh.yang@lge.com>
Sun, 1 Jan 2017 05:06:28 +0000 (14:06 +0900)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 2 Feb 2017 10:39:34 +0000 (12:39 +0200)
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

index 1a307c866204a9ec4eccdb7cdc21caf963999508..e5b11a4c2815abfb1e7a599f1d7d325a02f446a9 100644 (file)
@@ -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:{