summaryrefslogtreecommitdiffstats
path: root/liba52/downmix.c
diff options
context:
space:
mode:
Diffstat (limited to 'liba52/downmix.c')
-rw-r--r--liba52/downmix.c23
1 files changed, 12 insertions, 11 deletions
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 <string.h>
#include <inttypes.h>
#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;