From 799f57ac96f9891d1a0f7d6c4b218ed536e8aca5 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 4 Jun 2013 19:01:22 +0200 Subject: [PATCH] lavc: use AVFrame API properly in pad_last_frame(). This also simplifies the code. --- libavcodec/utils.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 8a19393a26..accb6b3a94 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1119,26 +1119,22 @@ int ff_alloc_packet(AVPacket *avpkt, int size) static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src) { AVFrame *frame = NULL; - uint8_t *buf = NULL; int ret; if (!(frame = avcodec_alloc_frame())) return AVERROR(ENOMEM); - *frame = *src; - if ((ret = av_samples_get_buffer_size(&frame->linesize[0], s->channels, - s->frame_size, s->sample_fmt, 0)) < 0) + frame->format = src->format; + frame->channel_layout = src->channel_layout; + frame->nb_samples = s->frame_size; + ret = av_frame_get_buffer(frame, 32); + if (ret < 0) goto fail; - if (!(buf = av_malloc(ret))) { - ret = AVERROR(ENOMEM); + ret = av_frame_copy_props(frame, src); + if (ret < 0) goto fail; - } - frame->nb_samples = s->frame_size; - if ((ret = avcodec_fill_audio_frame(frame, s->channels, s->sample_fmt, - buf, ret, 0)) < 0) - goto fail; if ((ret = av_samples_copy(frame->extended_data, src->extended_data, 0, 0, src->nb_samples, s->channels, s->sample_fmt)) < 0) goto fail; @@ -1152,10 +1148,7 @@ static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src) return 0; fail: - if (frame->extended_data != frame->data) - av_freep(&frame->extended_data); - av_freep(&buf); - av_freep(&frame); + av_frame_free(&frame); return ret; } -- 2.11.0