From 0d8099685dc263f015636062d8a2206305a2708d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 6 Feb 2009 10:46:47 +0100 Subject: [PATCH] mxfdemux: Handle some more special cases when setting the position when seeking --- gst/mxf/mxfdemux.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 -- 2.7.4