Mercurial > libavcodec.hg
changeset 6176:1d735690e172 libavcodec
Correctly clean up IntraX8Context upon codec close.
patch by Zdenek Kabelac, zdenek d kabelac a gmail d com
author | andoma |
---|---|
date | Fri, 25 Jan 2008 07:37:46 +0000 |
parents | 843555383499 |
children | 5195f1ffba43 |
files | intrax8.c intrax8.h vc1.c wmv2dec.c |
diffstat | 4 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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.
--- 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 */
--- 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; }
--- 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, };