Browse Source

avfilter/af_biquads: use correct variables when reversing samples

Also silence initial block frames.
Paul B Mahol 2 years ago
parent
commit
38238b604f
1 changed files with 5 additions and 2 deletions
  1. 5 2
      libavfilter/af_biquads.c

+ 5 - 2
libavfilter/af_biquads.c

@@ -793,6 +793,9 @@ static int config_filter(AVFilterLink *outlink, int reset)
             s->block[i] = ff_get_audio_buffer(outlink, s->block_samples * 2);
             if (!s->block[i])
                 return AVERROR(ENOMEM);
+            av_samples_set_silence(s->block[i]->extended_data, 0, s->block_samples * 2,
+                                   s->block[i]->ch_layout.nb_channels, s->block[i]->format);
+
         }
     }
 
@@ -927,14 +930,14 @@ static void reverse_samples(AVFrame *out, AVFrame *in, int p,
 {
     switch (out->format) {
     case AV_SAMPLE_FMT_S16P: {
-        const int16_t *src = ((const int16_t *)out->extended_data[p]) + io;
+        const int16_t *src = ((const int16_t *)in->extended_data[p]) + io;
         int16_t *dst = ((int16_t *)out->extended_data[p]) + oo;
         for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--)
             dst[i] = src[j];
     }
         break;
     case AV_SAMPLE_FMT_S32P: {
-        const int32_t *src = ((const int32_t *)out->extended_data[p]) + io;
+        const int32_t *src = ((const int32_t *)in->extended_data[p]) + io;
         int32_t *dst = ((int32_t *)out->extended_data[p]) + oo;
         for (int i = 0, j = nb_samples - 1; i < nb_samples; i++, j--)
             dst[i] = src[j];