diff options
author | Anton Khirnov <anton@khirnov.net> | 2013-05-29 21:03:20 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-06-18 11:21:16 +0200 |
commit | c9c7bc4493bc72254cfb826941cdaf56c9b110d6 (patch) | |
tree | c4ebaab94d060dbbcad6fdf5be77b07684fd9d3a | |
parent | cd0faeee62ffe96f294ad3baf1b55343be63a2a7 (diff) | |
download | ffmpeg-c9c7bc4493bc72254cfb826941cdaf56c9b110d6.tar.gz |
lavfi: switch ff_default_get_audio_buffer() to av_frame_get_buffer()
This simplifies the code and avoids using libavcodec-specific
avcodec_fill_audio_frame().
-rw-r--r-- | libavfilter/audio.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/libavfilter/audio.c b/libavfilter/audio.c index 5295423e44..b332e9e43c 100644 --- a/libavfilter/audio.c +++ b/libavfilter/audio.c @@ -32,40 +32,26 @@ AVFrame *ff_default_get_audio_buffer(AVFilterLink *link, int nb_samples) { AVFrame *frame = av_frame_alloc(); int channels = av_get_channel_layout_nb_channels(link->channel_layout); - int buf_size, ret; + int ret; if (!frame) return NULL; - buf_size = av_samples_get_buffer_size(NULL, channels, nb_samples, - link->format, 0); - if (buf_size < 0) - goto fail; - - frame->buf[0] = av_buffer_alloc(buf_size); - if (!frame->buf[0]) - goto fail; - - frame->nb_samples = nb_samples; - ret = avcodec_fill_audio_frame(frame, channels, link->format, - frame->buf[0]->data, buf_size, 0); - if (ret < 0) - goto fail; - - av_samples_set_silence(frame->extended_data, 0, nb_samples, channels, - link->format); - frame->nb_samples = nb_samples; frame->format = link->format; frame->channel_layout = link->channel_layout; frame->sample_rate = link->sample_rate; + ret = av_frame_get_buffer(frame, 0); + if (ret < 0) { + av_frame_free(&frame); + return NULL; + } - return frame; + av_samples_set_silence(frame->extended_data, 0, nb_samples, channels, + link->format); -fail: - av_buffer_unref(&frame->buf[0]); - av_frame_free(&frame); - return NULL; + + return frame; } AVFrame *ff_get_audio_buffer(AVFilterLink *link, int nb_samples) |