From 1429224b04cd10ef0d81c1c0d6eae82a5afad4d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Sat, 6 Mar 2010 14:34:46 +0000 Subject: [PATCH] Move FFT parts from dsputil.h to fft.h Originally committed as revision 22235 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffplay.c | 2 +- libavcodec/aac.c | 1 + libavcodec/aac.h | 1 + libavcodec/ac3dec.h | 1 + libavcodec/arm/fft_init_arm.c | 2 +- libavcodec/atrac1.c | 1 + libavcodec/atrac3.c | 1 + libavcodec/binkaudio.c | 2 + libavcodec/cook.c | 1 + libavcodec/dca.c | 1 + libavcodec/dct.c | 3 +- libavcodec/dsputil.h | 214 ----------------------------- libavcodec/fft.c | 3 +- libavcodec/fft.h | 244 ++++++++++++++++++++++++++++++++++ libavcodec/imc.c | 1 + libavcodec/mdct.c | 4 +- libavcodec/nellymoserdec.c | 1 + libavcodec/nellymoserenc.c | 1 + libavcodec/ppc/fft_altivec.c | 2 +- libavcodec/qdm2.c | 1 + libavcodec/rdft.c | 3 +- libavcodec/synth_filter.c | 1 + libavcodec/twinvq.c | 1 + libavcodec/vorbis_dec.c | 1 + libavcodec/vorbis_enc.c | 1 + libavcodec/wma.h | 1 + libavcodec/x86/fft.h | 2 +- 27 files changed, 275 insertions(+), 222 deletions(-) create mode 100644 libavcodec/fft.h diff --git a/ffplay.c b/ffplay.c index ce1d5a2cb9..474240ca93 100644 --- a/ffplay.c +++ b/ffplay.c @@ -30,7 +30,7 @@ #include "libavcodec/audioconvert.h" #include "libavcodec/colorspace.h" #include "libavcodec/opt.h" -#include "libavcodec/dsputil.h" +#include "libavcodec/fft.h" #if CONFIG_AVFILTER # include "libavfilter/avfilter.h" diff --git a/libavcodec/aac.c b/libavcodec/aac.c index 0e014e083d..e73aa75391 100644 --- a/libavcodec/aac.c +++ b/libavcodec/aac.c @@ -80,6 +80,7 @@ #include "internal.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "lpc.h" #include "aac.h" diff --git a/libavcodec/aac.h b/libavcodec/aac.h index f123d9fa49..ec43e5fe99 100644 --- a/libavcodec/aac.h +++ b/libavcodec/aac.h @@ -32,6 +32,7 @@ #include "avcodec.h" #include "dsputil.h" +#include "fft.h" #include "mpeg4audio.h" #include diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h index 3fd67af50b..cc44a0300a 100644 --- a/libavcodec/ac3dec.h +++ b/libavcodec/ac3dec.h @@ -31,6 +31,7 @@ #include "ac3.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" /* override ac3.h to include coupling channel */ #undef AC3_MAX_CHANNELS diff --git a/libavcodec/arm/fft_init_arm.c b/libavcodec/arm/fft_init_arm.c index ec8e0ab893..b2acf929f5 100644 --- a/libavcodec/arm/fft_init_arm.c +++ b/libavcodec/arm/fft_init_arm.c @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavcodec/dsputil.h" +#include "libavcodec/fft.h" void ff_fft_permute_neon(FFTContext *s, FFTComplex *z); void ff_fft_calc_neon(FFTContext *s, FFTComplex *z); diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c index a4b57f1579..dfdd9744a2 100644 --- a/libavcodec/atrac1.c +++ b/libavcodec/atrac1.c @@ -35,6 +35,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "atrac.h" #include "atrac1data.h" diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c index 86d48920bb..dd69e4d87b 100644 --- a/libavcodec/atrac3.c +++ b/libavcodec/atrac3.c @@ -40,6 +40,7 @@ #include "get_bits.h" #include "dsputil.h" #include "bytestream.h" +#include "fft.h" #include "atrac.h" #include "atrac3data.h" diff --git a/libavcodec/binkaudio.c b/libavcodec/binkaudio.c index d27a142f85..7462ab727e 100644 --- a/libavcodec/binkaudio.c +++ b/libavcodec/binkaudio.c @@ -32,6 +32,8 @@ #define ALT_BITSTREAM_READER_LE #include "get_bits.h" #include "dsputil.h" +#include "fft.h" + extern const uint16_t ff_wma_critical_freqs[25]; #define MAX_CHANNELS 2 diff --git a/libavcodec/cook.c b/libavcodec/cook.c index 0003a387bd..4948acfb89 100644 --- a/libavcodec/cook.c +++ b/libavcodec/cook.c @@ -52,6 +52,7 @@ #include "get_bits.h" #include "dsputil.h" #include "bytestream.h" +#include "fft.h" #include "cookdata.h" diff --git a/libavcodec/dca.c b/libavcodec/dca.c index 86a929e815..dfa8945e3d 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -32,6 +32,7 @@ #include "avcodec.h" #include "dsputil.h" +#include "fft.h" #include "get_bits.h" #include "put_bits.h" #include "dcadata.h" diff --git a/libavcodec/dct.c b/libavcodec/dct.c index 3776349df9..d627a55664 100644 --- a/libavcodec/dct.c +++ b/libavcodec/dct.c @@ -28,7 +28,8 @@ */ #include -#include "dsputil.h" +#include "libavutil/mathematics.h" +#include "fft.h" av_cold int ff_dct_init(DCTContext *s, int nbits, int inverse) { diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index c68ab3aea6..9ab647608a 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -725,220 +725,6 @@ void get_psnr(uint8_t *orig_image[3], uint8_t *coded_image[3], int orig_linesize[3], int coded_linesize, AVCodecContext *avctx); -/* FFT computation */ - -/* NOTE: soon integer code will be added, so you must use the - FFTSample type */ -typedef float FFTSample; - -typedef struct FFTComplex { - FFTSample re, im; -} FFTComplex; - -typedef struct FFTContext { - int nbits; - int inverse; - uint16_t *revtab; - FFTComplex *exptab; - FFTComplex *exptab1; /* only used by SSE code */ - FFTComplex *tmp_buf; - int mdct_size; /* size of MDCT (i.e. number of input data * 2) */ - int mdct_bits; /* n = 2^nbits */ - /* pre/post rotation tables */ - FFTSample *tcos; - FFTSample *tsin; - void (*fft_permute)(struct FFTContext *s, FFTComplex *z); - void (*fft_calc)(struct FFTContext *s, FFTComplex *z); - void (*imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - void (*imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - void (*mdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - int split_radix; - int permutation; -#define FF_MDCT_PERM_NONE 0 -#define FF_MDCT_PERM_INTERLEAVE 1 -} FFTContext; - -#if CONFIG_HARDCODED_TABLES -#define COSTABLE_CONST const -#define SINTABLE_CONST const -#define SINETABLE_CONST const -#else -#define COSTABLE_CONST -#define SINTABLE_CONST -#define SINETABLE_CONST -#endif - -#define COSTABLE(size) \ - COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2] -#define SINTABLE(size) \ - SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2] -#define SINETABLE(size) \ - SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size] -extern COSTABLE(16); -extern COSTABLE(32); -extern COSTABLE(64); -extern COSTABLE(128); -extern COSTABLE(256); -extern COSTABLE(512); -extern COSTABLE(1024); -extern COSTABLE(2048); -extern COSTABLE(4096); -extern COSTABLE(8192); -extern COSTABLE(16384); -extern COSTABLE(32768); -extern COSTABLE(65536); -extern COSTABLE_CONST FFTSample* const ff_cos_tabs[17]; - -/** - * Initializes the cosine table in ff_cos_tabs[index] - * \param index index in ff_cos_tabs array of the table to initialize - */ -void ff_init_ff_cos_tabs(int index); - -extern SINTABLE(16); -extern SINTABLE(32); -extern SINTABLE(64); -extern SINTABLE(128); -extern SINTABLE(256); -extern SINTABLE(512); -extern SINTABLE(1024); -extern SINTABLE(2048); -extern SINTABLE(4096); -extern SINTABLE(8192); -extern SINTABLE(16384); -extern SINTABLE(32768); -extern SINTABLE(65536); - -/** - * Sets up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -int ff_fft_init(FFTContext *s, int nbits, int inverse); -void ff_fft_permute_c(FFTContext *s, FFTComplex *z); -void ff_fft_calc_c(FFTContext *s, FFTComplex *z); - -void ff_fft_init_altivec(FFTContext *s); -void ff_fft_init_mmx(FFTContext *s); -void ff_fft_init_arm(FFTContext *s); - -/** - * Do the permutation needed BEFORE calling ff_fft_calc(). - */ -static inline void ff_fft_permute(FFTContext *s, FFTComplex *z) -{ - s->fft_permute(s, z); -} -/** - * Do a complex FFT with the parameters defined in ff_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ -static inline void ff_fft_calc(FFTContext *s, FFTComplex *z) -{ - s->fft_calc(s, z); -} -void ff_fft_end(FFTContext *s); - -/* MDCT computation */ - -static inline void ff_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input) -{ - s->imdct_calc(s, output, input); -} -static inline void ff_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input) -{ - s->imdct_half(s, output, input); -} - -static inline void ff_mdct_calc(FFTContext *s, FFTSample *output, - const FFTSample *input) -{ - s->mdct_calc(s, output, input); -} - -/** - * Generate a Kaiser-Bessel Derived Window. - * @param window pointer to half window - * @param alpha determines window shape - * @param n size of half window - */ -void ff_kbd_window_init(float *window, float alpha, int n); - -/** - * Generate a sine window. - * @param window pointer to half window - * @param n size of half window - */ -void ff_sine_window_init(float *window, int n); -/** - * initialize the specified entry of ff_sine_windows - */ -void ff_init_ff_sine_windows(int index); -extern SINETABLE( 32); -extern SINETABLE( 64); -extern SINETABLE( 128); -extern SINETABLE( 256); -extern SINETABLE( 512); -extern SINETABLE(1024); -extern SINETABLE(2048); -extern SINETABLE(4096); -extern SINETABLE_CONST float * const ff_sine_windows[13]; - -int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); -void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_mdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_mdct_end(FFTContext *s); - -/* Real Discrete Fourier Transform */ - -enum RDFTransformType { - RDFT, - IRDFT, - RIDFT, - IRIDFT, -}; - -typedef struct { - int nbits; - int inverse; - int sign_convention; - - /* pre/post rotation tables */ - const FFTSample *tcos; - SINTABLE_CONST FFTSample *tsin; - FFTContext fft; -} RDFTContext; - -/** - * Sets up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans); -void ff_rdft_calc(RDFTContext *s, FFTSample *data); -void ff_rdft_end(RDFTContext *s); - -/* Discrete Cosine Transform */ - -typedef struct { - int nbits; - int inverse; - FFTSample *data; - RDFTContext rdft; - const float *costab; - FFTSample *csc2; -} DCTContext; - -/** - * Sets up (Inverse)DCT. - * @param nbits log2 of the length of the input array - * @param inverse >0 forward transform, <0 inverse transform - */ -int ff_dct_init(DCTContext *s, int nbits, int inverse); -void ff_dct_calc(DCTContext *s, FFTSample *data); -void ff_dct_end (DCTContext *s); - #define WRAPPER8_16(name8, name16)\ static int name16(void /*MpegEncContext*/ *s, uint8_t *dst, uint8_t *src, int stride, int h){\ return name8(s, dst , src , stride, h)\ diff --git a/libavcodec/fft.c b/libavcodec/fft.c index ef596ef564..facc6e05d9 100644 --- a/libavcodec/fft.c +++ b/libavcodec/fft.c @@ -26,7 +26,8 @@ * FFT/IFFT transforms. */ -#include "dsputil.h" +#include "libavutil/mathematics.h" +#include "fft.h" /* cos(2*pi*x/n) for 0<=x<=n/4, followed by its reverse */ #if !CONFIG_HARDCODED_TABLES diff --git a/libavcodec/fft.h b/libavcodec/fft.h new file mode 100644 index 0000000000..f3e7d7aa4e --- /dev/null +++ b/libavcodec/fft.h @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * Copyright (c) 2002-2004 Michael Niedermayer + * + * This file is part of FFmpeg. + * + * 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. + * + * 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_FFT_H +#define AVCODEC_FFT_H + +#include +#include "config.h" +#include "libavutil/mem.h" + +/* FFT computation */ + +/* NOTE: soon integer code will be added, so you must use the + FFTSample type */ +typedef float FFTSample; + +typedef struct FFTComplex { + FFTSample re, im; +} FFTComplex; + +typedef struct FFTContext { + int nbits; + int inverse; + uint16_t *revtab; + FFTComplex *exptab; + FFTComplex *exptab1; /* only used by SSE code */ + FFTComplex *tmp_buf; + int mdct_size; /* size of MDCT (i.e. number of input data * 2) */ + int mdct_bits; /* n = 2^nbits */ + /* pre/post rotation tables */ + FFTSample *tcos; + FFTSample *tsin; + void (*fft_permute)(struct FFTContext *s, FFTComplex *z); + void (*fft_calc)(struct FFTContext *s, FFTComplex *z); + void (*imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); + void (*imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input); + void (*mdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); + int split_radix; + int permutation; +#define FF_MDCT_PERM_NONE 0 +#define FF_MDCT_PERM_INTERLEAVE 1 +} FFTContext; + +#if CONFIG_HARDCODED_TABLES +#define COSTABLE_CONST const +#define SINTABLE_CONST const +#define SINETABLE_CONST const +#else +#define COSTABLE_CONST +#define SINTABLE_CONST +#define SINETABLE_CONST +#endif + +#define COSTABLE(size) \ + COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2] +#define SINTABLE(size) \ + SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2] +#define SINETABLE(size) \ + SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size] +extern COSTABLE(16); +extern COSTABLE(32); +extern COSTABLE(64); +extern COSTABLE(128); +extern COSTABLE(256); +extern COSTABLE(512); +extern COSTABLE(1024); +extern COSTABLE(2048); +extern COSTABLE(4096); +extern COSTABLE(8192); +extern COSTABLE(16384); +extern COSTABLE(32768); +extern COSTABLE(65536); +extern COSTABLE_CONST FFTSample* const ff_cos_tabs[17]; + +/** + * Initializes the cosine table in ff_cos_tabs[index] + * \param index index in ff_cos_tabs array of the table to initialize + */ +void ff_init_ff_cos_tabs(int index); + +extern SINTABLE(16); +extern SINTABLE(32); +extern SINTABLE(64); +extern SINTABLE(128); +extern SINTABLE(256); +extern SINTABLE(512); +extern SINTABLE(1024); +extern SINTABLE(2048); +extern SINTABLE(4096); +extern SINTABLE(8192); +extern SINTABLE(16384); +extern SINTABLE(32768); +extern SINTABLE(65536); + +/** + * Sets up a complex FFT. + * @param nbits log2 of the length of the input array + * @param inverse if 0 perform the forward transform, if 1 perform the inverse + */ +int ff_fft_init(FFTContext *s, int nbits, int inverse); +void ff_fft_permute_c(FFTContext *s, FFTComplex *z); +void ff_fft_calc_c(FFTContext *s, FFTComplex *z); + +void ff_fft_init_altivec(FFTContext *s); +void ff_fft_init_mmx(FFTContext *s); +void ff_fft_init_arm(FFTContext *s); + +/** + * Do the permutation needed BEFORE calling ff_fft_calc(). + */ +static inline void ff_fft_permute(FFTContext *s, FFTComplex *z) +{ + s->fft_permute(s, z); +} +/** + * Do a complex FFT with the parameters defined in ff_fft_init(). The + * input data must be permuted before. No 1.0/sqrt(n) normalization is done. + */ +static inline void ff_fft_calc(FFTContext *s, FFTComplex *z) +{ + s->fft_calc(s, z); +} +void ff_fft_end(FFTContext *s); + +/* MDCT computation */ + +static inline void ff_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input) +{ + s->imdct_calc(s, output, input); +} +static inline void ff_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input) +{ + s->imdct_half(s, output, input); +} + +static inline void ff_mdct_calc(FFTContext *s, FFTSample *output, + const FFTSample *input) +{ + s->mdct_calc(s, output, input); +} + +/** + * Generate a Kaiser-Bessel Derived Window. + * @param window pointer to half window + * @param alpha determines window shape + * @param n size of half window + */ +void ff_kbd_window_init(float *window, float alpha, int n); + +/** + * Generate a sine window. + * @param window pointer to half window + * @param n size of half window + */ +void ff_sine_window_init(float *window, int n); + +/** + * initialize the specified entry of ff_sine_windows + */ +void ff_init_ff_sine_windows(int index); +extern SINETABLE( 32); +extern SINETABLE( 64); +extern SINETABLE( 128); +extern SINETABLE( 256); +extern SINETABLE( 512); +extern SINETABLE(1024); +extern SINETABLE(2048); +extern SINETABLE(4096); +extern SINETABLE_CONST float * const ff_sine_windows[13]; + +int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); +void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); +void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); +void ff_mdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); +void ff_mdct_end(FFTContext *s); + +/* Real Discrete Fourier Transform */ + +enum RDFTransformType { + RDFT, + IRDFT, + RIDFT, + IRIDFT, +}; + +typedef struct { + int nbits; + int inverse; + int sign_convention; + + /* pre/post rotation tables */ + const FFTSample *tcos; + SINTABLE_CONST FFTSample *tsin; + FFTContext fft; +} RDFTContext; + +/** + * Sets up a real FFT. + * @param nbits log2 of the length of the input array + * @param trans the type of transform + */ +int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans); +void ff_rdft_calc(RDFTContext *s, FFTSample *data); +void ff_rdft_end(RDFTContext *s); + +/* Discrete Cosine Transform */ + +typedef struct { + int nbits; + int inverse; + FFTSample *data; + RDFTContext rdft; + const float *costab; + FFTSample *csc2; +} DCTContext; + +/** + * Sets up (Inverse)DCT. + * @param nbits log2 of the length of the input array + * @param inverse >0 forward transform, <0 inverse transform + */ +int ff_dct_init(DCTContext *s, int nbits, int inverse); +void ff_dct_calc(DCTContext *s, FFTSample *data); +void ff_dct_end (DCTContext *s); + +#endif /* AVCODEC_FFT_H */ diff --git a/libavcodec/imc.c b/libavcodec/imc.c index 54c22df978..c8bf3367ac 100644 --- a/libavcodec/imc.c +++ b/libavcodec/imc.c @@ -38,6 +38,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "imcdata.h" diff --git a/libavcodec/mdct.c b/libavcodec/mdct.c index 8734bdc56f..87908d3d66 100644 --- a/libavcodec/mdct.c +++ b/libavcodec/mdct.c @@ -18,7 +18,9 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "dsputil.h" + +#include "libavutil/mathematics.h" +#include "fft.h" /** * @file libavcodec/mdct.c diff --git a/libavcodec/nellymoserdec.c b/libavcodec/nellymoserdec.c index 911d3ae86a..a2c67f65e0 100644 --- a/libavcodec/nellymoserdec.c +++ b/libavcodec/nellymoserdec.c @@ -36,6 +36,7 @@ #include "libavutil/random_seed.h" #include "avcodec.h" #include "dsputil.h" +#include "fft.h" #define ALT_BITSTREAM_READER_LE #include "get_bits.h" diff --git a/libavcodec/nellymoserenc.c b/libavcodec/nellymoserenc.c index 6f413a1c14..95ab22fa3e 100644 --- a/libavcodec/nellymoserenc.c +++ b/libavcodec/nellymoserenc.c @@ -38,6 +38,7 @@ #include "nellymoser.h" #include "avcodec.h" #include "dsputil.h" +#include "fft.h" #define BITSTREAM_WRITER_LE #include "put_bits.h" diff --git a/libavcodec/ppc/fft_altivec.c b/libavcodec/ppc/fft_altivec.c index 83b2b7f07b..8f6941f507 100644 --- a/libavcodec/ppc/fft_altivec.c +++ b/libavcodec/ppc/fft_altivec.c @@ -20,7 +20,7 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavcodec/dsputil.h" +#include "libavcodec/fft.h" #include "dsputil_ppc.h" #include "util_altivec.h" /** diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c index 275befbd39..dcfa5320d7 100644 --- a/libavcodec/qdm2.c +++ b/libavcodec/qdm2.c @@ -38,6 +38,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "mpegaudio.h" #include "qdm2data.h" diff --git a/libavcodec/rdft.c b/libavcodec/rdft.c index d6f82a7c7e..8638a55ca1 100644 --- a/libavcodec/rdft.c +++ b/libavcodec/rdft.c @@ -19,7 +19,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include -#include "dsputil.h" +#include "libavutil/mathematics.h" +#include "fft.h" /** * @file libavcodec/rdft.c diff --git a/libavcodec/synth_filter.c b/libavcodec/synth_filter.c index a48939dbf3..a252b5c2b0 100644 --- a/libavcodec/synth_filter.c +++ b/libavcodec/synth_filter.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "fft.h" #include "synth_filter.h" void ff_synth_filter_float(FFTContext *imdct, diff --git a/libavcodec/twinvq.c b/libavcodec/twinvq.c index f1073722d8..e460ea9623 100644 --- a/libavcodec/twinvq.c +++ b/libavcodec/twinvq.c @@ -22,6 +22,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "lsp.h" #include diff --git a/libavcodec/vorbis_dec.c b/libavcodec/vorbis_dec.c index 31d5092528..ae45c1f746 100644 --- a/libavcodec/vorbis_dec.c +++ b/libavcodec/vorbis_dec.c @@ -30,6 +30,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "fft.h" #include "vorbis.h" #include "xiph.h" diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c index 4e641386c7..f33f431655 100644 --- a/libavcodec/vorbis_enc.c +++ b/libavcodec/vorbis_enc.c @@ -27,6 +27,7 @@ #include #include "avcodec.h" #include "dsputil.h" +#include "fft.h" #include "vorbis.h" #include "vorbis_enc_data.h" diff --git a/libavcodec/wma.h b/libavcodec/wma.h index 00d99eff19..11274ad970 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -25,6 +25,7 @@ #include "get_bits.h" #include "put_bits.h" #include "dsputil.h" +#include "fft.h" /* size of blocks */ #define BLOCK_MIN_BITS 7 diff --git a/libavcodec/x86/fft.h b/libavcodec/x86/fft.h index b0fff1b120..7ef5839141 100644 --- a/libavcodec/x86/fft.h +++ b/libavcodec/x86/fft.h @@ -19,7 +19,7 @@ #ifndef AVCODEC_X86_FFT_H #define AVCODEC_X86_FFT_H -#include "libavcodec/dsputil.h" +#include "libavcodec/fft.h" void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); void ff_fft_calc_sse(FFTContext *s, FFTComplex *z);