From 1d7ede949730c6284e2b9f03804c8f7345fa768a Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 15 Jun 2021 19:32:17 +0200 Subject: [PATCH] a52: Use av_frame_get_buffer() for buffer allocation A more modern one for the recent API. Signed-off-by: Takashi Iwai --- a52/pcm_a52.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c index 95d2c3f..16ac722 100644 --- a/a52/pcm_a52.c +++ b/a52/pcm_a52.c @@ -605,22 +605,23 @@ static void a52_free(struct a52_ctx *rec) } #ifdef USE_AVCODEC_FRAME - if (rec->frame) { +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 93, 0) + if (rec->frame) av_freep(&rec->frame->data[0]); - rec->inbuf = NULL; - } +#endif #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 28, 0) av_frame_free(&rec->frame); #else av_freep(&rec->frame); #endif -#endif +#else /* USE_AVCODEC_FRAME */ + free(rec->inbuf); + rec->inbuf = NULL; +#endif /* USE_AVCODEC_FRAME */ #ifdef USE_AVCODEC_PACKET_ALLOC av_packet_free(&rec->pkt); #endif - free(rec->inbuf); - rec->inbuf = NULL; free(rec->outbuf); rec->outbuf = NULL; } @@ -660,17 +661,19 @@ static int alloc_input_buffer(snd_pcm_ioplug_t *io) rec->frame = av_frame_alloc(); if (!rec->frame) return -ENOMEM; - if (av_samples_alloc(rec->frame->data, rec->frame->linesize, - io->channels, rec->avctx->frame_size, - rec->avctx->sample_fmt, 0) < 0) - return -ENOMEM; + rec->frame->nb_samples = rec->avctx->frame_size; #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(58, 93, 0) - rec->frame->extended_data = rec->frame->data; rec->frame->format = rec->avctx->sample_fmt; rec->frame->channels = rec->avctx->channels; rec->frame->channel_layout = rec->avctx->channel_layout; + if (av_frame_get_buffer(rec->frame, 0)) + return -ENOMEM; +#else + if (av_samples_alloc(rec->frame->data, rec->frame->linesize, + io->channels, rec->avctx->frame_size, + rec->avctx->sample_fmt, 0) < 0) + return -ENOMEM; #endif - rec->frame->nb_samples = rec->avctx->frame_size; rec->inbuf = rec->frame->data[0]; #else rec->inbuf = malloc(rec->avctx->frame_size * io->channels * rec->src_sample_bytes); -- 2.47.1