mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
tsdemux: set correct newsegment fields on _TIME seeks
Forward the seek rate and set NS.start to the seek target so that decoders can apply clipping where necessary.
This commit is contained in:
parent
d36fe4593d
commit
f4b292f994
1 changed files with 18 additions and 3 deletions
|
@ -1449,11 +1449,26 @@ calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!demux->segment_event) {
|
if (!demux->segment_event) {
|
||||||
|
gint64 start, stop, time;
|
||||||
|
|
||||||
GST_DEBUG ("Calculating actual segment");
|
GST_DEBUG ("Calculating actual segment");
|
||||||
/* FIXME : Set proper values */
|
|
||||||
|
if (demux->segment.format == GST_FORMAT_TIME) {
|
||||||
|
/* if we have a TIME segment, set NS.start to the target ts so downstream
|
||||||
|
* can clip
|
||||||
|
*/
|
||||||
|
start = demux->segment.start;
|
||||||
|
stop = demux->segment.stop;
|
||||||
|
time = demux->segment.time;
|
||||||
|
} else {
|
||||||
|
/* ...else start from the first ts/pts */
|
||||||
|
start = firstts;
|
||||||
|
stop = GST_CLOCK_TIME_NONE;
|
||||||
|
time = firstts;
|
||||||
|
}
|
||||||
demux->segment_event =
|
demux->segment_event =
|
||||||
gst_event_new_new_segment_full (FALSE, 1.0, 1.0, GST_FORMAT_TIME,
|
gst_event_new_new_segment_full (FALSE, demux->segment.rate,
|
||||||
firstts, GST_CLOCK_TIME_NONE, firstts);
|
demux->segment.applied_rate, GST_FORMAT_TIME, start, stop, time);
|
||||||
GST_EVENT_SRC (demux->segment_event) = gst_object_ref (demux);
|
GST_EVENT_SRC (demux->segment_event) = gst_object_ref (demux);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue