[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