mirror of https://git.ffmpeg.org/ffmpeg.git
src_buffer: implement audio buffer copy.
This commit is contained in:
parent
d8407bba0e
commit
a96cd73ff2
|
@ -220,6 +220,7 @@ static AVFilterBufferRef *copy_buffer_ref(AVFilterContext *ctx,
|
||||||
{
|
{
|
||||||
AVFilterLink *outlink = ctx->outputs[0];
|
AVFilterLink *outlink = ctx->outputs[0];
|
||||||
AVFilterBufferRef *buf;
|
AVFilterBufferRef *buf;
|
||||||
|
int channels, data_size, i;
|
||||||
|
|
||||||
switch (outlink->type) {
|
switch (outlink->type) {
|
||||||
|
|
||||||
|
@ -231,6 +232,17 @@ static AVFilterBufferRef *copy_buffer_ref(AVFilterContext *ctx,
|
||||||
ref->format, ref->video->w, ref->video->h);
|
ref->format, ref->video->w, ref->video->h);
|
||||||
break;
|
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:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue