mxfdemux: Only pre-set the track position if it's for the same body/index SID
This commit is contained in:
parent
1d862db9c1
commit
39aa2aaa39
@ -1866,10 +1866,12 @@ gst_mxf_demux_handle_generic_container_essence_element (GstMXFDemux * demux,
|
|||||||
|
|
||||||
GST_DEBUG_OBJECT (demux,
|
GST_DEBUG_OBJECT (demux,
|
||||||
"Pushing buffer of size %" G_GSIZE_FORMAT " for track %u: timestamp %"
|
"Pushing buffer of size %" G_GSIZE_FORMAT " for track %u: timestamp %"
|
||||||
GST_TIME_FORMAT " duration %" GST_TIME_FORMAT,
|
GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " position %"
|
||||||
gst_buffer_get_size (outbuf), pad->material_track->parent.track_id,
|
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_TIMESTAMP (outbuf)),
|
||||||
GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)));
|
GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)),
|
||||||
|
pad->current_essence_track_position);
|
||||||
|
|
||||||
if (pad->discont) {
|
if (pad->discont) {
|
||||||
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
|
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
|
||||||
@ -2760,7 +2762,8 @@ from_index:
|
|||||||
GstMXFDemuxEssenceTrack *t =
|
GstMXFDemuxEssenceTrack *t =
|
||||||
&g_array_index (demux->essence_tracks, GstMXFDemuxEssenceTrack, i);
|
&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;
|
t->position = index_start_position;
|
||||||
else
|
else
|
||||||
t->position = (demux->offset == demux->run_in) ? 0 : -1;
|
t->position = (demux->offset == demux->run_in) ? 0 : -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user