diff options
author | Zdenek Kabelac <zdenek.kabelac@gmail.com> | 2008-01-25 07:37:46 +0000 |
---|---|---|
committer | Andreas Ă–man <andreas@lonelycoder.com> | 2008-01-25 07:37:46 +0000 |
commit | e2fdba650d3ae21c693eac21642e389c8da25a1d (patch) | |
tree | 2a912f056980bb47a8a5d19a663aa5b84360fff7 /libavcodec | |
parent | 0f44edaa1ce77f95b83de0db1077dafc4a305331 (diff) | |
download | ffmpeg-e2fdba650d3ae21c693eac21642e389c8da25a1d.tar.gz |
Correctly clean up IntraX8Context upon codec close.
patch by Zdenek Kabelac, zdenek d kabelac a gmail d com
Originally committed as revision 11608 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/intrax8.c | 9 | ||||
-rw-r--r-- | libavcodec/intrax8.h | 1 | ||||
-rw-r--r-- | libavcodec/vc1.c | 1 | ||||
-rw-r--r-- | libavcodec/wmv2dec.c | 10 |
4 files changed, 20 insertions, 1 deletions
diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index ec1567ea23..0436deb4ce 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -677,6 +677,15 @@ void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s){ } /** + * 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 --git a/libavcodec/intrax8.h b/libavcodec/intrax8.h index fd8e36ccc4..3f6de67da5 100644 --- a/libavcodec/intrax8.h +++ b/libavcodec/intrax8.h @@ -51,6 +51,7 @@ typedef struct{ } 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 --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 86ca7b978b..01cff4c057 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -4119,6 +4119,7 @@ static int vc1_decode_end(AVCodecContext *avctx) 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 --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index 842234bfe1..cb37955124 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -474,6 +474,14 @@ static int wmv2_decode_init(AVCodecContext *avctx){ 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 @@ AVCodec wmv2_decoder = { 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, }; |