Browse Source

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@gentoo.org>
tags/n3.0
wm4 Luca Barbato 9 years ago
parent
commit
a9b8c638cf
1 changed files with 6 additions and 3 deletions
  1. +6
    -3
      libavcodec/mmaldec.c

+ 6
- 3
libavcodec/mmaldec.c View File

@@ -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 {


Loading…
Cancel
Save