From: Alessandro Decina Date: Thu, 5 Apr 2012 04:18:28 +0000 (+0200) Subject: tsdemux: set correct newsegment fields on _TIME seeks X-Git-Tag: 1.19.3~507^2~15684 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4b292f994d36bc08ae8049d4b3150f141b95452;p=platform%2Fupstream%2Fgstreamer.git 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. --- diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 8f4d78d..96eb75c 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1449,11 +1449,26 @@ calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream) } if (!demux->segment_event) { + gint64 start, stop, time; + 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 = - gst_event_new_new_segment_full (FALSE, 1.0, 1.0, GST_FORMAT_TIME, - firstts, GST_CLOCK_TIME_NONE, firstts); + gst_event_new_new_segment_full (FALSE, demux->segment.rate, + demux->segment.applied_rate, GST_FORMAT_TIME, start, stop, time); GST_EVENT_SRC (demux->segment_event) = gst_object_ref (demux); }