From: Sebastian Dröge Date: Mon, 12 Nov 2012 09:08:57 +0000 (+0100) Subject: vp8dec: Also destroy decoder in set_format() if it was created already X-Git-Tag: 1.19.3~509^2~6359 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef2cc91eb9eb5c61687a32d6225d38befdb52e15;p=platform%2Fupstream%2Fgstreamer.git vp8dec: Also destroy decoder in set_format() if it was created already Fixes a memory leak. --- diff --git a/ext/vpx/gstvp8dec.c b/ext/vpx/gstvp8dec.c index 940083b..a06968d 100644 --- a/ext/vpx/gstvp8dec.c +++ b/ext/vpx/gstvp8dec.c @@ -292,13 +292,16 @@ gst_vp8_dec_stop (GstVideoDecoder * base_video_decoder) gst_video_codec_state_unref (gst_vp8_dec->output_state); gst_vp8_dec->output_state = NULL; } + if (gst_vp8_dec->input_state) { gst_video_codec_state_unref (gst_vp8_dec->input_state); gst_vp8_dec->input_state = NULL; } + if (gst_vp8_dec->decoder_inited) vpx_codec_destroy (&gst_vp8_dec->decoder); gst_vp8_dec->decoder_inited = FALSE; + return TRUE; } @@ -308,6 +311,9 @@ gst_vp8_dec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state) GstVP8Dec *gst_vp8_dec = GST_VP8_DEC (decoder); GST_DEBUG_OBJECT (gst_vp8_dec, "set_format"); + + if (decoder->decoder_inited) + vpx_codec_destroy (&decoder->decoder); gst_vp8_dec->decoder_inited = FALSE; if (gst_vp8_dec->input_state)