aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorZdenek Kabelac <zdenek.kabelac@gmail.com>2008-01-25 07:37:46 +0000
committerAndreas Ă–man <andreas@lonelycoder.com>2008-01-25 07:37:46 +0000
commite2fdba650d3ae21c693eac21642e389c8da25a1d (patch)
tree2a912f056980bb47a8a5d19a663aa5b84360fff7 /libavcodec
parent0f44edaa1ce77f95b83de0db1077dafc4a305331 (diff)
downloadffmpeg-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.c9
-rw-r--r--libavcodec/intrax8.h1
-rw-r--r--libavcodec/vc1.c1
-rw-r--r--libavcodec/wmv2dec.c10
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,
};