diff options
Diffstat (limited to 'libavcodec/mdct_template.c')
-rw-r--r-- | libavcodec/mdct_template.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libavcodec/mdct_template.c b/libavcodec/mdct_template.c index bad890e..e7e5f62 100644 --- a/libavcodec/mdct_template.c +++ b/libavcodec/mdct_template.c @@ -2,20 +2,20 @@ * MDCT/IMDCT transforms * Copyright (c) 2002 Fabrice Bellard * - * 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 */ @@ -34,7 +34,11 @@ #if FFT_FLOAT # define RSCALE(x) (x) #else +#if FFT_FIXED_32 +# define RSCALE(x) (((x) + 32) >> 6) +#else /* FFT_FIXED_32 */ # define RSCALE(x) ((x) >> 1) +#endif /* FFT_FIXED_32 */ #endif /** @@ -56,7 +60,7 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale) if (ff_fft_init(s, s->mdct_bits - 2, inverse) < 0) goto fail; - s->tcos = av_malloc(n/2 * sizeof(FFTSample)); + s->tcos = av_malloc_array(n/2, sizeof(FFTSample)); if (!s->tcos) goto fail; @@ -77,8 +81,13 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale) scale = sqrt(fabs(scale)); for(i=0;i<n4;i++) { alpha = 2 * M_PI * (i + theta) / n; +#if FFT_FIXED_32 + s->tcos[i*tstep] = (FFTSample)floor(-cos(alpha) * 2147483648.0 + 0.5); + s->tsin[i*tstep] = (FFTSample)floor(-sin(alpha) * 2147483648.0 + 0.5); +#else s->tcos[i*tstep] = FIX15(-cos(alpha) * scale); s->tsin[i*tstep] = FIX15(-sin(alpha) * scale); +#endif } return 0; fail: |