videodecoder: Use input segment rate instead of output segment rate to decide whether the drain on keyframes

The output segment is only set up after data is output, which might be far in
the future for reverse playback. Also we are here interested in the state at
the current *input* frame (which is the keyframe), not any possible output.
This commit is contained in:
Sebastian Dröge 2016-06-09 19:02:49 +03:00
parent 0c7022d681
commit 0bd3f2352c

View file

@ -2216,7 +2216,7 @@ gst_video_decoder_chain_forward (GstVideoDecoder * decoder,
* Also this function is only called for reverse playback to gather frames
* GOP by GOP, and does not do any actual decoding. That would be done by
* flush_decode() */
if (was_keyframe && decoder->output_segment.rate > 0.0
if (was_keyframe && decoder->input_segment.rate > 0.0
&& (decoder->output_segment.flags & GST_SEEK_FLAG_TRICKMODE_KEY_UNITS))
gst_video_decoder_drain_out (decoder, FALSE);
} else {