Mercurial > libavcodec.hg
comparison arm/fft_init_arm.c @ 11593:b7fa70eabb1f libavcodec
ARM: NEON optimised synth_filter_float
2.7x faster DCA decoding on Cortex-A8
author | mru |
---|---|
date | Sat, 10 Apr 2010 16:27:56 +0000 |
parents | e011e73a902b |
children |
comparison
equal
deleted
inserted
replaced
11592:18f17f44de37 | 11593:b7fa70eabb1f |
---|---|
17 * License along with FFmpeg; if not, write to the Free Software | 17 * License along with FFmpeg; if not, write to the Free Software |
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 */ | 19 */ |
20 | 20 |
21 #include "libavcodec/fft.h" | 21 #include "libavcodec/fft.h" |
22 #include "libavcodec/synth_filter.h" | |
22 | 23 |
23 void ff_fft_permute_neon(FFTContext *s, FFTComplex *z); | 24 void ff_fft_permute_neon(FFTContext *s, FFTComplex *z); |
24 void ff_fft_calc_neon(FFTContext *s, FFTComplex *z); | 25 void ff_fft_calc_neon(FFTContext *s, FFTComplex *z); |
25 | 26 |
26 void ff_imdct_calc_neon(FFTContext *s, FFTSample *output, const FFTSample *input); | 27 void ff_imdct_calc_neon(FFTContext *s, FFTSample *output, const FFTSample *input); |
27 void ff_imdct_half_neon(FFTContext *s, FFTSample *output, const FFTSample *input); | 28 void ff_imdct_half_neon(FFTContext *s, FFTSample *output, const FFTSample *input); |
28 void ff_mdct_calc_neon(FFTContext *s, FFTSample *output, const FFTSample *input); | 29 void ff_mdct_calc_neon(FFTContext *s, FFTSample *output, const FFTSample *input); |
29 | 30 |
30 void ff_rdft_calc_neon(struct RDFTContext *s, FFTSample *z); | 31 void ff_rdft_calc_neon(struct RDFTContext *s, FFTSample *z); |
32 | |
33 void ff_synth_filter_float_neon(FFTContext *imdct, | |
34 float *synth_buf_ptr, int *synth_buf_offset, | |
35 float synth_buf2[32], const float window[512], | |
36 float out[32], const float in[32], | |
37 float scale, float bias); | |
31 | 38 |
32 av_cold void ff_fft_init_arm(FFTContext *s) | 39 av_cold void ff_fft_init_arm(FFTContext *s) |
33 { | 40 { |
34 if (HAVE_NEON) { | 41 if (HAVE_NEON) { |
35 s->fft_permute = ff_fft_permute_neon; | 42 s->fft_permute = ff_fft_permute_neon; |
46 { | 53 { |
47 if (HAVE_NEON) | 54 if (HAVE_NEON) |
48 s->rdft_calc = ff_rdft_calc_neon; | 55 s->rdft_calc = ff_rdft_calc_neon; |
49 } | 56 } |
50 #endif | 57 #endif |
58 | |
59 #if CONFIG_DCA_DECODER | |
60 av_cold void ff_synth_filter_init_arm(SynthFilterContext *s) | |
61 { | |
62 if (HAVE_NEON) | |
63 s->synth_filter_float = ff_synth_filter_float_neon; | |
64 } | |
65 #endif |