[FFmpeg-cvslog] hevc: free sao buffers when receiving a new SPS

Christophe Gisquet git at videolan.org
Thu Feb 5 22:00:19 CET 2015


ffmpeg | branch: master | Christophe Gisquet <christophe.gisquet at gmail.com> | Thu Feb  5 19:51:22 2015 +0100| [9a2f5d825a257cc72d569a91746219c7974da6e4] | committer: Michael Niedermayer

hevc: free sao buffers when receiving a new SPS

The buffer pointers would be otherwise overwritten, causing a
leak on e.g. PERSIST_RPARAM_A_RExt_Sony_1.

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

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

 libavcodec/hevc.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index 0624cb0..afbfda1 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -284,7 +284,7 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps)
 {
     #define HWACCEL_MAX (CONFIG_HEVC_DXVA2_HWACCEL)
     enum AVPixelFormat pix_fmts[HWACCEL_MAX + 2], *fmt = pix_fmts;
-    int ret;
+    int ret, i;
     unsigned int num = 0, den = 0;
 
     pic_arrays_free(s);
@@ -334,6 +334,13 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps)
     ff_hevc_dsp_init (&s->hevcdsp, sps->bit_depth);
     ff_videodsp_init (&s->vdsp,    sps->bit_depth);
 
+    for (i = 0; i < 3; i++) {
+        if (s->sao_pixel_buffer_h[i])
+            av_freep(&s->sao_pixel_buffer_h[i]);
+        if (s->sao_pixel_buffer_v[i])
+            av_freep(&s->sao_pixel_buffer_v[i]);
+    }
+
     if (sps->sao_enabled && !s->avctx->hwaccel) {
         int c_count = (sps->chroma_format_idc != 0) ? 3 : 1;
         int c_idx;



More information about the ffmpeg-cvslog mailing list