mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
clean up FFT SIMD selection
Originally committed as revision 12477 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
53620bba51
commit
844ea46aeb
@ -34,6 +34,8 @@ int ff_fft_init(FFTContext *s, int nbits, int inverse)
|
||||
{
|
||||
int i, j, m, n;
|
||||
float alpha, c1, s1, s2;
|
||||
int shuffle = 0;
|
||||
int av_unused has_vectors;
|
||||
|
||||
s->nbits = nbits;
|
||||
n = 1 << nbits;
|
||||
@ -59,32 +61,33 @@ int ff_fft_init(FFTContext *s, int nbits, int inverse)
|
||||
s->imdct_calc = ff_imdct_calc;
|
||||
s->exptab1 = NULL;
|
||||
|
||||
/* compute constant table for HAVE_SSE version */
|
||||
#if defined(HAVE_MMX) \
|
||||
|| (defined(HAVE_ALTIVEC) && !defined(ALTIVEC_USE_REFERENCE_C_CODE))
|
||||
{
|
||||
int has_vectors = mm_support();
|
||||
|
||||
if (has_vectors) {
|
||||
#if defined(HAVE_MMX)
|
||||
if (has_vectors & MM_3DNOWEXT) {
|
||||
/* 3DNowEx for K7/K8 */
|
||||
s->imdct_calc = ff_imdct_calc_3dn2;
|
||||
s->fft_calc = ff_fft_calc_3dn2;
|
||||
} else if (has_vectors & MM_3DNOW) {
|
||||
/* 3DNow! for K6-2/3 */
|
||||
s->fft_calc = ff_fft_calc_3dn;
|
||||
} else if (has_vectors & MM_SSE) {
|
||||
/* SSE for P3/P4 */
|
||||
s->imdct_calc = ff_imdct_calc_sse;
|
||||
s->fft_calc = ff_fft_calc_sse;
|
||||
}
|
||||
#else /* HAVE_MMX */
|
||||
if (has_vectors & MM_ALTIVEC)
|
||||
s->fft_calc = ff_fft_calc_altivec;
|
||||
#ifdef HAVE_MMX
|
||||
has_vectors = mm_support();
|
||||
shuffle = 1;
|
||||
if (has_vectors & MM_3DNOWEXT) {
|
||||
/* 3DNowEx for K7/K8 */
|
||||
s->imdct_calc = ff_imdct_calc_3dn2;
|
||||
s->fft_calc = ff_fft_calc_3dn2;
|
||||
} else if (has_vectors & MM_3DNOW) {
|
||||
/* 3DNow! for K6-2/3 */
|
||||
s->fft_calc = ff_fft_calc_3dn;
|
||||
} else if (has_vectors & MM_SSE) {
|
||||
/* SSE for P3/P4 */
|
||||
s->imdct_calc = ff_imdct_calc_sse;
|
||||
s->fft_calc = ff_fft_calc_sse;
|
||||
} else {
|
||||
shuffle = 0;
|
||||
}
|
||||
#elif defined HAVE_ALTIVEC && !defined ALTIVEC_USE_REFERENCE_C_CODE
|
||||
has_vectors = mm_support();
|
||||
if (has_vectors & MM_ALTIVEC) {
|
||||
s->fft_calc = ff_fft_calc_altivec;
|
||||
shuffle = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (s->fft_calc != ff_fft_calc_c) {
|
||||
|
||||
/* compute constant table for HAVE_SSE version */
|
||||
if (shuffle) {
|
||||
int np, nblocks, np2, l;
|
||||
FFTComplex *q;
|
||||
|
||||
@ -111,8 +114,6 @@ int ff_fft_init(FFTContext *s, int nbits, int inverse)
|
||||
} while (nblocks != 0);
|
||||
av_freep(&s->exptab);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* compute bit reverse table */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user