[MOVED FROM BAD 114/134] vp8: fix codec state leaks
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 7 Jun 2012 11:33:31 +0000 (12:33 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 16 Sep 2012 13:31:10 +0000 (15:31 +0200)
I only tested that vp8enc ! vp8dec does not crash, as valgrind does not grok
at least one of the instructions used by vp8enc, preventing me from checking
a leak, and the lack of one after the patch.

ext/vp8/gstvp8dec.c
ext/vp8/gstvp8enc.c

index 782244e..52e0f5f 100644 (file)
@@ -316,6 +316,10 @@ gst_vp8_dec_reset (GstVideoDecoder * base_video_decoder, gboolean hard)
     gst_video_codec_state_unref (decoder->output_state);
     decoder->output_state = NULL;
   }
+  if (hard && decoder->input_state) {
+    gst_video_codec_state_unref (decoder->input_state);
+    decoder->input_state = NULL;
+  }
   if (decoder->decoder_inited)
     vpx_codec_destroy (&decoder->decoder);
   decoder->decoder_inited = FALSE;
index 2817f21..0454dae 100644 (file)
@@ -488,6 +488,9 @@ gst_vp8_enc_finalize (GObject * object)
   g_free (gst_vp8_enc->multipass_cache_file);
   gst_vp8_enc->multipass_cache_file = NULL;
 
+  if (gst_vp8_enc->input_state)
+    gst_video_codec_state_unref (gst_vp8_enc->input_state);
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 
 }