avcodec/mmaldec: Avoid creating unnecessary reference, simplify code

ffmal_add_packet() basically duplicated the logic in
av_packet_make_refcounted() with the added twist that it always
created a reference even if one is already available.
This commit stops doing this.

Tested-by: Cameron Gutman <aicommander@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2021-12-09 12:37:18 +01:00
parent dd779749f0
commit 9644ee224f
1 changed files with 6 additions and 17 deletions

View File

@ -485,29 +485,19 @@ static int ffmmal_add_packet(AVCodecContext *avctx, AVPacket *avpkt,
int is_extradata)
{
MMALDecodeContext *ctx = avctx->priv_data;
AVBufferRef *buf = NULL;
const AVBufferRef *buf = NULL;
int size = 0;
uint8_t *data = (uint8_t *)"";
uint8_t *start;
int ret = 0;
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) {
memcpy(buf->data, avpkt->data, avpkt->size);
size = buf->size;
data = buf->data;
}
}
if (!buf) {
ret = AVERROR(ENOMEM);
ret = av_packet_make_refcounted(avpkt);
if (ret < 0)
goto done;
}
buf = avpkt->buf;
data = avpkt->data;
size = avpkt->size;
if (!is_extradata)
ctx->packets_sent++;
} else {
@ -573,7 +563,6 @@ static int ffmmal_add_packet(AVCodecContext *avctx, AVPacket *avpkt,
} while (size);
done:
av_buffer_unref(&buf);
av_packet_unref(avpkt);
return ret;
}