summaryrefslogtreecommitdiff
path: root/gst/matroska
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-04-06 16:03:47 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-04-06 16:12:36 +0200
commite90c67b3a9f44986193a8e8929578919bf38021c (patch)
tree8f126015eef7cad3371975bd85b2e9958fa32140 /gst/matroska
parent628816784f3c83e76d01ce558e655d34c2181ae9 (diff)
matroskademux: cleanly initialize and set needed segment
Fixes #673165.
Diffstat (limited to 'gst/matroska')
-rw-r--r--gst/matroska/matroska-demux.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 6db85c2e6..c22888985 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -3375,7 +3375,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
/* need to refresh segment info ASAP */
if (GST_CLOCK_TIME_IS_VALID (lace_time) && demux->need_newsegment) {
- guint64 clace_time;
+ guint64 clace_time, duration;
GST_DEBUG_OBJECT (demux,
"generating segment starting at %" GST_TIME_FORMAT,
@@ -3387,9 +3387,14 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
GST_TIME_ARGS (lace_time));
}
clace_time = MAX (lace_time, demux->stream_start_time);
+ duration = demux->common.segment.duration;
+ /* we really want to set, don't care much about previous state */
+ gst_segment_init (&demux->common.segment, GST_FORMAT_TIME);
gst_segment_set_newsegment (&demux->common.segment, FALSE,
demux->common.segment.rate, GST_FORMAT_TIME, clace_time,
GST_CLOCK_TIME_NONE, clace_time - demux->stream_start_time);
+ gst_segment_set_duration (&demux->common.segment, GST_FORMAT_TIME,
+ duration);
/* now convey our segment notion downstream */
gst_matroska_demux_send_event (demux, gst_event_new_new_segment (FALSE,
demux->common.segment.rate, demux->common.segment.format,