Commit 6f4e2b5a authored by Måns Rullgård's avatar Måns Rullgård

fix memory leaks in vp3 decoder

Originally committed as revision 12191 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent ac6f1330
...@@ -2313,7 +2313,9 @@ if (!s->keyframe) { ...@@ -2313,7 +2313,9 @@ if (!s->keyframe) {
static int vp3_decode_end(AVCodecContext *avctx) static int vp3_decode_end(AVCodecContext *avctx)
{ {
Vp3DecodeContext *s = avctx->priv_data; Vp3DecodeContext *s = avctx->priv_data;
int i;
av_free(s->superblock_coding);
av_free(s->all_fragments); av_free(s->all_fragments);
av_free(s->coeffs); av_free(s->coeffs);
av_free(s->coded_fragment_list); av_free(s->coded_fragment_list);
...@@ -2322,6 +2324,19 @@ static int vp3_decode_end(AVCodecContext *avctx) ...@@ -2322,6 +2324,19 @@ static int vp3_decode_end(AVCodecContext *avctx)
av_free(s->macroblock_fragments); av_free(s->macroblock_fragments);
av_free(s->macroblock_coding); av_free(s->macroblock_coding);
for (i = 0; i < 16; i++) {
free_vlc(&s->dc_vlc[i]);
free_vlc(&s->ac_vlc_1[i]);
free_vlc(&s->ac_vlc_2[i]);
free_vlc(&s->ac_vlc_3[i]);
free_vlc(&s->ac_vlc_4[i]);
}
free_vlc(&s->superblock_run_length_vlc);
free_vlc(&s->fragment_run_length_vlc);
free_vlc(&s->mode_code_vlc);
free_vlc(&s->motion_vector_vlc);
/* release all frames */ /* release all frames */
if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0]) if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0])
avctx->release_buffer(avctx, &s->golden_frame); avctx->release_buffer(avctx, &s->golden_frame);
......
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