From d5ea3b4e444fc72dd5e9ba9004ab486dd3716262 Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 30 Dec 2001 21:53:56 +0000 Subject: runtime cpudetect the liba52 way part 2 (downmix.c) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3911 b3059339-0415-0410-9bf9-f77b7e298cf2 --- liba52/a52_internal.h | 1 + liba52/downmix.c | 23 ++++++++++++----------- liba52/parse.c | 1 + 3 files changed, 14 insertions(+), 11 deletions(-) (limited to 'liba52') diff --git a/liba52/a52_internal.h b/liba52/a52_internal.h index edd6642d5c..847c66e169 100644 --- a/liba52/a52_internal.h +++ b/liba52/a52_internal.h @@ -43,6 +43,7 @@ void bit_allocate (a52_state_t * state, a52_ba_t * ba, int bndstart, 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 --git a/liba52/downmix.c b/liba52/downmix.c index deb192a204..75c823f244 100644 --- a/liba52/downmix.c +++ b/liba52/downmix.c @@ -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 @@ static void downmix_C (sample_t * samples, int acmod, int output, sample_t bias, 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 downmix_init (int input, int flags, sample_t * level, }; 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 --git a/liba52/parse.c b/liba52/parse.c index 05f58b1415..60858a9f31 100644 --- a/liba52/parse.c +++ b/liba52/parse.c @@ -57,6 +57,7 @@ sample_t * a52_init (uint32_t mm_accel) int i; imdct_init (mm_accel); + downmix_accel_init(mm_accel); samples = memalign (16, 256 * 12 * sizeof (sample_t)); if (samples == NULL) -- cgit v1.2.3