[FFmpeg-cvslog] mmal: Fix AVBufferRef usage
wm4
git at videolan.org
Sat Sep 26 11:08:49 CEST 2015
ffmpeg | branch: master | wm4 <nfxjfg at googlemail.com> | Thu Sep 24 08:49:41 2015 +0200| [a9b8c638cfe2f82191db65e3e3a39f3b35df81f5] | committer: Luca Barbato
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 <lu_zero at gentoo.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a9b8c638cfe2f82191db65e3e3a39f3b35df81f5
---
libavcodec/mmaldec.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
index fea3fc4..ae9d749 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 {
More information about the ffmpeg-cvslog
mailing list