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
This commit is contained in:
Vootele Vesterblom 2015-05-12 11:08:55 +03:00 committed by Tim-Philipp Müller
parent f52343fcf8
commit 6ff1c761e4

View file

@ -428,6 +428,11 @@ gst_asf_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
demux->need_newsegment = TRUE; demux->need_newsegment = TRUE;
demux->segment_seqnum = gst_event_get_seqnum (event); demux->segment_seqnum = gst_event_get_seqnum (event);
gst_asf_demux_reset_stream_state_after_discont (demux); 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_OBJECT_UNLOCK (demux);
gst_event_unref (event); gst_event_unref (event);