From d2d5e067359873c3eebaa8e6fbedb5d2ddaab2e3 Mon Sep 17 00:00:00 2001 From: Alexander Strange Date: Tue, 16 Jun 2009 21:50:36 +0000 Subject: [PATCH] H.264: Fix memory leaks with multithreading. The threads' contexts and rbsp_buffers were not freed at the end of decoding. Fixes issue 1581 Originally committed as revision 19207 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h264.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index d269795d45..55553ed313 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1997,6 +1997,9 @@ static void free_tables(H264Context *h){ av_freep(&hx->top_borders[1]); av_freep(&hx->top_borders[0]); av_freep(&hx->s.obmc_scratchpad); + av_freep(&hx->rbsp_buffer[1]); + av_freep(&hx->rbsp_buffer[0]); + if (i) av_freep(&h->thread_context[i]); } } @@ -8123,8 +8126,6 @@ av_cold void ff_h264_free_context(H264Context *h) { int i; - av_freep(&h->rbsp_buffer[0]); - av_freep(&h->rbsp_buffer[1]); free_tables(h); //FIXME cleanup init stuff perhaps for(i = 0; i < MAX_SPS_COUNT; i++)