mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 22:46:24 +00:00
matroskademux: perform proper KEY_UNIT seek also in push mode
Conflicts: gst/matroska/matroska-demux.c
This commit is contained in:
parent
d6f4f1e01f
commit
ea0729ff32
1 changed files with 16 additions and 12 deletions
|
@ -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");
|
||||
|
|
Loading…
Reference in a new issue