[FFmpeg-cvslog] scale: fix leak occurring when a scale filter is reconfigured

Stefano Sabatini git at videolan.org
Mon May 2 17:18:24 CEST 2011


ffmpeg | branch: master | Stefano Sabatini <stefano.sabatini-lala at poste.it> | Mon May  2 12:35:39 2011 +0200| [f97905e61d7cb86987d7d4f5fabcfc0d6b57ddbb] | committer: Stefano Sabatini

scale: fix leak occurring when a scale filter is reconfigured

This currently only occurrs in vsrc_buffer in case of mid-stream
size/format change.

Fix trac issue #124.

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

 libavfilter/vf_scale.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index da84efc..9ff93bd 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -214,14 +214,18 @@ static int config_props(AVFilterLink *outlink)
 
     scale->input_is_pal = av_pix_fmt_descriptors[inlink->format].flags & PIX_FMT_PAL;
 
-    if(scale->sws)
+    if (scale->sws)
         sws_freeContext(scale->sws);
     scale->sws = sws_getContext(inlink ->w, inlink ->h, inlink ->format,
                                 outlink->w, outlink->h, outlink->format,
                                 scale->flags, NULL, NULL, NULL);
+    if (scale->isws[0])
+        sws_freeContext(scale->isws[0]);
     scale->isws[0] = sws_getContext(inlink ->w, inlink ->h/2, inlink ->format,
                                     outlink->w, outlink->h/2, outlink->format,
                                     scale->flags, NULL, NULL, NULL);
+    if (scale->isws[1])
+        sws_freeContext(scale->isws[1]);
     scale->isws[1] = sws_getContext(inlink ->w, inlink ->h/2, inlink ->format,
                                     outlink->w, outlink->h/2, outlink->format,
                                     scale->flags, NULL, NULL, NULL);



More information about the ffmpeg-cvslog mailing list