summaryrefslogtreecommitdiffstats
path: root/mp3lib
diff options
context:
space:
mode:
Diffstat (limited to 'mp3lib')
-rw-r--r--mp3lib/Makefile24
-rw-r--r--mp3lib/decod386.c9
-rw-r--r--mp3lib/sr1.c10
3 files changed, 34 insertions, 9 deletions
diff --git a/mp3lib/Makefile b/mp3lib/Makefile
index 6aa93c4275..3b1845cc9b 100644
--- a/mp3lib/Makefile
+++ b/mp3lib/Makefile
@@ -1,12 +1,26 @@
-include config.mak
+include ../config.mak
-SRCS = sr1.c d_cpu.s decode_i586.s dct64_MMX.s decode_MMX.s tabinit_MMX.s\
-dct36_3dnow.s dct64_3dnow.s dct36_k7.s dct64_k7.s
-OBJS = sr1.o d_cpu.o decode_i586.o dct64_MMX.o decode_MMX.o tabinit_MMX.o\
-dct36_3dnow.o dct64_3dnow.o dct36_k7.o dct64_k7.o
+SRCS = sr1.c d_cpu.s
+OBJS = sr1.o d_cpu.o
# OBJS = $(SRCS:.c,.s=.o)
CFLAGS = $(OPTFLAGS) $(EXTRA_INC)
+ifeq ($(TARGET_ARCH_X86),yes)
+SRCS += decode_i586.s
+OBJS += decode_i586.o
+ifeq ($(TARGET_MMX),yes)
+SRCS += decode_MMX.s dct64_MMX.s tabinit_MMX.s
+OBJS += decode_MMX.o dct64_MMX.o tabinit_MMX.o
+endif
+ifeq ($(TARGET_3DNOW),yes)
+SRCS += dct36_3dnow.s dct64_3dnow.s
+OBJS += dct36_3dnow.o dct64_3dnow.o
+endif
+ifeq ($(TARGET_3DNOWEX),yes)
+SRCS += dct36_k7.s dct64_k7.s
+OBJS += dct36_k7.o dct64_k7.o
+endif
+endif
.SUFFIXES: .c .o
diff --git a/mp3lib/decod386.c b/mp3lib/decod386.c
index 9939886023..fc88ae2851 100644
--- a/mp3lib/decod386.c
+++ b/mp3lib/decod386.c
@@ -107,14 +107,15 @@ static int synth_1to1_r(real *bandPtr,int channel,unsigned char *out,int *pnt)
synth_func_t synth_func;
+#ifdef HAVE_MMX
int synth_1to1_MMX( real *bandPtr,int channel,short * samples)
{
static short buffs[2][2][0x110];
static int bo = 1;
synth_1to1_MMX_s(bandPtr, channel, samples, (short *) buffs, &bo);
return 0;
- }
-
+}
+#endif
static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
{
static real buffs[2][2][0x110];
@@ -125,7 +126,7 @@ static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
real *b0,(*buf)[0x110];
int clip = 0;
int bo1;
-
+#ifdef ARCH_X86
if ( synth_func )
{
int ret;
@@ -133,7 +134,7 @@ static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
*pnt+=128;
return ret;
}
-
+#endif
if(!channel) { /* channel=0 */
bo--;
bo &= 0xf;
diff --git a/mp3lib/sr1.c b/mp3lib/sr1.c
index b866bf29e3..ac5828740d 100644
--- a/mp3lib/sr1.c
+++ b/mp3lib/sr1.c
@@ -415,12 +415,15 @@ void MP3_Init(){
tables_done_flag=1;
dct36_func=dct36;
+#ifdef HAVE_SSE
if(_isse)
{
synth_func=synth_1to1_MMX;
dct64_MMX_func=dct64_MMX;
}
else
+#endif
+#ifdef HAVE_3DNOWEX
if ( _3dnow > 1 )
{
synth_func=synth_1to1_MMX;
@@ -428,6 +431,8 @@ void MP3_Init(){
dct64_MMX_func=dct64_MMX_3dnowex;
}
else
+#endif
+#ifdef HAVE_3DNOW
if ( _3dnow )
{
synth_func=synth_1to1_MMX;
@@ -435,17 +440,22 @@ void MP3_Init(){
dct64_MMX_func=dct64_MMX_3dnow;
}
else
+#endif
+#ifdef HAVE_MMX
if ( _i586 > 1)
{
synth_func=synth_1to1_MMX;
dct64_MMX_func=dct64_MMX;
}
else
+#endif
+#ifdef ARCH_X86
if ( _i586 )
{
synth_func=synth_1to1_pent;
}
else
+#endif
{
synth_func = NULL;
}