Revert "avviddec: Fix memory leaks and assertions in error cases if we can't allocate...
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 11 Dec 2012 09:22:34 +0000 (10:22 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 11 Dec 2012 09:24:08 +0000 (10:24 +0100)
This reverts commit 47647e1caca117ff8a62caf8bf0b6c94eb6dd025.

Breaks playback when direct rendering is disabled.
The reason is that we set the opaque vaue to NULL and then try to use the NULL
value when we decoded a frame.

ext/libav/gstavviddec.c

index a53ecfb..29d7e72 100644 (file)
@@ -485,7 +485,7 @@ static int
 gst_ffmpegviddec_get_buffer (AVCodecContext * context, AVFrame * picture)
 {
   GstVideoCodecFrame *frame;
-  GstFFMpegVidDecVideoFrame *dframe = NULL;
+  GstFFMpegVidDecVideoFrame *dframe;
   GstFFMpegVidDec *ffmpegdec;
   gint c;
   GstVideoInfo *info;
@@ -583,10 +583,6 @@ invalid_frame:
   }
 fallback:
   {
-    if (dframe)
-      gst_ffmpegviddec_video_frame_free (dframe);
-    picture->opaque = NULL;
-
     return avcodec_default_get_buffer (context, picture);
   }
 duplicate_frame:
@@ -673,8 +669,7 @@ gst_ffmpegviddec_release_buffer (AVCodecContext * context, AVFrame * picture)
   /* we remove the opaque data now */
   picture->opaque = NULL;
 
-  if (frame)
-    gst_ffmpegviddec_video_frame_free (frame);
+  gst_ffmpegviddec_video_frame_free (frame);
 
   /* zero out the reference in ffmpeg */
   for (i = 0; i < 4; i++) {