From: Sebastian Dröge Date: Fri, 6 Feb 2009 09:46:47 +0000 (+0100) Subject: mxfdemux: Handle some more special cases when setting the position when seeking X-Git-Tag: 1.19.3~507^2~19581 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0d8099685dc263f015636062d8a2206305a2708d;p=platform%2Fupstream%2Fgstreamer.git mxfdemux: Handle some more special cases when setting the position when seeking --- diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index 16eb8a0..0bffbe2 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -2842,6 +2842,7 @@ gst_mxf_demux_pad_set_last_stop (GstMXFDemux * demux, GstMXFDemuxPad * p, if (p->current_essence_track_position >= p->current_essence_track->duration && p->current_essence_track->duration > 0) { p->eos = TRUE; + p->current_essence_track_position = p->current_essence_track->duration; p->last_stop = gst_util_uint64_scale (p->current_essence_track->duration, p->material_track->edit_rate.d * GST_SECOND, @@ -2876,6 +2877,8 @@ gst_mxf_demux_pad_set_last_stop (GstMXFDemux * demux, GstMXFDemuxPad * p, p->eos = TRUE; p->last_stop = sum; p->last_stop_accumulated_error = 0.0; + p->current_essence_track_position = + p->material_track->parent.sequence->duration; return; } @@ -2896,6 +2899,16 @@ gst_mxf_demux_pad_set_last_stop (GstMXFDemux * demux, GstMXFDemuxPad * p, p->current_essence_track_position = gst_util_uint64_scale (start, p->material_track->edit_rate.n, p->material_track->edit_rate.d * GST_SECOND); + + if (p->current_essence_track_position >= p->current_essence_track->duration + && p->current_essence_track->duration > 0) { + p->eos = TRUE; + p->current_essence_track_position = p->current_component->parent.duration; + p->last_stop = + sum + gst_util_uint64_scale (p->current_component->parent.duration, + p->material_track->edit_rate.d * GST_SECOND, + p->material_track->edit_rate.n); + } } static gboolean