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>
This commit is contained in:
wm4 2015-09-24 08:49:41 +02:00 committed by Luca Barbato
parent 49623f5319
commit a9b8c638cf
1 changed files with 6 additions and 3 deletions

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 {