videodecoder: More trickmode fix
authorEdward Hervey <edward@centricular.com>
Thu, 7 Jul 2016 15:10:17 +0000 (17:10 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Thu, 7 Jul 2016 15:12:31 +0000 (17:12 +0200)
We need to take into account the input segment flags to know whether
we should drain the decoder after a new keyframe in trick mode.

Otherwise we would have to wait for the next frame to be outputted (and
the segment to be activated) which ... well ... kind of beats the whole
point of this draining :)

gst-libs/gst/video/gstvideodecoder.c

index 06c0043..57c5728 100644 (file)
@@ -2134,7 +2134,7 @@ gst_video_decoder_chain_forward (GstVideoDecoder * decoder,
      * GOP by GOP, and does not do any actual decoding. That would be done by
      * flush_decode() */
     if (was_keyframe && decoder->input_segment.rate > 0.0
-        && (decoder->output_segment.flags & GST_SEEK_FLAG_TRICKMODE_KEY_UNITS))
+        && (decoder->input_segment.flags & GST_SEEK_FLAG_TRICKMODE_KEY_UNITS))
       gst_video_decoder_drain_out (decoder, FALSE);
   } else {
     gst_adapter_push (priv->input_adapter, buf);