[FFmpeg-devel] [PATCH v3 4/5] avcodec/mmaldec: Avoid creating unnecessary reference, simplify code
Anton Khirnov
anton at khirnov.net
Mon Dec 13 12:15:13 EET 2021
Quoting Andreas Rheinhardt (2021-12-09 14:08:04)
> 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.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> libavcodec/mmaldec.c | 23 ++++++-----------------
> 1 file changed, 6 insertions(+), 17 deletions(-)
>
> diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
> index 3e11d487ab..0c7df0a0bc 100644
> --- a/libavcodec/mmaldec.c
> +++ b/libavcodec/mmaldec.c
> @@ -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);
It seems better to call this from the place where the extradata packet
is created, since that should be the only source of non-refcounted
packets.
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list