From a9b8c638cfe2f82191db65e3e3a39f3b35df81f5 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 24 Sep 2015 08:49:41 +0200 Subject: [PATCH] mmal: Fix AVBufferRef usage AVBufferRef.data and AVPacket.data don't need to have the same value. AVPacket could point anywhere into the buffer. Likewise, the sizes don't need to be the same. Signed-off-by: Luca Barbato --- libavcodec/mmaldec.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c index fea3fc43b4..ae9d749fc9 100644 --- a/libavcodec/mmaldec.c +++ b/libavcodec/mmaldec.c @@ -433,17 +433,20 @@ static int ffmmal_add_packet(AVCodecContext *avctx, AVPacket *avpkt, if (avpkt->size) { if (avpkt->buf) { buf = av_buffer_ref(avpkt->buf); + size = avpkt->size; + data = avpkt->data; } else { buf = av_buffer_alloc(avpkt->size); - if (buf) + if (buf) { memcpy(buf->data, avpkt->data, avpkt->size); + size = buf->size; + data = buf->data; + } } if (!buf) { ret = AVERROR(ENOMEM); goto done; } - size = buf->size; - data = buf->data; if (!is_extradata) ctx->packets_sent++; } else {