tsdemux: send new segment when a stream is added

This will happen when the PMT changes, replacing streams with
new ones. In that case, we need to accumulate the running time
from the previous chain in the segment base.

https://bugzilla.gnome.org/show_bug.cgi?id=745102
This commit is contained in:
Vincent Penquerc'h 2015-03-24 12:56:53 +00:00
parent fc2460b331
commit ade79a9ad2

View file

@ -1399,6 +1399,7 @@ gst_ts_demux_stream_added (MpegTSBase * base, MpegTSBaseStream * bstream,
stream->active = FALSE;
stream->need_newsegment = TRUE;
demux->reset_segment = TRUE;
stream->needs_keyframe = FALSE;
stream->discont = TRUE;
stream->pts = GST_CLOCK_TIME_NONE;
@ -1957,7 +1958,7 @@ calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream)
demux->segment = base->segment;
} else {
/* Start from the first ts/pts */
GstClockTime base = demux->segment.base;
GstClockTime base = base = demux->segment.position - demux->segment.start;
gst_segment_init (&demux->segment, GST_FORMAT_TIME);
demux->segment.start = firstts;
demux->segment.stop = GST_CLOCK_TIME_NONE;