diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2011-02-12 17:56:50 +0100 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2011-06-10 13:02:13 +0200 |
commit | 989184fea4854720caef35347992499ba8033195 (patch) | |
tree | 51d11205224d5f9634a7d2395007f75a4057b394 | |
parent | c3819600e2975cb5dc8ca07e0ea41f8204324e4a (diff) | |
download | ffmpeg-989184fea4854720caef35347992499ba8033195.tar.gz |
lavfi: use avfilter_get_audio_buffer_ref_from_arrays() in defaults.c
Use avfilter_get_audio_buffer_ref_from_arrays() in
avfilter_default_get_audio_buffer(), simplify.
-rw-r--r-- | libavfilter/defaults.c | 48 |
1 files changed, 14 insertions, 34 deletions
diff --git a/libavfilter/defaults.c b/libavfilter/defaults.c index ce8f3cd0da..c39ed64048 100644 --- a/libavfilter/defaults.c +++ b/libavfilter/defaults.c @@ -84,47 +84,27 @@ AVFilterBufferRef *avfilter_default_get_audio_buffer(AVFilterLink *link, int per enum AVSampleFormat sample_fmt, int nb_samples, int64_t channel_layout, int planar) { - AVFilterBuffer *samples = av_mallocz(sizeof(AVFilterBuffer)); - AVFilterBufferRef *ref = NULL; + AVFilterBufferRef *samplesref = NULL; + int linesize[8]; + uint8_t *data[8]; int nb_channels = av_get_channel_layout_nb_channels(channel_layout); - if (!samples || !(ref = av_mallocz(sizeof(AVFilterBufferRef)))) - goto fail; - - ref->buf = samples; - ref->format = sample_fmt; - - ref->audio = av_mallocz(sizeof(AVFilterBufferRefAudioProps)); - if (!ref->audio) - goto fail; - - ref->audio->channel_layout = channel_layout; - ref->audio->nb_samples = nb_samples; - ref->audio->planar = planar; - - /* make sure the buffer gets read permission or it's useless for output */ - ref->perms = perms | AV_PERM_READ; - - samples->refcount = 1; - samples->free = ff_avfilter_default_free_buffer; - /* Calculate total buffer size, round to multiple of 16 to be SIMD friendly */ - if (av_samples_alloc(samples->data, samples->linesize, + if (av_samples_alloc(data, linesize, nb_channels, nb_samples, sample_fmt, planar, 16) < 0) - goto fail; - - memcpy(ref->data, samples->data, sizeof(ref->data)); - memcpy(ref->linesize, samples->linesize, sizeof(ref->linesize)); + return NULL; - return ref; + samplesref = + avfilter_get_audio_buffer_ref_from_arrays(data, linesize, perms, + nb_samples, sample_fmt, + channel_layout, planar); + if (!samplesref) { + av_free(data[0]); + return NULL; + } -fail: - if (ref) - av_free(ref->audio); - av_free(ref); - av_free(samples); - return NULL; + return samplesref; } void avfilter_default_start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) |