From d76bd1913fe3b9ae7b6d4973f8e0ac57705ce91b Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Wed, 22 Mar 2017 00:38:51 +1100 Subject: [PATCH] qtdemux: matroskademux: Ignore repeated seek events Similar to what was done in adaptivedemux, ignore seek events we've already handled - such as when they are received on every srcpad of files with lots of streams. --- gst/isomp4/qtdemux.c | 8 ++++++++ gst/matroska/matroska-demux.c | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index ff51d8cabf..8d304bd2bc 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -1736,6 +1736,14 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstObject * parent, #ifndef GST_DISABLE_GST_DEBUG GstClockTime ts = gst_util_get_timestamp (); #endif + guint32 seqnum = gst_event_get_seqnum (event); + + if (seqnum == qtdemux->segment_seqnum) { + GST_LOG_OBJECT (pad, + "Drop duplicated SEEK event seqnum %" G_GUINT32_FORMAT, seqnum); + gst_event_unref (event); + return TRUE; + } if (qtdemux->upstream_format_is_time && qtdemux->fragmented) { /* seek should be handled by upstream, we might need to re-download fragments */ diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 2523367a44..2fe5b3b72f 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -2368,6 +2368,17 @@ gst_matroska_demux_handle_src_event (GstPad * pad, GstObject * parent, gst_event_unref (event); return FALSE; } + + { + guint32 seqnum = gst_event_get_seqnum (event); + if (seqnum == demux->segment_seqnum) { + GST_LOG_OBJECT (pad, + "Drop duplicated SEEK event seqnum %" G_GUINT32_FORMAT, seqnum); + gst_event_unref (event); + return TRUE; + } + } + if (!demux->streaming) res = gst_matroska_demux_handle_seek_event (demux, pad, event); else