mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
mxfdemux: Handle some more special cases when setting the position when seeking
This commit is contained in:
parent
bb11522f1d
commit
0d8099685d
1 changed files with 13 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue