codec: sid: use cRSID as a library for playing SID files

Change-Id: Iee70933e47ff8df8f26c9a63112de4da4a8e6c17
This commit is contained in:
Wolfram Sang 2023-01-19 22:53:26 +01:00 committed by Solomon Peachy
parent 15c0f0576e
commit 70ce734ece
6 changed files with 77 additions and 1273 deletions

View file

@ -714,6 +714,7 @@ James Le Cuirot
Michael Landherr
Roman Artiukhin
Richard Goedeken
Mihaly 'Hermit' Horvath
The libmad team
The wavpack team

View file

@ -0,0 +1,19 @@
Some notes about cRSID usage in Rockbox
by Ninja (Wolfram Sang) in 2023
The cRSID codebase is from v1.0. The only change made was a separation of the
cRSID header into a public and private one, so it could be compiled as a
library. You can find it as a separate commit in the git repository. This
likely needs to be updated whenever a newer version of cRSID shall be used.
Currently, newer versions of cRSID are available but they have been discarded.
v1.1 mainly adds a high quality playback mode using 7x oversampling. This is
too much for a Sansa Clip. Because the old playback mode still exists, it might
be possible to add a runtime option to let the user choose. As a first step
however, it was decided to give the user a working codec without having to deal
with options. v1.2 mainly adds a SDL-based GUI player, no bigger changes in SID
emulation. Staying with v1.0 also keeps the codec size significantly lower
(~50KB for v1.0 vs ~90KB for v1.2 on the Sansa Clip).
cRSID Releases can be found here:
https://csdb.dk/search/?seinsel=releases&search=crsid

View file

@ -0,0 +1 @@
libcRSID.c

View file

@ -0,0 +1,16 @@
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# cRSID
CRSID := $(CODECDIR)/cRSID.a
CRSID_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/cRSID/SOURCES)
CRSID_OBJ := $(call c2obj, $(CRSID_SRC))
OTHER_SRC += $(CRSID_SRC)
$(CRSID): $(CRSID_OBJ)
$(SILENT)$(shell rm -f $@)
$(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null

View file

@ -65,6 +65,7 @@ include $(RBCODECLIB_DIR)/codecs/libgme/libvgm.make
include $(RBCODECLIB_DIR)/codecs/libgme/libkss.make
include $(RBCODECLIB_DIR)/codecs/libgme/libemu2413.make
include $(RBCODECLIB_DIR)/codecs/libopus/libopus.make
include $(RBCODECLIB_DIR)/codecs/cRSID/cRSID.make
# set CODECFLAGS per codec lib, since gcc takes the last -Ox and the last
# in a -ffoo -fno-foo pair, there is no need to filter them out
@ -101,6 +102,7 @@ $(WAVPACKLIB) : CODECFLAGS += -O1
$(WMALIB) : CODECFLAGS += -O2
$(WMAPROLIB) : CODECFLAGS += -O1
$(WMAVOICELIB) : CODECFLAGS += -O1
$(CRSID) : CODECFLAGS += -O3
# fine-tuning of CODECFLAGS per cpu arch
ifeq ($(ARCH),arch_arm)
@ -192,6 +194,7 @@ $(CODECDIR)/sgc.codec : $(CODECDIR)/libsgc.a $(CODECDIR)/libemu2413.a
$(CODECDIR)/vgm.codec : $(CODECDIR)/libvgm.a $(CODECDIR)/libemu2413.a
$(CODECDIR)/kss.codec : $(CODECDIR)/libkss.a $(CODECDIR)/libemu2413.a
$(CODECDIR)/opus.codec : $(CODECDIR)/libopus.a $(TLSFLIB)
$(CODECDIR)/sid.codec : $(CODECDIR)/cRSID.a
$(CODECDIR)/aac_bsf.codec : $(CODECDIR)/libfaad.a
$(CODECS): $(CODEC_LIBS) # this must be last in codec dependency list

File diff suppressed because it is too large Load diff