X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Ffft.h;h=57dc17f373cc424626cb614ef7cb639c1cc4e1b1;hb=89a13998a1b5074411dff5a461dce3837057b0b8;hp=2f13e5fdb33fa2f9a87a905befdd8b381d4bb802;hpb=7087ce08c84dd20404ba258096530cc547d25c15;p=ffmpeg diff --git a/libavcodec/fft.h b/libavcodec/fft.h index 2f13e5fdb33..57dc17f373c 100644 --- a/libavcodec/fft.h +++ b/libavcodec/fft.h @@ -22,15 +22,15 @@ #ifndef AVCODEC_FFT_H #define AVCODEC_FFT_H -#ifndef CONFIG_FFT_FLOAT -#define CONFIG_FFT_FLOAT 1 +#ifndef FFT_FLOAT +#define FFT_FLOAT 1 #endif #include #include "config.h" #include "libavutil/mem.h" -#if CONFIG_FFT_FLOAT +#if FFT_FLOAT #include "avfft.h" @@ -51,10 +51,25 @@ typedef struct FFTComplex { typedef struct FFTContext FFTContext; -#endif /* CONFIG_FFT_FLOAT */ +#endif /* FFT_FLOAT */ + +typedef struct FFTDComplex { + FFTDouble re, im; +} FFTDComplex; /* FFT computation */ +enum fft_permutation_type { + FF_FFT_PERM_DEFAULT, + FF_FFT_PERM_SWAP_LSBS, + FF_FFT_PERM_AVX, +}; + +enum mdct_permutation_type { + FF_MDCT_PERM_NONE, + FF_MDCT_PERM_INTERLEAVE, +}; + struct FFTContext { int nbits; int inverse; @@ -77,12 +92,9 @@ struct FFTContext { 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 fft_permutation; -#define FF_FFT_PERM_DEFAULT 0 -#define FF_FFT_PERM_SWAP_LSBS 1 - int mdct_permutation; -#define FF_MDCT_PERM_NONE 0 -#define FF_MDCT_PERM_INTERLEAVE 1 + void (*mdct_calcw)(struct FFTContext *s, FFTDouble *output, const FFTSample *input); + enum fft_permutation_type fft_permutation; + enum mdct_permutation_type mdct_permutation; }; #if CONFIG_HARDCODED_TABLES @@ -92,7 +104,7 @@ struct FFTContext { #endif #define COSTABLE(size) \ - COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, FFT_NAME(ff_cos_##size))[size/2] + COSTABLE_CONST DECLARE_ALIGNED(32, FFTSample, FFT_NAME(ff_cos_##size))[size/2] extern COSTABLE(16); extern COSTABLE(32); @@ -113,7 +125,7 @@ extern COSTABLE_CONST FFTSample* const FFT_NAME(ff_cos_tabs)[17]; /** * Initialize the cosine table in ff_cos_tabs[index] - * \param index index in ff_cos_tabs array of the table to initialize + * @param index index in ff_cos_tabs array of the table to initialize */ void ff_init_ff_cos_tabs(int index); @@ -127,9 +139,12 @@ void ff_init_ff_cos_tabs(int index); */ int ff_fft_init(FFTContext *s, int nbits, int inverse); -void ff_fft_init_altivec(FFTContext *s); -void ff_fft_init_mmx(FFTContext *s); +void ff_fft_init_aarch64(FFTContext *s); +void ff_fft_init_x86(FFTContext *s); void ff_fft_init_arm(FFTContext *s); +void ff_fft_init_ppc(FFTContext *s); + +void ff_fft_fixed_init_arm(FFTContext *s); void ff_fft_end(FFTContext *s); @@ -139,4 +154,11 @@ void ff_fft_end(FFTContext *s); int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); void ff_mdct_end(FFTContext *s); +void ff_mdct_init_aarch64(FFTContext *s); +void ff_mdct_init_arm(FFTContext *s); +void ff_mdct_init_ppc(FFTContext *s); +void ff_mdct_init_x86(FFTContext *s); + +void ff_mdct_fixed_init_arm(FFTContext *s); + #endif /* AVCODEC_FFT_H */