# HG changeset patch # User andoma # Date 1201246666 0 # Node ID 1d735690e17232230c6f855a17ada0acd7e27d16 # Parent 84355538349950c068fcf6b34de864f0919dce13 Correctly clean up IntraX8Context upon codec close. patch by Zdenek Kabelac, zdenek d kabelac a gmail d com diff -r 843555383499 -r 1d735690e172 intrax8.c --- a/intrax8.c Thu Jan 24 19:51:31 2008 +0000 +++ b/intrax8.c Fri Jan 25 07:37:46 2008 +0000 @@ -677,6 +677,15 @@ } /** + * Destroy IntraX8 frame structure. + * @param w pointer to IntraX8Context + */ +void ff_intrax8_common_end(IntraX8Context * w) +{ + av_freep(&w->prediction_table); +} + +/** * Decode single IntraX8 frame. * The parent codec must fill s->loopfilter and s->gb (bitstream). * The parent codec must call MPV_frame_start(), ff_er_frame_start() before calling this function. diff -r 843555383499 -r 1d735690e172 intrax8.h --- a/intrax8.h Thu Jan 24 19:51:31 2008 +0000 +++ b/intrax8.h Fri Jan 25 07:37:46 2008 +0000 @@ -51,6 +51,7 @@ } IntraX8Context; void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s); +void ff_intrax8_common_end(IntraX8Context * w); int ff_intrax8_decode_picture(IntraX8Context * w, int quant, int halfpq); #endif /* FFMPEG_INTRAX8_H */ diff -r 843555383499 -r 1d735690e172 vc1.c --- a/vc1.c Thu Jan 24 19:51:31 2008 +0000 +++ b/vc1.c Fri Jan 25 07:37:46 2008 +0000 @@ -4119,6 +4119,7 @@ av_freep(&v->acpred_plane); av_freep(&v->over_flags_plane); av_freep(&v->mb_type_base); + ff_intrax8_common_end(&v->x8); return 0; } diff -r 843555383499 -r 1d735690e172 wmv2dec.c --- a/wmv2dec.c Thu Jan 24 19:51:31 2008 +0000 +++ b/wmv2dec.c Fri Jan 25 07:37:46 2008 +0000 @@ -474,6 +474,14 @@ return 0; } +static int wmv2_decode_end(AVCodecContext *avctx) +{ + Wmv2Context *w = avctx->priv_data; + + ff_intrax8_common_end(&w->x8); + return ff_h263_decode_end(avctx); +} + AVCodec wmv2_decoder = { "wmv2", CODEC_TYPE_VIDEO, @@ -481,7 +489,7 @@ sizeof(Wmv2Context), wmv2_decode_init, NULL, - ff_h263_decode_end, + wmv2_decode_end, ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, };