[FFmpeg-cvslog] lavc: use AVFrame API properly in pad_last_frame().
Anton Khirnov
git at videolan.org
Tue Jun 11 09:34:52 CEST 2013
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Tue Jun 4 19:01:22 2013 +0200| [799f57ac96f9891d1a0f7d6c4b218ed536e8aca5] | committer: Anton Khirnov
lavc: use AVFrame API properly in pad_last_frame().
This also simplifies the code.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=799f57ac96f9891d1a0f7d6c4b218ed536e8aca5
---
libavcodec/utils.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 8a19393..accb6b3 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;
}
More information about the ffmpeg-cvslog
mailing list