vp[89]dec: Drop frames that have no output buffer because of errors
authorSebastian Dröge <sebastian@centricular.com>
Thu, 5 Mar 2015 09:00:33 +0000 (10:00 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 5 Mar 2015 09:01:09 +0000 (10:01 +0100)
finish_frame() assumes that there is an output buffer.

ext/vpx/gstvp8dec.c
ext/vpx/gstvp9dec.c

index 67a168a..2951118 100644 (file)
@@ -430,12 +430,12 @@ open_codec (GstVP8Dec * dec, GstVideoCodecFrame * frame)
   if (status != VPX_CODEC_OK) {
     GST_WARNING_OBJECT (dec, "VPX preprocessing error: %s",
         gst_vpx_error_name (status));
-    gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame);
+    gst_video_decoder_drop_frame (GST_VIDEO_DECODER (dec), frame);
     return GST_FLOW_CUSTOM_SUCCESS_1;
   }
   if (!stream_info.is_kf) {
     GST_WARNING_OBJECT (dec, "No keyframe, skipping");
-    gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame);
+    gst_video_decoder_drop_frame (GST_VIDEO_DECODER (dec), frame);
     return GST_FLOW_CUSTOM_SUCCESS_1;
   }
 
@@ -579,7 +579,7 @@ gst_vp8_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
         gst_vp8_dec_image_to_buffer (dec, img, frame->output_buffer);
         ret = gst_video_decoder_finish_frame (decoder, frame);
       } else {
-        gst_video_decoder_finish_frame (decoder, frame);
+        gst_video_decoder_drop_frame (decoder, frame);
       }
     }
 
index 43c46b3..5a18f3a 100644 (file)
@@ -426,12 +426,12 @@ open_codec (GstVP9Dec * dec, GstVideoCodecFrame * frame)
   if (status != VPX_CODEC_OK) {
     GST_WARNING_OBJECT (dec, "VPX preprocessing error: %s",
         gst_vpx_error_name (status));
-    gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame);
+    gst_video_decoder_drop_frame (GST_VIDEO_DECODER (dec), frame);
     return GST_FLOW_CUSTOM_SUCCESS_1;
   }
   if (!stream_info.is_kf) {
     GST_WARNING_OBJECT (dec, "No keyframe, skipping");
-    gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame);
+    gst_video_decoder_drop_frame (GST_VIDEO_DECODER (dec), frame);
     return GST_FLOW_CUSTOM_SUCCESS_1;
   }
 
@@ -584,7 +584,7 @@ gst_vp9_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
         gst_vp9_dec_image_to_buffer (dec, img, frame->output_buffer);
         ret = gst_video_decoder_finish_frame (decoder, frame);
       } else {
-        gst_video_decoder_finish_frame (decoder, frame);
+        gst_video_decoder_drop_frame (decoder, frame);
       }
     }