ffmpeg: avoid assertion failure on duplicate frame allocation
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 23 Jul 2012 13:02:11 +0000 (15:02 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 23 Jul 2012 13:02:11 +0000 (15:02 +0200)
ext/ffmpeg/gstffmpegviddec.c

index 9166c84..630353c 100644 (file)
@@ -564,6 +564,9 @@ gst_ffmpegviddec_get_buffer (AVCodecContext * context, AVFrame * picture)
   if (G_UNLIKELY (frame == NULL))
     goto no_frame;
 
+  if (G_UNLIKELY (frame->output_buffer != NULL))
+    goto duplicate_frame;
+
   /* GstFFMpegVidDecVideoFrame receives the frame ref */
   picture->opaque = dframe = gst_ffmpegviddec_video_frame_new (frame);
 
@@ -641,6 +644,11 @@ fallback:
   {
     return avcodec_default_get_buffer (context, picture);
   }
+duplicate_frame:
+  {
+    GST_WARNING_OBJECT (ffmpegdec, "already alloc'ed output buffer for frame");
+    return -1;
+  }
 no_frame:
   GST_WARNING_OBJECT (ffmpegdec, "Couldn't get codec frame !");
   return -1;