Mercurial > libavcodec.hg
comparison dsputil.h @ 10153:7a63015e4627 libavcodec
ARM: NEON optimised FFT and MDCT
Vorbis and AC3 ~3x faster.
Parts by Naotoshi Nojiri, naonoj gmail
author | mru |
---|---|
date | Thu, 10 Sep 2009 08:50:03 +0000 |
parents | 50ec8930f99e |
children | a349795e8dca |
comparison
equal
deleted
inserted
replaced
10152:ed85bbd5dccb | 10153:7a63015e4627 |
---|---|
692 * @param inverse if 0 perform the forward transform, if 1 perform the inverse | 692 * @param inverse if 0 perform the forward transform, if 1 perform the inverse |
693 */ | 693 */ |
694 int ff_fft_init(FFTContext *s, int nbits, int inverse); | 694 int ff_fft_init(FFTContext *s, int nbits, int inverse); |
695 void ff_fft_permute_c(FFTContext *s, FFTComplex *z); | 695 void ff_fft_permute_c(FFTContext *s, FFTComplex *z); |
696 void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); | 696 void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); |
697 void ff_fft_permute_neon(FFTContext *s, FFTComplex *z); | |
697 void ff_fft_calc_c(FFTContext *s, FFTComplex *z); | 698 void ff_fft_calc_c(FFTContext *s, FFTComplex *z); |
698 void ff_fft_calc_sse(FFTContext *s, FFTComplex *z); | 699 void ff_fft_calc_sse(FFTContext *s, FFTComplex *z); |
699 void ff_fft_calc_3dn(FFTContext *s, FFTComplex *z); | 700 void ff_fft_calc_3dn(FFTContext *s, FFTComplex *z); |
700 void ff_fft_calc_3dn2(FFTContext *s, FFTComplex *z); | 701 void ff_fft_calc_3dn2(FFTContext *s, FFTComplex *z); |
701 void ff_fft_calc_altivec(FFTContext *s, FFTComplex *z); | 702 void ff_fft_calc_altivec(FFTContext *s, FFTComplex *z); |
703 void ff_fft_calc_neon(FFTContext *s, FFTComplex *z); | |
702 | 704 |
703 /** | 705 /** |
704 * Do the permutation needed BEFORE calling ff_fft_calc(). | 706 * Do the permutation needed BEFORE calling ff_fft_calc(). |
705 */ | 707 */ |
706 static inline void ff_fft_permute(FFTContext *s, FFTComplex *z) | 708 static inline void ff_fft_permute(FFTContext *s, FFTComplex *z) |
766 void ff_imdct_half_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); | 768 void ff_imdct_half_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); |
767 void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); | 769 void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); |
768 void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); | 770 void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); |
769 void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); | 771 void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); |
770 void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); | 772 void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); |
773 void ff_imdct_calc_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); | |
774 void ff_imdct_half_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); | |
771 void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input); | 775 void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input); |
772 void ff_mdct_end(MDCTContext *s); | 776 void ff_mdct_end(MDCTContext *s); |
773 | 777 |
774 /* Real Discrete Fourier Transform */ | 778 /* Real Discrete Fourier Transform */ |
775 | 779 |