matroskademux: perform proper KEY_UNIT seek also in push mode

Conflicts:

	gst/matroska/matroska-demux.c
This commit is contained in:
Mark Nauwelaerts 2012-07-24 16:41:51 +02:00
parent d6f4f1e01f
commit ea0729ff32

View file

@ -2022,18 +2022,8 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux,
goto next;
}
if (demux->streaming) {
GST_OBJECT_LOCK (demux);
/* now update the real segment info */
GST_DEBUG_OBJECT (demux, "Committing new seek segment");
memcpy (&demux->common.segment, &seeksegment, sizeof (GstSegment));
GST_OBJECT_UNLOCK (demux);
/* need to seek to cluster start to pick up cluster time */
/* upstream takes care of flushing and all that
* ... and segment event handling takes care of the rest */
return perform_seek_to_offset (demux, rate,
entry->pos + demux->common.ebml_segment_start);
}
if (demux->streaming)
goto finish;
next:
if (flush) {
@ -2075,6 +2065,7 @@ next:
}
}
finish:
if (keyunit) {
GST_DEBUG_OBJECT (demux, "seek to key unit, adjusting segment start from %"
GST_TIME_FORMAT " to %" GST_TIME_FORMAT,
@ -2084,6 +2075,19 @@ next:
seeksegment.time = seeksegment.start - demux->stream_start_time;
}
if (demux->streaming) {
GST_OBJECT_LOCK (demux);
/* now update the real segment info */
GST_DEBUG_OBJECT (demux, "Committing new seek segment");
memcpy (&demux->common.segment, &seeksegment, sizeof (GstSegment));
GST_OBJECT_UNLOCK (demux);
/* need to seek to cluster start to pick up cluster time */
/* upstream takes care of flushing and all that
* ... and newsegment event handling takes care of the rest */
return perform_seek_to_offset (demux, rate,
entry->pos + demux->common.ebml_segment_start);
}
exit:
if (flush) {
GST_DEBUG_OBJECT (demux, "Stopping flush");