Commit d659ad52 authored by vitor's avatar vitor

Plug some memory leaks in the VP6 decoder


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@22172 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent fe0f771a
......@@ -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;
}
......@@ -227,6 +227,7 @@ static void vp6_build_huff_tree(VP56Context *s, uint8_t coeff_model[],
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment