Mercurial > libavcodec.hg
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)\ |