summaryrefslogtreecommitdiffstats
path: root/lib/rbcodec/codecs
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2022-10-13 11:04:12 -0400
committerSolomon Peachy <pizza@shaftnet.org>2022-10-13 11:08:11 -0400
commit9d3d925295112a0080bc1d70fad170db9e1af2a9 (patch)
treef6fb6244519a9430aa97b303e417fba53799b2f0 /lib/rbcodec/codecs
parent418169aff8faf2cf90124cd95dba0af821cea73d (diff)
downloadrockbox-9d3d925295112a0080bc1d70fad170db9e1af2a9.tar.gz
rockbox-9d3d925295112a0080bc1d70fad170db9e1af2a9.zip
Revert "RFC: Get rid of mpegplayer plugin"
This reverts commit d25d24812e8120c0eb133a412287ac030eb185c9. Change-Id: I1563223e343fb1e2eda72a45823b38350025ff93
Diffstat (limited to 'lib/rbcodec/codecs')
-rw-r--r--lib/rbcodec/codecs/libmad/libmad.make25
-rw-r--r--lib/rbcodec/codecs/libmad/mad_iram.h7
-rw-r--r--lib/rbcodec/codecs/mpa.c2
3 files changed, 30 insertions, 4 deletions
diff --git a/lib/rbcodec/codecs/libmad/libmad.make b/lib/rbcodec/codecs/libmad/libmad.make
index 479dd54773..6c50e1d201 100644
--- a/lib/rbcodec/codecs/libmad/libmad.make
+++ b/lib/rbcodec/codecs/libmad/libmad.make
@@ -7,9 +7,16 @@
# $Id$
#
+# we need to build two different mad libraries
+# (one for codec, one for mpegplayer)
+# so a little trickery is necessary
+
MADFLAGS = $(CODECFLAGS) -I$(RBCODECLIB_DIR)/codecs/libmad
MADFLAGS += -UDEBUG -DNDEBUG -DHAVE_LIMITS_H -DHAVE_ASSERT_H
+# MPEGplayer
+MPEGMADFLAGS = $(MADFLAGS) -DMPEGPLAYER
+
# libmad
MADLIB := $(CODECDIR)/libmad.a
MADLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/libmad/SOURCES)
@@ -20,8 +27,26 @@ $(MADLIB): $(MADLIB_OBJ)
$(SILENT)$(shell rm -f $@)
$(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
+# libmad-mpeg
+MPEGMADLIB := $(CODECDIR)/libmad-mpeg.a
+MPEGMADLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/libmad/SOURCES)
+MPEGMADLIB_OBJ := $(addsuffix .o,$(basename $(subst $(RBCODECLIB_DIR)/codecs/libmad,$(RBCODEC_BLD)/codecs/libmad-mpeg,$(MPEGMADLIB_SRC))))
+
+$(MPEGMADLIB): $(MPEGMADLIB_OBJ)
+ $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
+
# pattern rules
+$(CODECDIR)/libmad-mpeg/%.o : $(RBCODECLIB_DIR)/codecs/libmad/%.c
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
+ $(CC) $(MPEGMADFLAGS) -c $< -o $@
+
+$(CODECDIR)/libmad-mpeg/%.o : $(RBCODECLIB_DIR)/codecs/libmad/%.S
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
+ $(CC) $(MPEGMADFLAGS) -c $< -o $@
+
$(CODECDIR)/libmad/%.o: $(RBCODECLIB_DIR)/codecs/libmad/%.c
$(SILENT)mkdir -p $(dir $@)
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
diff --git a/lib/rbcodec/codecs/libmad/mad_iram.h b/lib/rbcodec/codecs/libmad/mad_iram.h
index 5a315c0381..ac0b64cca9 100644
--- a/lib/rbcodec/codecs/libmad/mad_iram.h
+++ b/lib/rbcodec/codecs/libmad/mad_iram.h
@@ -35,9 +35,10 @@
#define ICODE_ATTR_MPA_SYNTH
#define ICONST_ATTR_MPA_HUFFMAN
#else
-/* Code performs slower in IRAM on PP502x
- S3C2440 doesn't have any IRAM available for codecs */
-#if defined(CPU_PP502x)
+/* Code performs slower in IRAM on PP502x and there is no space in
+ mpegplayer on the PP5002. S3C2440 doesn't have any IRAM available for
+ codecs */
+#if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER))
#define ICODE_SECTION_MPA_ARM .text
#define ICODE_ATTR_MPA_SYNTH
#else
diff --git a/lib/rbcodec/codecs/mpa.c b/lib/rbcodec/codecs/mpa.c
index db33f17c3b..d6bcc04910 100644
--- a/lib/rbcodec/codecs/mpa.c
+++ b/lib/rbcodec/codecs/mpa.c
@@ -26,7 +26,7 @@
CODEC_HEADER
-#if NUM_CORES > 1
+#if NUM_CORES > 1 && !defined(MPEGPLAYER)
#define MPA_SYNTH_ON_COP
#endif