Merge commit '1c7b71a5bdb88ebb69734100405bbb5441b871e8'
[ffmpeg.git] / libavresample / resample.c
index 03362c8..dc87095 100644 (file)
@@ -2,20 +2,20 @@
  * Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
  * Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
  *
- * This file is part of Libav.
+ * This file is part of FFmpeg.
  *
- * Libav is free software; you can redistribute it and/or
+ * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
- * Libav is distributed in the hope that it will be useful,
+ * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with Libav; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
@@ -42,7 +42,6 @@ struct ResampleContext {
     int linear;
     enum AVResampleFilterType filter_type;
     int kaiser_beta;
-    double factor;
     void (*set_filter)(void *filter, double *tab, int phase, int tap_count);
     void (*resample_one)(struct ResampleContext *c, void *dst0,
                          int dst_index, const void *src0,
@@ -94,10 +93,10 @@ static double bessel(double x)
 }
 
 /* Build a polyphase filterbank. */
-static int build_filter(ResampleContext *c)
+static int build_filter(ResampleContext *c, double factor)
 {
     int ph, i;
-    double x, y, w, factor;
+    double x, y, w;
     double *tab;
     int tap_count    = c->filter_length;
     int phase_count  = 1 << c->phase_shift;
@@ -107,9 +106,6 @@ static int build_filter(ResampleContext *c)
     if (!tab)
         return AVERROR(ENOMEM);
 
-    /* if upsampling, only need to interpolate, no filter */
-    factor = FFMIN(c->factor, 1.0);
-
     for (ph = 0; ph < phase_count; ph++) {
         double norm = 0;
         for (i = 0; i < tap_count; i++) {
@@ -176,7 +172,6 @@ ResampleContext *ff_audio_resample_init(AVAudioResampleContext *avr)
     c->phase_shift   = avr->phase_shift;
     c->phase_mask    = phase_count - 1;
     c->linear        = avr->linear_interp;
-    c->factor        = factor;
     c->filter_length = FFMAX((int)ceil(avr->filter_size / factor), 1);
     c->filter_type   = avr->filter_type;
     c->kaiser_beta   = avr->kaiser_beta;
@@ -209,7 +204,7 @@ ResampleContext *ff_audio_resample_init(AVAudioResampleContext *avr)
     if (!c->filter_bank)
         goto error;
 
-    if (build_filter(c) < 0)
+    if (build_filter(c, factor) < 0)
         goto error;
 
     memcpy(&c->filter_bank[(c->filter_length * phase_count + 1) * felem_size],