diff --git a/apps/codecs/libmad/SOURCES b/apps/codecs/libmad/SOURCES index b7e1957326..a4ffcb5c64 100644 --- a/apps/codecs/libmad/SOURCES +++ b/apps/codecs/libmad/SOURCES @@ -14,6 +14,5 @@ imdct_mcf5249.S #endif #if defined(CPU_ARM) imdct_l_arm.S -dct32_arm.S synth_full_arm.S #endif diff --git a/apps/codecs/libmad/libmad.make b/apps/codecs/libmad/libmad.make index 331ee8916f..58d2dc84e6 100644 --- a/apps/codecs/libmad/libmad.make +++ b/apps/codecs/libmad/libmad.make @@ -11,7 +11,18 @@ # (one for codec, one for mpegplayer) # so a little trickery is necessary -MADFLAGS = $(CODECFLAGS) -UDEBUG -DNDEBUG -O2 -I$(APPSDIR)/codecs/libmad -DHAVE_LIMITS_H +# Extract optimization level ('-O') from compile flags. Will be set later. +MADFLAGS = $(filter-out -O%,$(CODECFLAGS)) -I$(APPSDIR)/codecs/libmad +MADFLAGS += -UDEBUG -DNDEBUG -DHAVE_LIMITS_H + +# libmad is faster on ARM-targets with -O1 than -O2 +ifeq ($(CPU),arm) + MADFLAGS += -O1 +else + MADFLAGS += -O2 +endif + +# MPEGplayer MPEGMADFLAGS = $(MADFLAGS) -DMPEGPLAYER # libmad diff --git a/apps/codecs/libmad/synth.c b/apps/codecs/libmad/synth.c index 7f1c2e6fc0..5ae9811ead 100644 --- a/apps/codecs/libmad/synth.c +++ b/apps/codecs/libmad/synth.c @@ -67,7 +67,8 @@ void mad_synth_mute(struct mad_synth *synth) } } -#ifdef FPM_ARM +#if 0 /* dct32 asm implementation is slower on current arm systems */ +/* #ifdef FPM_ARM */ void dct32(mad_fixed_t const in[32], unsigned int slot, mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]); diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c index 2fa7d02bbd..6fea80807f 100644 --- a/apps/codecs/mpa.c +++ b/apps/codecs/mpa.c @@ -202,7 +202,7 @@ static void set_elapsed(struct mp3entry* id3) * Run the synthesis filter on the COProcessor */ -static int mad_synth_thread_stack[DEFAULT_STACK_SIZE/sizeof(int)/2] IBSS_ATTR; +static int mad_synth_thread_stack[DEFAULT_STACK_SIZE/sizeof(int)] IBSS_ATTR; static const unsigned char * const mad_synth_thread_name = "mp3dec"; static unsigned int mad_synth_thread_id = 0;