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.
/* 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;