aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXidorn Quan <quanxunzhen@gmail.com>2013-05-21 12:12:31 +0800
committerSebastien Zwickert <dilaroga@gmail.com>2013-05-27 09:07:48 +0200
commit499b82f604616a6ce7de4bd8e15f4698702c1e6a (patch)
treea1dac00255c82fb26993f4c0cd5ed543512df8ab
parentffd7fd79441f97f1edb25181af0603ff6ea9b342 (diff)
downloadffmpeg-499b82f604616a6ce7de4bd8e15f4698702c1e6a.tar.gz
avcodec/vda_h264_dec: fix a memory leak
Signed-off-by: Sebastien Zwickert <dilaroga@gmail.com>
-rw-r--r--libavcodec/vda_h264_dec.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/vda_h264_dec.c b/libavcodec/vda_h264_dec.c
index 4e60de0126..5857e0a365 100644
--- a/libavcodec/vda_h264_dec.c
+++ b/libavcodec/vda_h264_dec.c
@@ -102,6 +102,8 @@ static int vdadec_decode(AVCodecContext *avctx,
AVBufferRef *buffer = pic->buf[0];
VDABufferContext *context = av_buffer_get_opaque(buffer);
CVPixelBufferRef cv_buffer = (CVPixelBufferRef)pic->data[3];
+
+ CVPixelBufferRetain(cv_buffer);
CVPixelBufferLockBaseAddress(cv_buffer, 0);
context->cv_buffer = cv_buffer;
pic->format = ctx->pix_fmt;
@@ -202,6 +204,7 @@ static av_cold int vdadec_init(AVCodecContext *avctx)
vda_ctx->height = avctx->height;
vda_ctx->format = 'avc1';
vda_ctx->use_sync_decoding = 1;
+ vda_ctx->use_ref_buffer = 1;
ctx->pix_fmt = avctx->get_format(avctx, avctx->codec->pix_fmts);
switch (ctx->pix_fmt) {
case AV_PIX_FMT_UYVY422: