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, ...@@ -2022,18 +2022,8 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux,
goto next; goto next;
} }
if (demux->streaming) { if (demux->streaming)
GST_OBJECT_LOCK (demux); goto finish;
/* 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);
}
next: next:
if (flush) { if (flush) {
...@@ -2075,6 +2065,7 @@ next: ...@@ -2075,6 +2065,7 @@ next:
} }
} }
finish:
if (keyunit) { if (keyunit) {
GST_DEBUG_OBJECT (demux, "seek to key unit, adjusting segment start from %" GST_DEBUG_OBJECT (demux, "seek to key unit, adjusting segment start from %"
GST_TIME_FORMAT " to %" GST_TIME_FORMAT, GST_TIME_FORMAT " to %" GST_TIME_FORMAT,
...@@ -2084,6 +2075,19 @@ next: ...@@ -2084,6 +2075,19 @@ next:
seeksegment.time = seeksegment.start - demux->stream_start_time; 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: exit:
if (flush) { if (flush) {
GST_DEBUG_OBJECT (demux, "Stopping 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