Merge remote-tracking branch 'qatar/master'
[ffmpeg.git] / libavfilter / audio.c
index 1334c2b..d473b99 100644 (file)
@@ -160,7 +160,7 @@ void ff_default_filter_samples(AVFilterLink *inlink, AVFilterBufferRef *samplesr
 {
     AVFilterLink *outlink = NULL;
 
-    if (inlink->dst->output_count)
+    if (inlink->dst->nb_outputs)
         outlink = inlink->dst->outputs[0];
 
     if (outlink) {
@@ -190,10 +190,7 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
     /* prepare to copy the samples if the buffer has insufficient permissions */
     if ((dst->min_perms & samplesref->perms) != dst->min_perms ||
         dst->rej_perms & samplesref->perms) {
-        int  i, size, planar = av_sample_fmt_is_planar(samplesref->format);
-        int planes = !planar ? 1:
-                     av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);
-
+        int size;
         av_log(link->dst, AV_LOG_DEBUG,
                "Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",
                samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);
@@ -204,13 +201,10 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
         link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
 
         /* Copy actual data into new samples buffer */
-        /* src can be larger than dst if it was allocated larger than necessary.
-           dst can be slightly larger due to extra alignment padding. */
-        size = FFMIN(samplesref->linesize[0], link->cur_buf->linesize[0]);
-        for (i = 0; samplesref->data[i] && i < 8; i++)
-            memcpy(link->cur_buf->data[i], samplesref->data[i], size);
-        for (i = 0; i < planes; i++)
-            memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], size);
+        av_samples_copy(link->cur_buf->extended_data, samplesref->extended_data,
+                        0, 0, samplesref->audio->nb_samples,
+                        av_get_channel_layout_nb_channels(link->channel_layout),
+                        link->format);
 
         avfilter_unref_buffer(samplesref);
     } else