Commit ea0729ff authored by Mark Nauwelaerts's avatar Mark Nauwelaerts

matroskademux: perform proper KEY_UNIT seek also in push mode

Conflicts:

	gst/matroska/matroska-demux.c
parent d6f4f1e0
......@@ -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");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment