]> git.alsa-project.org Git - alsa-plugins.git/commitdiff
a52: Use av_frame_get_buffer() for buffer allocation
authorTakashi Iwai <tiwai@suse.de>
Tue, 15 Jun 2021 17:32:17 +0000 (19:32 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 16 Jun 2021 06:53:53 +0000 (08:53 +0200)
A more modern one for the recent API.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
a52/pcm_a52.c

index 95d2c3f118b9ff7bf1f9b7e741ca870d5fd5c0a2..16ac72207b1dd558b7426449578799c6abc94947 100644 (file)
@@ -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);