summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-02-06 10:46:47 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-02-06 10:46:47 +0100
commit0d8099685dc263f015636062d8a2206305a2708d (patch)
treea930afa1419f7b0bf0d1d1e0d26d6ae57e93ed97 /gst
parentbb11522f1d9d8eb0ba9bf22056e1a51b502c351e (diff)
downloadgst-plugins-bad-0d8099685dc263f015636062d8a2206305a2708d.tar.gz
gst-plugins-bad-0d8099685dc263f015636062d8a2206305a2708d.tar.bz2
gst-plugins-bad-0d8099685dc263f015636062d8a2206305a2708d.zip
mxfdemux: Handle some more special cases when setting the position when seeking
Diffstat (limited to 'gst')
-rw-r--r--gst/mxf/mxfdemux.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 16eb8a02..0bffbe27 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