|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|