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