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,
 };