From 0a41faa9a77dc83d8d933e99f1ba902ecd146e79 Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Wed, 3 Mar 2010 17:24:32 +0000 Subject: Plug some memory leaks in the VP6 decoder Originally committed as revision 22172 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/vp56.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libavcodec/vp56.c') diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c index 63055f5059..dd8f05a8c3 100644 --- a/libavcodec/vp56.c +++ b/libavcodec/vp56.c @@ -26,6 +26,7 @@ #include "vp56.h" #include "vp56data.h" +#include "get_bits.h" void vp56_init_dequant(VP56Context *s, int quantizer) @@ -695,6 +696,7 @@ av_cold void vp56_init(AVCodecContext *avctx, int flip, int has_alpha) av_cold int vp56_free(AVCodecContext *avctx) { VP56Context *s = avctx->priv_data; + int pt; av_freep(&s->qscale_table); av_freep(&s->above_blocks); @@ -706,5 +708,15 @@ av_cold int vp56_free(AVCodecContext *avctx) avctx->release_buffer(avctx, s->framep[VP56_FRAME_GOLDEN2]); if (s->framep[VP56_FRAME_PREVIOUS]->data[0]) avctx->release_buffer(avctx, s->framep[VP56_FRAME_PREVIOUS]); + + for (pt=0; pt < 2; pt++) { + int ct, cg; + free_vlc(&s->dccv_vlc[pt]); + free_vlc(&s->runv_vlc[pt]); + for (ct=0; ct<3; ct++) + for (cg = 0; cg < 6; cg++) + free_vlc(&s->ract_vlc[pt][ct][cg]); + } + return 0; } -- cgit v1.2.3