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