# HG changeset patch # User michael # Date 1009749236 0 # Node ID db1d556fcf5835f33a2780a1916ab367cf70d4b1 # Parent ef32c8bdee8134f220e6cafea40d3b7f6bfbae94 runtime cpudetect the liba52 way part 2 (downmix.c) diff -r ef32c8bdee81 -r db1d556fcf58 liba52/a52_internal.h --- a/liba52/a52_internal.h Sun Dec 30 21:44:10 2001 +0000 +++ b/liba52/a52_internal.h Sun Dec 30 21:53:56 2001 +0000 @@ -43,6 +43,7 @@ int downmix_init (int input, int flags, sample_t * level, sample_t clev, sample_t slev); +void downmix_accel_init(uint32_t mm_accel); int downmix_coeff (sample_t * coeff, int acmod, int output, sample_t level, sample_t clev, sample_t slev); extern void (*downmix) (sample_t * samples, int acmod, int output, sample_t bias, diff -r ef32c8bdee81 -r db1d556fcf58 liba52/downmix.c --- a/liba52/downmix.c Sun Dec 30 21:44:10 2001 +0000 +++ b/liba52/downmix.c Sun Dec 30 21:53:56 2001 +0000 @@ -24,18 +24,16 @@ */ #include "config.h" -#include "../cpudetect.h" #include #include #include "a52.h" #include "a52_internal.h" +#include "mm_accel.h" #define CONVERT(acmod,output) (((output) << 3) + (acmod)) -//#undef HAVE_SSE -//#undef HAVE_MMX void (*downmix)(sample_t * samples, int acmod, int output, sample_t bias, sample_t clev, sample_t slev)= NULL; @@ -47,7 +45,17 @@ sample_t clev, sample_t slev); static void upmix_MMX (sample_t * samples, int acmod, int output); static void upmix_C (sample_t * samples, int acmod, int output); - + +void downmix_accel_init(uint32_t mm_accel) +{ + upmix= upmix_C; + downmix= downmix_C; +#ifdef ARCH_X86 + if(mm_accel & MM_ACCEL_X86_MMX) upmix= upmix_MMX; + if(mm_accel & MM_ACCEL_X86_SSE) downmix= downmix_SSE; +#endif +} + int downmix_init (int input, int flags, sample_t * level, sample_t clev, sample_t slev) { @@ -77,13 +85,6 @@ }; int output; - upmix= upmix_C; - downmix= downmix_C; -#ifdef ARCH_X86 - if(gCpuCaps.hasMMX) upmix= upmix_MMX; - if(gCpuCaps.hasSSE) downmix= downmix_SSE; -#endif - output = flags & A52_CHANNEL_MASK; if (output > A52_DOLBY) return -1; diff -r ef32c8bdee81 -r db1d556fcf58 liba52/parse.c --- a/liba52/parse.c Sun Dec 30 21:44:10 2001 +0000 +++ b/liba52/parse.c Sun Dec 30 21:53:56 2001 +0000 @@ -57,6 +57,7 @@ int i; imdct_init (mm_accel); + downmix_accel_init(mm_accel); samples = memalign (16, 256 * 12 * sizeof (sample_t)); if (samples == NULL)