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.
This commit is contained in:
Jan Schmidt 2017-03-22 00:38:51 +11:00
parent a56a01f15f
commit d76bd1913f
2 changed files with 19 additions and 0 deletions

View file

@ -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 */

View file

@ -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