mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
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:
parent
dd779749f0
commit
9644ee224f
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user