diff options
author | Loren Merritt <lorenm@u.washington.edu> | 2008-08-12 00:26:58 +0000 |
---|---|---|
committer | Loren Merritt <lorenm@u.washington.edu> | 2008-08-12 00:26:58 +0000 |
commit | 5d0ddd1a9fcdfbb6b24e75af4384e1d36a1d331e (patch) | |
tree | 7395fe9347c87a04885ace06959a8b0c0a940a7e /libavcodec/dsputil.h | |
parent | bafad220a712f9b3a4fe8cdf5f94b79a9c62dd5a (diff) | |
download | ffmpeg-streaming-5d0ddd1a9fcdfbb6b24e75af4384e1d36a1d331e.zip ffmpeg-streaming-5d0ddd1a9fcdfbb6b24e75af4384e1d36a1d331e.tar.gz |
split-radix FFT
c is 1.9x faster than previous c (on various x86 cpus), sse is 1.6x faster than previous sse.
Originally committed as revision 14698 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dsputil.h')
-rw-r--r-- | libavcodec/dsputil.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index 6a761ce..47ba4d7 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -639,6 +639,8 @@ typedef struct FFTContext { uint16_t *revtab; FFTComplex *exptab; FFTComplex *exptab1; /* only used by SSE code */ + FFTComplex *tmp_buf; + void (*fft_permute)(struct FFTContext *s, FFTComplex *z); void (*fft_calc)(struct FFTContext *s, FFTComplex *z); void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, const FFTSample *input, FFTSample *tmp); @@ -647,13 +649,18 @@ typedef struct FFTContext { } FFTContext; int ff_fft_init(FFTContext *s, int nbits, int inverse); -void ff_fft_permute(FFTContext *s, FFTComplex *z); +void ff_fft_permute_c(FFTContext *s, FFTComplex *z); +void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); void ff_fft_calc_c(FFTContext *s, FFTComplex *z); void ff_fft_calc_sse(FFTContext *s, FFTComplex *z); void ff_fft_calc_3dn(FFTContext *s, FFTComplex *z); void ff_fft_calc_3dn2(FFTContext *s, FFTComplex *z); void ff_fft_calc_altivec(FFTContext *s, FFTComplex *z); +static inline void ff_fft_permute(FFTContext *s, FFTComplex *z) +{ + s->fft_permute(s, z); +} static inline void ff_fft_calc(FFTContext *s, FFTComplex *z) { s->fft_calc(s, z); |