[FFmpeg-cvslog] avcodec/pthread_frame: Fix memleak with frame threads and allocated AVOptions

Michael Niedermayer git at videolan.org
Mon Apr 6 18:53:14 CEST 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Apr  6 18:18:41 2015 +0200| [7ddbb4e23a4d591ab35594418fa250cc54c8df58] | committer: Michael Niedermayer

avcodec/pthread_frame: Fix memleak with frame threads and allocated AVOptions

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7ddbb4e23a4d591ab35594418fa250cc54c8df58
---

 libavcodec/pthread_frame.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index 5a4ab84..e809905 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -48,6 +48,7 @@
 #include "libavutil/internal.h"
 #include "libavutil/log.h"
 #include "libavutil/mem.h"
+#include "libavutil/opt.h"
 
 /**
  * Context used by codec threads and stored in their AVCodecInternal thread_ctx.
@@ -574,8 +575,6 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
         if (codec->close)
             codec->close(p->avctx);
 
-        avctx->codec = NULL;
-
         release_delayed_buffers(p);
         av_frame_free(&p->frame);
     }
@@ -603,6 +602,10 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
     av_freep(&fctx->threads);
     pthread_mutex_destroy(&fctx->buffer_mutex);
     av_freep(&avctx->internal->thread_ctx);
+
+    if (avctx->priv_data && avctx->codec && avctx->codec->priv_class)
+        av_opt_free(avctx->priv_data);
+    avctx->codec = NULL;
 }
 
 int ff_frame_thread_init(AVCodecContext *avctx)



More information about the ffmpeg-cvslog mailing list