From a96cd73ff25795ab4162252d2df87a8b46c782da Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Sat, 28 Apr 2012 14:54:04 +0200 Subject: [PATCH] src_buffer: implement audio buffer copy. --- libavfilter/src_buffer.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libavfilter/src_buffer.c b/libavfilter/src_buffer.c index e67564da05..9a4d249507 100644 --- a/libavfilter/src_buffer.c +++ b/libavfilter/src_buffer.c @@ -220,6 +220,7 @@ static AVFilterBufferRef *copy_buffer_ref(AVFilterContext *ctx, { AVFilterLink *outlink = ctx->outputs[0]; AVFilterBufferRef *buf; + int channels, data_size, i; switch (outlink->type) { @@ -231,6 +232,17 @@ static AVFilterBufferRef *copy_buffer_ref(AVFilterContext *ctx, ref->format, ref->video->w, ref->video->h); break; + case AVMEDIA_TYPE_AUDIO: + buf = avfilter_get_audio_buffer(outlink, AV_PERM_WRITE, + ref->audio->nb_samples); + channels = av_get_channel_layout_nb_channels(ref->audio->channel_layout); + data_size = av_samples_get_buffer_size(NULL, channels, + ref->audio->nb_samples, + ref->format, 1); + for (i = 0; i < FF_ARRAY_ELEMS(ref->buf->data) && ref->buf->data[i]; i++) + memcpy(buf->buf->data[i], ref->buf->data[i], data_size); + break; + default: return NULL; }