From 39aa2aaa396b60a9f44bb11e8f1152e1a43f633b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 10 Dec 2015 12:25:54 +0200 Subject: [PATCH] mxfdemux: Only pre-set the track position if it's for the same body/index SID --- gst/mxf/mxfdemux.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index f8d52ed90b..84cea6e140 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;