From 6ff1c761e4de7fcbf96d21c0769766cf877f3146 Mon Sep 17 00:00:00 2001 From: Vootele Vesterblom Date: Tue, 12 May 2015 11:08:55 +0300 Subject: [PATCH] asfdemux: fix seeking back after EOS has been reached in push mode Fix seeking when demuxer is in INDEX state. This happens when we reached the end of the stream. It should still be possible to do a flushing seek and seek back to any other position though. Instead the demuxer would just go straight to EOS again instead of going back to processing packets again from the new position. https://bugzilla.gnome.org/show_bug.cgi?id=749066 --- gst/asfdemux/gstasfdemux.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index 27bba9c678..f65bf821b0 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -428,6 +428,11 @@ gst_asf_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) demux->need_newsegment = TRUE; demux->segment_seqnum = gst_event_get_seqnum (event); gst_asf_demux_reset_stream_state_after_discont (demux); + /* if we seek back after reaching EOS, go back to packet reading state */ + if (demux->data_offset > 0 && segment->start >= demux->data_offset + && demux->state == GST_ASF_DEMUX_STATE_INDEX) { + demux->state = GST_ASF_DEMUX_STATE_DATA; + } GST_OBJECT_UNLOCK (demux); gst_event_unref (event);