vp8dec: Short circuit gst_vp8_dec_handle_frame if keyframe is missing
authorDebarshi Ray <rishi@gnu.org>
Thu, 1 Nov 2012 21:02:39 +0000 (22:02 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 2 Nov 2012 08:34:08 +0000 (09:34 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=687376

ext/vpx/gstvp8dec.c

index 9ec1771..7dcd75b 100644 (file)
@@ -415,7 +415,7 @@ open_codec (GstVP8Dec * dec, GstVideoCodecFrame * frame)
   if (status != VPX_CODEC_OK || !stream_info.is_kf) {
     GST_WARNING_OBJECT (dec, "No keyframe, skipping");
     gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame);
-    return GST_FLOW_OK;
+    return GST_FLOW_CUSTOM_SUCCESS_1;
   }
 
   g_assert (dec->output_state == NULL);
@@ -483,8 +483,11 @@ gst_vp8_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
 
   dec = GST_VP8_DEC (decoder);
 
-  if (!dec->decoder_inited)
+  if (!dec->decoder_inited) {
     ret = open_codec (dec, frame);
+    if (ret == GST_FLOW_CUSTOM_SUCCESS_1)
+      return GST_FLOW_OK;
+  }
 
   deadline = gst_video_decoder_get_max_decode_time (decoder, frame);
   if (deadline < 0) {