diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-04-28 14:54:04 +0200 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-05-04 23:26:40 +0200 |
commit | a96cd73ff25795ab4162252d2df87a8b46c782da (patch) | |
tree | 3a995ec360bfdb60558b6a1c337b41e9702c3268 /libavfilter/src_buffer.c | |
parent | d8407bba0e48d50fc9d7c9338324a886f74b7d41 (diff) | |
download | ffmpeg-a96cd73ff25795ab4162252d2df87a8b46c782da.tar.gz |
src_buffer: implement audio buffer copy.
Diffstat (limited to 'libavfilter/src_buffer.c')
-rw-r--r-- | libavfilter/src_buffer.c | 12 |
1 files changed, 12 insertions, 0 deletions
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; } |