qtdemux: fix reverse playback EOS conditions

In reverse playback, we don't want to rely on the position of the current
keyframe to decide a stream is EOS: the last GOP we push will start with
a keyframe, which position is likely to be outside of the segment.

Instead, let the normal seek_to_previous_keyframe mechanism do its job,
it works just fine.
This commit is contained in:
Mathieu Duponchelle 2019-07-26 02:45:51 +02:00 committed by Mathieu Duponchelle
parent 104f459258
commit 4830bbe6ca

View file

@ -6337,10 +6337,8 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux)
/* check for segment end */
if (G_UNLIKELY (qtdemux->segment.stop != -1
&& ((qtdemux->segment.rate >= 0 && qtdemux->segment.stop <= min_time)
|| (qtdemux->segment.rate < 0
&& qtdemux->segment.start > min_time))
&& target_stream->on_keyframe)) {
&& qtdemux->segment.rate >= 0
&& qtdemux->segment.stop <= min_time && target_stream->on_keyframe)) {
GST_DEBUG_OBJECT (qtdemux, "we reached the end of our segment.");
target_stream->time_position = GST_CLOCK_TIME_NONE;
goto eos_stream;