summaryrefslogtreecommitdiff
path: root/gst/mxf
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-12-10 12:25:54 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-12-10 12:27:04 +0200
commit39aa2aaa396b60a9f44bb11e8f1152e1a43f633b (patch)
tree882f4981e78df7b5e6fb96cb49ad9fd1389a3054 /gst/mxf
parent1d862db9c1975bfec80ab00c19d4e2f9c2ade735 (diff)
downloadgstreamer-plugins-bad-39aa2aaa396b60a9f44bb11e8f1152e1a43f633b.tar.gz
mxfdemux: Only pre-set the track position if it's for the same body/index SID
Diffstat (limited to 'gst/mxf')
-rw-r--r--gst/mxf/mxfdemux.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index f8d52ed90..84cea6e14 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -1866,10 +1866,12 @@ gst_mxf_demux_handle_generic_container_essence_element (GstMXFDemux * demux,
GST_DEBUG_OBJECT (demux,
"Pushing buffer of size %" G_GSIZE_FORMAT " for track %u: timestamp %"
- GST_TIME_FORMAT " duration %" GST_TIME_FORMAT,
- gst_buffer_get_size (outbuf), pad->material_track->parent.track_id,
+ GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " position %"
+ G_GUINT64_FORMAT, gst_buffer_get_size (outbuf),
+ pad->material_track->parent.track_id,
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
- GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)));
+ GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)),
+ pad->current_essence_track_position);
if (pad->discont) {
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
@@ -2760,7 +2762,8 @@ from_index:
GstMXFDemuxEssenceTrack *t =
&g_array_index (demux->essence_tracks, GstMXFDemuxEssenceTrack, i);
- if (index_start_position != -1)
+ if (index_start_position != -1 && t->body_sid == etrack->body_sid
+ && t->index_sid == etrack->index_sid)
t->position = index_start_position;
else
t->position = (demux->offset == demux->run_in) ? 0 : -1;