Mercurial > libavcodec.hg
comparison dsputil.h @ 7544:ee1cb5ab9f99 libavcodec
optimize imdct_half:
remove tmp buffer.
skip fft reinterleave pass, leaving data in a format more convenient for simd.
merge post-rotate with post-reorder.
author | lorenm |
---|---|
date | Tue, 12 Aug 2008 00:33:34 +0000 |
parents | a8a8205a9081 |
children | 97383e012cb9 |
comparison
equal
deleted
inserted
replaced
7543:f04ff5a6fb55 | 7544:ee1cb5ab9f99 |
---|---|
643 void (*fft_permute)(struct FFTContext *s, FFTComplex *z); | 643 void (*fft_permute)(struct FFTContext *s, FFTComplex *z); |
644 void (*fft_calc)(struct FFTContext *s, FFTComplex *z); | 644 void (*fft_calc)(struct FFTContext *s, FFTComplex *z); |
645 void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, | 645 void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, |
646 const FFTSample *input, FFTSample *tmp); | 646 const FFTSample *input, FFTSample *tmp); |
647 void (*imdct_half)(struct MDCTContext *s, FFTSample *output, | 647 void (*imdct_half)(struct MDCTContext *s, FFTSample *output, |
648 const FFTSample *input, FFTSample *tmp); | 648 const FFTSample *input); |
649 } FFTContext; | 649 } FFTContext; |
650 | 650 |
651 int ff_fft_init(FFTContext *s, int nbits, int inverse); | 651 int ff_fft_init(FFTContext *s, int nbits, int inverse); |
652 void ff_fft_permute_c(FFTContext *s, FFTComplex *z); | 652 void ff_fft_permute_c(FFTContext *s, FFTComplex *z); |
653 void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); | 653 void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); |
694 void ff_sine_window_init(float *window, int n); | 694 void ff_sine_window_init(float *window, int n); |
695 | 695 |
696 int ff_mdct_init(MDCTContext *s, int nbits, int inverse); | 696 int ff_mdct_init(MDCTContext *s, int nbits, int inverse); |
697 void ff_imdct_calc(MDCTContext *s, FFTSample *output, | 697 void ff_imdct_calc(MDCTContext *s, FFTSample *output, |
698 const FFTSample *input, FFTSample *tmp); | 698 const FFTSample *input, FFTSample *tmp); |
699 void ff_imdct_half(MDCTContext *s, FFTSample *output, | 699 void ff_imdct_half(MDCTContext *s, FFTSample *output, const FFTSample *input); |
700 const FFTSample *input, FFTSample *tmp); | 700 void ff_imdct_calc_3dn(MDCTContext *s, FFTSample *output, |
701 const FFTSample *input, FFTSample *tmp); | |
702 void ff_imdct_half_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); | |
701 void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, | 703 void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, |
702 const FFTSample *input, FFTSample *tmp); | 704 const FFTSample *input, FFTSample *tmp); |
703 void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, | 705 void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); |
704 const FFTSample *input, FFTSample *tmp); | |
705 void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, | 706 void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, |
706 const FFTSample *input, FFTSample *tmp); | 707 const FFTSample *input, FFTSample *tmp); |
707 void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, | 708 void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); |
708 const FFTSample *input, FFTSample *tmp); | |
709 void ff_mdct_calc(MDCTContext *s, FFTSample *out, | 709 void ff_mdct_calc(MDCTContext *s, FFTSample *out, |
710 const FFTSample *input, FFTSample *tmp); | 710 const FFTSample *input, FFTSample *tmp); |
711 void ff_mdct_end(MDCTContext *s); | 711 void ff_mdct_end(MDCTContext *s); |
712 | 712 |
713 #define WRAPPER8_16(name8, name16)\ | 713 #define WRAPPER8_16(name8, name16)\ |