comparison dsputil.h @ 3555:5ea82888103e libavcodec

3dnow2 implementation of imdct. 6% faster vorbis and wma.
author lorenm
date Tue, 08 Aug 2006 04:01:04 +0000
parents 545a15c19c91
children 945caa35ee9a
comparison
equal deleted inserted replaced
3554:ce5554dd79ce 3555:5ea82888103e
592 592
593 /* NOTE: soon integer code will be added, so you must use the 593 /* NOTE: soon integer code will be added, so you must use the
594 FFTSample type */ 594 FFTSample type */
595 typedef float FFTSample; 595 typedef float FFTSample;
596 596
597 struct MDCTContext;
598
597 typedef struct FFTComplex { 599 typedef struct FFTComplex {
598 FFTSample re, im; 600 FFTSample re, im;
599 } FFTComplex; 601 } FFTComplex;
600 602
601 typedef struct FFTContext { 603 typedef struct FFTContext {
603 int inverse; 605 int inverse;
604 uint16_t *revtab; 606 uint16_t *revtab;
605 FFTComplex *exptab; 607 FFTComplex *exptab;
606 FFTComplex *exptab1; /* only used by SSE code */ 608 FFTComplex *exptab1; /* only used by SSE code */
607 void (*fft_calc)(struct FFTContext *s, FFTComplex *z); 609 void (*fft_calc)(struct FFTContext *s, FFTComplex *z);
610 void (*imdct_calc)(struct MDCTContext *s, FFTSample *output,
611 const FFTSample *input, FFTSample *tmp);
608 } FFTContext; 612 } FFTContext;
609 613
610 int ff_fft_init(FFTContext *s, int nbits, int inverse); 614 int ff_fft_init(FFTContext *s, int nbits, int inverse);
611 void ff_fft_permute(FFTContext *s, FFTComplex *z); 615 void ff_fft_permute(FFTContext *s, FFTComplex *z);
612 void ff_fft_calc_c(FFTContext *s, FFTComplex *z); 616 void ff_fft_calc_c(FFTContext *s, FFTComplex *z);
633 } MDCTContext; 637 } MDCTContext;
634 638
635 int ff_mdct_init(MDCTContext *s, int nbits, int inverse); 639 int ff_mdct_init(MDCTContext *s, int nbits, int inverse);
636 void ff_imdct_calc(MDCTContext *s, FFTSample *output, 640 void ff_imdct_calc(MDCTContext *s, FFTSample *output,
637 const FFTSample *input, FFTSample *tmp); 641 const FFTSample *input, FFTSample *tmp);
642 void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output,
643 const FFTSample *input, FFTSample *tmp);
638 void ff_mdct_calc(MDCTContext *s, FFTSample *out, 644 void ff_mdct_calc(MDCTContext *s, FFTSample *out,
639 const FFTSample *input, FFTSample *tmp); 645 const FFTSample *input, FFTSample *tmp);
640 void ff_mdct_end(MDCTContext *s); 646 void ff_mdct_end(MDCTContext *s);
641 647
642 #define WARPER8_16(name8, name16)\ 648 #define WARPER8_16(name8, name16)\