Mercurial > libavcodec.hg
changeset 11342:8d23ea397dda libavcodec
Plug some memory leaks in the VP6 decoder
author | vitor |
---|---|
date | Wed, 03 Mar 2010 17:24:32 +0000 |
parents | a26f51d0bb63 |
children | 2b78e800f630 |
files | vp56.c vp6.c |
diffstat | 2 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/vp56.c Wed Mar 03 16:47:40 2010 +0000 +++ b/vp56.c Wed Mar 03 17:24:32 2010 +0000 @@ -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 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 @@ 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; }
--- a/vp6.c Wed Mar 03 16:47:40 2010 +0000 +++ b/vp6.c Wed Mar 03 17:24:32 2010 +0000 @@ -227,6 +227,7 @@ nodes[map[2*i+1]].count = b + !b; } + free_vlc(vlc); /* then build the huffman tree accodring to probabilities */ ff_huff_build_tree(s->avctx, vlc, size, nodes, vp6_huff_cmp, FF_HUFFMAN_FLAG_HNODE_FIRST);