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