From 76235a15b37bae9e3c83bc20e9afd49a66e33455 Mon Sep 17 00:00:00 2001 From: Daniel Laird Date: Fri, 5 Sep 2008 12:06:50 +0000 Subject: audio: Move all audio packages into audio subdir Moved all audio packages into a subdir called audio. I then created a Config.in and made sure that a audio.mk existed. Daniel Laird --- package/Config.in | 23 +- package/alsa-lib/Config.in | 7 - package/alsa-lib/alsa-lib.mk | 87 - package/alsa-utils/Config.in | 77 - package/alsa-utils/alsa-utils.mk | 96 - package/asterisk/Config.in | 12 - package/asterisk/asterisk.mk | 89 - package/asterisk/asterisk_no_res_ninit.patch | 12 - package/audio/Config.in | 21 + package/audio/alsa-lib/Config.in | 7 + package/audio/alsa-lib/alsa-lib.mk | 87 + package/audio/alsa-utils/Config.in | 77 + package/audio/alsa-utils/alsa-utils.mk | 96 + package/audio/asterisk/Config.in | 12 + package/audio/asterisk/asterisk.mk | 89 + package/audio/asterisk/asterisk_no_res_ninit.patch | 12 + package/audio/audio.mk | 1 + package/audio/aumix/Config.in | 12 + package/audio/aumix/aumix.mk | 64 + package/audio/festival/Config.in | 22 + package/audio/festival/festival.mk | 4 + .../festival/festival/festival-1.96-beta-doc.patch | 23 + .../festival/festival-1.96-beta-etcsiteinit.patch | 55 + .../festival/festival-1.96-beta-libdir.patch | 10 + .../festival-1.96-beta-speechtools-dir.patch | 11 + package/audio/festival/festival/festival.mk | 21 + package/audio/festival/lexicons/Config.in | 20 + package/audio/festival/lexicons/festlex.mk | 46 + package/audio/festival/speech-tools/Config.in | 6 + .../speech-tools-1.2.96-beta-install.patch | 47 + .../audio/festival/speech-tools/speech-tools.mk | 20 + package/audio/festival/voices/Config.in | 63 + package/audio/festival/voices/festvox.mk | 99 + package/audio/libid3tag/Config.in | 8 + package/audio/libid3tag/libid3tag.mk | 68 + package/audio/libmad/Config.in | 14 + .../libmad/libmad-0.15.1b-optimization.patch.avr32 | 2922 ++++++++++++++++++++ package/audio/libmad/libmad.mk | 86 + package/audio/libogg/Config.in | 6 + package/audio/libogg/libogg.mk | 78 + package/audio/libsndfile/Config.in | 7 + package/audio/libsndfile/libsndfile-srconly.patch | 11 + package/audio/libsndfile/libsndfile.mk | 65 + package/audio/libvorbis/Config.in | 25 + package/audio/libvorbis/libvorbis.mk | 143 + package/audio/madplay/Config.in | 17 + package/audio/madplay/madplay.mk | 73 + package/audio/mpg123/Config.in | 12 + package/audio/mpg123/mpg123-0.59r-cross.patch | 44 + package/audio/mpg123/mpg123.mk | 73 + package/audio/speex/Config.in | 25 + package/audio/speex/speex.mk | 37 + package/aumix/Config.in | 12 - package/aumix/aumix.mk | 64 - package/festival/Config.in | 22 - package/festival/festival.mk | 4 - .../festival/festival/festival-1.96-beta-doc.patch | 23 - .../festival/festival-1.96-beta-etcsiteinit.patch | 55 - .../festival/festival-1.96-beta-libdir.patch | 10 - .../festival-1.96-beta-speechtools-dir.patch | 11 - package/festival/festival/festival.mk | 21 - package/festival/lexicons/Config.in | 20 - package/festival/lexicons/festlex.mk | 46 - package/festival/speech-tools/Config.in | 6 - .../speech-tools-1.2.96-beta-install.patch | 47 - package/festival/speech-tools/speech-tools.mk | 20 - package/festival/voices/Config.in | 63 - package/festival/voices/festvox.mk | 99 - package/libid3tag/Config.in | 8 - package/libid3tag/libid3tag.mk | 68 - package/libmad/Config.in | 14 - .../libmad/libmad-0.15.1b-optimization.patch.avr32 | 2922 -------------------- package/libmad/libmad.mk | 86 - package/libogg/Config.in | 6 - package/libogg/libogg.mk | 78 - package/libsndfile/Config.in | 7 - package/libsndfile/libsndfile-srconly.patch | 11 - package/libsndfile/libsndfile.mk | 65 - package/libvorbis/Config.in | 25 - package/libvorbis/libvorbis.mk | 143 - package/madplay/Config.in | 17 - package/madplay/madplay.mk | 73 - package/mpg123/Config.in | 12 - package/mpg123/mpg123-0.59r-cross.patch | 44 - package/mpg123/mpg123.mk | 73 - package/speex/Config.in | 25 - package/speex/speex.mk | 37 - 87 files changed, 4641 insertions(+), 4638 deletions(-) delete mode 100644 package/alsa-lib/Config.in delete mode 100644 package/alsa-lib/alsa-lib.mk delete mode 100644 package/alsa-utils/Config.in delete mode 100644 package/alsa-utils/alsa-utils.mk delete mode 100644 package/asterisk/Config.in delete mode 100644 package/asterisk/asterisk.mk delete mode 100644 package/asterisk/asterisk_no_res_ninit.patch create mode 100644 package/audio/Config.in create mode 100644 package/audio/alsa-lib/Config.in create mode 100644 package/audio/alsa-lib/alsa-lib.mk create mode 100644 package/audio/alsa-utils/Config.in create mode 100644 package/audio/alsa-utils/alsa-utils.mk create mode 100644 package/audio/asterisk/Config.in create mode 100644 package/audio/asterisk/asterisk.mk create mode 100644 package/audio/asterisk/asterisk_no_res_ninit.patch create mode 100644 package/audio/audio.mk create mode 100644 package/audio/aumix/Config.in create mode 100644 package/audio/aumix/aumix.mk create mode 100644 package/audio/festival/Config.in create mode 100644 package/audio/festival/festival.mk create mode 100644 package/audio/festival/festival/festival-1.96-beta-doc.patch create mode 100644 package/audio/festival/festival/festival-1.96-beta-etcsiteinit.patch create mode 100644 package/audio/festival/festival/festival-1.96-beta-libdir.patch create mode 100644 package/audio/festival/festival/festival-1.96-beta-speechtools-dir.patch create mode 100644 package/audio/festival/festival/festival.mk create mode 100644 package/audio/festival/lexicons/Config.in create mode 100644 package/audio/festival/lexicons/festlex.mk create mode 100644 package/audio/festival/speech-tools/Config.in create mode 100644 package/audio/festival/speech-tools/speech-tools-1.2.96-beta-install.patch create mode 100644 package/audio/festival/speech-tools/speech-tools.mk create mode 100644 package/audio/festival/voices/Config.in create mode 100644 package/audio/festival/voices/festvox.mk create mode 100644 package/audio/libid3tag/Config.in create mode 100644 package/audio/libid3tag/libid3tag.mk create mode 100644 package/audio/libmad/Config.in create mode 100644 package/audio/libmad/libmad-0.15.1b-optimization.patch.avr32 create mode 100644 package/audio/libmad/libmad.mk create mode 100644 package/audio/libogg/Config.in create mode 100644 package/audio/libogg/libogg.mk create mode 100644 package/audio/libsndfile/Config.in create mode 100644 package/audio/libsndfile/libsndfile-srconly.patch create mode 100644 package/audio/libsndfile/libsndfile.mk create mode 100644 package/audio/libvorbis/Config.in create mode 100644 package/audio/libvorbis/libvorbis.mk create mode 100644 package/audio/madplay/Config.in create mode 100644 package/audio/madplay/madplay.mk create mode 100644 package/audio/mpg123/Config.in create mode 100644 package/audio/mpg123/mpg123-0.59r-cross.patch create mode 100644 package/audio/mpg123/mpg123.mk create mode 100644 package/audio/speex/Config.in create mode 100644 package/audio/speex/speex.mk delete mode 100644 package/aumix/Config.in delete mode 100644 package/aumix/aumix.mk delete mode 100644 package/festival/Config.in delete mode 100644 package/festival/festival.mk delete mode 100644 package/festival/festival/festival-1.96-beta-doc.patch delete mode 100644 package/festival/festival/festival-1.96-beta-etcsiteinit.patch delete mode 100644 package/festival/festival/festival-1.96-beta-libdir.patch delete mode 100644 package/festival/festival/festival-1.96-beta-speechtools-dir.patch delete mode 100644 package/festival/festival/festival.mk delete mode 100644 package/festival/lexicons/Config.in delete mode 100644 package/festival/lexicons/festlex.mk delete mode 100644 package/festival/speech-tools/Config.in delete mode 100644 package/festival/speech-tools/speech-tools-1.2.96-beta-install.patch delete mode 100644 package/festival/speech-tools/speech-tools.mk delete mode 100644 package/festival/voices/Config.in delete mode 100644 package/festival/voices/festvox.mk delete mode 100644 package/libid3tag/Config.in delete mode 100644 package/libid3tag/libid3tag.mk delete mode 100644 package/libmad/Config.in delete mode 100644 package/libmad/libmad-0.15.1b-optimization.patch.avr32 delete mode 100644 package/libmad/libmad.mk delete mode 100644 package/libogg/Config.in delete mode 100644 package/libogg/libogg.mk delete mode 100644 package/libsndfile/Config.in delete mode 100644 package/libsndfile/libsndfile-srconly.patch delete mode 100644 package/libsndfile/libsndfile.mk delete mode 100644 package/libvorbis/Config.in delete mode 100644 package/libvorbis/libvorbis.mk delete mode 100644 package/madplay/Config.in delete mode 100644 package/madplay/madplay.mk delete mode 100644 package/mpg123/Config.in delete mode 100644 package/mpg123/mpg123-0.59r-cross.patch delete mode 100644 package/mpg123/mpg123.mk delete mode 100644 package/speex/Config.in delete mode 100644 package/speex/speex.mk (limited to 'package') diff --git a/package/Config.in b/package/Config.in index b8d81ba4b..9568729ba 100644 --- a/package/Config.in +++ b/package/Config.in @@ -285,27 +285,8 @@ source "package/wipe/Config.in" source "package/xfsprogs/Config.in" endif -menuconfig BR2_AUDIO_SUPPORT - bool "Audio libraries and applications" - default y - help - Support for audio libraries and applications - -if BR2_AUDIO_SUPPORT -source "package/alsa-lib/Config.in" -source "package/alsa-utils/Config.in" -source "package/asterisk/Config.in" -source "package/aumix/Config.in" -source "package/libid3tag/Config.in" -source "package/libmad/Config.in" -source "package/libogg/Config.in" -source "package/libsndfile/Config.in" -source "package/libvorbis/Config.in" -source "package/madplay/Config.in" -source "package/mpg123/Config.in" -source "package/speex/Config.in" -source "package/festival/Config.in" -endif +# Audio support +source "package/audio/Config.in" menuconfig BR2_GRAPHIC_SUPPORT bool "Graphic libraries and applications (graphic/text)" diff --git a/package/alsa-lib/Config.in b/package/alsa-lib/Config.in deleted file mode 100644 index 3077d36b1..000000000 --- a/package/alsa-lib/Config.in +++ /dev/null @@ -1,7 +0,0 @@ -config BR2_PACKAGE_ALSA_LIB - bool "alsa-lib" - help - The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI - functionality to the Linux operating system. - - http://www.alsa-project.org/ diff --git a/package/alsa-lib/alsa-lib.mk b/package/alsa-lib/alsa-lib.mk deleted file mode 100644 index 6b9bda970..000000000 --- a/package/alsa-lib/alsa-lib.mk +++ /dev/null @@ -1,87 +0,0 @@ -############################################################# -# -# alsa-lib -# -############################################################# -ALSA_LIB_VERSION:=1.0.14a -ALSA_LIB_SOURCE:=alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 -ALSA_LIB_SITE:=ftp://ftp.alsa-project.org/pub/lib -ALSA_LIB_DIR:=$(BUILD_DIR)/alsa-lib-$(ALSA_LIB_VERSION) -ALSA_LIB_CAT:=$(BZCAT) -ALSA_LIB_BINARY:=libasound.so.2.0.0 -ALSA_LIB_TARGET_BINARY:=usr/lib/$(ALSA_LIB_BINARY) - -ifeq ($(BR2_arm),y) -ALSA_LIB_ABI:=-mabi=aapcs-linux -else -ALSA_LIB_ABI:= -endif - -ifeq ($(BR2_SOFT_FLOAT),y) - SOFT_FLOAT=--with-softfloat -endif - -$(DL_DIR)/$(ALSA_LIB_SOURCE): - $(WGET) -P $(DL_DIR) $(ALSA_LIB_SITE)/$(ALSA_LIB_SOURCE) - -$(ALSA_LIB_DIR)/.unpacked: $(DL_DIR)/$(ALSA_LIB_SOURCE) - $(ALSA_LIB_CAT) $(DL_DIR)/$(ALSA_LIB_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(ALSA_LIB_DIR) package/alsa-lib/ alsa-lib-$(ALSA_LIB_VERSION)\*.patch* - $(CONFIG_UPDATE) $(ALSA_LIB_DIR) - touch $@ - -$(ALSA_LIB_DIR)/.configured: $(ALSA_LIB_DIR)/.unpacked - (cd $(ALSA_LIB_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS) $(ALSA_LIB_ABI)" \ - LDFLAGS="$(TARGET_LDFLAGS) -lm" \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --enable-shared \ - --enable-static \ - --disable-docs \ - $(SOFT_FLOAT) \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(ALSA_LIB_DIR)/src/.libs/$(ALSA_LIB_BINARY): $(ALSA_LIB_DIR)/.configured - $(MAKE) -C $(ALSA_LIB_DIR) - touch -c $@ - -$(STAGING_DIR)/$(ALSA_LIB_TARGET_BINARY): $(ALSA_LIB_DIR)/src/.libs/$(ALSA_LIB_BINARY) - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(ALSA_LIB_DIR) install - $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libasound.la - -$(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY): $(STAGING_DIR)/$(ALSA_LIB_TARGET_BINARY) - mkdir -p $(TARGET_DIR)/usr/share/alsa $(TARGET_DIR)/usr/lib/alsa-lib - cp -dpf $(STAGING_DIR)/usr/lib/libasound.so* $(TARGET_DIR)/usr/lib/ - cp -rdpf $(STAGING_DIR)/usr/share/alsa/* $(TARGET_DIR)/usr/share/alsa/ - cp -rdpf $(STAGING_DIR)/usr/lib/alsa-lib/* $(TARGET_DIR)/usr/lib/alsa-lib/ - -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libasound.so* - -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/alsa-lib/smixer/*.so - touch -c $@ - -alsa-lib: uclibc $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY) - -alsa-lib-source: $(DL_DIR)/$(ALSA-LIB_SOURCE) - -alsa-lib-clean: - rm -f $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY) - -$(MAKE) -C $(ALSA_LIB_DIR) clean - -alsa-lib-dirclean: - rm -rf $(ALSA_LIB_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_ALSA_LIB)),y) -TARGETS+=alsa-lib -endif diff --git a/package/alsa-utils/Config.in b/package/alsa-utils/Config.in deleted file mode 100644 index b7304f397..000000000 --- a/package/alsa-utils/Config.in +++ /dev/null @@ -1,77 +0,0 @@ -config BR2_PACKAGE_ALSA_UTILS - bool "alsa-utils" - depends on BR2_PACKAGE_ALSA_LIB - depends on BR2_PACKAGE_NCURSES - help - This package contains the command line utilities for the ALSA - project. - - http://www.alsa-project.org/ - -comment "alsa-utils needs ncurses" - depends on BR2_PACKAGE_ALSA_LIB - depends on !BR2_PACKAGE_NCURSES - -menu "ALSA utils selection" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ALSACONF - bool "alsaconf" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ALSACTL - bool "alsactl" - default y - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ALSAMIXER - bool "alsamixer" - default y - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_AMIDI - bool "amidi" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_AMIXER - bool "amixer" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_APLAY - bool "aplay" - select BR2_LARGEFILE - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ARECORD - bool "arecord" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_IECSET - bool "iecset" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ACONNECT - bool "aconnect" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_APLAYMIDI - bool "aplaymidi" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI - bool "arecordmidi" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ASEQDUMP - bool "aseqdump" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_ASEQNET - bool "aseqnet" - depends on BR2_PACKAGE_ALSA_UTILS - -config BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST - bool "speaker-test" - depends on BR2_PACKAGE_ALSA_UTILS - -endmenu diff --git a/package/alsa-utils/alsa-utils.mk b/package/alsa-utils/alsa-utils.mk deleted file mode 100644 index e21078c0c..000000000 --- a/package/alsa-utils/alsa-utils.mk +++ /dev/null @@ -1,96 +0,0 @@ -############################################################# -# -# alsa-utils -# -############################################################# -ALSA_UTILS_VERSION:=1.0.14 -ALSA_UTILS_SOURCE:=alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 -ALSA_UTILS_SITE:=ftp://ftp.alsa-project.org/pub/utils -ALSA_UTILS_DIR:=$(BUILD_DIR)/alsa-utils-$(ALSA_UTILS_VERSION) -ALSA_UTILS_CAT:=$(BZCAT) -ALSA_UTILS_BINARY:=alsactl/alsactl -ALSA_UTILS_TARGET_BINARY:=usr/sbin/alsactl - -$(DL_DIR)/$(ALSA_UTILS_SOURCE): - $(WGET) -P $(DL_DIR) $(ALSA_UTILS_SITE)/$(ALSA_UTILS_SOURCE) - -$(ALSA_UTILS_DIR)/.unpacked: $(DL_DIR)/$(ALSA_UTILS_SOURCE) - $(ALSA_UTILS_CAT) $(DL_DIR)/$(ALSA_UTILS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(ALSA_UTILS_DIR) package/alsa-utils/ alsa-utils-$(ALSA_UTILS_VERSION)\*.patch\* - $(CONFIG_UPDATE) $(ALSA_UTILS_DIR) - touch $@ - -$(ALSA_UTILS_DIR)/.configured: $(ALSA_UTILS_DIR)/.unpacked - (cd $(ALSA_UTILS_DIR); rm -f config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - ) - touch $@ - -$(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY): $(ALSA_UTILS_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(ALSA_UTILS_DIR) - touch -c $@ - -ALSA_UTILS_TARGETS_ := -ALSA_UTILS_TARGETS_y := - -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORD) += usr/bin/arecord -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet -ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test - -$(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY): $(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY) - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(ALSA_UTILS_DIR) install - mkdir -p $(TARGET_DIR)/usr/bin - mkdir -p $(TARGET_DIR)/usr/sbin - for file in $(ALSA_UTILS_TARGETS_y); do \ - cp -dpf $(STAGING_DIR)/$$file $(TARGET_DIR)/$$file; \ - done - if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \ - mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \ - mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \ - cp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \ - cp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \ - fi - touch -c $@ - -alsa-utils: uclibc alsa-lib ncurses $(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY) - -alsa-utils-source: $(DL_DIR)/$(ALSA_UTILS_SOURCE) - -alsa-utils-clean: - for file in $(ALSA_UTILS_TARGETS_y); do \ - rm -f $(TARGET_DIR)/$$file; \ - done - for file in $(ALSA_UTILS_TARGETS_); do \ - rm -f $(TARGET_DIR)/$$file; \ - done - -$(MAKE) -C $(ALSA_UTILS_DIR) clean - -alsa-utils-dirclean: - rm -rf $(ALSA_UTILS_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_ALSA_UTILS)),y) -TARGETS+=alsa-utils -endif diff --git a/package/asterisk/Config.in b/package/asterisk/Config.in deleted file mode 100644 index e20eb5ac2..000000000 --- a/package/asterisk/Config.in +++ /dev/null @@ -1,12 +0,0 @@ -config BR2_PACKAGE_ASTERISK - bool "asterisk" - select BR2_PACKAGE_NCURSES - select BR2_PACKAGE_ZLIB - depends on BR2_PACKAGE_OPENSSL - depends on BR2_PACKAGE_MPG123 - help - Asterisk - the Open Source PBX - -comment "asterisk - disabled (required openssl and mpg123)" - depends on !BR2_PACKAGE_OPENSSL || ! BR2_PACKAGE_MPG123 - diff --git a/package/asterisk/asterisk.mk b/package/asterisk/asterisk.mk deleted file mode 100644 index da065dccf..000000000 --- a/package/asterisk/asterisk.mk +++ /dev/null @@ -1,89 +0,0 @@ -############################################################# -# -# asterisk -# -############################################################## -ASTERISK_VERSION:=1.6.0-beta6 -ASTERISK_SOURCE:=asterisk-$(ASTERISK_VERSION).tar.gz -ASTERISK_SITE:=http://downloads.digium.com/pub/asterisk/old-releases -ASTERISK_DIR:=$(BUILD_DIR)/asterisk-$(ASTERISK_VERSION) -ASTERISK_BINARY:=asterisk -ASTERISK_TARGET_BINARY:=usr/sbin/asterisk - -$(DL_DIR)/$(ASTERISK_SOURCE): - $(WGET) -P $(DL_DIR) $(ASTERISK_SITE)/$(ASTERISK_SOURCE) - -$(ASTERISK_DIR)/.source: $(DL_DIR)/$(ASTERISK_SOURCE) - $(ZCAT) $(DL_DIR)/$(ASTERISK_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(ASTERISK_DIR) package/asterisk/ asterisk\*.patch - touch $@ - -$(ASTERISK_DIR)/.configured: $(ASTERISK_DIR)/.source - touch $@ - -$(ASTERISK_DIR)/$(ASTERISK_BINARY): $(ASTERISK_DIR)/.configured - $(MAKE1) -C $(ASTERISK_DIR) \ - CROSS_ARCH=Linux \ - CROSS_COMPILE=$(TARGET_CROSS) \ - CROSS_COMPILE_BIN=$(STAGING_DIR)/bin/ \ - CROSS_COMPILE_TARGET=$(STAGING_DIR) \ - CROSS_PROC=$(OPTIMIZE_FOR_CPU) \ - OPTIMIZE="$(TARGET_OPTIMIZATION)" \ - OPTIONS=-DLOW_MEMORY \ - DEBUG= \ - $(TARGET_CONFIGURE_OPTS) - -$(TARGET_DIR)/$(ASTERISK_TARGET_BINARY): $(ASTERISK_DIR)/$(ASTERISK_BINARY) - $(MAKE) -C $(ASTERISK_DIR) \ - CROSS_ARCH=Linux \ - CROSS_COMPILE=$(TARGET_CROSS) \ - CROSS_COMPILE_BIN=$(TARGET_CC) \ - CROSS_COMPILE_TARGET=$(STAGING_DIR) \ - CROSS_PROC=$(OPTIMIZE_FOR_CPU) \ - OPTIMIZE="$(TARGET_OPTIMIZATION)" \ - OPTIONS=-DLOW_MEMORY \ - DEBUG= \ - $(TARGET_CONFIGURE_OPTS) \ - DESTDIR=$(TARGET_DIR) install - $(STRIPCMD) $(TARGET_DIR)/usr/sbin/asterisk - $(STRIPCMD) $(TARGET_DIR)/usr/sbin/stereorize - $(STRIPCMD) $(TARGET_DIR)/usr/sbin/streamplayer - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) \ - $(TARGET_DIR)/usr/lib/asterisk/modules/*.so - $(INSTALL) -m 755 $(ASTERISK_DIR)/contrib/init.d/rc.debian.asterisk \ - $(TARGET_DIR)/etc/init.d/S60asterisk - mv $(TARGET_DIR)/usr/include/asterisk $(STAGING_DIR)/usr/include/ -ifneq ($(BR2_HAVE_MANPAGES),y) - rm -Rf $(TARGET_DIR)/usr/share/man -endif - rm -f $(TARGET_DIR)/usr/sbin/safe_asterisk - rm -f $(TARGET_DIR)/usr/sbin/autosupport - rm -f $(TARGET_DIR)/usr/sbin/astgenkey - touch -c $@ - -asterisk: uclibc ncurses zlib openssl mpg123 $(TARGET_DIR)/$(ASTERISK_TARGET_BINARY) - -asterisk-source: $(DL_DIR)/$(ASTERISK_SOURCE) - -asterisk-clean: - rm -Rf $(STAGING_DIR)/usr/include/asterisk - rm -Rf $(TARGET_DIR)/etc/asterisk - rm -Rf $(TARGET_DIR)/usr/lib/asterisk - rm -Rf $(TARGET_DIR)/var/lib/asterisk - rm -Rf $(TARGET_DIR)/var/spool/asterisk - rm -f $(TARGET_DIR)/etc/init.d/S60asterisk - rm -f $(TARGET_DIR)/usr/sbin/stereorize - rm -f $(TARGET_DIR)/usr/sbin/streamplayer - -$(MAKE) -C $(ASTERISK_DIR) clean - -asterisk-dirclean: - rm -rf $(ASTERISK_DIR) - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_ASTERISK)),y) -TARGETS+=asterisk -endif diff --git a/package/asterisk/asterisk_no_res_ninit.patch b/package/asterisk/asterisk_no_res_ninit.patch deleted file mode 100644 index 1dff2f305..000000000 --- a/package/asterisk/asterisk_no_res_ninit.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur /tmp/asterisk-1.2.0-beta1/dns.c asterisk-1.2.0-beta1/dns.c ---- /tmp/asterisk-1.2.0-beta1/dns.c 2005-08-14 04:23:33.000000000 +0200 -+++ asterisk-1.2.0-beta1/dns.c 2005-08-31 09:42:36.000000000 +0200 -@@ -157,7 +157,7 @@ - return 0; - } - --#if defined(res_ninit) -+#if (defined(res_ninit) && !defined(__UCLIBC__)) - #define HAS_RES_NINIT - #else - AST_MUTEX_DEFINE_STATIC(res_lock); diff --git a/package/audio/Config.in b/package/audio/Config.in new file mode 100644 index 000000000..370467a2e --- /dev/null +++ b/package/audio/Config.in @@ -0,0 +1,21 @@ +menuconfig BR2_AUDIO_SUPPORT + bool "Audio libraries and applications" + default y + help + Support for audio libraries and applications + +if BR2_AUDIO_SUPPORT +source "package/audio/alsa-lib/Config.in" +source "package/audio/alsa-utils/Config.in" +source "package/audio/asterisk/Config.in" +source "package/audio/aumix/Config.in" +source "package/audio/libid3tag/Config.in" +source "package/audio/libmad/Config.in" +source "package/audio/libogg/Config.in" +source "package/audio/libsndfile/Config.in" +source "package/audio/libvorbis/Config.in" +source "package/audio/madplay/Config.in" +source "package/audio/mpg123/Config.in" +source "package/audio/speex/Config.in" +source "package/audio/festival/Config.in" +endif diff --git a/package/audio/alsa-lib/Config.in b/package/audio/alsa-lib/Config.in new file mode 100644 index 000000000..3077d36b1 --- /dev/null +++ b/package/audio/alsa-lib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ALSA_LIB + bool "alsa-lib" + help + The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI + functionality to the Linux operating system. + + http://www.alsa-project.org/ diff --git a/package/audio/alsa-lib/alsa-lib.mk b/package/audio/alsa-lib/alsa-lib.mk new file mode 100644 index 000000000..6b9bda970 --- /dev/null +++ b/package/audio/alsa-lib/alsa-lib.mk @@ -0,0 +1,87 @@ +############################################################# +# +# alsa-lib +# +############################################################# +ALSA_LIB_VERSION:=1.0.14a +ALSA_LIB_SOURCE:=alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 +ALSA_LIB_SITE:=ftp://ftp.alsa-project.org/pub/lib +ALSA_LIB_DIR:=$(BUILD_DIR)/alsa-lib-$(ALSA_LIB_VERSION) +ALSA_LIB_CAT:=$(BZCAT) +ALSA_LIB_BINARY:=libasound.so.2.0.0 +ALSA_LIB_TARGET_BINARY:=usr/lib/$(ALSA_LIB_BINARY) + +ifeq ($(BR2_arm),y) +ALSA_LIB_ABI:=-mabi=aapcs-linux +else +ALSA_LIB_ABI:= +endif + +ifeq ($(BR2_SOFT_FLOAT),y) + SOFT_FLOAT=--with-softfloat +endif + +$(DL_DIR)/$(ALSA_LIB_SOURCE): + $(WGET) -P $(DL_DIR) $(ALSA_LIB_SITE)/$(ALSA_LIB_SOURCE) + +$(ALSA_LIB_DIR)/.unpacked: $(DL_DIR)/$(ALSA_LIB_SOURCE) + $(ALSA_LIB_CAT) $(DL_DIR)/$(ALSA_LIB_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(ALSA_LIB_DIR) package/alsa-lib/ alsa-lib-$(ALSA_LIB_VERSION)\*.patch* + $(CONFIG_UPDATE) $(ALSA_LIB_DIR) + touch $@ + +$(ALSA_LIB_DIR)/.configured: $(ALSA_LIB_DIR)/.unpacked + (cd $(ALSA_LIB_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(ALSA_LIB_ABI)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --enable-shared \ + --enable-static \ + --disable-docs \ + $(SOFT_FLOAT) \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(ALSA_LIB_DIR)/src/.libs/$(ALSA_LIB_BINARY): $(ALSA_LIB_DIR)/.configured + $(MAKE) -C $(ALSA_LIB_DIR) + touch -c $@ + +$(STAGING_DIR)/$(ALSA_LIB_TARGET_BINARY): $(ALSA_LIB_DIR)/src/.libs/$(ALSA_LIB_BINARY) + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(ALSA_LIB_DIR) install + $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libasound.la + +$(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY): $(STAGING_DIR)/$(ALSA_LIB_TARGET_BINARY) + mkdir -p $(TARGET_DIR)/usr/share/alsa $(TARGET_DIR)/usr/lib/alsa-lib + cp -dpf $(STAGING_DIR)/usr/lib/libasound.so* $(TARGET_DIR)/usr/lib/ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/* $(TARGET_DIR)/usr/share/alsa/ + cp -rdpf $(STAGING_DIR)/usr/lib/alsa-lib/* $(TARGET_DIR)/usr/lib/alsa-lib/ + -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libasound.so* + -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/alsa-lib/smixer/*.so + touch -c $@ + +alsa-lib: uclibc $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY) + +alsa-lib-source: $(DL_DIR)/$(ALSA-LIB_SOURCE) + +alsa-lib-clean: + rm -f $(TARGET_DIR)/$(ALSA_LIB_TARGET_BINARY) + -$(MAKE) -C $(ALSA_LIB_DIR) clean + +alsa-lib-dirclean: + rm -rf $(ALSA_LIB_DIR) +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_ALSA_LIB)),y) +TARGETS+=alsa-lib +endif diff --git a/package/audio/alsa-utils/Config.in b/package/audio/alsa-utils/Config.in new file mode 100644 index 000000000..b7304f397 --- /dev/null +++ b/package/audio/alsa-utils/Config.in @@ -0,0 +1,77 @@ +config BR2_PACKAGE_ALSA_UTILS + bool "alsa-utils" + depends on BR2_PACKAGE_ALSA_LIB + depends on BR2_PACKAGE_NCURSES + help + This package contains the command line utilities for the ALSA + project. + + http://www.alsa-project.org/ + +comment "alsa-utils needs ncurses" + depends on BR2_PACKAGE_ALSA_LIB + depends on !BR2_PACKAGE_NCURSES + +menu "ALSA utils selection" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSACONF + bool "alsaconf" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSACTL + bool "alsactl" + default y + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSAMIXER + bool "alsamixer" + default y + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_AMIDI + bool "amidi" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_AMIXER + bool "amixer" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_APLAY + bool "aplay" + select BR2_LARGEFILE + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ARECORD + bool "arecord" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_IECSET + bool "iecset" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ACONNECT + bool "aconnect" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_APLAYMIDI + bool "aplaymidi" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI + bool "arecordmidi" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ASEQDUMP + bool "aseqdump" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ASEQNET + bool "aseqnet" + depends on BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST + bool "speaker-test" + depends on BR2_PACKAGE_ALSA_UTILS + +endmenu diff --git a/package/audio/alsa-utils/alsa-utils.mk b/package/audio/alsa-utils/alsa-utils.mk new file mode 100644 index 000000000..e21078c0c --- /dev/null +++ b/package/audio/alsa-utils/alsa-utils.mk @@ -0,0 +1,96 @@ +############################################################# +# +# alsa-utils +# +############################################################# +ALSA_UTILS_VERSION:=1.0.14 +ALSA_UTILS_SOURCE:=alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 +ALSA_UTILS_SITE:=ftp://ftp.alsa-project.org/pub/utils +ALSA_UTILS_DIR:=$(BUILD_DIR)/alsa-utils-$(ALSA_UTILS_VERSION) +ALSA_UTILS_CAT:=$(BZCAT) +ALSA_UTILS_BINARY:=alsactl/alsactl +ALSA_UTILS_TARGET_BINARY:=usr/sbin/alsactl + +$(DL_DIR)/$(ALSA_UTILS_SOURCE): + $(WGET) -P $(DL_DIR) $(ALSA_UTILS_SITE)/$(ALSA_UTILS_SOURCE) + +$(ALSA_UTILS_DIR)/.unpacked: $(DL_DIR)/$(ALSA_UTILS_SOURCE) + $(ALSA_UTILS_CAT) $(DL_DIR)/$(ALSA_UTILS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(ALSA_UTILS_DIR) package/alsa-utils/ alsa-utils-$(ALSA_UTILS_VERSION)\*.patch\* + $(CONFIG_UPDATE) $(ALSA_UTILS_DIR) + touch $@ + +$(ALSA_UTILS_DIR)/.configured: $(ALSA_UTILS_DIR)/.unpacked + (cd $(ALSA_UTILS_DIR); rm -f config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + ) + touch $@ + +$(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY): $(ALSA_UTILS_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) -C $(ALSA_UTILS_DIR) + touch -c $@ + +ALSA_UTILS_TARGETS_ := +ALSA_UTILS_TARGETS_y := + +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORD) += usr/bin/arecord +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test + +$(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY): $(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY) + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(ALSA_UTILS_DIR) install + mkdir -p $(TARGET_DIR)/usr/bin + mkdir -p $(TARGET_DIR)/usr/sbin + for file in $(ALSA_UTILS_TARGETS_y); do \ + cp -dpf $(STAGING_DIR)/$$file $(TARGET_DIR)/$$file; \ + done + if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \ + mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \ + cp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \ + fi + touch -c $@ + +alsa-utils: uclibc alsa-lib ncurses $(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY) + +alsa-utils-source: $(DL_DIR)/$(ALSA_UTILS_SOURCE) + +alsa-utils-clean: + for file in $(ALSA_UTILS_TARGETS_y); do \ + rm -f $(TARGET_DIR)/$$file; \ + done + for file in $(ALSA_UTILS_TARGETS_); do \ + rm -f $(TARGET_DIR)/$$file; \ + done + -$(MAKE) -C $(ALSA_UTILS_DIR) clean + +alsa-utils-dirclean: + rm -rf $(ALSA_UTILS_DIR) +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_ALSA_UTILS)),y) +TARGETS+=alsa-utils +endif diff --git a/package/audio/asterisk/Config.in b/package/audio/asterisk/Config.in new file mode 100644 index 000000000..e20eb5ac2 --- /dev/null +++ b/package/audio/asterisk/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ASTERISK + bool "asterisk" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + depends on BR2_PACKAGE_OPENSSL + depends on BR2_PACKAGE_MPG123 + help + Asterisk - the Open Source PBX + +comment "asterisk - disabled (required openssl and mpg123)" + depends on !BR2_PACKAGE_OPENSSL || ! BR2_PACKAGE_MPG123 + diff --git a/package/audio/asterisk/asterisk.mk b/package/audio/asterisk/asterisk.mk new file mode 100644 index 000000000..da065dccf --- /dev/null +++ b/package/audio/asterisk/asterisk.mk @@ -0,0 +1,89 @@ +############################################################# +# +# asterisk +# +############################################################## +ASTERISK_VERSION:=1.6.0-beta6 +ASTERISK_SOURCE:=asterisk-$(ASTERISK_VERSION).tar.gz +ASTERISK_SITE:=http://downloads.digium.com/pub/asterisk/old-releases +ASTERISK_DIR:=$(BUILD_DIR)/asterisk-$(ASTERISK_VERSION) +ASTERISK_BINARY:=asterisk +ASTERISK_TARGET_BINARY:=usr/sbin/asterisk + +$(DL_DIR)/$(ASTERISK_SOURCE): + $(WGET) -P $(DL_DIR) $(ASTERISK_SITE)/$(ASTERISK_SOURCE) + +$(ASTERISK_DIR)/.source: $(DL_DIR)/$(ASTERISK_SOURCE) + $(ZCAT) $(DL_DIR)/$(ASTERISK_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(ASTERISK_DIR) package/asterisk/ asterisk\*.patch + touch $@ + +$(ASTERISK_DIR)/.configured: $(ASTERISK_DIR)/.source + touch $@ + +$(ASTERISK_DIR)/$(ASTERISK_BINARY): $(ASTERISK_DIR)/.configured + $(MAKE1) -C $(ASTERISK_DIR) \ + CROSS_ARCH=Linux \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CROSS_COMPILE_BIN=$(STAGING_DIR)/bin/ \ + CROSS_COMPILE_TARGET=$(STAGING_DIR) \ + CROSS_PROC=$(OPTIMIZE_FOR_CPU) \ + OPTIMIZE="$(TARGET_OPTIMIZATION)" \ + OPTIONS=-DLOW_MEMORY \ + DEBUG= \ + $(TARGET_CONFIGURE_OPTS) + +$(TARGET_DIR)/$(ASTERISK_TARGET_BINARY): $(ASTERISK_DIR)/$(ASTERISK_BINARY) + $(MAKE) -C $(ASTERISK_DIR) \ + CROSS_ARCH=Linux \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CROSS_COMPILE_BIN=$(TARGET_CC) \ + CROSS_COMPILE_TARGET=$(STAGING_DIR) \ + CROSS_PROC=$(OPTIMIZE_FOR_CPU) \ + OPTIMIZE="$(TARGET_OPTIMIZATION)" \ + OPTIONS=-DLOW_MEMORY \ + DEBUG= \ + $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + $(STRIPCMD) $(TARGET_DIR)/usr/sbin/asterisk + $(STRIPCMD) $(TARGET_DIR)/usr/sbin/stereorize + $(STRIPCMD) $(TARGET_DIR)/usr/sbin/streamplayer + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) \ + $(TARGET_DIR)/usr/lib/asterisk/modules/*.so + $(INSTALL) -m 755 $(ASTERISK_DIR)/contrib/init.d/rc.debian.asterisk \ + $(TARGET_DIR)/etc/init.d/S60asterisk + mv $(TARGET_DIR)/usr/include/asterisk $(STAGING_DIR)/usr/include/ +ifneq ($(BR2_HAVE_MANPAGES),y) + rm -Rf $(TARGET_DIR)/usr/share/man +endif + rm -f $(TARGET_DIR)/usr/sbin/safe_asterisk + rm -f $(TARGET_DIR)/usr/sbin/autosupport + rm -f $(TARGET_DIR)/usr/sbin/astgenkey + touch -c $@ + +asterisk: uclibc ncurses zlib openssl mpg123 $(TARGET_DIR)/$(ASTERISK_TARGET_BINARY) + +asterisk-source: $(DL_DIR)/$(ASTERISK_SOURCE) + +asterisk-clean: + rm -Rf $(STAGING_DIR)/usr/include/asterisk + rm -Rf $(TARGET_DIR)/etc/asterisk + rm -Rf $(TARGET_DIR)/usr/lib/asterisk + rm -Rf $(TARGET_DIR)/var/lib/asterisk + rm -Rf $(TARGET_DIR)/var/spool/asterisk + rm -f $(TARGET_DIR)/etc/init.d/S60asterisk + rm -f $(TARGET_DIR)/usr/sbin/stereorize + rm -f $(TARGET_DIR)/usr/sbin/streamplayer + -$(MAKE) -C $(ASTERISK_DIR) clean + +asterisk-dirclean: + rm -rf $(ASTERISK_DIR) + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_ASTERISK)),y) +TARGETS+=asterisk +endif diff --git a/package/audio/asterisk/asterisk_no_res_ninit.patch b/package/audio/asterisk/asterisk_no_res_ninit.patch new file mode 100644 index 000000000..1dff2f305 --- /dev/null +++ b/package/audio/asterisk/asterisk_no_res_ninit.patch @@ -0,0 +1,12 @@ +diff -ur /tmp/asterisk-1.2.0-beta1/dns.c asterisk-1.2.0-beta1/dns.c +--- /tmp/asterisk-1.2.0-beta1/dns.c 2005-08-14 04:23:33.000000000 +0200 ++++ asterisk-1.2.0-beta1/dns.c 2005-08-31 09:42:36.000000000 +0200 +@@ -157,7 +157,7 @@ + return 0; + } + +-#if defined(res_ninit) ++#if (defined(res_ninit) && !defined(__UCLIBC__)) + #define HAS_RES_NINIT + #else + AST_MUTEX_DEFINE_STATIC(res_lock); diff --git a/package/audio/audio.mk b/package/audio/audio.mk new file mode 100644 index 000000000..30f43b1dc --- /dev/null +++ b/package/audio/audio.mk @@ -0,0 +1 @@ +include package/audio/*/*.mk diff --git a/package/audio/aumix/Config.in b/package/audio/aumix/Config.in new file mode 100644 index 000000000..3d3208250 --- /dev/null +++ b/package/audio/aumix/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AUMIX + bool "aumix" + select BR2_PACKAGE_NCURSES + help + aumix is a small, easy-to-use program to control the mixer + of your sound card. It runs in text mode using the ncurses + library, or from the command line (non-interactively). + It can read default settings from a file, and it can also + automatically save and restore the mixer settings at shutdown + and boot. + + http://jpj.net/~trevor/aumix.html diff --git a/package/audio/aumix/aumix.mk b/package/audio/aumix/aumix.mk new file mode 100644 index 000000000..d30b3a7be --- /dev/null +++ b/package/audio/aumix/aumix.mk @@ -0,0 +1,64 @@ +############################################################# +# +# aumix +# +############################################################# + +AUMIX_VERSION=2.8 +AUMIX_SOURCE=aumix-$(AUMIX_VERSION).tar.bz2 +AUMIX_SITE=http://jpj.net/~trevor/aumix +AUMIX_DIR=$(BUILD_DIR)/aumix-$(AUMIX_VERSION) +AUMIX_CAT:=$(BZCAT) + +$(DL_DIR)/$(AUMIX_SOURCE): + $(WGET) -P $(DL_DIR) $(AUMIX_SITE)/$(AUMIX_SOURCE) + +$(AUMIX_DIR)/.unpacked: $(DL_DIR)/$(AUMIX_SOURCE) + $(AUMIX_CAT) $(DL_DIR)/$(AUMIX_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + touch $@ + +$(AUMIX_DIR)/.configured: $(AUMIX_DIR)/.unpacked + (cd $(AUMIX_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=$(STAGING_DIR)/lib \ + --includedir=$(STAGING_DIR)/usr/include \ + --without-gtk \ + --without-gtk1 \ + --without-alsa \ + --without-gpm \ + --without-sysmouse \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(AUMIX_DIR)/src/aumix: $(AUMIX_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) -C $(AUMIX_DIR) + +$(AUMIX_DIR)/.installed: $(AUMIX_DIR)/src/aumix + $(MAKE) -C $(AUMIX_DIR) DESTDIR=$(TARGET_DIR) install + touch $@ + +aumix: uclibc ncurses $(AUMIX_DIR)/.installed + +aumix-source: $(DL_DIR)/$(AUMIX_SOURCE) + +aumix-clean: + -$(MAKE) -C $(AUMIX_DIR) clean + +aumix-dirclean: + rm -rf $(AUMIX_DIR) +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_AUMIX)),y) +TARGETS+=aumix +endif diff --git a/package/audio/festival/Config.in b/package/audio/festival/Config.in new file mode 100644 index 000000000..209c95b58 --- /dev/null +++ b/package/audio/festival/Config.in @@ -0,0 +1,22 @@ +menuconfig BR2_PACKAGE_FESTIVAL +bool "festival text-to-speech system" +select BR2_PACKAGE_ALSA_LIB +select BR2_PACKAGE_SPEECH_TOOLS +help + Text to speech system for Linux + +if BR2_PACKAGE_FESTIVAL + + menu "speech tools" + source "package/festival/speech-tools/Config.in" + endmenu + + menu "festival lexicons" + source "package/festival/lexicons/Config.in" + endmenu + + menu "festival voices" + source "package/festival/voices/Config.in" + endmenu + +endif diff --git a/package/audio/festival/festival.mk b/package/audio/festival/festival.mk new file mode 100644 index 000000000..3d80e14d7 --- /dev/null +++ b/package/audio/festival/festival.mk @@ -0,0 +1,4 @@ +include package/festival/speech-tools/speech-tools.mk +include package/festival/festival/festival.mk +include package/festival/voices/festvox.mk +include package/festival/lexicons/festlex.mk diff --git a/package/audio/festival/festival/festival-1.96-beta-doc.patch b/package/audio/festival/festival/festival-1.96-beta-doc.patch new file mode 100644 index 000000000..583cf6e56 --- /dev/null +++ b/package/audio/festival/festival/festival-1.96-beta-doc.patch @@ -0,0 +1,23 @@ +--- a/doc/Makefile 2008-04-02 15:13:28.000000000 -0400 ++++ b/doc/Makefile 2008-04-02 15:13:09.000000000 -0400 +@@ -64,7 +64,7 @@ MANPAGES = festival.head festival.tail \ + FILES=Makefile $(MANPAGES) festival.texi $(SGMLFILES) refcard.tex $(DOCXXFILES) + LOCAL_CLEAN = *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr + +-ALL = festival.1 festival_client.1 ++#ALL = festival.1 festival_client.1 + + include $(TOP)/config/common_make_rules + include $(EST)/config/rules/doc.mak +@@ -72,9 +72,9 @@ include $(EST)/config/rules/doc.mak + %.1 : %.head %.options %.tail + cat $^ >$@ + %.options : $(TOP)/src/main/% +- $(TOP)/bin/$* -man_options >$@ ++# $(TOP)/bin/$* -man_options >$@ + %.options : $(TOP)/src/main/%.exe +- $(TOP)/bin/$* -man_options >$@ ++# $(TOP)/bin/$* -man_options >$@ + + festival.info: festival.texi festfunc.texi festvars.texi festfeat.texi + @ if [ ! -d info ] ; \ diff --git a/package/audio/festival/festival/festival-1.96-beta-etcsiteinit.patch b/package/audio/festival/festival/festival-1.96-beta-etcsiteinit.patch new file mode 100644 index 000000000..8e21acede --- /dev/null +++ b/package/audio/festival/festival/festival-1.96-beta-etcsiteinit.patch @@ -0,0 +1,55 @@ +diff -ur festival.orig/lib/init.scm festival/lib/init.scm +--- festival.orig/lib/init.scm 2004-07-15 19:03:04.000000000 -0400 ++++ festival/lib/init.scm 2007-03-15 11:58:09.000000000 -0400 +@@ -55,6 +55,10 @@ + (if (probe_file (path-append libdir "sitevars.scm")) + (load (path-append libdir "sitevars.scm"))) + ++(if (probe_file "/etc/festival/sitevars.scm") ++ (load "/etc/festival/sitevars.scm")) ++ ++ + ;;; CSTR siod extensions + (require 'cstr) + +@@ -98,7 +102,7 @@ + (t ;; can't find direct support so guess that /dev/audio for 8k ulaw exists + (Parameter.def 'Audio_Method 'sunaudio))) + ;;; If you have an external program to play audio add its definition +-;;; in siteinit.scm ++;;; in ~/.festivalrc or /etc/festival/siteinit.scm + + ;;; The audio spooler doesn't work under Windows so redefine audio_mode + (if (member 'mplayeraudio *modules*) +@@ -135,9 +139,13 @@ + ;;; + ;;; Local site initialization, if the file exists load it + ;;; ++ + (if (probe_file (path-append libdir "siteinit.scm")) + (load (path-append libdir "siteinit.scm"))) + ++(if (probe_file "/etc/festival/siteinit.scm") ++ (load "/etc/festival/siteinit.scm")) ++ + ;;; User initialization, if a user has a personal customization + ;;; file loaded it + (if (probe_file (path-append home-directory ".siodrc")) +diff -ur festival.orig/lib/voices.scm festival/lib/voices.scm +--- festival.orig/lib/voices.scm 2005-05-02 10:20:37.000000000 -0400 ++++ festival/lib/voices.scm 2007-03-15 12:00:19.000000000 -0400 +@@ -45,12 +45,12 @@ + (defvar system-voice-path '( ) + "system-voice-path + Additional directory not near the load path where voices can be +- found, this can be redefined in lib/sitevars.scm if desired.") ++ found, this can be redefined in /etc/festival/sitevars.scm if desired.") + + (defvar system-voice-path-multisyn '( ) + "system-voice-path-multisyn + Additional directory not near the load path where multisyn voices can be +- found, this can be redefined in lib/sitevars.scm if desired.") ++ found, this can be redefined in /etc/festival/sitevars.scm if desired.") + + (defvar voice-path + (remove-duplicates diff --git a/package/audio/festival/festival/festival-1.96-beta-libdir.patch b/package/audio/festival/festival/festival-1.96-beta-libdir.patch new file mode 100644 index 000000000..b076ad947 --- /dev/null +++ b/package/audio/festival/festival/festival-1.96-beta-libdir.patch @@ -0,0 +1,10 @@ +--- a/config/project.mak 2005-05-02 10:21:29.000000000 -0400 ++++ b/config/project.mak 2008-04-01 14:22:01.000000000 -0400 +@@ -113,6 +113,6 @@ PROJECT_JAVA_ROOT=$(TOP)/src/modules/jav + DOCXX_DIRS = $(TOP)/src + MODULE_TO_DOCXX = perl $(TOP)/src/modules/utilities/extract_module_doc++.prl + +-FTLIBDIR = $(FESTIVAL_HOME)/lib ++FTLIBDIR = /usr/share/festival/lib + + diff --git a/package/audio/festival/festival/festival-1.96-beta-speechtools-dir.patch b/package/audio/festival/festival/festival-1.96-beta-speechtools-dir.patch new file mode 100644 index 000000000..874d1f662 --- /dev/null +++ b/package/audio/festival/festival/festival-1.96-beta-speechtools-dir.patch @@ -0,0 +1,11 @@ +--- a/config/config.in 2008-03-31 15:20:02.000000000 -0400 ++++ b/config/config.in 2008-03-31 15:26:09.000000000 -0400 +@@ -10,7 +10,7 @@ + ########################################################################### + ## Which speech tools to use + +-EST=$(TOP)/../speech_tools ++EST=$(TOP)/../speech-tools-1.2.96-beta + + ########################################################################### + ## Where the festival tree will be installed. diff --git a/package/audio/festival/festival/festival.mk b/package/audio/festival/festival/festival.mk new file mode 100644 index 000000000..8753d9848 --- /dev/null +++ b/package/audio/festival/festival/festival.mk @@ -0,0 +1,21 @@ +############################################################# +# +# festival +# +############################################################# +FESTIVAL_VERSION = 1.96-beta +FESTIVAL_SOURCE = festival-$(FESTIVAL_VERSION).tar.gz +FESTIVAL_SITE = http://festvox.org/packed/festival/1.96 +FESTIVAL_AUTORECONF = NO +FESTIVAL_INSTALL_STAGING = NO +FESTIVAL_INSTALL_TARGET = YES +FESTIVAL_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) STRIP=$(TARGET_STRIP) install + +FESTIVAL_CONF_OPT = --prefix=/usr --libdir=/usr/share/festival/lib + +FESTIVAL_MAKE_OPT = CC=$(TARGET_CC) CXX=$(TARGET_CXX) + +FESTIVAL_DEPENDENCIES = uclibc alsa-lib speech-tools + +$(eval $(call AUTOTARGETS,package/festival,festival)) + diff --git a/package/audio/festival/lexicons/Config.in b/package/audio/festival/lexicons/Config.in new file mode 100644 index 000000000..6d92883b3 --- /dev/null +++ b/package/audio/festival/lexicons/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_FESTLEX_CMU + bool "Carnegie Mellon University" + help + Lexicon for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTLEX_OALD + bool "Oxford Advanced Learners dictionary" + help + Lexicon for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTLEX_POS + bool "POSLEX" + help + Lexicon for the festival text to speech system + + http://festvox.org/packed/festival/latest diff --git a/package/audio/festival/lexicons/festlex.mk b/package/audio/festival/lexicons/festlex.mk new file mode 100644 index 000000000..f5fdc9f76 --- /dev/null +++ b/package/audio/festival/lexicons/festlex.mk @@ -0,0 +1,46 @@ +############################################################# +# +# festival lexicons +# +############################################################# +LEX1 = festlex_CMU.tar.gz +LEX2 = festlex_OALD.tar.gz +LEX3 = festlex_POSLEX.tar.gz +FESTLEX_STATUS_DIR = $(BUILD_DIR)/festival_lexicons +FESTLEX_INSTALL_DIR = $(TARGET_DIR)/usr/share + +$(FESTLEX_STATUS_DIR)/.downloaded: + mkdir -p $(FESTLEX_STATUS_DIR) +ifeq ($(BR2_PACKAGE_FESTLEX_CMU),y) + $(Q)test -e $(DL_DIR)/$(LEX1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX1) +endif +ifeq ($(BR2_PACKAGE_FESTLEX_OALD),y) + $(Q)test -e $(DL_DIR)/$(LEX2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX2) +endif +ifeq ($(BR2_PACKAGE_FESTLEX_POS),y) + $(Q)test -e $(DL_DIR)/$(LEX3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX3) +endif + touch $@ + +$(FESTLEX_STATUS_DIR)/.installed: $(FESTLEX_STATUS_DIR)/.downloaded +ifeq ($(BR2_PACKAGE_FESTLEX_CMU),y) + tar -xvf $(DL_DIR)/$(LEX1) --directory $(FESTLEX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTLEX_OALD),y) + tar -xvf $(DL_DIR)/$(LEX2) --directory $(FESTLEX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTLEX_POS),y) + tar -xvf $(DL_DIR)/$(LEX3) --directory $(FESTLEX_INSTALL_DIR) +endif + touch $@ + +festlex: $(FESTLEX_STATUS_DIR)/.installed + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_FESTIVAL)),y) +TARGETS+=festlex +endif diff --git a/package/audio/festival/speech-tools/Config.in b/package/audio/festival/speech-tools/Config.in new file mode 100644 index 000000000..d8405bad3 --- /dev/null +++ b/package/audio/festival/speech-tools/Config.in @@ -0,0 +1,6 @@ + config BR2_PACKAGE_SPEECH_TOOLS + bool "speech tools for festival" + help + Speech tools for the festival text to speech system + + http://festvox.org/packed/festival/latest diff --git a/package/audio/festival/speech-tools/speech-tools-1.2.96-beta-install.patch b/package/audio/festival/speech-tools/speech-tools-1.2.96-beta-install.patch new file mode 100644 index 000000000..3cc47d344 --- /dev/null +++ b/package/audio/festival/speech-tools/speech-tools-1.2.96-beta-install.patch @@ -0,0 +1,47 @@ +--- a/config/rules/install.mak 2001-04-04 07:55:32.000000000 -0400 ++++ b/config/rules/install.mak 2008-04-03 12:37:45.000000000 -0400 +@@ -50,9 +50,9 @@ ifneq ($(SHARED),0) + endif + endif + +-ifeq ($(PROJECT_HOME_PATH), $(PROJECT_TOP_PATH)) +- TO_INSTALL=make_bin +-else ++#ifeq ($(PROJECT_HOME_PATH), $(PROJECT_TOP_PATH)) ++# TO_INSTALL=make_bin ++#else + + TO_INSTALL= \ + make_installed_exec$(S) \ +@@ -62,7 +62,7 @@ else + INSTALLED_LIB=$(shell (cd $($(PROJECT_PREFIX)_HOME); pwd))/lib + INSTALLED_PRIVATE_LIB=$(INSTALLED_LIB)/$(shell echo $(PROJECT_PREFIX)| tr A-Z a-z) + INSTALLED_BIN=$(shell (cd $($(PROJECT_PREFIX)_HOME); pwd))/bin +-endif ++#endif + + install: $(TO_INSTALL) + +--- a/config/rules/bin_process.mak 2004-01-27 18:56:39.000000000 -0500 ++++ b/config/rules/bin_process.mak 2008-04-03 12:37:31.000000000 -0400 +@@ -69,10 +69,17 @@ endif + do \ + b=`basename "$$i"`;\ + $(ECHO_N) " $$b";\ +- $(INSTALL_PROG) -s "$$main/$$i" "$(subst TOP,$(TOP),$(BIN))/$$b";\ ++ $(INSTALL_PROG) "$$main/$$i" "$(DESTDIR)/usr/bin/$$b";\ ++ $(STRIP) "$(DESTDIR)/usr/bin/$$b";\ + done +- @echo +- ++ @$(ECHO_N) "Install Scheme Libraries:" ++ @main=`pwd` ;\ ++ mkdir -p "$(DESTDIR)/usr/share/festival"; cp -a "$$main/../../lib" "$(DESTDIR)/usr/share/festival";\ ++ for i in `find "$(DESTDIR)/usr/share/festival/lib" -name Makefile`;\ ++ do \ ++ rm "$$i"; \ ++ done ++ + .link_main: + @$(MAKE) MADE_FROM_ABOVE=1 --no-print-directory -C '$(PROJECT_MAIN_DIR)' BIN=TOP/$(DIRNAME) LIBDIR=MAIN/TOP/$(PROJECT_LIBRARY_DIR) MAIN='$($(PROJECT_PREFIX)_HOME)' .link_main$(S) + diff --git a/package/audio/festival/speech-tools/speech-tools.mk b/package/audio/festival/speech-tools/speech-tools.mk new file mode 100644 index 000000000..3f2ba090f --- /dev/null +++ b/package/audio/festival/speech-tools/speech-tools.mk @@ -0,0 +1,20 @@ +############################################################# +# +# speech-tools +# +############################################################# +SPEECH_TOOLS_VERSION = 1.2.96-beta +SPEECH_TOOLS_SOURCE = speech_tools-$(SPEECH_TOOLS_VERSION).tar.gz +SPEECH_TOOLS_SITE = http://festvox.org/packed/festival/1.96 +SPEECH_TOOLS_AUTORECONF = NO +SPEECH_TOOLS_INSTALL_STAGING = NO +SPEECH_TOOLS_INSTALL_TARGET = YES +SPEECH_TOOLS_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) STRIP=$(TARGET_STRIP) install + +SPEECH_TOOLS_CONF_OPT = +SPEECH_TOOLS_MAKE_OPT = CC=$(TARGET_CC) CXX=$(TARGET_CXX) + +SPEECH_TOOLS_DEPENDENCIES = uclibc ncurses + +$(eval $(call AUTOTARGETS,package/festival,speech-tools)) + diff --git a/package/audio/festival/voices/Config.in b/package/audio/festival/voices/Config.in new file mode 100644 index 000000000..b0a1cc0b1 --- /dev/null +++ b/package/audio/festival/voices/Config.in @@ -0,0 +1,63 @@ +config BR2_PACKAGE_FESTVOX_AWB + bool "Alan Scottish English" + help + Scottish English voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_BDL + bool "Brian US English" + help + US English male voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_JMK + bool "John Canadian English" + help + Canadian English voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_SLT + bool "Stephanie US English" + help + US English female voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_AWB_MULTISYN + bool "Alan multisyn (big file)" + help + voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_JMK_MULTISYN + bool "John multisyn (big file)" + help + voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_KAL_SIXTEENK + bool "Kevin diphone US English 16k" + help + diphone voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_KED_EIGHTK + bool "Kurt diphone American English 8k" + help + diphone voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + +config BR2_PACKAGE_FESTVOX_KED_SIXTEENK + bool "Kurt diphone American English 16k" + help + diphone voice for the festival text to speech system + + http://festvox.org/packed/festival/latest + diff --git a/package/audio/festival/voices/festvox.mk b/package/audio/festival/voices/festvox.mk new file mode 100644 index 000000000..8456a4903 --- /dev/null +++ b/package/audio/festival/voices/festvox.mk @@ -0,0 +1,99 @@ +############################################################# +# +# festival voices +# +############################################################# +VOICE1 = festvox_cmu_us_awb_arctic_hts.tar.gz +VOICE2 = festvox_cmu_us_bdl_arctic_hts.tar.gz +VOICE3 = festvox_cmu_us_jmk_arctic_hts.tar.gz +VOICE4 = festvox_cmu_us_slt_arctic_hts.tar.gz +VOICE5 = festvox_cstr_us_awb_arctic_multisyn-1.0.tar.gz +VOICE6 = festvox_cstr_us_jmk_arctic_multisyn-1.0.tar.gz +VOICE7 = festvox_kallpc16k.tar.gz +VOICE8 = festvox_kedlpc8k.tar.gz +VOICE9 = festvox_kedlpc16k.tar.gz +FRONTEND1 = festvox_us1.tar.gz +FRONTEND2 = festvox_us2.tar.gz +FRONTEND3 = festvox_us3.tar.gz +FESTVOX_STATUS_DIR = $(BUILD_DIR)/festival_voices +FESTVOX_INSTALL_DIR = $(TARGET_DIR)/usr/share + +$(FESTVOX_STATUS_DIR)/.downloaded: + mkdir -p $(FESTVOX_STATUS_DIR) +ifeq ($(BR2_PACKAGE_FESTVOX_AWB),y) + $(Q)test -e $(DL_DIR)/$(VOICE1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE1) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_BDL),y) + $(Q)test -e $(DL_DIR)/$(VOICE2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE2) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_JMK),y) + $(Q)test -e $(DL_DIR)/$(VOICE3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE3) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_SLT),y) + $(Q)test -e $(DL_DIR)/$(VOICE4) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE4) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_AWB_MULTISYN),y) + $(Q)test -e $(DL_DIR)/$(VOICE5) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE5) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_JMK_MULTISYN),y) + $(Q)test -e $(DL_DIR)/$(VOICE6) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE6) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KAL_SIXTEENK),y) + $(Q)test -e $(DL_DIR)/$(VOICE7) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE7) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KED_EIGHTK),y) + $(Q)test -e $(DL_DIR)/$(VOICE8) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE8) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KED_SIXTEENK),y) + $(Q)test -e $(DL_DIR)/$(VOICE9) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE9) +endif + $(Q)test -e $(DL_DIR)/$(FRONTEND1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND1) + $(Q)test -e $(DL_DIR)/$(FRONTEND2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND2) + $(Q)test -e $(DL_DIR)/$(FRONTEND3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND3) + + touch $@ + +$(FESTVOX_STATUS_DIR)/.installed: $(FESTVOX_STATUS_DIR)/.downloaded +ifeq ($(BR2_PACKAGE_FESTVOX_AWB),y) + tar -xvf $(DL_DIR)/$(VOICE1) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_BDL),y) + tar -xvf $(DL_DIR)/$(VOICE2) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_JMK),y) + tar -xvf $(DL_DIR)/$(VOICE3) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_SLT),y) + tar -xvf $(DL_DIR)/$(VOICE4) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_AWB_MULTISYN),y) + tar -xvf $(DL_DIR)/$(VOICE5) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_JMK_MULTISYN),y) + tar -xvf $(DL_DIR)/$(VOICE6) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KAL_SIXTEENK),y) + tar -xvf $(DL_DIR)/$(VOICE7) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KED_EIGHTK),y) + tar -xvf $(DL_DIR)/$(VOICE8) --directory $(FESTVOX_INSTALL_DIR) +endif +ifeq ($(BR2_PACKAGE_FESTVOX_KED_SIXTEENK),y) + tar -xvf $(DL_DIR)/$(VOICE9) --directory $(FESTVOX_INSTALL_DIR) +endif + tar -xvf $(DL_DIR)/$(FRONTEND1) --directory $(FESTVOX_INSTALL_DIR) + tar -xvf $(DL_DIR)/$(FRONTEND2) --directory $(FESTVOX_INSTALL_DIR) + tar -xvf $(DL_DIR)/$(FRONTEND3) --directory $(FESTVOX_INSTALL_DIR) + + touch $@ + +festvox: $(FESTVOX_STATUS_DIR)/.installed + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_FESTIVAL)),y) +TARGETS+=festvox +endif diff --git a/package/audio/libid3tag/Config.in b/package/audio/libid3tag/Config.in new file mode 100644 index 000000000..0f4a1522d --- /dev/null +++ b/package/audio/libid3tag/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBID3TAG + bool "libid3tag" + select BR2_PACKAGE_ZLIB + depends on BR2_PACKAGE_LIBMAD + help + ID3 tag reading library from the MAD project. + + http://www.underbit.com/products/mad/ diff --git a/package/audio/libid3tag/libid3tag.mk b/package/audio/libid3tag/libid3tag.mk new file mode 100644 index 000000000..d299d86ad --- /dev/null +++ b/package/audio/libid3tag/libid3tag.mk @@ -0,0 +1,68 @@ +############################################################# +# +# libid3tag +# +############################################################# + +LIBID3TAG_VERSION:=0.15.1b +LIBID3TAG_SOURCE:=libid3tag-$(LIBID3TAG_VERSION).tar.gz +LIBID3TAG_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad +LIBID3TAG_DIR:=$(BUILD_DIR)/libid3tag-$(LIBID3TAG_VERSION) +LIBID3TAG_CAT:=$(ZCAT) +LIBID3TAG_BIN:=libid3tag.so.0.3.0 +LIBID3TAG_TARGET_BIN:=usr/lib/$(LIBID3TAG_BIN) + +$(DL_DIR)/$(LIBID3TAG_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBID3TAG_SITE)/$(LIBID3TAG_SOURCE) + +$(LIBID3TAG_DIR)/.unpacked: $(DL_DIR)/$(LIBID3TAG_SOURCE) + $(LIBID3TAG_CAT) $(DL_DIR)/$(LIBID3TAG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(LIBID3TAG_DIR) package/libid3tag/ libid3tag-$(LIBID3TAG_VERSION)\*.patch\* + $(CONFIG_UPDATE) $(LIBID3TAG_DIR) + touch $@ + +$(LIBID3TAG_DIR)/.configured: $(LIBID3TAG_DIR)/.unpacked + (cd $(LIBID3TAG_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(LIBID3TAG_DIR)/.libs/$(LIBID3TAG_BIN): $(LIBID3TAG_DIR)/.configured + $(MAKE) -C $(LIBID3TAG_DIR) + +$(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN): $(LIBID3TAG_DIR)/.libs/$(LIBID3TAG_BIN) + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBID3TAG_DIR) install + $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libid3tag.la + +$(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN): $(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN) + cp -dpf $(STAGING_DIR)/usr/lib/libid3tag.so* $(TARGET_DIR)/usr/lib/ + -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libid3tag.so* + +libid3tag: uclibc zlib libmad $(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN) + +libid3tag-source: $(DL_DIR)/$(LIBID3TAG_SOURCE) + +libid3tag-clean: + -$(MAKE) -C $(LIBID3TAG_DIR) clean + rm -f $(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN) + rm -f $(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN) \ + $(TARGET_DIR)/usr/lib/libid3tag* + +libid3tag-dirclean: + rm -rf $(LIBID3TAG_DIR) +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_LIBID3TAG)),y) +TARGETS+=libid3tag +endif diff --git a/package/audio/libmad/Config.in b/package/audio/libmad/Config.in new file mode 100644 index 000000000..867a11a1e --- /dev/null +++ b/package/audio/libmad/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBMAD + bool "libmad" + help + High-quality MPEG audio decoder. All computations are performed + with fixed-point integer arithmetic, making it ideal for systems + without a floating-point unit. + + http://www.underbit.com/products/mad/ + +config BR2_PACKAGE_LIBMAD_TARGET_HEADERS + bool "libmad headers in target" + depends on BR2_PACKAGE_LIBMAD + help + Put headers files in the target. diff --git a/package/audio/libmad/libmad-0.15.1b-optimization.patch.avr32 b/package/audio/libmad/libmad-0.15.1b-optimization.patch.avr32 new file mode 100644 index 000000000..b74eea322 --- /dev/null +++ b/package/audio/libmad/libmad-0.15.1b-optimization.patch.avr32 @@ -0,0 +1,2922 @@ +diff --git a/bit.c b/bit.c +index c2bfb24..262ce3a 100644 +--- a/bit.c ++++ b/bit.c +@@ -25,12 +25,6 @@ + + # include "global.h" + +-# ifdef HAVE_LIMITS_H +-# include +-# else +-# define CHAR_BIT 8 +-# endif +- + # include "bit.h" + + /* +@@ -81,6 +75,8 @@ unsigned short const crc_table[256] = { + + # define CRC_POLY 0x8005 + ++#ifndef FPM_AVR32 ++ + /* + * NAME: bit->init() + * DESCRIPTION: initialize bit pointer struct +@@ -190,6 +186,8 @@ void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len, + } + # endif + ++#endif ++ + /* + * NAME: bit->crc() + * DESCRIPTION: compute CRC-check word +diff --git a/bit.h b/bit.h +index 5a51570..70f550a 100644 +--- a/bit.h ++++ b/bit.h +@@ -22,6 +22,92 @@ + # ifndef LIBMAD_BIT_H + # define LIBMAD_BIT_H + ++# ifdef HAVE_LIMITS_H ++# include ++# else ++# define CHAR_BIT 8 ++# endif ++ ++#ifdef FPM_AVR32 ++ ++struct mad_bitptr { ++ unsigned char const *byte; ++ unsigned int read_bytes; ++}; ++ ++/* ++ * NAME: bit->init() ++ * DESCRIPTION: initialize bit pointer struct ++ */ ++static void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte) ++{ ++ bitptr->byte = byte; ++ bitptr->read_bytes = 0; ++} ++ ++/* ++ * NAME: bit->length() ++ * DESCRIPTION: return number of bits between start and end points ++ */ ++static unsigned int mad_bit_length(struct mad_bitptr const *begin, ++ struct mad_bitptr const *end) ++{ ++ return (end->read_bytes - begin->read_bytes) + ++ 8 * (end->byte - begin->byte); ++} ++ ++/* ++ * NAME: bit->nextbyte() ++ * DESCRIPTION: return pointer to next unprocessed byte ++ */ ++static unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr) ++{ ++ return bitptr->byte + ((bitptr->read_bytes + 0x7) >> 3); ++} ++ ++/* ++ * NAME: bit->skip() ++ * DESCRIPTION: advance bit pointer ++ */ ++static void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len) ++{ ++ bitptr->read_bytes += len; ++ bitptr->byte += (bitptr->read_bytes >> 3); ++ bitptr->read_bytes &= 0x7; ++} ++ ++/* ++ * NAME: bit->read() ++ * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value ++ */ ++static unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len) ++{ ++ register unsigned long value; ++ ++ if (!len) ++ return 0; ++ ++ value = *(unsigned int *)bitptr->byte; ++ ++ value <<= bitptr->read_bytes; ++ value >>= (32 - len); ++ ++ bitptr->read_bytes += len; ++ bitptr->byte += (bitptr->read_bytes >> 3); ++ bitptr->read_bytes &= 0x7; ++ ++ return value; ++} ++ ++# define mad_bit_finish(bitptr) /* nothing */ ++ ++static unsigned long mad_bit_bitsleft(struct mad_bitptr *bitptr) ++{ ++ return (8 - (bitptr)->read_bytes); ++} ++ ++#else /* #ifdef FPM_AVR32 */ ++ + struct mad_bitptr { + unsigned char const *byte; + unsigned short cache; +@@ -42,6 +128,8 @@ void mad_bit_skip(struct mad_bitptr *, unsigned int); + unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); + void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); + ++#endif ++ + unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); + + # endif +diff --git a/configure.ac b/configure.ac +index 9b79399..063cb9b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -274,13 +274,14 @@ fi + AC_MSG_CHECKING(for architecture-specific fixed-point math routines) + AC_ARG_ENABLE(fpm, AC_HELP_STRING([--enable-fpm=ARCH], + [use ARCH-specific fixed-point math routines +- (one of: intel, arm, mips, sparc, ppc, 64bit, default)]), ++ (one of: intel, arm, avr32, mips, sparc, ppc, 64bit, default)]), + [ + case "$enableval" in + yes) ;; + no|default|approx) FPM="DEFAULT" ;; + intel|i?86) FPM="INTEL" ;; + arm) FPM="ARM" ;; ++ avr32) FPM="AVR32" ;; + mips) FPM="MIPS" ;; + sparc) FPM="SPARC" ;; + ppc|powerpc) FPM="PPC" ;; +@@ -298,6 +299,7 @@ then + case "$host" in + i?86-*) FPM="INTEL" ;; + arm*-*) FPM="ARM" ;; ++ avr32*-*) FPM="AVR32" ;; + mips*-*) FPM="MIPS" ;; + sparc*-*) FPM="SPARC" ;; + powerpc*-*) FPM="PPC" ;; +@@ -343,6 +345,11 @@ then + ASO="$ASO -DASO_IMDCT" + ASO_OBJS="imdct_l_arm.lo" + ;; ++ avr32*-*) ++ ASO="$ASO -DASO_INTERLEAVE2" ++ ASO="$ASO -DASO_ZEROCHECK" ++ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo" ++ ;; + mips*-*) + ASO="$ASO -DASO_INTERLEAVE2" + ASO="$ASO -DASO_ZEROCHECK" +diff --git a/configure b/configure +index ee421cc..7a9f0c8 100755 +--- a/configure ++++ b/configure +@@ -1048,7 +1048,7 @@ Optional Features: + --enable-speed optimize for speed over accuracy + --enable-accuracy optimize for accuracy over speed + --enable-fpm=ARCH use ARCH-specific fixed-point math routines (one of: +- intel, arm, mips, sparc, ppc, 64bit, default) ++ intel, arm, avr32, mips, sparc, ppc, 64bit, default) + --enable-sso use subband synthesis optimization + --disable-aso disable architecture-specific optimizations + --enable-strict-iso use strict ISO/IEC interpretations +@@ -21477,6 +21477,7 @@ if test "${enable_fpm+set}" = set; then + no|default|approx) FPM="DEFAULT" ;; + intel|i?86) FPM="INTEL" ;; + arm) FPM="ARM" ;; ++ avr32) FPM="AVR32" ;; + mips) FPM="MIPS" ;; + sparc) FPM="SPARC" ;; + ppc|powerpc) FPM="PPC" ;; +@@ -21498,6 +21499,7 @@ then + case "$host" in + i?86-*) FPM="INTEL" ;; + arm*-*) FPM="ARM" ;; ++ avr32*-*) FPM="AVR32" ;; + mips*-*) FPM="MIPS" ;; + sparc*-*) FPM="SPARC" ;; + powerpc*-*) FPM="PPC" ;; +@@ -21554,6 +21556,11 @@ then + ASO="$ASO -DASO_IMDCT" + ASO_OBJS="imdct_l_arm.lo" + ;; ++ avr32*-*) ++ ASO="$ASO -DASO_INTERLEAVE2" ++ ASO="$ASO -DASO_ZEROCHECK" ++ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo" ++ ;; + mips*-*) + ASO="$ASO -DASO_INTERLEAVE2" + ASO="$ASO -DASO_ZEROCHECK" +diff --git a/dct32_avr32.S b/dct32_avr32.S +new file mode 100644 +index 0000000..7513340 +--- /dev/null ++++ b/dct32_avr32.S +@@ -0,0 +1,780 @@ ++/* ++ Optimized 32-point Discrete Cosine Transform (DCT) ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Ronny Pedersen, Atmel Norway ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#define SHIFT 12 ++#define MAD_F_SCALEBITS 28 ++#define SLOTS 8 ++ ++#define MAD_F(x) ((x + (1 << 15)) >> 16) ++ ++# define costab1 MAD_F(0x7fd8878e) ++# define costab2 MAD_F(0x7f62368f) ++# define costab3 MAD_F(0x7e9d55fc) ++# define costab4 MAD_F(0x7d8a5f40) ++# define costab5 MAD_F(0x7c29fbee) ++# define costab6 MAD_F(0x7a7d055b) ++# define costab7 MAD_F(0x78848414) ++# define costab8 MAD_F(0x7641af3d) ++# define costab9 MAD_F(0x73b5ebd1) ++# define costab10 MAD_F(0x70e2cbc6) ++# define costab11 MAD_F(0x6dca0d14) ++# define costab12 MAD_F(0x6a6d98a4) ++# define costab13 MAD_F(0x66cf8120) ++# define costab14 MAD_F(0x62f201ac) ++# define costab15 MAD_F(0x5ed77c8a) ++# define costab16 MAD_F(0x5a82799a) ++# define costab17 MAD_F(0x55f5a4d2) ++# define costab18 MAD_F(0x5133cc94) ++# define costab19 MAD_F(0x4c3fdff4) ++# define costab20 MAD_F(0x471cece7) ++# define costab21 MAD_F(0x41ce1e65) ++# define costab22 MAD_F(0x3c56ba70) ++# define costab23 MAD_F(0x36ba2014) ++# define costab24 MAD_F(0x30fbc54d) ++# define costab25 MAD_F(0x2b1f34eb) ++# define costab26 MAD_F(0x25280c5e) ++# define costab27 MAD_F(0x1f19f97b) ++# define costab28 MAD_F(0x18f8b83c) ++# define costab29 MAD_F(0x12c8106f) ++# define costab30 MAD_F(0x0c8bd35e) ++# define costab31 MAD_F(0x0647d97c) ++ ++ ++ .macro butterfly2_in out1, out2, out3, out4, in, idx_in1, idx_in2, idx_in3, idx_in4, coeff1, coeff2, tmplo, tmphi ++ mov \tmplo, \coeff1 ++ ld.w \out1, \in[\idx_in1 * 4] ++ ld.w \out2, \in[\idx_in2 * 4] ++ ld.w \out3, \in[\idx_in3 * 4] ++ ld.w \out4, \in[\idx_in4 * 4] ++ sub \tmphi, \out1, \out2 ++ add \out1, \out2 ++ mulsatrndwh.w \out2, \tmphi, \tmplo:b ++ ++ sub \tmphi, \out3, \out4 ++ mov \tmplo, \coeff2 ++ add \out3, \out4 ++ mulsatrndwh.w \out4, \tmphi, \tmplo:b ++ .endm ++ ++ .macro butterfly2 in1, in2, in3, in4, coeff1, tmplo, tmphi, tmp ++ mov \tmp, \coeff1 ++ sub \tmphi, \in1, \in2 ++ add \in1, \in2 ++ mulsatrndwh.w \in2, \tmphi, \tmp:b ++ ++ sub \tmphi, \in3, \in4 ++ add \in3, \in4 ++ mulsatrndwh.w \in4, \tmphi, \tmp:b ++ .endm ++ ++ .macro butterfly4 in1, in2, in3, in4, in5, in6, in7, in8, coeff1, tmplo, tmphi, tmp ++ mov \tmp, \coeff1 ++ sub \tmphi, \in1, \in2 ++ add \in1, \in2 ++ mulsatrndwh.w \in2, \tmphi, \tmp:b ++ ++ sub \tmphi, \in3, \in4 ++ add \in3, \in4 ++ mulsatrndwh.w \in4, \tmphi, \tmp:b ++ ++ sub \tmphi, \in5, \in6 ++ add \in5, \in6 ++ mulsatrndwh.w \in6, \tmphi, \tmp:b ++ ++ sub \tmphi, \in7, \in8 ++ add \in7, \in8 ++ mulsatrndwh.w \in8, \tmphi, \tmp:b ++ .endm ++ ++ .macro scale reg ++ .endm ++ ++/*void dct32( mad_fixed_t const in[32], unsigned int slot, ++ mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]) */ ++ ++ .global dct32_avr32 ++dct32_avr32: ++ stm --sp, r0-r7, r9-r11, lr ++ ++ sub sp, 32*4 ++ ++/* t0 = in[0] + in[31]; t16 = MUL(in[0] - in[31], costab1); ++ t1 = in[15] + in[16]; t17 = MUL(in[15] - in[16], costab31); */ ++ butterfly2_in r4/*t0*/, r5/*t16*/, r6/*t1*/, r7/*t17*/, r12, 0, 31, 15, 16, costab1, costab31, r10, r11 ++ ++/* t41 = t16 + t17; ++ t59 = MUL(t16 - t17, costab2); ++ t33 = t0 + t1; ++ t50 = MUL(t0 - t1, costab2);*/ ++ butterfly2 r5/*t41*/, r7/*t59*/, r4/*t33*/, r6/*t50*/, costab2, r10, r11, lr ++ ++/* t2 = in[7] + in[24]; t18 = MUL(in[7] - in[24], costab15); ++ t3 = in[8] + in[23]; t19 = MUL(in[8] - in[23], costab17); */ ++ butterfly2_in r0/*t2*/, r1/*t18*/, r2/*t3*/, r3/*t19*/, r12, 7, 24, 8, 23, costab15, costab17, r10, r11 ++ ++/* t42 = t18 + t19; ++ t60 = MUL(t18 - t19, costab30); ++ t34 = t2 + t3; ++ t51 = MUL(t2 - t3, costab30); */ ++ butterfly2 r1/*t42*/, r3/*t60*/, r0/*t34*/, r2/*t51*/, costab30, r10, r11, lr ++ ++/* t73 = t41 + t42; t94 = MUL(t41 - t42, costab4); ++ t83 = t59 + t60; t106 = MUL(t59 - t60, costab4); */ ++ ++ ++/* t69 = t33 + t34; t89 = MUL(t33 - t34, costab4); ++ t78 = t50 + t51; t100 = MUL(t50 - t51, costab4); */ ++ butterfly4 r5/*t73*/, r1/*t94*/, r7/*t83*/, r3/*t106*/,r4/*t69*/, r0/*t89*/, r6/*t78*/, r2/*t100*/, costab4, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 */ ++ stm sp, r0-r7 ++ ++ ++/* t4 = in[3] + in[28]; t20 = MUL(in[3] - in[28], costab7); ++ t5 = in[12] + in[19]; t21 = MUL(in[12] - in[19], costab25); */ ++ butterfly2_in r4/*t4*/, r5/*t20*/, r6/*t5*/, r7/*t21*/, r12, 3, 28, 12, 19, costab7, costab25, r10, r11 ++ ++/* t43 = t20 + t21; ++ t61 = MUL(t20 - t21, costab14); ++ t35 = t4 + t5; ++ t52 = MUL(t4 - t5, costab14); */ ++ butterfly2 r5/*t43*/, r7/*t61*/, r4/*t35*/, r6/*t52*/, costab14, r10, r11, lr ++ ++/* t6 = in[4] + in[27]; t22 = MUL(in[4] - in[27], costab9); ++ t7 = in[11] + in[20]; t23 = MUL(in[11] - in[20], costab23); */ ++ butterfly2_in r0/*t6*/, r1/*t22*/, r2/*t7*/, r3/*t23*/, r12, 4, 27, 11, 20, costab9, costab23, r10, r11 ++ ++/* t44 = t22 + t23; ++ t62 = MUL(t22 - t23, costab18); ++ t36 = t6 + t7; ++ t53 = MUL(t6 - t7, costab18); */ ++ butterfly2 r1/*t44*/, r3/*t62*/, r0/*t36*/, r2/*t53*/, costab18, r10, r11, lr ++ ++/* t74 = t43 + t44; t95 = MUL(t43 - t44, costab28); ++ t84 = t61 + t62; t107 = MUL(t61 - t62, costab28); */ ++ ++/* t70 = t35 + t36; t90 = MUL(t35 - t36, costab28); ++ t79 = t52 + t53; t101 = MUL(t52 - t53, costab28); */ ++ butterfly4 r5/*t74*/, r1/*t95*/, r7/*t84*/, r3/*t107*/, r4/*t70*/, r0/*t90*/, r6/*t79*/, r2/*t101*/, costab28, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 */ ++ sub r10, sp, -8*4 ++ stm r10, r0-r7 ++ ++ ++/* t8 = in[1] + in[30]; t24 = MUL(in[1] - in[30], costab3); ++ t9 = in[14] + in[17]; t25 = MUL(in[14] - in[17], costab29); */ ++ butterfly2_in r4/*t8*/, r5/*t24*/, r6/*t9*/, r7/*t25*/, r12, 1, 30, 14, 17, costab3, costab29, r10, r11 ++ ++ ++/* t45 = t24 + t25; ++ t63 = MUL(t24 - t25, costab6); ++ t37 = t8 + t9; ++ t54 = MUL(t8 - t9, costab6); */ ++ butterfly2 r5/*t45*/, r7/*t63*/, r4/*t37*/, r6/*t54*/, costab6, r10, r11, lr ++ ++/* t10 = in[6] + in[25]; t26 = MUL(in[6] - in[25], costab13); ++ t11 = in[9] + in[22]; t27 = MUL(in[9] - in[22], costab19); */ ++ butterfly2_in r0/*t10*/, r1/*t26*/, r2/*t11*/, r3/*t27*/, r12, 6, 25, 9, 22, costab13, costab19, r10, r11 ++ ++/* t46 = t26 + t27; ++ t64 = MUL(t26 - t27, costab26); ++ t38 = t10 + t11; ++ t55 = MUL(t10 - t11, costab26); */ ++ butterfly2 r1/*t46*/, r3/*t64*/, r0/*t38*/, r2/*t55*/, costab26, r10, r11, lr ++ ++/* t75 = t45 + t46; t96 = MUL(t45 - t46, costab12); ++ t85 = t63 + t64; t108 = MUL(t63 - t64, costab12); */ ++ ++/* t71 = t37 + t38; t91 = MUL(t37 - t38, costab12); ++ t80 = t54 + t55; t102 = MUL(t54 - t55, costab12); */ ++ butterfly4 r5/*t75*/, r1/*t96*/, r7/*t85*/, r3/*t108*/, r4/*t71*/, r0/*t91*/, r6/*t80*/, r2/*t102*/, costab12, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 */ ++ sub r10, sp, -16*4 ++ stm r10, r0-r7 ++ ++/* t12 = in[2] + in[29]; t28 = MUL(in[2] - in[29], costab5); ++ t13 = in[13] + in[18]; t29 = MUL(in[13] - in[18], costab27); */ ++ butterfly2_in r4/*t12*/, r5/*t28*/, r6/*t13*/, r7/*t29*/, r12, 2, 29, 13, 18, costab5, costab27, r10, r11 ++ ++/* t47 = t28 + t29; ++ t65 = MUL(t28 - t29, costab10); ++ t39 = t12 + t13; ++ t56 = MUL(t12 - t13, costab10); */ ++ butterfly2 r5/*t47*/, r7/*t65*/, r4/*t39*/, r6/*t56*/, costab10, r10, r11, lr ++ ++/* t14 = in[5] + in[26]; t30 = MUL(in[5] - in[26], costab11); ++ t15 = in[10] + in[21]; t31 = MUL(in[10] - in[21], costab21);*/ ++ butterfly2_in r0/*t14*/, r1/*t30*/, r2/*t15*/, r3/*t31*/, r12, 5, 26, 10, 21, costab11, costab21, r10, r11 ++ ++/* t48 = t30 + t31; ++ t66 = MUL(t30 - t31, costab22); ++ t40 = t14 + t15; ++ t57 = MUL(t14 - t15, costab22);*/ ++ butterfly2 r1/*t48*/, r3/*t66*/, r0/*t40*/, r2/*t57*/, costab22, r10, r11, lr ++ ++/* t76 = t47 + t48; t97 = MUL(t47 - t48, costab20); ++ t86 = t65 + t66; t109 = MUL(t65 - t66, costab20);*/ ++ ++/* t72 = t39 + t40; t92 = MUL(t39 - t40, costab20); ++ t81 = t56 + t57; t103 = MUL(t56 - t57, costab20);*/ ++ butterfly4 r5/*t76*/, r1/*t97*/, r7/*t86*/, r3/*t109*/,r4/*t72*/, r0/*t92*/, r6/*t81*/, r2/*t103*/, costab20, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */ ++ sub r10, sp, -24*4 ++ stm r10, r0-r7 ++ ++/* We now have the following on the stack: ++ ++ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 ++ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 ++ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 ++ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */ ++ ++/* Load {r0...r7} = { t72, t76, t71, t75, t70, t74, t69, t73 } */ ++ ld.d r6, sp[2*4] ++ ld.d r4, sp[10*4] ++ ld.d r2, sp[18*4] ++ ld.d r0, sp[26*4] ++ ++ ++/* t113 = t69 + t70; ++ t141 = MUL(t69 - t70, costab8); ++ ++ t115 = t73 + t74; ++ t144 = MUL(t73 - t74, costab8); */ ++ butterfly2 r6/*t113*/, r4/*t141*/, r7/*t115*/, r5/*t144*/, costab8, r10, r11, lr ++ ++/* t114 = t71 + t72; ++ t142 = MUL(t71 - t72, costab24); ++ ++ t116 = t75 + t76; ++ t145 = MUL(t75 - t76, costab24); */ ++ butterfly2 r2/*t114*/, r0/*t142*/, r3/*t116*/, r1/*t145*/, costab24, r10, r11, lr ++ ++ ++/* ++ t191 = t113 + t114; ++ t192 = MUL(t113 - t114, costab16) ++ ++ t32 = t115 + t116; ++ t177 = MUL(t115 - t116, costab16) ; ++ ++ t143 = t141 + t142; ++ t190 = MUL(t141 - t142, costab16) ; ++ ++ t146 = t144 + t145; ++ t184 = MUL(t144 - t145, costab16) ; */ ++ butterfly4 r6/*t191*/, r2/*t192*/, r7/*t32*/, r3/*t177*/, r4/*t143*/, r0/*190*/, r5/*t146*/, r1/*t184*/, costab16, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[2-3] = t32, t191 ++ sp[10-11] = t146, t143 ++ sp[18-19] = t177, t192 ++ sp[26-27] = t184, t190 */ ++ st.d sp[2*4] , r6 ++ st.d sp[10*4], r4 ++ st.d sp[18*4], r2 ++ st.d sp[26*4], r0 ++ ++/* Load {r0...r7} = { t81, t86, t80, t85, t79, t84, t78, t83 } */ ++ ld.d r6, sp[0*4] ++ ld.d r4, sp[8*4] ++ ld.d r2, sp[16*4] ++ ld.d r0, sp[24*4] ++ ++ ++/* t118 = t78 + t79; ++ t148 = MUL(t78 - t79, costab8); ++ ++ t121 = t83 + t84; ++ t152 = MUL(t83 - t84, costab8); */ ++ butterfly2 r6/*t118*/, r4/*t148*/, r7/*t121*/, r5/*t152*/, costab8, r10, r11, lr ++ ++/* t119 = t80 + t81; ++ t149 = MUL(t80 - t81, costab24); ++ ++ t122 = t85 + t86; ++ t153 = MUL(t85 - t86, costab24); */ ++ butterfly2 r2/*t119*/, r0/*t149*/, r3/*t122*/, r1/*t153*/, costab24, r10, r11, lr ++ ++ ++ ++/* t58 = t118 + t119; ++ t178 = MUL(t118 - t119, costab16) ; ++ ++ t67 = t121 + t122; ++ t179 = MUL(t121 - t122, costab16) ; ++ ++ t150 = t148 + t149; ++ t185 = MUL(t148 - t149, costab16) ; ++ ++ t154 = t152 + t153; ++ t186 = MUL(t152 - t153, costab16) ; */ ++ butterfly4 r6/*t58*/, r2/*t178*/, r7/*t67*/, r3/*t179*/, r4/*t150*/, r0/*185*/, r5/*t154*/, r1/*t186*/, costab16, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[0-1] = t67, t58 ++ sp[8-9] = t154, t150 ++ sp[16-17] = t179, t178 ++ sp[24-25] = t186, t185 */ ++ st.d sp[0*4] , r6 ++ st.d sp[8*4], r4 ++ st.d sp[16*4], r2 ++ st.d sp[24*4], r0 ++ ++/* Load {r0...r7} = { t92, t97, t91, t96, t90, t95, t89, t94 } */ ++ ld.d r6, sp[6*4] ++ ld.d r4, sp[14*4] ++ ld.d r2, sp[22*4] ++ ld.d r0, sp[30*4] ++ ++ ++/* t125 = t89 + t90; ++ t157 = MUL(t89 - t90, costab8); ++ ++ t128 = t94 + t95; ++ t161 = MUL(t94 - t95, costab8); */ ++ butterfly2 r6/*t125*/, r4/*t157*/, r7/*t128*/, r5/*t161*/, costab8, r10, r11, lr ++ ++/* t126 = t91 + t92; ++ t158 = MUL(t91 - t92, costab24); ++ ++ t129 = t96 + t97; ++ t162 = MUL(t96 - t97, costab24); */ ++ butterfly2 r2/*t126*/, r0/*t158*/, r3/*t129*/, r1/*t162*/, costab24, r10, r11, lr ++ ++ ++/* ++ t93 = t125 + t126; ++ t180 = MUL(t125 - t126, costab16) ; ++ ++ t98 = t128 + t129; ++ t181 = MUL(t128 - t129, costab16) ; ++ ++ t159 = t157 + t158; ++ t187 = MUL(t157 - t158, costab16) ; ++ ++ t163 = t161 + t162; ++ t188 = MUL(t161 - t162, costab16) ; */ ++ butterfly4 r6/*t93*/, r2/*t180*/, r7/*t98*/, r3/*t181*/, r4/*t159*/, r0/*187*/, r5/*t163*/, r1/*t188*/, costab16, r10, r11, lr ++ ++ ++/* Store away the computed butterflies: ++ sp[6-7] = t98, t93 ++ sp[14-15] = t163, t159 ++ sp[22-23] = t181, t180 ++ sp[30-31] = t188, t187 */ ++ st.d sp[6*4] , r6 ++ st.d sp[14*4], r4 ++ st.d sp[22*4], r2 ++ st.d sp[30*4], r0 ++ ++/* Load {r0...r7} = { t103, t109, t102, t108, t101, t107, t100, t106 } */ ++ ld.d r6, sp[4*4] ++ ld.d r4, sp[12*4] ++ ld.d r2, sp[20*4] ++ ld.d r0, sp[28*4] ++ ++ ++ ++/* t132 = t100 + t101; ++ t166 = MUL(t100 - t101, costab8); ++ ++ t136 = t106 + t107; ++ t171 = MUL(t106 - t107, costab8); */ ++ butterfly2 r6/*t132*/, r4/*t166*/, r7/*t136*/, r5/*t171*/, costab8, r10, r11, lr ++ ++/* t133 = t102 + t103; ++ t167 = MUL(t102 - t103, costab24); ++ ++ t137 = t108 + t109; ++ t172 = MUL(t108 - t109, costab24);*/ ++ butterfly2 r2/*t133*/, r0/*t167*/, r3/*t137*/, r1/*t172*/, costab24, r10, r11, lr ++ ++ ++/* t104 = t132 + t133; ++ t182 = MUL(t132 - t133, costab16) ; ++ ++ t110 = t136 + t137; ++ t183 = MUL(t136 - t137, costab16) ; ++ ++ t168 = t166 + t167; ++ t189 = MUL(t166 - t167, costab16) ; ++ ++ t173 = t171 + t172; ++ t208 = MUL(t171 - t172, costab16) ; */ ++ butterfly4 r6/*t104*/, r2/*t182*/, r7/*t110*/, r3/*t183*/, r4/*t168*/, r0/*189*/, r5/*t173*/, r1/*t208*/, costab16, r10, r11, lr ++ ++/* Store away the computed butterflies: ++ sp[4-5] = t110, t104 ++ sp[12-13] = t173, t168 ++ sp[20-21] = t183, t182 ++ sp[28-29] = t208, t189 */ ++ st.d sp[4*4] , r6 ++ st.d sp[12*4], r4 ++ st.d sp[20*4], r2 ++ st.d sp[28*4], r0 ++ ++/* Now we have the following stack ++ ++ sp[0-7] = t67, t58 , t32, t191, t110, t104, t98, t93 ++ sp[8-15] = t154, t150, t146, t143, t173, t168, t163, t159 ++ sp[16-23] = t179, t178, t177, t192, t183, t182, t181, t180 ++ sp[24-31] = t186, t185, t184, t190, t208, t189, t188, t187 ++*/ ++ ++ /* Get slot, lo and hi from stack */ ++ lddsp lr, sp[32*4 + 4] /*slot*/ ++ lddsp r12, sp[32*4 + 8] /*lo*/ ++ lddsp r11, sp[32*4 + 12] /*hi*/ ++ ++ add r12, r12, lr << 2 ++ add r11, r11, lr << 2 ++ ++ ++/* t49 = -(t67 * 2) + t32; ++ hi[14][slot] = SHIFT(t32); ++ t87 = -(t110 * 2) + t67; ++ t138 = -(t173 * 2) + t110; ++ t203 = -(t208 * 2) + t173; */ ++ ++ lddsp r0/*t67*/, sp[0] ++ lddsp r1/*t32*/, sp[2*4] ++ lddsp r2/*t110*/, sp[4*4] ++ lddsp r3/*t173*/, sp[12*4] ++ lddsp r5/*t208*/, sp[28*4] ++ ++ sub r4/*t49*/, r1, r0 << 1 ++ scale r1 ++ sub r0/*t87*/, r0, r2 << 1 ++ st.w r11[14*SLOTS*4], r1 ++ sub r2/*t138*/, r2, r3 << 1 ++ sub r1/*t203*/, r3, r5 << 1 ++ ++/* Live: r0 = t87, r1= t203, r2= t138, r4 = t49 ++ Free: r3, r5, r6, r7, r8, r9, r10, lr */ ++ ++/* t68 = (t98 * 2) + t49; ++ hi[12][slot] = SHIFT(-t49); ++ t130 = -(t163 * 2) + t98; ++ t201 = -(t188 * 2) + t163; ++ t200 = -(t186 * 2) + t154; ++ t111 = (t154 * 2) + t87; ++ t77 = -(-(t87 * 2) - t68); ++ t88 = (t146 * 2) + t77; ++ t199 = -(t184 * 2) + t146; ++ hi[ 8][slot] = SHIFT(-t77); ++ hi[10][slot] = SHIFT(t68);*/ ++ lddsp r3/*t98*/, sp[6*4] ++ lddsp r5/*t163*/, sp[14*4] ++ lddsp r6/*t188*/, sp[30*4] ++ lddsp r10/*t186*/, sp[24*4] ++ ++ add r7/*t68*/, r4, r3 << 1 ++ neg r4 ++ scale r4 ++ lddsp r9/*t154*/, sp[8*4] ++ sub r3/*t130*/, r3, r5 << 1 ++ st.w r11[12*SLOTS*4], r4 ++ sub r8/*t201*/, r5, r6 << 1 ++ sub r4/*t200*/, r9, r10 << 1 ++ lddsp lr/*t146*/, sp[10*4] ++ lddsp r6/*t184*/, sp[26*4] ++ add r10/*t111*/, r0, r9 << 1 ++ add r5/*t77*/,r7, r0 << 1 ++ add r0/*t88*/, r5, lr << 1 ++ sub r6/*t199*/, lr, r6 << 1 ++ neg r5 ++ scale r5 ++ scale r7 ++ st.w r11[8*SLOTS*4], r5 ++ st.w r11[10*SLOTS*4], r7 ++ ++/* Live: r0 = t88, r1= t203, r2= t138, r3 = t130, r4 = t200, ++ r6 = 199, r8 = t201, r10 = t111 ++ Free: r5, r7, r9, lr */ ++ ++ ++/* ++ t123 = -(-(t138 * 2) - t111); ++ t174 = (t183 * 2) + t138; ++ t99 = -(t111 * 2) + t88; ++ hi[ 6][slot] = SHIFT(t88); */ ++ lddsp r5/*t183*/, sp[20*4] ++ ++ add r7/*t123*/, r10, r2 << 1 ++ sub r10/*t99*/, r0, r10 << 1 ++ scale r0 ++ add r2/*t174*/, r2, r5 << 1 ++ st.w r11[6*SLOTS*4], r0 ++ ++/* Live: r1 = t203, r2 = t174, r3 = t130, r4 = t200, ++ r6 = t199, r7 = t123, r8 = t201, r10 = t99 ++ Free: r0, r5, r9, lr */ ++ ++/* t112 = -(t130 * 2) + t99; ++ t164 = (t181 * 2) + t130; ++ hi[ 4][slot] = SHIFT(-t99); */ ++ lddsp r0/*t181*/, sp[22*4] ++ ++ sub r5/*t112*/, r10, r3 << 1 ++ neg r10 ++ scale r10 ++ add r3/*164*/, r3, r0 << 1 ++ st.w r11[4*SLOTS*4], r10 ++ ++/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200, ++ r5 = t112, r6 = t199, r7 = t123, r8 = t201 ++ Free: r0, r9, r10, lr */ ++ ++ ++/* t117 = -(-(t123 * 2) - t112); ++ t139 = (t179 * 2) + t123; ++ hi[ 2][slot] = SHIFT(t112); */ ++ lddsp r0/*t179*/, sp[16*4] ++ ++ add r9/*t117*/, r5, r7 << 1 ++ scale r5 ++ add r7/*t139*/, r7, r0 << 1 ++ st.w r11[2*SLOTS*4], r5 ++ ++/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200, ++ r6 = t199, r7 = t139, r8 = t201, r9 = t117 ++ Free: r0, r5, r10, lr */ ++ ++/* t155 = -(t174 * 2) + t139; ++ t204 = -(-(t203 * 2) - t174); ++ t124 = (t177 * 2) + t117; ++ hi[ 0][slot] = SHIFT(-t117); ++ t131 = -(t139 * 2) + t124; ++ lo[ 1][slot] = SHIFT(t124);*/ ++ lddsp r0/*t177*/, sp[18*4] ++ ++ sub r5/*t155*/, r7, r2 << 1 ++ add r2/*t204*/, r2, r1 << 1 ++ add r0/*t124*/, r9, r0 << 1 ++ neg r9 ++ scale r9 ++ sub r7/*t131*/, r0, r7 << 1 ++ scale r0 ++ st.w r11[0*SLOTS*4], r9 ++ st.w r12[1*SLOTS*4], r0 ++ ++/* Live: r2 = t204, r3 = t164, r4 = t200, ++ r5 = t155, r6 = t199, r7 = t131, r8 = t201 ++ Free: r0, r1, r9, r10, lr */ ++ ++/* t140 = (t164 * 2) + t131; ++ lo[ 3][slot] = SHIFT(-t131); ++ t202 = -(-(t201 * 2) - t164); */ ++ add r0/*t140*/, r7, r3 << 1 ++ neg r7 ++ scale r7 ++ add r3/*t202*/, r3, r8 << 1 ++ st.w r12[3*SLOTS*4], r7 ++ ++/* Live: r0 = t140, r2 = t204, r3 = t202, r4 = t200, ++ r5 = t155, r6 = t199 ++ Free: r1, r7, r8, r9, r10, lr */ ++ ++ ++/* t147 = -(-(t155 * 2) - t140); ++ lo[ 5][slot] = SHIFT(t140); ++ t175 = -(t200 * 2) + t155; ++ t156 = -(t199 * 2) + t147; ++ lo[ 7][slot] = SHIFT(-t147); */ ++ add r1/*t147*/, r0, r5 << 1 ++ scale r0 ++ sub r5/*t175*/, r5, r4 << 1 ++ sub r4/*156*/, r1, r6 << 1 ++ neg r1 ++ scale r1 ++ st.w r12[5*SLOTS*4], r0 ++ st.w r12[7*SLOTS*4], r1 ++ ++/* Live: r2 = t204, r3 = t202, ++ r4 = t156, r5 = t175 ++ Free: r0, r1, r6, r7, r8, r9, r10, lr */ ++ ++ ++/* t205 = -(-(t204 * 2) - t175); ++ t165 = -(t175 * 2) + t156; ++ lo[ 9][slot] = SHIFT(t156); ++ t176 = -(t202 * 2) + t165; ++ lo[11][slot] = SHIFT(-t165); ++ t206 = -(-(t205 * 2) - t176); ++ lo[15][slot] = SHIFT(-t206) ++ lo[13][slot] = SHIFT(t176) */ ++ add r0/*t205*/, r5, r2 << 1 ++ sub r1/*t165*/, r4, r5 << 1 ++ scale r4 ++ sub r3/*t176*/, r1, r3 << 1 ++ st.w r12[9*SLOTS*4], r4 ++ neg r1 ++ scale r1 ++ add r6/*t206*/, r3, r0 << 1 ++ neg r6 ++ scale r6 ++ scale r3 ++ st.w r12[11*SLOTS*4], r1 ++ st.w r12[15*SLOTS*4], r6 ++ st.w r12[13*SLOTS*4], r3 ++ ++/* t193 = -((t190 * 2) - t143) ++ hi[ 7][slot] = SHIFT(t143); ++ lo[ 8][slot] = SHIFT(-t193); ++ t82 = -(t104 * 2) + t58; ++ hi[13][slot] = SHIFT(t58); ++ t134 = -(t168 * 2) + t104; ++ t196 = -(t189 * 2) + t168; */ ++ ++ lddsp r0/*t190*/, sp[27*4] ++ lddsp r1/*t143*/, sp[11*4] ++ lddsp r2/*t104*/, sp[5*4] ++ lddsp r3/*t58*/, sp[1*4] ++ lddsp r4/*t168*/, sp[13*4] ++ lddsp r5/*t189*/, sp[29*4] ++ sub r0/*t193*/, r1, r0 << 1 ++ neg r0 ++ scale r1 ++ scale r0 ++ st.w r11[7*SLOTS*4], r1 ++ st.w r12[8*SLOTS*4], r0 ++ sub r0/*t82*/, r3, r2 << 1 ++ scale r3 ++ sub r2/*t134*/, r2, r4 << 1 ++ sub r4/*t196*/, r4, r5 << 1 ++ st.w r11[13*SLOTS*4], r3 ++ ++/* Live: r0 = t82, r2 = t134, ++ r4 = t196 ++ Free: r1, r3, r5, r6, r7, r8, r9, r10, lr */ ++ ++ ++ ++/* ++ ++ t207 = -(t185 * 2) + t150; ++ t105 = (t150 * 2) + t82; ++ hi[ 9][slot] = SHIFT(-t82); ++ t120 = -(-(t134 * 2) - t105); ++ hi[ 5][slot] = SHIFT(t105); ++ t169 = (t182 * 2) + t134; ++ ++ t135 = (t178 * 2) + t120; ++ hi[ 1][slot] = SHIFT(-t120); ++ t197 = -(-(t196 * 2) - t169); ++ t151 = -(t169 * 2) + t135; ++ lo[ 2][slot] = SHIFT(t135); */ ++ lddsp r1/*t185*/, sp[25*4] ++ lddsp r3/*t150*/, sp[9*4] ++ lddsp r5/*t182*/, sp[21*4] ++ lddsp r8/*t178*/, sp[17*4] ++ ++ sub r6/*t207*/, r3, r1 << 1 ++ add r3/*t105*/, r0, r3 << 1 ++ neg r0 ++ scale r0 ++ add r7/*t120*/, r3, r2 << 1 ++ scale r3 ++ st.w r11[9*SLOTS*4], r0 ++ st.w r11[5*SLOTS*4], r3 ++ add r2/*t169*/, r2, r5 << 1 ++ add r8/*t135*/, r7, r8 << 1 ++ neg r7 ++ scale r7 ++ add r4/*t197*/, r2, r4 << 1 ++ sub r2/*t151*/, r8, r2 << 1 ++ scale r8 ++ st.w r11[1*SLOTS*4], r7 ++ st.w r12[2*SLOTS*4], r8 ++ ++/* Live: r2 = t151, r4 = t197, r6 = t207 ++ ++ Free: r0, r1, r3, r5, r7, r8, r9, r10, lr */ ++ ++ ++ ++/* t170 = -(t207 * 2) + t151; ++ lo[ 6][slot] = SHIFT(-t151); ++ ++ t198 = -(-(t197 * 2) - t170); ++ lo[10][slot] = SHIFT(t170); ++ lo[14][slot] = SHIFT(-t198); ++ ++ t127 = -(t159 * 2) + t93; ++ hi[11][slot] = SHIFT(t93); ++ t194 = -(t187 * 2) + t159; */ ++ lddsp r0/*t159*/, sp[15*4] ++ lddsp r1/*t93*/, sp[7*4] ++ lddsp r3/*t187*/, sp[31*4] ++ sub r5/*t170*/, r2, r6 << 1 ++ neg r2 ++ scale r2 ++ add r4/*t198*/,r5, r4 << 1 ++ neg r4 ++ scale r5 ++ scale r4 ++ st.w r12[6*SLOTS*4], r2 ++ st.w r12[10*SLOTS*4], r5 ++ st.w r12[14*SLOTS*4], r4 ++ sub r7/*t127*/, r1, r0 << 1 ++ scale r1 ++ sub r0/*t194*/, r0, r3 << 1 ++ st.w r11[11*SLOTS*4], r1 ++ ++ ++/* Live: r0 = t194, r7 = t127 ++ Free: r1, r2, r3, r4, r6, r5, r8, r9, r10, lr */ ++ ++/* t160 = (t180 * 2) + t127; ++ hi[ 3][slot] = SHIFT(-t127); ++ t195 = -(-(t194 * 2) - t160); ++ lo[ 4][slot] = SHIFT(t160); ++ lo[12][slot] = SHIFT(-t195); ++ ++ hi[15][slot] = SHIFT(t191); ++ lo[ 0][slot] = SHIFT(t192); */ ++ lddsp r1/*t180*/, sp[23*4] ++ lddsp r2/*t191*/, sp[3*4] ++ lddsp r3/*t192*/, sp[19*4] ++ add r4/*t160*/, r7, r1 << 1 ++ neg r7 ++ scale r7 ++ add r6/*t195*/, r4, r0 << 1 ++ scale r4 ++ neg r6 ++ scale r6 ++ st.w r11[3*SLOTS*4], r7 ++ st.w r12[4*SLOTS*4], r4 ++ st.w r12[12*SLOTS*4], r6 ++ scale r2 ++ scale r3 ++ st.w r11[15*SLOTS*4], r2 ++ st.w r12[0*SLOTS*4], r3 ++ ++ sub sp, -32*4 ++ ldm sp++,r0-r7, r9-r11, pc +diff --git a/fixed.h b/fixed.h +index 4b58abf..0a1350a 100644 +--- a/fixed.h ++++ b/fixed.h +@@ -237,6 +237,46 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) + # define MAD_F_SCALEBITS MAD_F_FRACBITS + # endif + ++/* --- AVR32 ----------------------------------------------------------------- */ ++ ++# elif defined(FPM_AVR32) ++ ++typedef signed short mad_coeff_t; ++ ++struct DWstruct {int high, low;}; ++ ++typedef union { ++ struct DWstruct s; ++ long long ll; ++} DWunion; ++ ++# define MAD_F_MLX(hi, lo, x, y) \ ++ { register DWunion __res; \ ++ __res.ll = (long long)x * (long long)y; \ ++ /* asm ("muls.d\t%0, %1, %2" : "=r" (__res.ll) : "r" (x), "r" (y));*/ \ ++ hi = __res.s.high; \ ++ lo = __res.s.low; } ++ ++# define MAD_F_MLA(hi, lo, x, y) \ ++ { register DWunion __res; \ ++ __res.s.high = hi; \ ++ __res.s.low = lo; \ ++ __res.ll += (long long)x * (long long)y; \ ++/* asm ("macs.d\t%0, %1, %2" : "+r" (__res.ll) : "r" (x), "r" (y));*/ \ ++ hi = __res.s.high; \ ++ lo = __res.s.low; } ++ ++ ++# define MAD_F_MLN(hi, lo) \ ++ asm ("neg %0\n" \ ++ "acr %1\n" \ ++ "neg %1" \ ++ : "+r" (lo), "+r" (hi) \ ++ :: "cc") ++ ++ ++# define MAD_F_SCALEBITS MAD_F_FRACBITS ++ + /* --- ARM ----------------------------------------------------------------- */ + + # elif defined(FPM_ARM) +@@ -433,6 +473,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) + * + * Pre-rounding is required to stay within the limits of compliance. + */ ++typedef signed int mad_coeff_t; ++ + # if defined(OPT_SPEED) + # define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) + # else +diff --git a/imdct_avr32.S b/imdct_avr32.S +new file mode 100644 +index 0000000..d0ee6b4 +--- /dev/null ++++ b/imdct_avr32.S +@@ -0,0 +1,789 @@ ++/* ++ Optimized 36-point Inverse Modified Cosine Transform (IMDCT) ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Ronny Pedersen, Atmel Norway ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#define MAD_F(x) ((x + (1 << 13)) >> 14) ++ ++ .public imdct36_avr32 ++ ++/* ++ void imdct36(mad_fixed_t const x[18], mad_fixed_t y[36]) ++ { ++ mad_fixed_t tmp[18]; ++ int i; ++*/ ++/* DCT-IV */ ++imdct36_avr32: ++ pushm r0-r7,r11,lr ++ sub sp, 4*18 ++/* ++ { ++ mad_fixed_t tmp2[18]; ++ int i; ++ ++ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (4 * 18)) */ ++/* ++ static mad_fixed_t const scale[18] = { ++ MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120), ++ MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b), ++ MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4), ++ MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3), ++ MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5), ++ MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c) ++ }; ++*/ ++ ++ /* scaling */ ++ ++/* ++ for (i = 0; i < 18; i += 3) { ++ tmp2[i + 0] = mad_f_mul(x[i + 0], scale[i + 0]); ++ tmp2[i + 1] = mad_f_mul(x[i + 1], scale[i + 1]); ++ tmp2[i + 2] = mad_f_mul(x[i + 2], scale[i + 2]); ++ } ++*/ ++ /* even input butterfly */ ++ ++/* ++ for (i = 0; i < 9; i += 3) { ++ tmp3[i + 0] = tmp2[i + 0] + tmp2[18 - (i + 0) - 1]; ++ tmp3[i + 1] = tmp2[i + 1] + tmp2[18 - (i + 1) - 1]; ++ tmp3[i + 2] = tmp2[i + 2] + tmp2[18 - (i + 2) - 1]; ++ } ++ for (i = 0; i < 9; i += 3) { ++ tmp4[i + 0] = tmp2[i + 0] - tmp2[18 - (i + 0) - 1]; ++ tmp4[i + 1] = tmp2[i + 1] - tmp2[18 - (i + 1) - 1]; ++ tmp4[i + 2] = tmp2[i + 2] - tmp2[18 - (i + 2) - 1]; ++ } ++*/ ++ ++ ld.d r8, r12[0] /*r8 = x[1], r9 = x[0]*/ ++ ld.d r0, pc[scale_dctIV - .] /*r0 = {scale[2], scale[3]}, r1 = { scale[0], scale[1] }*/ ++ ld.d r2, r12[2*4] /*r2 = x[3], r3 = x[2]*/ ++ ld.d r4, pc[scale_dctIV - . + 14*2] /*r4 = {scale[16], scale[17]}, r5 = { scale[14], scale[15] }*/ ++ mulsatrndwh.w r9/*tmp2[0]*/, r9, r1:t /*tmp2[0] = mad_f_mul(x[0], scale[0]) */ ++ ld.d r6, r12[16*4] /*r6 = x[17], r7 = x[16]*/ ++ mulsatrndwh.w r8/*tmp2[1]*/, r8, r1:b /*tmp2[1] = mad_f_mul(x[1], scale[1]) */ ++ mulsatrndwh.w r3/*tmp2[2]*/, r3, r0:t /*tmp2[2] = mad_f_mul(x[2], scale[2]) */ ++ mulsatrndwh.w r2/*tmp2[3]*/, r2, r0:b /*tmp2[3] = mad_f_mul(x[3], scale[3]) */ ++ ld.d r0, r12[14*4] /*r0 = x[15], r1 = x[14]*/ ++ mulsatrndwh.w r7/*tmp2[16]*/, r7, r4:t /*tmp2[16] = mad_f_mul(x[16], scale[16]) */ ++ mulsatrndwh.w r6/*tmp2[17]*/, r6, r4:b /*tmp2[17] = mad_f_mul(x[17], scale[17]) */ ++ mulsatrndwh.w r1/*tmp2[14]*/, r1, r5:t /*tmp2[14] = mad_f_mul(x[14], scale[14]) */ ++ mulsatrndwh.w r0/*tmp2[15]*/, r0, r5:b /*tmp2[15] = mad_f_mul(x[15], scale[15]) */ ++ ++ ld.d r4, r12[4*4] /*r4 = x[5], r5 = x[4]*/ ++ ++ sub lr/*tmp4[0]*/, r9, r6 ++ add r6/*tmp3[0]*/, r9, r6 ++ sub r10/*tmp4[1]*/, r8, r7 ++ add r7/*tmp3[1]*/, r8, r7 ++ sub r9/*tmp4[2]*/, r3, r0 ++ add r0/*tmp3[2]*/, r3, r0 ++ sub r8/*tmp4[3]*/, r2, r1 ++ add r1/*tmp3[3]*/, r2, r1 ++ ++ ld.d r2, pc[scale_dctIV - . + 4*2] /*r2 = {scale[6], scale[7]}, r3 = { scale[4], scale[5] }*/ ++ ++ stm --sp, r8-r10, lr /*sp[0] = tmp4[0],sp[1] = tmp4[1], ++ sp[2] = tmp4[2],sp[3] = tmp4[3] */ ++ ++ /* Registers used: r0 = tmp3[2], r1 = tmp3[3], r6 = tmp3[0], r7 = tmp3[1], r12 = x ++ Free registers: r2-r5, r8-r11, lr ++ */ ++ ld.d r8, r12[6*4] /*r8 = x[7], r9 = x[6]*/ ++ ld.d r10, pc[scale_dctIV - . + 10*2] /*r10 = {scale[12], scale[13]}, r11 = { scale[10], scale[11] }*/ ++ mulsatrndwh.w r5/*tmp2[4]*/, r5, r3:t /*tmp2[4] = mad_f_mul(x[4], scale[4]) */ ++ mulsatrndwh.w r4/*tmp2[5]*/, r4, r3:b /*tmp2[5] = mad_f_mul(x[5], scale[5]) */ ++ mulsatrndwh.w r9/*tmp2[6]*/, r9, r2:t /*tmp2[6] = mad_f_mul(x[6], scale[6]) */ ++ mulsatrndwh.w r8/*tmp2[7]*/, r8, r2:b /*tmp2[7] = mad_f_mul(x[7], scale[7]) */ ++ ++ ld.d r2, r12[12*4] /*r2 = x[13], r3 = x[12]*/ ++ ld.w lr, r12[11*4] /*lr = x[11] */ ++ mulsatrndwh.w r3/*tmp2[12]*/, r3, r10:t /*tmp2[12] = mad_f_mul(x[12], scale[12]) */ ++ mulsatrndwh.w r2/*tmp2[13]*/, r2, r10:b /*tmp2[13] = mad_f_mul(x[13], scale[13]) */ ++ ld.w r10, r12[10*4] /*r10 = x[10] */ ++ mulsatrndwh.w lr/*tmp2[11]*/, lr, r11:b /*tmp2[11] = mad_f_mul(x[11], scale[11]) */ ++ mulsatrndwh.w r10/*tmp2[10]*/, r10, r11:t /*tmp2[10] = mad_f_mul(x[10], scale[10]) */ ++ ++ sub r11/*tmp4[4]*/, r5, r2 ++ add r2/*tmp3[4]*/, r5, r2 ++ sub r5/*tmp4[5]*/, r4, r3 ++ add r3/*tmp3[5]*/, r4, r3 ++ sub r4/*tmp4[6]*/, r9, lr ++ add lr/*tmp3[6]*/, r9, lr ++ sub r9/*tmp4[7]*/, r8, r10 ++ add r10/*tmp3[7]*/, r8, r10 ++ lddpc r8, scale_dctIV + 8*2 /*r8 = {scale[8], scale[9]} */ ++ ++ stm --sp, r4, r5, r9, r11 /*sp[0] = tmp4[4],sp[1] = tmp4[7], ++ sp[2] = tmp4[5],sp[3] = tmp4[6] */ ++ ld.d r4, r12[8*4] /*r4 = x[9], r5 = x[8]*/ ++ mulsatrndwh.w r5/*tmp2[8]*/, r5, r8:t /*tmp2[8] = mad_f_mul(x[8], scale[8]) */ ++ mulsatrndwh.w r4/*tmp2[9]*/, r4, r8:b /*tmp2[9] = mad_f_mul(x[9], scale[9]) */ ++ sub r9/*tmp4[8]*/, r5, r4 ++ add r5/*tmp3[8]*/, r5, r4 ++ ++ st.w --sp, r9 /* sp[0] = tmp4[8] */ ++ ++ /* Registers used: ++ ++ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r10=tmp3[7], lr=tmp3[6] ++ Free registers: ++ r4, r8, r9, r11, r12 ++ */ ++ ++ ++ /* SDCT-II */ ++/* ++ ++ { ++ mad_fixed_t tmp3[9]; ++ int i; ++*/ ++ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (2 * 18)) */ ++/* ++ static mad_fixed_t const scale[9] = { ++ MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930), ++ MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8), ++ MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7) ++ }; ++*/ ++ /* divide the 18-point SDCT-II into two 9-point SDCT-IIs */ ++ ++ ++ /* fastdct */ ++ ++/* ++ { ++ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; ++ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25; ++ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7; ++*/ ++// enum { ++// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */ ++// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */ ++// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */ ++// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */ ++// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */ ++// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */ ++// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */ ++// }; ++ ++/* ++ a2 = tmp3[6] + tmp3[2]; ++ a6 = tmp3[8] + tmp3[0]; ++ a11 = a2 - a6; ++ m5 = mad_f_mul(a11, -c6) ; ++ a4 = tmp3[1] + tmp3[7]; ++ ++ a18 = tmp3[4] + a4; ++ a19 = -2 * tmp3[4] + a4; ++ ++ a0 = tmp3[3] + tmp3[5]; ++ ++*/ ++ add r11/*a4*/, r7, r10 ++ add r12/*a18*/, r2, r11 ++ sub r11/*a19*/, r11, r2<<1 ++ ++ add r4/*a2*/, lr, r0 ++ add r8/*a6*/, r5, r6 ++ sub r9/*a11*/, r4, r8 ++ ++ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/ ++ ++ mov r2, MAD_F(0x1e11f642) ++ mulsatrndwh.w r9/*m5*/, r9, r2:b ++ ++ add r2/*a0*/, r1, r3 ++ ++ /* Registers used: ++ ++ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r8=a6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6] ++ Free registers: ++ r0, r1 ++ */ ++ ++/* ++ a8 = a0 + a2; ++ a12 = a8 + a6; ++ a10 = a0 - a6; ++ a9 = a0 - a2; ++ m7 = mad_f_mul(a9, -c2) ; ++ m6 = mad_f_mul(a10, -c5) ; ++*/ ++ ++ add r0/*a8*/, r2, r4 ++ add r0/*a12*/, r8 ++ rsub r8/*a10*/, r2 ++ sub r2/*a9*/, r4 ++ mov r1, -MAD_F(0x18836fa3) ++ mulsatrndwh.w r2/*m7*/, r2, r1:b ++ mov r1, -MAD_F(0x058e86a0) ++ mulsatrndwh.w r8/*m6*/, r8, r1:b ++ ++ /* Registers used: ++ ++ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r8=m6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6] ++ Free registers: ++ r1, r4 ++ */ ++ ++ ++/* ++ a21 = -a19 - (m5 << 1); ++ tmp[ 8] = a21 - (m6 << 1); ++ ++ a20 = a19 - (m5 << 1); ++ tmp[ 4] = (m7 << 1) + a20; ++ a22 = -a19 + (m6 << 1); ++ tmp[16] = a22 + (m7 << 1); ++ tmp[ 0] = a18 + a12; ++ tmp[12] = a12 - 2 * a18; ++*/ ++ add r1/*a21*/, r11, r9 << 1 ++ neg r1 ++ sub r1/*tmp[8]*/, r1, r8 << 1 ++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 8*4], r1 ++ sub r4/*a20*/, r11, r9 << 1 ++ add r4/*tmp[4]*/, r4, r2 << 1 ++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 4*4], r4 ++ neg r11 ++ add r1/*a22*/, r11, r8 << 1 ++ add r1/*tmp[16]*/, r1, r2 << 1 ++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 16*4], r1 ++ add r4, r12, r0 ++ sub r1, r0, r12 << 1 ++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 0*4], r4 ++ stdsp sp[4*11/*tmp3[..] on the stack*/ + 12*4], r1 ++ ++ ld.d r0, sp++ ++ ++ /* Registers used: ++ ++ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r10=tmp3[7], r11=a19, lr=tmp3[6] ++ Free registers: ++ r2,r4,r8,r9,r12 ++ */ ++ ++/* ++ a5 = tmp3[1] - tmp3[7]; ++ a7 = tmp3[8] - tmp3[0]; ++ a3 = tmp3[6] - tmp3[2]; ++ a1 = tmp3[3] - tmp3[5]; ++ a13 = a1 - a3; ++ a14 = a13 + a7; ++ m3 = mad_f_mul(a14, -c1) ; ++ m4 = mad_f_mul(a5, -c1) ; ++ tmp[ 6] = m3 << 1; ++*/ ++ sub r7/*a5*/, r10 ++ sub r2/*a7*/, r5, r6 ++ sub r4/*a3*/, lr, r0 ++ sub r8/*a1*/, r1, r3 ++ sub r9/*a13*/, r8, r4 ++ add r12/*a14*/, r9, r2 ++ mov r0, -MAD_F(0x1bb67ae8) ++ mulsatrndwh.w r12/*m3*/, r12, r0:b ++ mulsatrndwh.w r7/*m4*/, r7, r0:b ++ lsl r12, 1 ++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 6*4], r12 ++ ++ /* Registers used: ++ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3 ++ ++ Free registers: ++ r0, r1, r3, r5, r6, r10, r9, r11, lr ++ */ ++ ++ ++/* ++ a15 = a3 + a7; ++ m2 = mad_f_mul(a15, -c4) ; ++ a17 = a1 + a3; ++ m0 = mad_f_mul(a17, -c3) ; ++ a23 = (m4 << 1) + (m2 << 1); ++ tmp[14] = a23 + (m0 << 1); */ ++ add r0/*a15*/, r4, r2 ++ mov r1, -MAD_F(0x0af1d43a) ++ mulsatrndwh.w r0/*m2*/, r0, r1:b ++ mov r3, -MAD_F(0x1491b752) ++ add r5/*a17*/, r8, r4 ++ mulsatrndwh.w r5/*m0*/, r5, r3:b ++ lsl r7, 1 ++ add r6/*a23*/, r7, r0 << 1 ++ add r6/*tmp[14]*/, r6, r5 << 1 ++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 14*4], r6 ++ ++ /* Registers used: ++ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1 ++ ++ Free registers: ++ r1, r3, r4, r6, r10, r9, r11, lr ++ */ ++ ++/* ++ a16 = a1 - a7; ++ m1 = mad_f_mul(a16, -c0) ; ++ a24 = (m4 << 1) - (m2 << 1); ++ tmp[10] = a24 - (m1 << 1); ++ ++ a25 = (m4 << 1) + (m1 << 1); ++ tmp[ 2] = (m0 << 1) - a25; ++*/ ++ sub r3/*a16*/, r8, r2 ++ mov r4, -MAD_F(0x1f838b8d) ++ mulsatrndwh.w r3/*m1*/, r3, r4:b ++ sub r1/*a24*/, r7, r0 << 1 ++ sub r1/*tmp[10]*/, r1, r3 << 1 ++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 10*4], r1 ++ add r7/*a25*/, r7, r3 << 1 ++ sub r7, r7, r5 << 1 ++ neg r7 ++ stdsp sp[4*9/*tmp3[..] on the stack*/ + 2*4], r7 ++ ++ ++ ++ ++ /* output to every other slot for convenience */ ++ ++ /*} */ ++ /* End fastdct */ ++ ++ /* odd input butterfly and scaling */ ++ ++ ++ /* On the stack: ++ sp[0] = tmp4[8], sp[1] = tmp4[4],sp[2] = tmp4[7], sp[3] = tmp4[5],sp[4] = tmp4[6] ++ sp[5] = tmp4[0], sp[6] = tmp4[1],sp[7] = tmp4[2],sp[8] = tmp4[3] ++ */ ++ ++ /* ++ tmp3[0] = mad_f_mul(tmp4[0], scale[0]); ++ tmp3[1] = mad_f_mul(tmp4[1], scale[1]) << 1; ++ tmp3[2] = mad_f_mul(tmp4[2], scale[2]); ++ tmp3[3] = mad_f_mul(tmp4[3], scale[3]) << 1; ++ tmp3[4] = mad_f_mul(tmp4[4], scale[4]); ++ tmp3[5] = mad_f_mul(tmp4[5], scale[5]); ++ tmp3[6] = mad_f_mul(tmp4[6], scale[6]) << 1; ++ tmp3[7] = mad_f_mul(tmp4[7], scale[7]); ++ tmp3[8] = mad_f_mul(tmp4[8], scale[8]) << 1; ++ */ ++ /* Registers used: ++ r1 = tmp4[3], r2 = tmp4[2], r3 = tmp4[1], r4 = tmp4[0], r7 = tmp4[6] ++ r10 = tmp4[5], r11 = tmp4[7], r12 = tmp4[4], lr = tmp4[8] ++ ++ Free registers: ++ r0, r5, r6, r8, r9 ++ */ ++ ld.d r8, pc[ scale_sdctII - . + 4*2] /* r8 = { scale[6], scale[7] }, r9 = { scale[4], scale[5]} */ ++ ldm sp++, r1, r2, r3, r4, r7, r10, r11, r12, lr ++ mov r5, MAD_F(0x02c9fad7) /* r3 = scale[8] */ ++ mulsatrndwh.w r5/*tmp3[8]*/, lr, r5:b ++ mulsatrndwh.w lr/*tmp3[6]*/, r7, r8:t ++ ld.d r6, pc[ scale_sdctII - . + 0*2] /* r6 = { scale[2], scale[3] }, r7 = { scale[0], scale[1]} */ ++ lsl lr, 1 ++ lsl r5, 1 ++ mulsatrndwh.w r0/*tmp3[2]*/, r2, r6:t ++ mulsatrndwh.w r1/*tmp3[3]*/, r1, r6:b ++ mulsatrndwh.w r6/*tmp3[0]*/, r4, r7:t ++ mulsatrndwh.w r7/*tmp3[1]*/, r3, r7:b ++ mulsatrndwh.w r3/*tmp3[5]*/, r10, r9:b ++ mulsatrndwh.w r2/*tmp3[4]*/, r12, r9:t ++ mulsatrndwh.w r9/*tmp3[7]*/, r11, r8:b ++ lsl r1, 1 ++ lsl r7, 1 ++ ++ ++ /* fastdct */ ++ ++/* ++ { ++ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; ++ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25; ++ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7; ++*/ ++// enum { ++// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */ ++// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */ ++// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */ ++// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */ ++// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */ ++// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */ ++// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */ ++// }; ++ ++ /* Registers used: ++ ++ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r9=tmp3[7], lr=tmp3[6] ++ Free registers: ++ r4, r8, r10, r11, r12 ++ */ ++ ++/* ++ a2 = tmp3[6] + (tmp3[2] << 1); ++ a6 = tmp3[8] + (tmp3[0] << 1); ++ a11 = a2 - a6; ++ m5 = mad_f_mul(a11, c6) ; ++ a4 = tmp3[1] + (tmp3[7] << 1); ++ ++ a18 = (tmp3[4] << 1) + a4; ++ a19 = -2 * (tmp3[4] << 1) + a4; ++ ++ a0 = tmp3[3] + (tmp3[5] << 1); ++ ++*/ ++ add r11/*a4*/, r7, r9 << 1 ++ add r12/*a18*/, r11, r2 << 1 ++ sub r11/*a19*/, r11, r2 << 2 ++ ++ add r4/*a2*/, lr, r0 << 1 ++ add r8/*a6*/, r5, r6 << 1 ++ sub r10/*a11*/, r4, r8 ++ ++ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/ ++ ++ mov r2, -MAD_F(0x1e11f642) ++ mulsatrndwh.w r10/*m5*/, r10, r2:b ++ ++ add r2/*a0*/, r1, r3 << 1 ++ ++ /* Registers used: ++ ++ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r8=a6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6] ++ Free registers: ++ r0, r1 ++ */ ++ ++/* ++ a8 = a0 + a2; ++ a12 = a8 + a6; ++ a10 = a0 - a6; ++ a9 = a0 - a2; ++ m7 = mad_f_mul(a9, -c2) ; ++ m6 = mad_f_mul(a10, -c5) ; ++*/ ++ ++ add r0/*a8*/, r2, r4 ++ add r0/*a12*/, r8 ++ rsub r8/*a10*/, r2 ++ sub r2/*a9*/, r4 ++ mov r1, -MAD_F(0x18836fa3) ++ mulsatrndwh.w r2/*m7*/, r2, r1:b ++ mov r1, -MAD_F(0x058e86a0) ++ mulsatrndwh.w r8/*m6*/, r8, r1:b ++ ++ /* Registers used: ++ ++ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r8=m6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6] ++ Free registers: ++ r1, r4 ++ */ ++ ++ ++/* ++ a21 = -a19 + (m5 << 1); ++ tmp[ 9] = a21 - (m6 << 1); ++ ++ a20 = -(-a19 - (m5 << 1)); ++ tmp[ 5] = (m7 << 1) + a20; ++ a22 = -a19 + (m6 << 1); ++ tmp[17] = a22 + (m7 << 1); ++ tmp[ 1] = a18 + a12; ++ tmp[13] = a12 - 2 * a18; ++*/ ++ sub r1/*a21*/, r11, r10 << 1 ++ neg r1 ++ sub r1/*tmp[9]*/, r1, r8 << 1 ++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 9*4], r1 ++ add r4/*a20*/, r11, r10 << 1 ++ add r4/*tmp[5]*/, r4, r2 << 1 ++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 5*4], r4 ++ neg r11 ++ add r1/*a22*/, r11, r8 << 1 ++ add r1/*tmp[17]*/, r1, r2 << 1 ++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 17*4], r1 ++ add r4, r12, r0 ++ sub r1, r0, r12 << 1 ++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 1*4], r4 ++ stdsp sp[4*2/*tmp3[..] on the stack*/ + 13*4], r1 ++ ++ ld.d r0, sp++ ++ ++ /* Registers used: ++ ++ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], ++ r7 = tmp3[1], r9=tmp3[7], r11=a19, lr=tmp3[6] ++ Free registers: ++ r2,r4,r8,r10,r12 ++ */ ++ ++/* ++ a5 = tmp3[1] - (tmp3[7] << 1); ++ a7 = tmp3[8] - (tmp3[0] << 1); ++ a3 = tmp3[6] - (tmp3[2] << 1); ++ a1 = tmp3[3] - (tmp3[5] << 1); ++ a13 = a1 - a3; ++ a14 = a13 + a7; ++ m3 = mad_f_mul(a14, -c1) ; ++ m4 = mad_f_mul(a5, -c1) ; ++ tmp[ 7] = m3 << 1; ++*/ ++ sub r7/*a5*/, r7, r9 << 1 ++ sub r2/*a7*/, r5, r6 << 1 ++ sub r4/*a3*/, lr, r0 << 1 ++ sub r8/*a1*/, r1, r3 << 1 ++ sub r10/*a13*/, r8, r4 ++ add r12/*a14*/, r10, r2 ++ mov r0, -MAD_F(0x1bb67ae8) ++ mulsatrndwh.w r12/*m3*/, r12, r0:b ++ mulsatrndwh.w r7/*m4*/, r7, r0:b ++ lsl r12, 1 ++ stdsp sp[7*4], r12 ++ ++ /* Registers used: ++ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3 ++ ++ Free registers: ++ r0, r1, r3, r5, r6, r9, r10, r11, lr ++ */ ++ ++ ++/* ++ a15 = a3 + a7; ++ m2 = mad_f_mul(a15, -c4) ; ++ a17 = a1 + a3; ++ m0 = mad_f_mul(a17, -c3) ; ++ a23 = (m4 << 1) + (m2 << 1); ++ tmp[15] = a23 + (m0 << 1); */ ++ add r0/*a15*/, r4, r2 ++ mov r1, -MAD_F(0x0af1d43a) ++ mulsatrndwh.w r0/*m2*/, r0, r1:b ++ mov r3, -MAD_F(0x1491b752) ++ add r5/*a17*/, r8, r4 ++ mulsatrndwh.w r5/*m0*/, r5, r3:b ++ lsl r7, 1 ++ add r6/*a23*/, r7, r0 << 1 ++ add r6/*tmp[15]*/, r6, r5 << 1 ++ stdsp sp[15*4], r6 ++ ++ /* Registers used: ++ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1 ++ ++ Free registers: ++ r1, r3, r4, r6, r9, r10, r11, lr ++ */ ++ ++/* ++ a16 = a1 - a7; ++ m1 = mad_f_mul(a16, -c0) ; ++ a24 = (m4 << 1) - (m2 << 1); ++ tmp[11] = a24 - (m1 << 1); ++ ++ a25 = (m4 << 1) + (m1 << 1); ++ tmp[ 3] = (m0 << 1) - a25; ++*/ ++ sub r3/*a16*/, r8, r2 ++ mov r4, -MAD_F(0x1f838b8d) ++ mulsatrndwh.w r3/*m1*/, r3, r4:b ++ sub r1/*a24*/, r7, r0 << 1 ++ sub r1/*tmp[11]*/, r1, r3 << 1 ++ stdsp sp[11*4], r1 ++ add r7/*a25*/, r7, r3 << 1 ++ sub r7, r7, r5 << 1 ++ neg r7 ++ lddsp r12, sp[4*18+4] /* Get y from stack */ ++ stdsp sp[3*4], r7 ++ ++ ++ /* output to every other slot for convenience */ ++ ++ /* End fastdct */ ++ ++ /* output accumulation */ ++ ++/* for (i = 3; i < 18; i += 8) { ++ tmp[i + 0] -= tmp[(i + 0) - 2]; ++ tmp[i + 2] -= tmp[(i + 2) - 2]; ++ tmp[i + 4] -= tmp[(i + 4) - 2]; ++ tmp[i + 6] -= tmp[(i + 6) - 2]; ++ } ++ } ++*/ ++ ++/* End SDCT-II */ ++ ++ ++ ++ /* scale reduction and output accumulation */ ++ ++/* ++ for (i = 1; i < 17; i += 4) { ++ tmp[i + 0] = tmp[i + 0] - tmp[(i + 0) - 1]; ++ tmp[i + 1] = tmp[i + 1] - tmp[(i + 1) - 1]; ++ tmp[i + 2] = tmp[i + 2] - tmp[(i + 2) - 1]; ++ tmp[i + 3] = tmp[i + 3] - tmp[(i + 3) - 1]; ++ } ++ tmp[17] = tmp[17] - tmp[16]; ++ } ++*/ ++/* End DCT-IV */ ++ ++ ++ /* convert 18-point DCT-IV to 36-point IMDCT */ ++ ++/* ++ for (i = 0; i < 9; i += 3) { ++ y[i + 0] = tmp[9 + (i + 0)]; ++ y[i + 1] = tmp[9 + (i + 1)]; ++ y[i + 2] = tmp[9 + (i + 2)]; ++ } ++ for (i = 9; i < 27; i += 3) { ++ y[i + 0] = -tmp[36 - (9 + (i + 0)) - 1]; ++ y[i + 1] = -tmp[36 - (9 + (i + 1)) - 1]; ++ y[i + 2] = -tmp[36 - (9 + (i + 2)) - 1]; ++ } ++ for (i = 27; i < 36; i += 3) { ++ y[i + 0] = -tmp[(i + 0) - 27]; ++ y[i + 1] = -tmp[(i + 1) - 27]; ++ y[i + 2] = -tmp[(i + 2) - 27]; ++ } ++ } ++*/ ++ ++ /* Registers used: ++ r0 = tmp[8], r1 = tmp[7], r2 = tmp[6], r3 = tmp[5], r4 = tmp[4] ++ r5 = tmp[3], r6 = tmp[2], r7 = tmp[1], r8 = tmp[0], r12 = y ++ ++ Free registers: ++ r9, r10, r11, lr ++ */ ++ ++ ldm sp++, r0-r8 /* Get tmp[0]-tmp[8] from stack */ ++ sub r5, r7 /* tmp[3] -= tmp[1]*/ ++ sub r3, r5 /* tmp[5] -= tmp[3]*/ ++ sub r1, r3 /* tmp[7] -= tmp[5]*/ ++ ++ sub r7, r8 /* tmp[1] -= tmp[0]*/ ++ sub r6, r7 /* tmp[2] -= tmp[1]*/ ++ sub r5, r6 /* tmp[3] -= tmp[2]*/ ++ neg r8 ++ st.w r12[26*4], r8 /* y[26] = -tmp[0] */ ++ st.w r12[27*4], r8 /* y[27] = -tmp[0] */ ++ neg r7 ++ neg r6 ++ st.w r12[25*4], r7 /* y[25] = -tmp[1] */ ++ st.w r12[24*4], r6 /* y[24] = -tmp[2] */ ++ st.d r12[28*4], r6 /* y[28] = -tmp[1], y[29] = -tmp[2]*/ ++ ++ sub r4, r5 /* tmp[4] -= tmp[3]*/ ++ sub r3, r4 /* tmp[5] -= tmp[4]*/ ++ neg r5 ++ neg r4 ++ st.w r12[23*4], r5 /* y[23] = -tmp[3] */ ++ st.w r12[22*4], r4 /* y[22] = -tmp[4] */ ++ st.d r12[30*4], r4 /* y[30] = -tmp[3], y[31] = -tmp[4]*/ ++ ++ ldm sp++, r4-r11,lr /* Get tmp[9]-tmp[17] from stack */ ++ ++ sub r2, r3 /* tmp[6] -= tmp[5]*/ ++ ++ sub lr, r1 /* tmp[9] -= tmp[7]*/ ++ sub r10, lr /* tmp[11] -= tmp[9]*/ ++ sub r8, r10 /* tmp[13] -= tmp[11]*/ ++ sub r6, r8 /* tmp[15] -= tmp[13]*/ ++ sub r4, r6 /* tmp[17] -= tmp[15]*/ ++ ++ sub r1, r2 /* tmp[7] -= tmp[6]*/ ++ sub r0, r1 /* tmp[8] -= tmp[7]*/ ++ neg r3 ++ neg r2 ++ st.w r12[21*4], r3 /* y[21] = -tmp[5] */ ++ st.w r12[20*4], r2 /* y[20] = -tmp[6] */ ++ st.d r12[32*4], r2 /* y[32] = -tmp[5], y[33] = -tmp[6]*/ ++ ++ sub lr, r0 /* tmp[9] -= tmp[8]*/ ++ sub r11, lr /* tmp[10] -= tmp[9]*/ ++ neg r1 ++ neg r0 ++ st.w r12[19*4], r1 /* y[19] = -tmp[7] */ ++ st.w r12[18*4], r0 /* y[18] = -tmp[8] */ ++ st.d r12[34*4], r0 /* y[34] = -tmp[7], y[35] = -tmp[8]*/ ++ ++ sub r10, r11 /* tmp[11] -= tmp[10]*/ ++ sub r9, r10 /* tmp[12] -= tmp[11]*/ ++ ++ st.w r12[0*4], lr /* y[0] = tmp[9]*/ ++ neg lr ++ st.w r12[17*4], lr /* y[17] = -tmp[9]*/ ++ st.d r12[1*4], r10 /* y[1] = tmp[10], y[2] = tmp[11] */ ++ neg r11 ++ neg r10 ++ st.w r12[16*4], r11 /* y[16] = -tmp[10] */ ++ st.w r12[15*4], r10 /* y[15] = -tmp[11] */ ++ ++ ++ sub r8, r9 /* tmp[13] -= tmp[12]*/ ++ sub r7, r8 /* tmp[14] -= tmp[13]*/ ++ st.d r12[3*4], r8 /* y[3] = tmp[12], y[4] = tmp[13] */ ++ neg r9 ++ neg r8 ++ st.w r12[14*4], r9 /* y[14] = -tmp[12] */ ++ st.w r12[13*4], r8 /* y[13] = -tmp[13] */ ++ ++ sub r6, r7 /* tmp[15] -= tmp[14]*/ ++ sub r5, r6 /* tmp[16] -= tmp[15]*/ ++ sub r4, r5 /* tmp[17] -= tmp[16]*/ ++ ++ st.d r12[5*4], r6 /* y[5] = tmp[14], y[6] = tmp[15] */ ++ neg r7 ++ neg r6 ++ st.w r12[12*4], r7 /* y[12] = -tmp[14] */ ++ st.w r12[11*4], r6 /* y[11] = -tmp[15] */ ++ ++ st.d r12[7*4], r4 /* y[7] = tmp[16], y[8] = tmp[17] */ ++ neg r5 ++ neg r4 ++ st.w r12[10*4], r5 /* y[10] = -tmp[16] */ ++ st.w r12[9*4], r4 /* y[9] = -tmp[17] */ ++ ++ popm r0-r7,r11,pc ++ ++ .align 2 ++scale_dctIV: ++ .short MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120) ++ .short MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b) ++ .short MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4) ++ .short MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3) ++ .short MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5) ++ .short MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c) ++ ++ .align 2 ++scale_sdctII: ++ .short MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930) ++ .short MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8) ++ .short MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7) +diff --git a/layer3.c b/layer3.c +index 4e5d3fa..dffdab3 100644 +--- a/layer3.c ++++ b/layer3.c +@@ -378,6 +378,11 @@ mad_fixed_t const ca[8] = { + -MAD_F(0x003a2847) /* -0.014198569 */, -MAD_F(0x000f27b4) /* -0.003699975 */ + }; + ++#ifdef FPM_AVR32 ++# undef MAD_F ++# define MAD_F(x) ((x + (1 << 12)) >> 13) ++#endif ++ + /* + * IMDCT coefficients for short blocks + * derived from section 2.4.3.4.10.2 of ISO/IEC 11172-3 +@@ -386,7 +391,7 @@ mad_fixed_t const ca[8] = { + * imdct_s[i /odd][k] = cos((PI / 24) * (2 * (6 + (i-1)/2) + 7) * (2 * k + 1)) + */ + static +-mad_fixed_t const imdct_s[6][6] = { ++mad_coeff_t const imdct_s[6][6] = { + # include "imdct_s.dat" + }; + +@@ -398,7 +403,7 @@ mad_fixed_t const imdct_s[6][6] = { + * window_l[i] = sin((PI / 36) * (i + 1/2)) + */ + static +-mad_fixed_t const window_l[36] = { ++mad_coeff_t const window_l[36] = { + MAD_F(0x00b2aa3e) /* 0.043619387 */, MAD_F(0x0216a2a2) /* 0.130526192 */, + MAD_F(0x03768962) /* 0.216439614 */, MAD_F(0x04cfb0e2) /* 0.300705800 */, + MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x07635284) /* 0.461748613 */, +@@ -429,7 +434,7 @@ mad_fixed_t const window_l[36] = { + * window_s[i] = sin((PI / 12) * (i + 1/2)) + */ + static +-mad_fixed_t const window_s[12] = { ++mad_coeff_t const window_s[12] = { + MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x061f78aa) /* 0.382683432 */, + MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0cb19346) /* 0.793353340 */, + MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0fdcf549) /* 0.991444861 */, +@@ -438,6 +443,11 @@ mad_fixed_t const window_s[12] = { + MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x0216a2a2) /* 0.130526192 */, + }; + ++#ifdef FPM_AVR32 ++# undef MAD_F ++# define MAD_F(x) ((mad_fixed_t) (x##L)) ++#endif ++ + /* + * coefficients for intensity stereo processing + * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3 +@@ -879,6 +889,42 @@ void III_exponents(struct channel const *channel, + * NAME: III_requantize() + * DESCRIPTION: requantize one (positive) value + */ ++ ++#if 0 ++/*static*/ ++mad_fixed_t III_requantize(unsigned int value, signed int exp) ++{ ++ register mad_fixed_t tmp2, tmp3; ++ long long tmp_d; ++ ++ asm ("asr\t%0, %1, 2\n" ++ "ld.w\t%2, %4[%5 << 2]\n" ++ "sub\t%1, %1, %0 << 2\n" ++ "asr\t%3, %2, 7\n" ++ "andl\t%2, 0x7f, COH\n" ++ "add\t%0, %2\n" ++ "lsl\t%m0,%3,%0\n" ++ "neg\t%0\n" ++ "asr\t%3,%3,%0\n" ++ "add\t%2, %6, %1 << 2\n" ++ "ld.w\t%2, %2[12]\n" ++ "cp.w\t%0, 0\n" ++ "movlt\t%3, %m0\n" ++ "muls.d\t%0, %3, %2\n" ++ "cp.w\t%1, 0\n" ++ "breq\t0f\n" ++ "lsr\t%0, %0, 28\n" ++ "or\t%3, %0, %m0 << 4\n" ++ "0:\n" ++ : "=&r"(tmp_d), "+r"(exp), "=&r"(tmp2), "=&r"(tmp3) ++ : "r"(&rq_table), "r"(value), "r"(root_table)); ++ ++ ++ return tmp3; ++} ++ ++#else ++ + static + mad_fixed_t III_requantize(unsigned int value, signed int exp) + { +@@ -918,6 +964,7 @@ mad_fixed_t III_requantize(unsigned int value, signed int exp) + + return frac ? mad_f_mul(requantized, root_table[3 + frac]) : requantized; + } ++#endif + + /* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */ + # define MASK(cache, sz, bits) \ +@@ -2054,27 +2101,42 @@ void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36]) + } + # endif + ++ ++#ifdef FPM_AVR32 ++# undef mad_f_mul ++# define mad_f_mul(x, y) __builtin_mulsatrndwh_w(x, y) ++#endif ++ + /* + * NAME: III_imdct_l() + * DESCRIPTION: perform IMDCT and windowing for long blocks + */ + static +-void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], ++void III_imdct_l(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36], + unsigned int block_type) + { + unsigned int i; ++ mad_fixed_t *z_ptr; ++ mad_coeff_t *w_ptr; + + /* IMDCT */ + ++#ifdef FPM_AVR32 ++ imdct36_avr32(X, z); ++#else + imdct36(X, z); ++#endif + + /* windowing */ + ++ z_ptr = &z[0]; ++ w_ptr = &window_l[0]; ++ + switch (block_type) { + case 0: /* normal window */ + # if defined(ASO_INTERLEAVE1) + { +- register mad_fixed_t tmp1, tmp2; ++ register mad_coeff_t tmp1, tmp2; + + tmp1 = window_l[0]; + tmp2 = window_l[1]; +@@ -2091,15 +2153,16 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], + } + # elif defined(ASO_INTERLEAVE2) + { +- register mad_fixed_t tmp1, tmp2; ++ register mad_fixed_t tmp1; ++ register mad_coeff_t tmp2; + +- tmp1 = z[0]; +- tmp2 = window_l[0]; ++ tmp1 = *z_ptr; ++ tmp2 = *w_ptr++; + + for (i = 0; i < 35; ++i) { +- z[i] = mad_f_mul(tmp1, tmp2); +- tmp1 = z[i + 1]; +- tmp2 = window_l[i + 1]; ++ *z_ptr++ = mad_f_mul(tmp1, tmp2); ++ tmp1 = *z_ptr; ++ tmp2 = *w_ptr++; + } + + z[35] = mad_f_mul(tmp1, tmp2); +@@ -2118,23 +2181,28 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], + + case 1: /* start block */ + for (i = 0; i < 18; i += 3) { +- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]); +- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]); +- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]); ++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); ++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); ++ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); + } ++ z_ptr += 6; ++ w_ptr = &window_s[6]; + /* (i = 18; i < 24; ++i) z[i] unchanged */ +- for (i = 24; i < 30; ++i) z[i] = mad_f_mul(z[i], window_s[i - 18]); +- for (i = 30; i < 36; ++i) z[i] = 0; ++ for (i = 24; i < 30; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); ++ for (i = 30; i < 36; ++i) *z_ptr++ = 0; + break; + + case 3: /* stop block */ +- for (i = 0; i < 6; ++i) z[i] = 0; +- for (i = 6; i < 12; ++i) z[i] = mad_f_mul(z[i], window_s[i - 6]); ++ w_ptr = &window_s[0]; ++ for (i = 0; i < 6; ++i) *z_ptr++ = 0; ++ for (i = 6; i < 12; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); + /* (i = 12; i < 18; ++i) z[i] unchanged */ ++ w_ptr = &window_l[18]; ++ z_ptr += 6; + for (i = 18; i < 36; i += 3) { +- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]); +- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]); +- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]); ++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++ ); ++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); ++ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); + } + break; + } +@@ -2146,10 +2214,10 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], + * DESCRIPTION: perform IMDCT and windowing for short blocks + */ + static +-void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) ++void III_imdct_s(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36]) + { + mad_fixed_t y[36], *yptr; +- mad_fixed_t const *wptr; ++ mad_coeff_t const *wptr; + int w, i; + register mad_fixed64hi_t hi; + register mad_fixed64lo_t lo; +@@ -2159,11 +2227,56 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) + yptr = &y[0]; + + for (w = 0; w < 3; ++w) { +- register mad_fixed_t const (*s)[6]; ++ register mad_coeff_t const (*s)[6]; + + s = imdct_s; + + for (i = 0; i < 3; ++i) { ++#ifdef FPM_AVR32 ++ register long long int acc, tmp1, tmp2, tmp3, tmp4; ++ asm volatile ("ld.d\t%0, %5++\n" ++ "ld.d\t%1, %6[0]\n" ++ "ld.d\t%2, %6[2*4]\n" ++ "ld.d\t%3, %6[4*4]\n" ++ "mulwh.d\t%4, %m1, %m0:t\n" ++ "macwh.d\t%4, %1, %m0:b\n" ++ "ld.w\t%m0, %5++\n" ++ "macwh.d\t%4, %m2, %0:t\n" ++ "macwh.d\t%4, %2, %0:b\n" ++ "macwh.d\t%4, %m3, %m0:t\n" ++ "macwh.d\t%4, %3, %m0:b\n" ++ "ld.d\t%0, %5++\n" ++ "rol\t%4\n" ++ "rol\t%m4\n" ++ : "=&r"(tmp1), "=&r"(tmp2), "=&r"(tmp3), "=&r"(tmp4), ++ "=&r"(acc), "+r"(s) ++ : "r"(X)); ++ ++ asm volatile ("st.w\t%1[0], %m0\n" ++ "neg\t%m0\n" ++ "st.w\t%2[5*4], %m0\n" ++ : "+r"(acc) ++ : "r"(&yptr[i]), "r"(&yptr[-i])); ++ ++ asm volatile ("mulwh.d\t%4, %m1, %m0:t\n" ++ "macwh.d\t%4, %1, %m0:b\n" ++ "ld.w\t%m0, %5++\n" ++ "macwh.d\t%4, %m2, %0:t\n" ++ "macwh.d\t%4, %2, %0:b\n" ++ "macwh.d\t%4, %m3, %m0:t\n" ++ "macwh.d\t%4, %3, %m0:b\n" ++ "rol\t%4\n" ++ "rol\t%m4\n" ++ : "+r"(tmp1), "+r"(tmp2), "+r"(tmp3), "+r"(tmp4), ++ "=&r"(acc), "+r"(s) ++ : "r"(X)); ++ ++ asm volatile ( "st.w\t%1[6*4], %m0\n" ++ "st.w\t%2[11*4], %m0\n" ++ :: "r"(acc), "r"(&yptr[i]), "r"(&yptr[-i])); ++ ++ ++#else + MAD_F_ML0(hi, lo, X[0], (*s)[0]); + MAD_F_MLA(hi, lo, X[1], (*s)[1]); + MAD_F_MLA(hi, lo, X[2], (*s)[2]); +@@ -2187,6 +2300,7 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) + yptr[11 - i] = yptr[i + 6]; + + ++s; ++#endif + } + + yptr += 12; +@@ -2198,6 +2312,196 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) + yptr = &y[0]; + wptr = &window_s[0]; + ++#ifdef FPM_AVR32 ++ /* z[0] = 0; ++ z[1] = 0; ++ z[2] = 0; ++ z[3] = 0; ++ z[4] = 0; ++ z[5] = 0; ++ z[30] = 0; ++ z[31] = 0; ++ z[32] = 0; ++ z[33] = 0; ++ z[34] = 0; ++ z[35] = 0; ++ */ ++ { ++ register long long int tmp, tmp2, tmp3, w0123, w4567, w891011; ++ asm volatile ("mov\t%m0, 0\n" ++ "mov\t%0, %m0\n" ++ "st.d\t%1[0], %0\n" ++ "st.d\t%1[2*4], %0\n" ++ "st.d\t%1[4*4], %0\n" ++ "st.d\t%1[30*4], %0\n" ++ "st.d\t%1[32*4], %0\n" ++ "st.d\t%1[34*4], %0\n" ++ : "=&r"(tmp) : "r"(z)); ++ ++ ++ ++ /* ++ z[6] = mad_f_mul(yptr [0], wptr[0]); ++ z[7] = mad_f_mul(yptr [1], wptr[1]); ++ z[8] = mad_f_mul(yptr [2], wptr[2]); ++ z[9] = mad_f_mul(yptr [3], wptr[3]); ++ z[10] = mad_f_mul(yptr[4], wptr[4]); ++ z[11] = mad_f_mul(yptr[5], wptr[5]); ++ z[24] = mad_f_mul(yptr [30], wptr[6]); ++ z[25] = mad_f_mul(yptr [31], wptr[7]); ++ z[26] = mad_f_mul(yptr [32], wptr[8]); ++ z[27] = mad_f_mul(yptr [33], wptr[9]); ++ z[28] = mad_f_mul(yptr[34], wptr[10]); ++ z[29] = mad_f_mul(yptr[35], wptr[11]); ++ */ ++ ++ ++ asm volatile ("ld.d\t%0, %5[0*4]\n" ++ "ld.d\t%3, %6[0*4]\n" ++ "ld.d\t%1, %5[2*4]\n" ++ "ld.d\t%2, %5[4*4]\n" ++ "mulsatrndwh.w\t%m3, %m3, %m0:t\n" ++ "mulsatrndwh.w\t%3, %3, %m0:b\n" ++ "ld.d\t%4, %6[2*4]\n" ++ "st.d\t%7[6*4], %3\n" ++ ++ "mulsatrndwh.w\t%m4, %m4, %0:t\n" ++ "mulsatrndwh.w\t%4, %4, %0:b\n" ++ "ld.d\t%3, %6[4*4]\n" ++ "st.d\t%7[8*4], %4\n" ++ ++ "mulsatrndwh.w\t%m3, %m3, %m1:t\n" ++ "mulsatrndwh.w\t%3, %3, %m1:b\n" ++ "ld.d\t%4, %6[30*4]\n" ++ "st.d\t%7[10*4], %3\n" ++ ++ "mulsatrndwh.w\t%m4, %m4, %1:t\n" ++ "mulsatrndwh.w\t%4, %4, %1:b\n" ++ "ld.d\t%3, %6[32*4]\n" ++ "st.d\t%7[24*4], %4\n" ++ ++ "mulsatrndwh.w\t%m3, %m3, %m2:t\n" ++ "mulsatrndwh.w\t%3, %3, %m2:b\n" ++ "ld.d\t%4, %6[34*4]\n" ++ "st.d\t%7[26*4], %3\n" ++ ++ "mulsatrndwh.w\t%m4, %m4, %2:t\n" ++ "mulsatrndwh.w\t%4, %4, %2:b\n" ++ "st.d\t%7[28*4], %4\n" ++ ++ : "=&r"(w0123), "=&r"(w4567), "=&r"(w891011), "=&r"(tmp), "=&r"(tmp2) ++ : "r"(wptr), "r"(yptr), "r"(z)); ++ /* ++ MAD_F_ML0(hi, lo, yptr[6], wptr[6]); ++ MAD_F_MLA(hi, lo, yptr[12], wptr[0]); ++ z[12] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[7], wptr[7]); ++ MAD_F_MLA(hi, lo, yptr[13], wptr[1]); ++ z[13] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[8], wptr[8]); ++ MAD_F_MLA(hi, lo, yptr[14], wptr[2]); ++ z[14] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[9], wptr[9]); ++ MAD_F_MLA(hi, lo, yptr[15], wptr[3]); ++ z[15] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[10], wptr[10]); ++ MAD_F_MLA(hi, lo, yptr[16], wptr[4]); ++ z[16] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[11], wptr[11]); ++ MAD_F_MLA(hi, lo, yptr[17], wptr[5]); ++ z[17] = MAD_F_MLZ(hi, lo); ++ ++ MAD_F_ML0(hi, lo, yptr[18], wptr[6]); ++ MAD_F_MLA(hi, lo, yptr[24], wptr[0]); ++ z[18] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[19], wptr[7]); ++ MAD_F_MLA(hi, lo, yptr[25], wptr[1]); ++ z[19] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[20], wptr[8]); ++ MAD_F_MLA(hi, lo, yptr[26], wptr[2]); ++ z[20] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[21], wptr[9]); ++ MAD_F_MLA(hi, lo, yptr[27], wptr[3]); ++ z[21] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[22], wptr[10]); ++ MAD_F_MLA(hi, lo, yptr[28], wptr[4]); ++ z[22] = MAD_F_MLZ(hi, lo); ++ MAD_F_ML0(hi, lo, yptr[23], wptr[11]); ++ MAD_F_MLA(hi, lo, yptr[29], wptr[5]); ++ z[23] = MAD_F_MLZ(hi, lo);*/ ++ ++ ++ asm volatile ("ld.d\t%0, %3[6*4]\n" ++ "ld.d\t%1, %3[12*4]\n" ++ "mulwh.d\t%2, %m0, %5:t\n" ++ "macwh.d\t%2, %m1, %m4:t\n" ++ "mulwh.d\t%0, %0, %5:b\n" ++ "macwh.d\t%0, %1, %m4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[12*4], %2\n" ++ ++ "ld.d\t%0, %3[18*4]\n" ++ "ld.d\t%1, %3[24*4]\n" ++ "mulwh.d\t%2, %m0, %5:t\n" ++ "macwh.d\t%2, %m1, %m4:t\n" ++ "mulwh.d\t%0, %0, %5:b\n" ++ "macwh.d\t%0, %1, %m4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[18*4], %2\n" ++ ++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) ++ : "r"(yptr), "r"(w0123), "r"(w4567), "r"(z)); ++ ++ asm volatile ("ld.d\t%0, %3[8*4]\n" ++ "ld.d\t%1, %3[14*4]\n" ++ "mulwh.d\t%2, %m0, %m5:t\n" ++ "macwh.d\t%2, %m1, %4:t\n" ++ "mulwh.d\t%0, %0, %m5:b\n" ++ "macwh.d\t%0, %1, %4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[14*4], %2\n" ++ ++ "ld.d\t%0, %3[20*4]\n" ++ "ld.d\t%1, %3[26*4]\n" ++ "mulwh.d\t%2, %m0, %m5:t\n" ++ "macwh.d\t%2, %m1, %4:t\n" ++ "mulwh.d\t%0, %0, %m5:b\n" ++ "macwh.d\t%0, %1, %4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[20*4], %2\n" ++ ++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) ++ : "r"(yptr), "r"(w0123), "r"(w891011), "r"(z)); ++ ++ asm volatile ("ld.d\t%0, %3[10*4]\n" ++ "ld.d\t%1, %3[16*4]\n" ++ "mulwh.d\t%2, %m0, %5:t\n" ++ "macwh.d\t%2, %m1, %m4:t\n" ++ "mulwh.d\t%0, %0, %5:b\n" ++ "macwh.d\t%0, %1, %m4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[16*4], %2\n" ++ ++ "ld.d\t%0, %3[22*4]\n" ++ "ld.d\t%1, %3[28*4]\n" ++ "mulwh.d\t%2, %m0, %5:t\n" ++ "macwh.d\t%2, %m1, %m4:t\n" ++ "mulwh.d\t%0, %0, %5:b\n" ++ "macwh.d\t%0, %1, %m4:b\n" ++ "lsl\t%m2, 1\n" ++ "lsl\t%2, %m0, 1\n" ++ "st.d\t%6[22*4], %2\n" ++ ++ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) ++ : "r"(yptr), "r"(w4567), "r"(w891011), "r"(z)); ++ ++ } ++#else + for (i = 0; i < 6; ++i) { + z[i + 0] = 0; + z[i + 6] = mad_f_mul(yptr[ 0 + 0], wptr[0]); +@@ -2218,8 +2522,15 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) + ++yptr; + ++wptr; + } ++#endif + } + ++#ifdef FPM_AVR32 ++# undef mad_f_mul ++# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ ++ (((y) + (1L << 15)) >> 16)) ++#endif ++ + /* + * NAME: III_overlap() + * DESCRIPTION: perform overlap-add of windowed IMDCT outputs +diff --git a/synth.c b/synth.c +index 1d28d43..f42d49b 100644 +--- a/synth.c ++++ b/synth.c +@@ -29,20 +29,6 @@ + # include "frame.h" + # include "synth.h" + +-/* +- * NAME: synth->init() +- * DESCRIPTION: initialize synth struct +- */ +-void mad_synth_init(struct mad_synth *synth) +-{ +- mad_synth_mute(synth); +- +- synth->phase = 0; +- +- synth->pcm.samplerate = 0; +- synth->pcm.channels = 0; +- synth->pcm.length = 0; +-} + + /* + * NAME: synth->mute() +@@ -88,6 +74,10 @@ void mad_synth_mute(struct mad_synth *synth) + + /* FPM_DEFAULT without OPT_SSO will actually lose accuracy and performance */ + ++# if defined(FPM_AVR32) ++# define OPT_SSO ++# endif ++ + # if defined(FPM_DEFAULT) && !defined(OPT_SSO) + # define OPT_SSO + # endif +@@ -522,9 +512,15 @@ void dct32(mad_fixed_t const in[32], unsigned int slot, + # endif + # define ML0(hi, lo, x, y) ((lo) = (x) * (y)) + # define MLA(hi, lo, x, y) ((lo) += (x) * (y)) +-# define MLN(hi, lo) ((lo) = -(lo)) +-# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) +-# define SHIFT(x) ((x) >> 2) ++# if defined(FPM_AVR32) ++# define MLN(hi, lo) MAD_F_MLN((hi), (lo)) ++# define MLZ(hi, lo) (hi) ++# define SHIFT(x) ((x) << 2) ++# else ++# define MLN(hi, lo) ((lo) = -(lo)) ++# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) ++# define SHIFT(x) ((x) >> 2) ++# endif + # define PRESHIFT(x) ((MAD_F(x) + (1L << 13)) >> 14) + # else + # define ML0(hi, lo, x, y) MAD_F_ML0((hi), (lo), (x), (y)) +@@ -541,11 +537,54 @@ void dct32(mad_fixed_t const in[32], unsigned int slot, + # endif + # endif + ++/* ++ * NAME: synth->init() ++ * DESCRIPTION: initialize synth struct ++ */ ++ ++#ifdef FPM_AVR32 ++short Dmod[17][33]; ++#endif ++ + static ++#ifdef FPM_AVR32 ++short const D[17][32] = { ++#else + mad_fixed_t const D[17][32] = { ++#endif + # include "D.dat" + }; + ++void mad_synth_init(struct mad_synth *synth) ++{ ++ ++ mad_synth_mute(synth); ++ ++ synth->phase = 0; ++ ++ synth->pcm.samplerate = 0; ++ synth->pcm.channels = 0; ++ synth->pcm.length = 0; ++ ++#ifdef FPM_AVR32 ++ { ++ int i, j; ++ for ( i = 0; i < 17; i++ ){ ++ for ( j = 0; j < 32; j++ ){ ++ if ( j & 1 ){ ++ Dmod[i][17 + (j >> 1)]= D[i][j]; ++ } else { ++ Dmod[i][(j >> 1)]= D[i][j]; ++ } ++ } ++ ++ Dmod[i][16]= Dmod[i][16+8]; ++ } ++ } ++#endif ++ ++} ++ + # if defined(ASO_SYNTH) + void synth_full(struct mad_synth *, struct mad_frame const *, + unsigned int, unsigned int); +@@ -560,9 +599,13 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, + { + unsigned int phase, ch, s, sb, pe, po; + mad_fixed_t *pcm1, *pcm2, (*filter)[2][2][16][8]; +- mad_fixed_t const (*sbsample)[36][32]; ++ mad_fixed_t /*const*/ (*sbsample)[36][32]; + register mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8]; ++#ifdef FPM_AVR32 ++ register short const (*Dptr)[32], *ptr; ++#else + register mad_fixed_t const (*Dptr)[32], *ptr; ++#endif + register mad_fixed64hi_t hi; + register mad_fixed64lo_t lo; + +@@ -573,6 +616,20 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, + pcm1 = synth->pcm.samples[ch]; + + for (s = 0; s < ns; ++s) { ++# ifdef FPM_AVR32 ++/* ++ int i; ++ for ( i = 0; i < 32; i++ ){ ++ (*sbsample)[s][i] = ((*sbsample)[s][i] + (1 << 13)) & 0xFFFFC000; ++ } ++*/ ++ dct32_avr32((*sbsample)[s], phase >> 1, ++ (*filter)[0][phase & 1], (*filter)[1][phase & 1]); ++ /* printf("dct32: %d\n", GET_CYCLES);*/ ++ pcm1 = synth_avr32(phase, (mad_fixed_t *)filter, \ ++ pcm1, (short *)&Dmod[0]); ++ /* printf("synth_window: %d\n", GET_CYCLES);*/ ++# else + dct32((*sbsample)[s], phase >> 1, + (*filter)[0][phase & 1], (*filter)[1][phase & 1]); + +@@ -679,6 +736,7 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, + MLA(hi, lo, (*fo)[7], ptr[ 2]); + + *pcm1 = SHIFT(-MLZ(hi, lo)); ++# endif + pcm1 += 16; + + phase = (phase + 1) % 16; +diff --git a/synth_avr32.S b/synth_avr32.S +new file mode 100644 +index 0000000..701077b +--- /dev/null ++++ b/synth_avr32.S +@@ -0,0 +1,394 @@ ++/* ++ Optimized function for speeding up synthesis filter ++ in MPEG Audio Decoding. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Ronny Pedersen and Lars Even Almås, Atmel Norway ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++ ++/* ***************** ++ Defining macros ++ ***************** */ ++ ++ .macro window_1 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi ++ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */ ++ ld.w \tmp2_lo, \ptr[0*2+\ptr_offset*2] /* tmp2_lo = { ptr[0], ptr[1] }*/ ++ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */ ++ ld.w \tmp2_hi, \ptr[6*2+\ptr_offset*2] /* tmp2_hi = { ptr[6], ptr[7] }*/ ++ .if \mul ++ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/ ++ .else ++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/ ++ .endif ++ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[7] * ptr[1]*/ ++ ld.w \tmp2_lo, \ptr[2*2+\ptr_offset*2] /* tmp2_lo = { ptr[2], ptr[3] }*/ ++ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[1] * ptr[7]*/ ++ ld.d \tmp1_lo, \f[2*4] /* tmp1 = { f[2], f[3] } */ ++ ++ macwh.d \acc, \tmp3_hi, \tmp2_lo:t /* f[6] * ptr[2]*/ ++ macwh.d \acc, \tmp1_hi, \tmp2_hi:t /* f[2] * ptr[6]*/ ++ ld.d \tmp3_lo, \f[4*4] /* tmp3 = { f[4], f[5] } */ ++ ld.w \tmp2_hi, \ptr[4*2+\ptr_offset*2] /* tmp2_hi = { ptr[4], ptr[5] }*/ ++ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[5] * ptr[3]*/ ++ ++ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[3] * ptr[5]*/ ++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[4] * ptr[4]*/ ++ .endm ++ ++ .macro window_2 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi ++ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */ ++ ld.w \tmp2_lo, \ptr[7*2+\ptr_offset*2] /* tmp2_lo = { ptr[7], ptr[8] }*/ ++ ld.d \tmp3_lo, \f[2*4] /* tmp3 = { f[2], f[3] } */ ++ ld.w \tmp2_hi, \ptr[9*2+\ptr_offset*2] /* tmp2_hi = { ptr[9], ptr[10] }*/ ++ .if \mul ++ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/ ++ .else ++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/ ++ .endif ++ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[1] * ptr[8]*/ ++ ++ ld.d \tmp1_lo, \f[4*4] /* tmp1 = { f[4], f[5] } */ ++ ld.w \tmp2_lo, \ptr[11*2+\ptr_offset*2] /* tmp2_lo = { ptr[11], ptr[12] }*/ ++ ++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[2] * ptr[9]*/ ++ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[3] * ptr[10]*/ ++ ++ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */ ++ ld.w \tmp2_hi, \ptr[13*2+\ptr_offset*2] /* tmp2_hi = { ptr[13], ptr[14] }*/ ++ ++ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[4] * ptr[11]*/ ++ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[5] * ptr[12]*/ ++ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[6] * ptr[13]*/ ++ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[7] * ptr[14]*/ ++ .endm ++ ++ .macro scale res, d_lo, d_hi ++ lsl \d_hi, 2 ++ .endm ++ ++/* ********************** ++ Starting main function ++ ********************** */ ++ ++/* Function synth_avr32 is called from synth.c with arguments: ++ phase, filter, *pcm1, &D[0] */ ++ ++ .global synth_avr32 ++synth_avr32: ++ pushm r0-r7, lr ++ sub sp, 8 ++ ++ /* R12 = phase, R11 = filter, R10 = pcm1, r9 = D*/ ++ bld r12, 0 ++ brcc synth_even ++ ++ /* Filter for odd phases */ ++ ++ /* fe = &(*filter)[0][1][0]; ++ fx = &(*filter)[0][0][0]; ++ fo = &(*filter)[1][0][0]; */ ++ sub lr /*fe*/, r11, -16*8*4 ++ sub r8 /*fo*/, r11, -16*8*4*2 ++ ++ /* pe = phase >> 1; */ ++ lsr r12, 1 ++ stdsp sp[4], r12 ++ /* ptr = (short const *)Dmod + pe; */ ++ add r12, r9, r12 << 1 ++ ++ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fx)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fx)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fx)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fx)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fx)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fx)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */ ++ window_1 r11/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ ++ /* MLN(hi, lo); */ ++ neg r0 ++ acr r1 ++ neg r1 ++ ++ /* MLA(hi, lo, (*fe)[0], ptr[0]); ++ MLA(hi, lo, (*fe)[1], ptr[7]); ++ MLA(hi, lo, (*fe)[2], ptr[6]); ++ MLA(hi, lo, (*fe)[3], ptr[5]); ++ MLA(hi, lo, (*fe)[4], ptr[4]); ++ MLA(hi, lo, (*fe)[5], ptr[3]); ++ MLA(hi, lo, (*fe)[6], ptr[2]); ++ MLA(hi, lo, (*fe)[7], ptr[1]); */ ++ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); ++ ++ pcm2 = pcm1 + 31; */ ++ scale r1, r0, r1 ++ st.w r10/*pcm_1*/++, r1 ++ sub r11/*pcm2*/, r10, -4*31 ++ ++ /* for (sb = 1; sb < 16; ++sb) { */ ++ mov r2, 15 ++ stdsp sp[0], r2 ++odd_loop: ++ /* ++fe; ++ ptr += 33; */ ++ sub lr /*fe*/, -8*4 ++ sub r12, -33*2 ++ ++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ ++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ /* MLN(hi, lo); */ ++ ++ neg r0 ++ acr r1 ++ neg r1 ++ ++ /* MLA(hi, lo, (*fe)[7], ptr[1]); ++ MLA(hi, lo, (*fe)[6], ptr[2]); ++ MLA(hi, lo, (*fe)[5], ptr[3]); ++ MLA(hi, lo, (*fe)[4], ptr[4]); ++ MLA(hi, lo, (*fe)[3], ptr[5]); ++ MLA(hi, lo, (*fe)[2], ptr[6]); ++ MLA(hi, lo, (*fe)[1], ptr[7]); ++ MLA(hi, lo, (*fe)[0], ptr[0]); */ ++ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ /* ptr -= 2*pe; */ ++ lddsp r2, sp[4] ++ ++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */ ++ ++ scale r1, r0, r1 ++ sub r12/*ptr*/, r12, r2/*pe*/<< 2 ++ st.w r10/*pcm_1*/++, r1 ++ ++ ++ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17]); ++ MLA(hi, lo, (*fe)[1], ptr[8 + 17]); ++ MLA(hi, lo, (*fe)[2], ptr[9 + 17]); ++ MLA(hi, lo, (*fe)[3], ptr[10 + 17]); ++ MLA(hi, lo, (*fe)[4], ptr[11 + 17]); ++ MLA(hi, lo, (*fe)[5], ptr[12 + 17]); ++ MLA(hi, lo, (*fe)[6], ptr[13 + 17]); ++ MLA(hi, lo, (*fe)[7], ptr[14 + 17]); */ ++ window_2 lr/*fe*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ /* MLA(hi, lo, (*fo)[7], ptr[14]); ++ MLA(hi, lo, (*fo)[6], ptr[13]); ++ MLA(hi, lo, (*fo)[5], ptr[12]); ++ MLA(hi, lo, (*fo)[4], ptr[11]); ++ MLA(hi, lo, (*fo)[3], ptr[10]); ++ MLA(hi, lo, (*fo)[2], ptr[9]); ++ MLA(hi, lo, (*fo)[1], ptr[8]); ++ MLA(hi, lo, (*fo)[0], ptr[7]); */ ++ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ ++ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */ ++ lddsp r3, sp[4] ++ lddsp r2, sp[0] ++ scale r1, r0, r1 ++ st.w --r11/*pcm_2*/, r1 ++ ++ /* ptr += 2*pe; */ ++ add r12/*ptr*/, r12, r3/*pe*/<< 2 ++ ++ /* ++fo; ++ } */ ++ sub r8/*fo*/, -8*4 ++ ++ sub r2, 1 ++ stdsp sp[0], r2 ++ brne odd_loop ++ ++ /* ptr += 33; */ ++ sub r12/*ptr*/, -33*2 ++ ++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ ++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ ++ rjmp synth_end ++synth_even: ++ /* Filter for even phases */ ++ ++ /* fe = &(*filter)[0][0][0]; ++ fx = &(*filter)[0][1][0]; ++ fo = &(*filter)[1][1][0]; */ ++ sub lr /*fx*/, r11, -16*8*4 ++ sub r8 /*fo*/, r11, -(16*8*4*2 + 16*8*4) ++ ++ /* po = ((phase - 1) & 0xF) >> 1; */ ++ sub r12, 1 ++ andl r12, 0xe, COH ++ stdsp sp[4], r12 ++ /* ptr = (short const *)Dmod + po; */ ++ add r12, r9, r12 ++ ++ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fx)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fx)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fx)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fx)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fx)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fx)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */ ++ window_1 lr/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ ++ /* MLN(hi, lo); */ ++ neg r0 ++ acr r1 ++ neg r1 ++ ++ /* MLA(hi, lo, (*fe)[0], ptr[0 + 1]); ++ MLA(hi, lo, (*fe)[1], ptr[7 + 1]); ++ MLA(hi, lo, (*fe)[2], ptr[6 + 1]); ++ MLA(hi, lo, (*fe)[3], ptr[5 + 1]); ++ MLA(hi, lo, (*fe)[4], ptr[4 + 1]); ++ MLA(hi, lo, (*fe)[5], ptr[3 + 1]); ++ MLA(hi, lo, (*fe)[6], ptr[2 + 1]); ++ MLA(hi, lo, (*fe)[7], ptr[1 + 1]); */ ++ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); ++ ++ pcm2 = pcm1 + 31; */ ++ scale r1, r0, r1 ++ st.w r10/*pcm_1*/++, r1 ++ sub lr/*pcm2*/, r10, -4*31 ++ ++ /* for (sb = 1; sb < 16; ++sb) { */ ++ mov r2, 15 ++ stdsp sp[0], r2 ++even_loop: ++ /* ++fe; ++ ptr += 33; */ ++ sub r11 /*fe*/, -8*4 ++ sub r12, -33*2 ++ ++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ ++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ /* MLN(hi, lo); */ ++ neg r0 ++ acr r1 ++ neg r1 ++ ++ /* MLA(hi, lo, (*fe)[7], ptr[1 + 1]); ++ MLA(hi, lo, (*fe)[6], ptr[2 + 1]); ++ MLA(hi, lo, (*fe)[5], ptr[3 + 1]); ++ MLA(hi, lo, (*fe)[4], ptr[4 + 1]); ++ MLA(hi, lo, (*fe)[3], ptr[5 + 1]); ++ MLA(hi, lo, (*fe)[2], ptr[6 + 1]); ++ MLA(hi, lo, (*fe)[1], ptr[7 + 1]); ++ MLA(hi, lo, (*fe)[0], ptr[0 + 1]); */ ++ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */ ++ lddsp r2, sp[4] ++ scale r1, r0, r1 ++ /* ptr -= 2*po; */ ++ sub r12/*ptr*/, r12, r2/*po*/<< 1 ++ st.w r10/*pcm_1*/++, r1 ++ ++ ++ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17 - 1]); ++ MLA(hi, lo, (*fe)[1], ptr[8 + 17 - 1]); ++ MLA(hi, lo, (*fe)[2], ptr[9 + 17 - 1]); ++ MLA(hi, lo, (*fe)[3], ptr[10 + 17 - 1]); ++ MLA(hi, lo, (*fe)[4], ptr[11 + 17 - 1]); ++ MLA(hi, lo, (*fe)[5], ptr[12 + 17 - 1]); ++ MLA(hi, lo, (*fe)[6], ptr[13 + 17 - 1]); ++ MLA(hi, lo, (*fe)[7], ptr[14 + 17 - 1]); */ ++ window_2 r11/*fe*/,r12/*ptr*/,r0/*acc*/,16/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ /* MLA(hi, lo, (*fo)[7], ptr[14]); ++ MLA(hi, lo, (*fo)[6], ptr[13]); ++ MLA(hi, lo, (*fo)[5], ptr[12]); ++ MLA(hi, lo, (*fo)[4], ptr[11]); ++ MLA(hi, lo, (*fo)[3], ptr[10]); ++ MLA(hi, lo, (*fo)[2], ptr[9]); ++ MLA(hi, lo, (*fo)[1], ptr[8]); ++ MLA(hi, lo, (*fo)[0], ptr[7]); */ ++ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 ++ ++ ++ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */ ++ lddsp r3, sp[4] ++ lddsp r2, sp[0] ++ scale r1, r0, r1 ++ st.w --lr/*pcm_2*/, r1 ++ ++ /* ptr += 2*po; */ ++ add r12/*ptr*/, r12, r3/*po*/<< 1 ++ ++ /* ++fo; ++ } */ ++ sub r8/*fo*/, -8*4 ++ ++ sub r2, 1 ++ stdsp sp[0], r2 ++ brne even_loop ++ ++ /* ptr += 33; */ ++ sub r12/*ptr*/, -33*2 ++ ++ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); ++ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); ++ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); ++ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); ++ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); ++ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); ++ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); ++ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ ++ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 ++ ++ ++ ++synth_end: ++ /* *pcm1 = SHIFT(-MLZ(hi, lo)); */ ++ scale r1, r0, r1 ++ neg r1 ++ st.w r10/*pcm_1*/, r1 ++ ++ mov r12, r10 ++ sub sp, -8 ++ popm r0-r7, pc ++ ++ ++ ++ ++ diff --git a/package/audio/libmad/libmad.mk b/package/audio/libmad/libmad.mk new file mode 100644 index 000000000..9ea27fd4d --- /dev/null +++ b/package/audio/libmad/libmad.mk @@ -0,0 +1,86 @@ +############################################################# +# +# libmad +# +############################################################# + +LIBMAD_VERSION=0.15.1b +LIBMAD_SOURCE=libmad-$(LIBMAD_VERSION).tar.gz +LIBMAD_SITE=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad/ +LIBMAD_DIR=$(BUILD_DIR)/libmad-$(LIBMAD_VERSION) +LIBMAD_CAT:=$(ZCAT) + +$(DL_DIR)/$(LIBMAD_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBMAD_SITE)/$(LIBMAD_SOURCE) + +$(LIBMAD_DIR)/.unpacked: $(DL_DIR)/$(LIBMAD_SOURCE) + $(LIBMAD_CAT) $(DL_DIR)/$(LIBMAD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + $(CONFIG_UPDATE) $(LIBMAD_DIR) + toolchain/patch-kernel.sh $(LIBMAD_DIR) package/libmad/ libmad-$(LIBMAD_VERSION)\*.patch + toolchain/patch-kernel.sh $(LIBMAD_DIR) package/libmad/ libmad-$(LIBMAD_VERSION)\*.patch.$(ARCH) + # Prevent automake from running. + (cd $(LIBMAD_DIR); touch -c config* aclocal.m4 Makefile*); + touch $@ + +$(LIBMAD_DIR)/.configured: $(LIBMAD_DIR)/.unpacked + (cd $(LIBMAD_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --disable-debugging \ + --enable-speed \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(LIBMAD_DIR)/libmad.la: $(LIBMAD_DIR)/.configured + rm -f $@ + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(LIBMAD_DIR) + +$(STAGING_DIR)/usr/lib/libmad.so.0: $(LIBMAD_DIR)/libmad.la + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBMAD_DIR) install + $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libmad.la + +$(TARGET_DIR)/usr/lib/libmad.so.0: $(STAGING_DIR)/usr/lib/libmad.so.0 + cp -dpf $(STAGING_DIR)/usr/lib/libmad.so.* $(TARGET_DIR)/usr/lib/ + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libmad.so.* + +$(TARGET_DIR)/usr/lib/libmad.a: $(STAGING_DIR)/usr/lib/libmad.so.0 + mkdir -p $(TARGET_DIR)/usr/include + cp -dpf $(STAGING_DIR)/usr/include/mad.h $(TARGET_DIR)/usr/include/ + cp -dpf $(STAGING_DIR)/usr/lib/libmad.la $(TARGET_DIR)/usr/lib/ + cp -dpf $(STAGING_DIR)/usr/lib/libmad.so $(TARGET_DIR)/usr/lib/ + cp -dpf $(STAGING_DIR)/usr/lib/libmad.a $(TARGET_DIR)/usr/lib/ + +libmad: uclibc $(TARGET_DIR)/usr/lib/libmad.so.0 + +libmad-headers: $(TARGET_DIR)/usr/lib/libmad.a + +libmad-source: $(DL_DIR)/$(LIBMAD_SOURCE) + +libmad-clean: + -$(MAKE) -C $(LIBMAD_DIR) clean + -rm -f $(STAGING_DIR)/usr/lib/libmad.* + rm -f $(STAGING_DIR)/usr/include/mad.h + -rm -f $(TARGET_DIR)/usr/lib/libmad.* + rm -f $(TARGET_DIR)/usr/include/mad.h + + +libmad-dirclean: + rm -rf $(LIBMAD_DIR) +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_LIBMAD)),y) +TARGETS+=libmad +endif +ifeq ($(strip $(BR2_PACKAGE_LIBMAD_TARGET_HEADERS)),y) +TARGETS+=libmad-headers +endif diff --git a/package/audio/libogg/Config.in b/package/audio/libogg/Config.in new file mode 100644 index 000000000..bbaf08797 --- /dev/null +++ b/package/audio/libogg/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBOGG + bool "libogg" + select BR2_PACKAGE_PKGCONFIG + help + Ogg is the name of Xiph.org's container format for audio, + video, and metadata diff --git a/package/audio/libogg/libogg.mk b/package/audio/libogg/libogg.mk new file mode 100644 index 000000000..91deabee5 --- /dev/null +++ b/package/audio/libogg/libogg.mk @@ -0,0 +1,78 @@ +############################################################# +# +# libogg +# +############################################################# +LIBOGG_VERSION:=1.1.3 +LIBOGG_NAME:=libogg-$(LIBOGG_VERSION) +LIBOGG_SOURCE:=$(LIBOGG_NAME).tar.gz +LIBOGG_SITE:=http://downloads.xiph.org/releases/ogg/$(LIBOGG-SOURCE) +LIBOGG_DIR:=$(BUILD_DIR)/libogg-$(LIBOGG_VERSION) +LIBOGG_BINARY:=libogg +LIBOGG_TARGET_BINARY:=usr/lib/libogg +LIBOGG_CAT:=$(ZCAT) + +$(DL_DIR)/$(LIBOGG_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBOGG_SITE)/$(LIBOGG_SOURCE) + +$(LIBOGG_DIR)/.source: $(DL_DIR)/$(LIBOGG_SOURCE) + $(LIBOGG_CAT) $(DL_DIR)/$(LIBOGG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + touch $@ + +$(LIBOGG_DIR)/.configured: $(LIBOGG_DIR)/.source + (cd $(LIBOGG_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/lib/pkconfig:$(STAGING_DIR)/usr/lib/pkgconfig" \ + PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \ + PKG_CONFIG_SYSROOT=$(STAGING_DIR) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --enable-shared \ + --enable-static \ + --disable-oggtest \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(LIBOGG_DIR)/.libs: $(LIBOGG_DIR)/.configured + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(LIBOGG_DIR) + touch $@ + +$(STAGING_DIR)/usr/lib/libogg.so: $(LIBOGG_DIR)/.libs + mkdir -p $(STAGING_DIR) + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBOGG_DIR) install + $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libogg.la + +$(TARGET_DIR)/usr/lib/libogg.so: $(STAGING_DIR)/usr/lib/libogg.so + cp -dpf $(STAGING_DIR)/usr/lib/libogg.so* $(TARGET_DIR)/usr/lib + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libogg.so* +ifneq ($(strip $(BR2_HAVE_MANPAGES)),y) + rm -rf $(TARGET_DIR)/usr/share/doc/$(LIBOGG_NAME) +endif + +libogg: uclibc pkgconfig $(TARGET_DIR)/usr/lib/libogg.so + +libogg-source: $(DL_DIR)/$(LIBOGG_SOURCE) + +libogg-clean: + -rm -rf $(TARGET_DIR)/usr/lib/libogg.so* + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBOGG_DIR) uninstall + -$(MAKE) -C $(LIBOGG_DIR) clean + +libogg-dirclean: + rm -rf $(LIBOGG_DIR) + +############################################################ +# +# Toplevel Makefile options +# +############################################################ +ifeq ($(strip $(BR2_PACKAGE_LIBOGG)),y) +TARGETS+=libogg +endif diff --git a/package/audio/libsndfile/Config.in b/package/audio/libsndfile/Config.in new file mode 100644 index 000000000..ccc4dad6f --- /dev/null +++ b/package/audio/libsndfile/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBSNDFILE + bool "libsndfile" + help + Libsndfile is a C library for reading and writing files containing + sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) + through one standard library interface. + diff --git a/package/audio/libsndfile/libsndfile-srconly.patch b/package/audio/libsndfile/libsndfile-srconly.patch new file mode 100644 index 000000000..1796b80c0 --- /dev/null +++ b/package/audio/libsndfile/libsndfile-srconly.patch @@ -0,0 +1,11 @@ +--- libsndfile-1.0.17/Makefile.in.orig 2006-12-06 17:26:46.000000000 +0100 ++++ libsndfile-1.0.17/Makefile.in 2006-12-06 17:31:11.000000000 +0100 +@@ -209,7 +209,7 @@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ +-SUBDIRS = man doc Win32 Octave src examples regtest tests ++SUBDIRS = src + DIST_SUBDIRS = $(SUBDIRS) + EXTRA_DIST = reconfigure.mk acinclude.m4 libsndfile.spec.in \ + sndfile.pc.in Mingw-make-dist.sh diff --git a/package/audio/libsndfile/libsndfile.mk b/package/audio/libsndfile/libsndfile.mk new file mode 100644 index 000000000..5a5fcda7c --- /dev/null +++ b/package/audio/libsndfile/libsndfile.mk @@ -0,0 +1,65 @@ +############################################################# +# +# libsndfile +# +############################################################# +LIBSNDFILE_VERSION:=1.0.17 +LIBSNDFILE_SOURCE:=libsndfile-$(LIBSNDFILE_VERSION).tar.gz +LIBSNDFILE_SITE:=http://www.mega-nerd.com/libsndfile/$(LIBUSB_SOURCE) +LIBSNDFILE_DIR:=$(BUILD_DIR)/libsndfile-$(LIBSNDFILE_VERSION) +LIBSNDFILE_BINARY:=src/.libs/libsndfile.so +LIBSNDFILE_TARGET_BINARY:=usr/lib/libsndfile.so + +$(DL_DIR)/$(LIBSNDFILE_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBSNDFILE_SITE)/$(LIBSNDFILE_SOURCE) + +$(LIBSNDFILE_DIR)/.unpacked: $(DL_DIR)/$(LIBSNDFILE_SOURCE) + $(ZCAT) $(DL_DIR)/$(LIBSNDFILE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(LIBSNDFILE_DIR) package/libsndfile/ \*.patch + $(CONFIG_UPDATE) $(LIBSNDFILE_DIR) + touch $@ + +$(LIBSNDFILE_DIR)/.configured: $(LIBSNDFILE_DIR)/.unpacked + (cd $(LIBSNDFILE_DIR); rm -f config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + ) + touch $@ + +$(LIBSNDFILE_DIR)/$(LIBSNDFILE_BINARY): $(LIBSNDFILE_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) -C $(LIBSNDFILE_DIR) + +$(TARGET_DIR)/$(LIBSNDFILE_TARGET_BINARY): $(LIBSNDFILE_DIR)/$(LIBSNDFILE_BINARY) + $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBSNDFILE_DIR) install + $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBSNDFILE_DIR) install +ifneq ($(BR2_HAVE_MANPAGES),y) + rm -Rf $(TARGET_DIR)/usr/share/man + rm -Rf $(STAGING_DIR)/usr/share/man +endif + +libsndfile: uclibc $(TARGET_DIR)/$(LIBSNDFILE_TARGET_BINARY) + +libsndfile-source: $(DL_DIR)/$(LIBSNDFILE_SOURCE) + +libsndfile-clean: + $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBSNDFILE_DIR) uninstall + $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBSNDFILE_DIR) uninstall + -$(MAKE) -C $(LIBSNDFILE_DIR) clean + +libsndfile-dirclean: + rm -rf $(LIBSNDFILE_DIR) + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_LIBSNDFILE)),y) +TARGETS+=libsndfile +endif diff --git a/package/audio/libvorbis/Config.in b/package/audio/libvorbis/Config.in new file mode 100644 index 000000000..17fd4e845 --- /dev/null +++ b/package/audio/libvorbis/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBVORBIS + bool "libvorbis" + depends on BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_PKGCONFIG + help + Library for the Vorbis open source audio decoder + Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, + general-purpose compressed audio format for mid to high quality + (8kHz-48.0kHz, 16+ bit, polyphonic) audio and music at fixed and + variable bitrates from 16 to 128 kbps/channel. + + This places Vorbis in the same competitive class as audio + representations such as MPEG-4 (AAC), and similar to, but higher + performance than MPEG-1/2 audio layer 3, MPEG-4 audio (TwinVQ), + WMA and PAC. + +config BR2_PACKAGE_LIBVORBIS_TREMOR + bool "use fixed point implementation (tremor)" + default y if BR2_SOFT_FLOAT + depends on BR2_PACKAGE_LIBVORBIS + help + Use the Tremor fixed point implementation + +comment "libvorbis requires the package libogg to build" + depends on !BR2_PACKAGE_LIBOGG diff --git a/package/audio/libvorbis/libvorbis.mk b/package/audio/libvorbis/libvorbis.mk new file mode 100644 index 000000000..6e72ad586 --- /dev/null +++ b/package/audio/libvorbis/libvorbis.mk @@ -0,0 +1,143 @@ +############################################################# +# +# libvorbis +# +############################################################# +LIBVORBIS_VERSION:=1.2.0 +LIBVORBIS_SOURCE:=libvorbis-$(LIBVORBIS_VERSION).tar.gz +LIBVORBIS_SITE:=http://downloads.xiph.org/releases/vorbis/$(LIBVORBIS-SOURCE) +LIBVORBIS_DIR:=$(BUILD_DIR)/libvorbis-$(LIBVORBIS_VERSION) +LIBVORBIS_BINARY:=libvorbis +LIBVORBIS_TARGET_BINARY:=usr/bin/libvorbis +LIBVORBIS_CAT:=$(ZCAT) + +$(DL_DIR)/$(LIBVORBIS_SOURCE): + $(WGET) -P $(DL_DIR) $(LIBVORBIS_SITE)/$(LIBVORBIS_SOURCE) + +$(LIBVORBIS_DIR)/.source: $(DL_DIR)/$(LIBVORBIS_SOURCE) + $(LIBVORBIS_CAT) $(DL_DIR)/$(LIBVORBIS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + touch $@ + +$(LIBVORBIS_DIR)/.configured: $(LIBVORBIS_DIR)/.source + (cd $(LIBVORBIS_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/lib/pkconfig:$(STAGING_DIR)/usr/lib/pkgconfig" \ + PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \ + PKG_CONFIG_SYSROOT=$(STAGING_DIR) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --enable-shared \ + --enable-static \ + --disable-oggtest \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(LIBVORBIS_DIR)/.libs: $(LIBVORBIS_DIR)/.configured + $(MAKE) -C $(@D) + touch $@ + +$(STAGING_DIR)/usr/lib/libvorbis.so: $(LIBVORBIS_DIR)/.libs + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBVORBIS_DIR) install + +$(TARGET_DIR)/usr/lib/libvorbis.so: $(STAGING_DIR)/usr/lib/libvorbis.so + $(INSTALL) -D $(STAGING_DIR)/usr/lib/libvorbis*.so* $(TARGET_DIR)/usr/lib + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libvorbis*.so* + +libvorbis: uclibc pkgconfig libogg $(TARGET_DIR)/usr/lib/libvorbis.so + +libvorbis-source: $(DL_DIR)/$(LIBVORBIS_SOURCE) + +libvorbis-clean: + $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBVORBIS_DIR) uninstall + -$(MAKE) -C $(LIBVORBIS_DIR) clean + +libvorbis-dirclean: + rm -rf $(LIBVORBIS_DIR) + +############################################################ +# +# Tremor (Integer decoder for Vorbis) +# +############################################################ + +TREMOR_TRUNK:=http://svn.xiph.org/trunk/Tremor/ +TREMOR_VERSION:=svn-$(DATE) +TREMOR_NAME:=Tremor-$(TREMOR_VERSION) +TREMOR_DIR:=$(BUILD_DIR)/$(TREMOR_NAME) +TREMOR_SOURCE:=$(TREMOR_NAME).tar.bz2 +TREMOR_CAT=$(BZCAT) + +$(DL_DIR)/$(TREMOR_SOURCE): + (cd $(BUILD_DIR); \ + $(SVN_CO) $(TREMOR_TRUNK); \ + mv -f Tremor $(TREMOR_NAME); \ + tar -cvf $(TREMOR_NAME).tar $(TREMOR_NAME); \ + bzip2 $(TREMOR_NAME).tar; \ + rm -rf $(TREMOR_DIR); \ + mv $(TREMOR_SOURCE) $(DL_DIR)/$(TREMOR_SOURCE); \ + ) + +$(TREMOR_DIR)/.source: $(DL_DIR)/$(TREMOR_SOURCE) + $(TREMOR_CAT) $(DL_DIR)/$(TREMOR_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + touch $@ + +$(TREMOR_DIR)/.configured: $(TREMOR_DIR)/.source + (cd $(TREMOR_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + ./autogen.sh \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --enable-shared \ + --enable-static \ + --disable-oggtest \ + $(DISABLE_NLS) \ + ) + touch $@ + +$(TREMOR_DIR)/.libs: $(TREMOR_DIR)/.configured + $(MAKE) CC=$(TARGET_CC) -C $(TREMOR_DIR) + touch $@ + +$(TARGET_DIR)/usr/lib/tremor.so: $(TREMOR_DIR)/.libs + $(MAKE) prefix=$(TARGET_DIR)/usr -C $(TREMOR_DIR) install + touch $@ + +$(TARGET_DIR)/usr/lib/tremor.a: $(TARGET_DIR)/usr/lib/tremor.so + cp -dpf $(TREMOR_DIR)/lib/tremor.a $(TARGET_DIR)/usr/lib/ + touch $@ + +tremor: uclibc pkgconfig libogg $(TARGET_DIR)/usr/lib/tremor.so + +tremor-source: $(DL_DIR)/$(TREMOR_SOURCE) + +tremor-clean: + $(MAKE) prefix=$(STAGING_DIR)/usr -C $(TREMOR_DIR) uninstall + -$(MAKE) -C $(TREMOR_DIR) clean + +tremor-dirclean: + rm -rf $(TREMOR_DIR) + + +############################################################ +# +# Toplevel Makefile options +# +############################################################ +ifeq ($(strip $(BR2_PACKAGE_LIBVORBIS)),y) +ifeq ($(strip $(BR2_PACKAGE_LIBVORBIS_TREMOR)),y) +TARGETS+=tremor +endif +TARGETS+=libvorbis +endif diff --git a/package/audio/madplay/Config.in b/package/audio/madplay/Config.in new file mode 100644 index 000000000..a77cc367e --- /dev/null +++ b/package/audio/madplay/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MADPLAY + bool "madplay" + select BR2_PACKAGE_LIBMAD + select BR2_PACKAGE_LIBID3TAG + help + Command-line front-end to libmad, a high-quality MPEG audio decoder. + It currently supports MPEG-1 and the MPEG-2 extension to lower + sampling frequencies, as well as the de facto MPEG 2.5 format. All + three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — + are fully implemented. + + http://www.underbit.com/products/mad/ + +config BR2_PACKAGE_MADPLAY_ALSA + bool + default y + depends on BR2_PACKAGE_MADPLAY && BR2_PACKAGE_ALSA_LIB diff --git a/package/audio/madplay/madplay.mk b/package/audio/madplay/madplay.mk new file mode 100644 index 000000000..2d99916b3 --- /dev/null +++ b/package/audio/madplay/madplay.mk @@ -0,0 +1,73 @@ +############################################################# +# +# madplay +# +############################################################# +MADPLAY_VERSION:=0.15.2b +MADPLAY_SOURCE:=madplay-$(MADPLAY_VERSION).tar.gz +MADPLAY_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad +MADPLAY_CAT:=$(ZCAT) +MADPLAY_DIR:=$(BUILD_DIR)/madplay-$(MADPLAY_VERSION) +MADPLAY_BIN:=madplay +MADPLAY_TARGET_BIN:=usr/bin/$(MADPLAY_BIN) + +# Check if ALSA is built, then we should configure after alsa-lib so +# ./configure can find alsa-lib. +ifeq ($(strip $(BR2_PACKAGE_MADPLAY_ALSA)),y) +MADPLAY_USE_ALSA:=--with-alsa +MADPLAY_ALSA_DEP:=alsa-lib +endif + +$(DL_DIR)/$(MADPLAY_SOURCE): + $(WGET) -P $(DL_DIR) $(MADPLAY_SITE)/$(MADPLAY_SOURCE) + +$(MADPLAY_DIR)/.unpacked: $(DL_DIR)/$(MADPLAY_SOURCE) + $(MADPLAY_CAT) $(DL_DIR)/$(MADPLAY_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(MADPLAY_DIR) package/madplay madplay\*.patch\* + $(CONFIG_UPDATE) $(MADPLAY_DIR) + touch $@ + +$(MADPLAY_DIR)/.configured: $(MADPLAY_DIR)/.unpacked + (cd $(MADPLAY_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(BR2_MADPLAY_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + ./configure \ + --target=$(REAL_GNU_TARGET_NAME) \ + --host=$(REAL_GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + $(MADPLAY_USE_ALSA) \ + $(DISABLE_NLS) \ + $(DISABLE_LARGEFILE) \ + ) + touch $@ + +$(MADPLAY_DIR)/$(MADPLAY_BIN): $(MADPLAY_DIR)/.configured + $(MAKE) -C $(MADPLAY_DIR) + +$(TARGET_DIR)/$(MADPLAY_TARGET_BIN): $(MADPLAY_DIR)/$(MADPLAY_BIN) + $(INSTALL) -D $(MADPLAY_DIR)/$(MADPLAY_BIN) $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) + +madplay: uclibc $(MADPLAY_ALSA_DEP) libmad libid3tag $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) + +madplay-clean: + rm -f $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) + -$(MAKE) -C $(MADPLAY_DIR) clean + +madplay-dirclean: + rm -rf $(MADPLAY_DIR) + +madplay-source: $(DL_DIR)/$(MADPLAY_SOURCE) + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_MADPLAY)),y) +TARGETS+=madplay +endif diff --git a/package/audio/mpg123/Config.in b/package/audio/mpg123/Config.in new file mode 100644 index 000000000..69ae4c62a --- /dev/null +++ b/package/audio/mpg123/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MPG123 + bool "mpg123" + help + Fast, free and portable MPEG audio player for Unix. It supports + MPEG 1.0/2.0 layers 1, 2 and 3. + + http://www.mpg123.de/ + +config BR2_PACKAGE_MPG123_ALSA + bool + default y + depends on BR2_PACKAGE_ALSA_LIB diff --git a/package/audio/mpg123/mpg123-0.59r-cross.patch b/package/audio/mpg123/mpg123-0.59r-cross.patch new file mode 100644 index 000000000..c3fb5830c --- /dev/null +++ b/package/audio/mpg123/mpg123-0.59r-cross.patch @@ -0,0 +1,44 @@ +diff -ruN mpg123-0.59r.orig/Makefile mpg123-0.59r/Makefile +--- mpg123-0.59r.orig/Makefile 1999-06-15 22:39:06.000000000 +0200 ++++ mpg123-0.59r/Makefile 2006-12-14 15:52:44.000000000 +0100 +@@ -103,14 +103,14 @@ + mpg123-make + + linux: +- $(MAKE) CC=gcc LDFLAGS= \ ++ $(MAKE) LDFLAGS= \ + OBJECTS='decode_i386.o dct64_i386.o decode_i586.o \ + audio_oss.o term.o' \ + CFLAGS='-DI386_ASSEM -DPENTIUM_OPT -DREAL_IS_FLOAT -DLINUX \ + -DREAD_MMAP -DOSS -DTERM_CONTROL\ +- -Wall -O2 -m486 \ ++ -Wall \ + -fomit-frame-pointer -funroll-all-loops \ +- -finline-functions -ffast-math' \ ++ -finline-functions -ffast-math $(CFLAGS)' \ + mpg123-make + + linux-3dnow: +@@ -246,6 +246,22 @@ + -finline-functions -ffast-math' \ + mpg123-make + ++linux-bigend: ++ $(MAKE) LDFLAGS= OBJECTS='decode.o dct64.o audio_oss.o' \ ++ CFLAGS+='-DREAL_IS_FLOAT -DLINUX -DREAD_MMAP \ ++ -DOSS -DOSS_BIG_ENDIAN -Wall \ ++ -fomit-frame-pointer -funroll-loops \ ++ -finline-functions -ffast-math $(CFLAGS)' \ ++ mpg123-make ++ ++linux-littleend: ++ $(MAKE) LDFLAGS= OBJECTS='decode.o dct64.o audio_oss.o' \ ++ CFLAGS='-DREAL_IS_FLOAT -DLINUX -DREAD_MMAP \ ++ -DOSS -Wall \ ++ -fomit-frame-pointer -funroll-loops \ ++ -finline-functions -ffast-math $(CFLAGS)' \ ++ mpg123-make ++ + linux-sajber: + @ $(MAKE) FRONTEND=sajberplay-make linux-frontend + diff --git a/package/audio/mpg123/mpg123.mk b/package/audio/mpg123/mpg123.mk new file mode 100644 index 000000000..76977e280 --- /dev/null +++ b/package/audio/mpg123/mpg123.mk @@ -0,0 +1,73 @@ +############################################################# +# +# mpg123 +# +############################################################# +MPG123_VERSION=0.66 +MPG123_SOURCE=mpg123-$(MPG123_VERSION).tar.bz2 +MPG123_CAT:=$(BZCAT) +MPG123_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mpg123 +MPG123_DIR:=$(BUILD_DIR)/mpg123-$(MPG123_VERSION) +MPG123_BIN:=src/mpg123 +MPG123_TARGET_BIN:=usr/bin/mpg123 + +# Check if ALSA is built, then we should configure after alsa-lib so +# ./configure can find alsa-lib. +ifeq ($(strip $(BR2_PACKAGE_MPG123_ALSA)),y) +MPG123_USE_ALSA:=--with-audio=alsa +MPG123_ALSA_DEP:=alsa-lib +endif + +$(DL_DIR)/$(MPG123_SOURCE): + $(WGET) -P $(DL_DIR) $(MPG123_SITE)/$(MPG123_SOURCE) + +$(MPG123_DIR)/.unpacked: $(DL_DIR)/$(MPG123_SOURCE) + $(MPG123_CAT) $(DL_DIR)/$(MPG123_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(MPG123_DIR) package/mpg123/ mpg123-$(MPG123_VERSION)\*.patch + $(CONFIG_UPDATE) $(MPG123_DIR)/build + touch $@ + +$(MPG123_DIR)/.configured: $(MPG123_DIR)/.unpacked + (cd $(MPG123_DIR); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + ./configure \ + --target=$(REAL_GNU_TARGET_NAME) \ + --host=$(REAL_GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --with-cpu=generic_nofpu \ + $(MPG123_USE_ALSA) \ + $(DISABLE_NLS) \ + $(DISABLE_LARGEFILE) \ + ) + touch $@ + +$(MPG123_DIR)/$(MPG123_BIN): $(MPG123_DIR)/.configured + $(MAKE) -C $(MPG123_DIR) + +$(TARGET_DIR)/$(MPG123_TARGET_BIN): $(MPG123_DIR)/$(MPG123_BIN) + $(INSTALL) -D $(MPG123_DIR)/$(MPG123_BIN) $(TARGET_DIR)/$(MPG123_TARGET_BIN) + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/$(MPG123_TARGET_BIN) + +mpg123: uclibc $(MPG123_ALSA_DEP) $(TARGET_DIR)/$(MPG123_TARGET_BIN) + +mpg123-clean: + -$(MAKE) -C $(MPG123_DIR) clean + +mpg123-dirclean: + rm -rf $(MPG123_DIR) $(MPG123_DIR) + +mpg123-source: $(DL_DIR)/$(MPG123_SOURCE) + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_MPG123)),y) +TARGETS+=mpg123 +endif diff --git a/package/audio/speex/Config.in b/package/audio/speex/Config.in new file mode 100644 index 000000000..424a83001 --- /dev/null +++ b/package/audio/speex/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_SPEEX + bool "speex" + select BR2_PACKAGE_LIBOGG + help + Speex is an Open Source/Free Software patent-free + audio compression format designed for speech. + It can be used for Voice over IP + + http://www.speex.org/ + +config BR2_PACKAGE_SPEEX_ARM_GENERIC + bool + default y + depends on BR2_PACKAGE_SPEEX && (BR2_generic_arm || BR2_arm610 || BR2_arm710) + +config BR2_PACKAGE_SPEEX_ARM4 + bool + default y + depends on BR2_PACKAGE_SPEEX && (BR2_arm7tdmi || BR2_arm720t || BR2_arm920t || BR2_arm922t || BR2_sa110 || BR2_sa1100) + +config BR2_PACKAGE_SPEEX_ARM5E + default y + bool + depends on BR2_PACKAGE_SPEEX && BR2_arm && !(BR2_PACKAGE_SPEEX_ARM_GENERIC || BR2_PACKAGE_SPEEX_ARM4) + diff --git a/package/audio/speex/speex.mk b/package/audio/speex/speex.mk new file mode 100644 index 000000000..0ffd20325 --- /dev/null +++ b/package/audio/speex/speex.mk @@ -0,0 +1,37 @@ +############################################################# +# +# speex +# +############################################################# +SPEEX_VERSION=1.2rc1 +SPEEX_SOURCE=speex-$(SPEEX_VERSION).tar.gz +SPEEX_SITE=http://downloads.us.xiph.org/releases/speex +SPEEX_AUTORECONF = NO +SPEEX_INSTALL_STAGING = YES +SPEEX_INSTALL_TARGET = YES +SPEEX_INSTALL_TARGET_OPT:=DESTDIR=$(TARGET_DIR) install-strip +SPEEX_DEPENDENCIES = libogg +SPEEX_CONF_OPT = --with-ogg-libraries=$(STAGING_DIR)/usr/lib \ + --with-ogg-includes=$(STAGING_DIR)/usr/include \ + --enable-fixed-point $(DISABLE_NLS) + +ifeq ($(BR2_PACKAGE_SPEEX_ARM4),y) + SPEEX_CONF_OPT += --enable-arm4-asm +endif + +ifeq ($(BR2_PACKAGE_SPEEX_ARM5E),y) + SPEEX_CONF_OPT += --enable-arm5e-asm +endif + +$(eval $(call AUTOTARGETS,package,speex)) + +$(SPEEX_TARGET_BUILD): $(SPEEX_TARGET_CONFIGURE) + $(call MESSAGE,"Building") + $(SED) 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' $(SPEEX_DIR)/libtool + $(SED) 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' $(SPEEX_DIR)/libtool + $($(PKG)_MAKE_ENV) $(MAKE) $($(PKG)_MAKE_OPT) -C $(@D)/$($(PKG)_SUBDIR) + $(Q)touch $@ + +$(SPEEX_HOOK_POST_INSTALL): $(SPEEX_TARGET_INSTALL_TARGET) + rm -rf $(TARGET_DIR)/usr/share/doc/speex $(TARGET_DIR)/usr/share/aclocal + touch $@ diff --git a/package/aumix/Config.in b/package/aumix/Config.in deleted file mode 100644 index 3d3208250..000000000 --- a/package/aumix/Config.in +++ /dev/null @@ -1,12 +0,0 @@ -config BR2_PACKAGE_AUMIX - bool "aumix" - select BR2_PACKAGE_NCURSES - help - aumix is a small, easy-to-use program to control the mixer - of your sound card. It runs in text mode using the ncurses - library, or from the command line (non-interactively). - It can read default settings from a file, and it can also - automatically save and restore the mixer settings at shutdown - and boot. - - http://jpj.net/~trevor/aumix.html diff --git a/package/aumix/aumix.mk b/package/aumix/aumix.mk deleted file mode 100644 index d30b3a7be..000000000 --- a/package/aumix/aumix.mk +++ /dev/null @@ -1,64 +0,0 @@ -############################################################# -# -# aumix -# -############################################################# - -AUMIX_VERSION=2.8 -AUMIX_SOURCE=aumix-$(AUMIX_VERSION).tar.bz2 -AUMIX_SITE=http://jpj.net/~trevor/aumix -AUMIX_DIR=$(BUILD_DIR)/aumix-$(AUMIX_VERSION) -AUMIX_CAT:=$(BZCAT) - -$(DL_DIR)/$(AUMIX_SOURCE): - $(WGET) -P $(DL_DIR) $(AUMIX_SITE)/$(AUMIX_SOURCE) - -$(AUMIX_DIR)/.unpacked: $(DL_DIR)/$(AUMIX_SOURCE) - $(AUMIX_CAT) $(DL_DIR)/$(AUMIX_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - touch $@ - -$(AUMIX_DIR)/.configured: $(AUMIX_DIR)/.unpacked - (cd $(AUMIX_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --libdir=$(STAGING_DIR)/lib \ - --includedir=$(STAGING_DIR)/usr/include \ - --without-gtk \ - --without-gtk1 \ - --without-alsa \ - --without-gpm \ - --without-sysmouse \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(AUMIX_DIR)/src/aumix: $(AUMIX_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(AUMIX_DIR) - -$(AUMIX_DIR)/.installed: $(AUMIX_DIR)/src/aumix - $(MAKE) -C $(AUMIX_DIR) DESTDIR=$(TARGET_DIR) install - touch $@ - -aumix: uclibc ncurses $(AUMIX_DIR)/.installed - -aumix-source: $(DL_DIR)/$(AUMIX_SOURCE) - -aumix-clean: - -$(MAKE) -C $(AUMIX_DIR) clean - -aumix-dirclean: - rm -rf $(AUMIX_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_AUMIX)),y) -TARGETS+=aumix -endif diff --git a/package/festival/Config.in b/package/festival/Config.in deleted file mode 100644 index 209c95b58..000000000 --- a/package/festival/Config.in +++ /dev/null @@ -1,22 +0,0 @@ -menuconfig BR2_PACKAGE_FESTIVAL -bool "festival text-to-speech system" -select BR2_PACKAGE_ALSA_LIB -select BR2_PACKAGE_SPEECH_TOOLS -help - Text to speech system for Linux - -if BR2_PACKAGE_FESTIVAL - - menu "speech tools" - source "package/festival/speech-tools/Config.in" - endmenu - - menu "festival lexicons" - source "package/festival/lexicons/Config.in" - endmenu - - menu "festival voices" - source "package/festival/voices/Config.in" - endmenu - -endif diff --git a/package/festival/festival.mk b/package/festival/festival.mk deleted file mode 100644 index 3d80e14d7..000000000 --- a/package/festival/festival.mk +++ /dev/null @@ -1,4 +0,0 @@ -include package/festival/speech-tools/speech-tools.mk -include package/festival/festival/festival.mk -include package/festival/voices/festvox.mk -include package/festival/lexicons/festlex.mk diff --git a/package/festival/festival/festival-1.96-beta-doc.patch b/package/festival/festival/festival-1.96-beta-doc.patch deleted file mode 100644 index 583cf6e56..000000000 --- a/package/festival/festival/festival-1.96-beta-doc.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/doc/Makefile 2008-04-02 15:13:28.000000000 -0400 -+++ b/doc/Makefile 2008-04-02 15:13:09.000000000 -0400 -@@ -64,7 +64,7 @@ MANPAGES = festival.head festival.tail \ - FILES=Makefile $(MANPAGES) festival.texi $(SGMLFILES) refcard.tex $(DOCXXFILES) - LOCAL_CLEAN = *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr - --ALL = festival.1 festival_client.1 -+#ALL = festival.1 festival_client.1 - - include $(TOP)/config/common_make_rules - include $(EST)/config/rules/doc.mak -@@ -72,9 +72,9 @@ include $(EST)/config/rules/doc.mak - %.1 : %.head %.options %.tail - cat $^ >$@ - %.options : $(TOP)/src/main/% -- $(TOP)/bin/$* -man_options >$@ -+# $(TOP)/bin/$* -man_options >$@ - %.options : $(TOP)/src/main/%.exe -- $(TOP)/bin/$* -man_options >$@ -+# $(TOP)/bin/$* -man_options >$@ - - festival.info: festival.texi festfunc.texi festvars.texi festfeat.texi - @ if [ ! -d info ] ; \ diff --git a/package/festival/festival/festival-1.96-beta-etcsiteinit.patch b/package/festival/festival/festival-1.96-beta-etcsiteinit.patch deleted file mode 100644 index 8e21acede..000000000 --- a/package/festival/festival/festival-1.96-beta-etcsiteinit.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff -ur festival.orig/lib/init.scm festival/lib/init.scm ---- festival.orig/lib/init.scm 2004-07-15 19:03:04.000000000 -0400 -+++ festival/lib/init.scm 2007-03-15 11:58:09.000000000 -0400 -@@ -55,6 +55,10 @@ - (if (probe_file (path-append libdir "sitevars.scm")) - (load (path-append libdir "sitevars.scm"))) - -+(if (probe_file "/etc/festival/sitevars.scm") -+ (load "/etc/festival/sitevars.scm")) -+ -+ - ;;; CSTR siod extensions - (require 'cstr) - -@@ -98,7 +102,7 @@ - (t ;; can't find direct support so guess that /dev/audio for 8k ulaw exists - (Parameter.def 'Audio_Method 'sunaudio))) - ;;; If you have an external program to play audio add its definition --;;; in siteinit.scm -+;;; in ~/.festivalrc or /etc/festival/siteinit.scm - - ;;; The audio spooler doesn't work under Windows so redefine audio_mode - (if (member 'mplayeraudio *modules*) -@@ -135,9 +139,13 @@ - ;;; - ;;; Local site initialization, if the file exists load it - ;;; -+ - (if (probe_file (path-append libdir "siteinit.scm")) - (load (path-append libdir "siteinit.scm"))) - -+(if (probe_file "/etc/festival/siteinit.scm") -+ (load "/etc/festival/siteinit.scm")) -+ - ;;; User initialization, if a user has a personal customization - ;;; file loaded it - (if (probe_file (path-append home-directory ".siodrc")) -diff -ur festival.orig/lib/voices.scm festival/lib/voices.scm ---- festival.orig/lib/voices.scm 2005-05-02 10:20:37.000000000 -0400 -+++ festival/lib/voices.scm 2007-03-15 12:00:19.000000000 -0400 -@@ -45,12 +45,12 @@ - (defvar system-voice-path '( ) - "system-voice-path - Additional directory not near the load path where voices can be -- found, this can be redefined in lib/sitevars.scm if desired.") -+ found, this can be redefined in /etc/festival/sitevars.scm if desired.") - - (defvar system-voice-path-multisyn '( ) - "system-voice-path-multisyn - Additional directory not near the load path where multisyn voices can be -- found, this can be redefined in lib/sitevars.scm if desired.") -+ found, this can be redefined in /etc/festival/sitevars.scm if desired.") - - (defvar voice-path - (remove-duplicates diff --git a/package/festival/festival/festival-1.96-beta-libdir.patch b/package/festival/festival/festival-1.96-beta-libdir.patch deleted file mode 100644 index b076ad947..000000000 --- a/package/festival/festival/festival-1.96-beta-libdir.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/config/project.mak 2005-05-02 10:21:29.000000000 -0400 -+++ b/config/project.mak 2008-04-01 14:22:01.000000000 -0400 -@@ -113,6 +113,6 @@ PROJECT_JAVA_ROOT=$(TOP)/src/modules/jav - DOCXX_DIRS = $(TOP)/src - MODULE_TO_DOCXX = perl $(TOP)/src/modules/utilities/extract_module_doc++.prl - --FTLIBDIR = $(FESTIVAL_HOME)/lib -+FTLIBDIR = /usr/share/festival/lib - - diff --git a/package/festival/festival/festival-1.96-beta-speechtools-dir.patch b/package/festival/festival/festival-1.96-beta-speechtools-dir.patch deleted file mode 100644 index 874d1f662..000000000 --- a/package/festival/festival/festival-1.96-beta-speechtools-dir.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/config/config.in 2008-03-31 15:20:02.000000000 -0400 -+++ b/config/config.in 2008-03-31 15:26:09.000000000 -0400 -@@ -10,7 +10,7 @@ - ########################################################################### - ## Which speech tools to use - --EST=$(TOP)/../speech_tools -+EST=$(TOP)/../speech-tools-1.2.96-beta - - ########################################################################### - ## Where the festival tree will be installed. diff --git a/package/festival/festival/festival.mk b/package/festival/festival/festival.mk deleted file mode 100644 index 8753d9848..000000000 --- a/package/festival/festival/festival.mk +++ /dev/null @@ -1,21 +0,0 @@ -############################################################# -# -# festival -# -############################################################# -FESTIVAL_VERSION = 1.96-beta -FESTIVAL_SOURCE = festival-$(FESTIVAL_VERSION).tar.gz -FESTIVAL_SITE = http://festvox.org/packed/festival/1.96 -FESTIVAL_AUTORECONF = NO -FESTIVAL_INSTALL_STAGING = NO -FESTIVAL_INSTALL_TARGET = YES -FESTIVAL_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) STRIP=$(TARGET_STRIP) install - -FESTIVAL_CONF_OPT = --prefix=/usr --libdir=/usr/share/festival/lib - -FESTIVAL_MAKE_OPT = CC=$(TARGET_CC) CXX=$(TARGET_CXX) - -FESTIVAL_DEPENDENCIES = uclibc alsa-lib speech-tools - -$(eval $(call AUTOTARGETS,package/festival,festival)) - diff --git a/package/festival/lexicons/Config.in b/package/festival/lexicons/Config.in deleted file mode 100644 index 6d92883b3..000000000 --- a/package/festival/lexicons/Config.in +++ /dev/null @@ -1,20 +0,0 @@ -config BR2_PACKAGE_FESTLEX_CMU - bool "Carnegie Mellon University" - help - Lexicon for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTLEX_OALD - bool "Oxford Advanced Learners dictionary" - help - Lexicon for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTLEX_POS - bool "POSLEX" - help - Lexicon for the festival text to speech system - - http://festvox.org/packed/festival/latest diff --git a/package/festival/lexicons/festlex.mk b/package/festival/lexicons/festlex.mk deleted file mode 100644 index f5fdc9f76..000000000 --- a/package/festival/lexicons/festlex.mk +++ /dev/null @@ -1,46 +0,0 @@ -############################################################# -# -# festival lexicons -# -############################################################# -LEX1 = festlex_CMU.tar.gz -LEX2 = festlex_OALD.tar.gz -LEX3 = festlex_POSLEX.tar.gz -FESTLEX_STATUS_DIR = $(BUILD_DIR)/festival_lexicons -FESTLEX_INSTALL_DIR = $(TARGET_DIR)/usr/share - -$(FESTLEX_STATUS_DIR)/.downloaded: - mkdir -p $(FESTLEX_STATUS_DIR) -ifeq ($(BR2_PACKAGE_FESTLEX_CMU),y) - $(Q)test -e $(DL_DIR)/$(LEX1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX1) -endif -ifeq ($(BR2_PACKAGE_FESTLEX_OALD),y) - $(Q)test -e $(DL_DIR)/$(LEX2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX2) -endif -ifeq ($(BR2_PACKAGE_FESTLEX_POS),y) - $(Q)test -e $(DL_DIR)/$(LEX3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(LEX3) -endif - touch $@ - -$(FESTLEX_STATUS_DIR)/.installed: $(FESTLEX_STATUS_DIR)/.downloaded -ifeq ($(BR2_PACKAGE_FESTLEX_CMU),y) - tar -xvf $(DL_DIR)/$(LEX1) --directory $(FESTLEX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTLEX_OALD),y) - tar -xvf $(DL_DIR)/$(LEX2) --directory $(FESTLEX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTLEX_POS),y) - tar -xvf $(DL_DIR)/$(LEX3) --directory $(FESTLEX_INSTALL_DIR) -endif - touch $@ - -festlex: $(FESTLEX_STATUS_DIR)/.installed - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_FESTIVAL)),y) -TARGETS+=festlex -endif diff --git a/package/festival/speech-tools/Config.in b/package/festival/speech-tools/Config.in deleted file mode 100644 index d8405bad3..000000000 --- a/package/festival/speech-tools/Config.in +++ /dev/null @@ -1,6 +0,0 @@ - config BR2_PACKAGE_SPEECH_TOOLS - bool "speech tools for festival" - help - Speech tools for the festival text to speech system - - http://festvox.org/packed/festival/latest diff --git a/package/festival/speech-tools/speech-tools-1.2.96-beta-install.patch b/package/festival/speech-tools/speech-tools-1.2.96-beta-install.patch deleted file mode 100644 index 3cc47d344..000000000 --- a/package/festival/speech-tools/speech-tools-1.2.96-beta-install.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/config/rules/install.mak 2001-04-04 07:55:32.000000000 -0400 -+++ b/config/rules/install.mak 2008-04-03 12:37:45.000000000 -0400 -@@ -50,9 +50,9 @@ ifneq ($(SHARED),0) - endif - endif - --ifeq ($(PROJECT_HOME_PATH), $(PROJECT_TOP_PATH)) -- TO_INSTALL=make_bin --else -+#ifeq ($(PROJECT_HOME_PATH), $(PROJECT_TOP_PATH)) -+# TO_INSTALL=make_bin -+#else - - TO_INSTALL= \ - make_installed_exec$(S) \ -@@ -62,7 +62,7 @@ else - INSTALLED_LIB=$(shell (cd $($(PROJECT_PREFIX)_HOME); pwd))/lib - INSTALLED_PRIVATE_LIB=$(INSTALLED_LIB)/$(shell echo $(PROJECT_PREFIX)| tr A-Z a-z) - INSTALLED_BIN=$(shell (cd $($(PROJECT_PREFIX)_HOME); pwd))/bin --endif -+#endif - - install: $(TO_INSTALL) - ---- a/config/rules/bin_process.mak 2004-01-27 18:56:39.000000000 -0500 -+++ b/config/rules/bin_process.mak 2008-04-03 12:37:31.000000000 -0400 -@@ -69,10 +69,17 @@ endif - do \ - b=`basename "$$i"`;\ - $(ECHO_N) " $$b";\ -- $(INSTALL_PROG) -s "$$main/$$i" "$(subst TOP,$(TOP),$(BIN))/$$b";\ -+ $(INSTALL_PROG) "$$main/$$i" "$(DESTDIR)/usr/bin/$$b";\ -+ $(STRIP) "$(DESTDIR)/usr/bin/$$b";\ - done -- @echo -- -+ @$(ECHO_N) "Install Scheme Libraries:" -+ @main=`pwd` ;\ -+ mkdir -p "$(DESTDIR)/usr/share/festival"; cp -a "$$main/../../lib" "$(DESTDIR)/usr/share/festival";\ -+ for i in `find "$(DESTDIR)/usr/share/festival/lib" -name Makefile`;\ -+ do \ -+ rm "$$i"; \ -+ done -+ - .link_main: - @$(MAKE) MADE_FROM_ABOVE=1 --no-print-directory -C '$(PROJECT_MAIN_DIR)' BIN=TOP/$(DIRNAME) LIBDIR=MAIN/TOP/$(PROJECT_LIBRARY_DIR) MAIN='$($(PROJECT_PREFIX)_HOME)' .link_main$(S) - diff --git a/package/festival/speech-tools/speech-tools.mk b/package/festival/speech-tools/speech-tools.mk deleted file mode 100644 index 3f2ba090f..000000000 --- a/package/festival/speech-tools/speech-tools.mk +++ /dev/null @@ -1,20 +0,0 @@ -############################################################# -# -# speech-tools -# -############################################################# -SPEECH_TOOLS_VERSION = 1.2.96-beta -SPEECH_TOOLS_SOURCE = speech_tools-$(SPEECH_TOOLS_VERSION).tar.gz -SPEECH_TOOLS_SITE = http://festvox.org/packed/festival/1.96 -SPEECH_TOOLS_AUTORECONF = NO -SPEECH_TOOLS_INSTALL_STAGING = NO -SPEECH_TOOLS_INSTALL_TARGET = YES -SPEECH_TOOLS_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) STRIP=$(TARGET_STRIP) install - -SPEECH_TOOLS_CONF_OPT = -SPEECH_TOOLS_MAKE_OPT = CC=$(TARGET_CC) CXX=$(TARGET_CXX) - -SPEECH_TOOLS_DEPENDENCIES = uclibc ncurses - -$(eval $(call AUTOTARGETS,package/festival,speech-tools)) - diff --git a/package/festival/voices/Config.in b/package/festival/voices/Config.in deleted file mode 100644 index b0a1cc0b1..000000000 --- a/package/festival/voices/Config.in +++ /dev/null @@ -1,63 +0,0 @@ -config BR2_PACKAGE_FESTVOX_AWB - bool "Alan Scottish English" - help - Scottish English voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_BDL - bool "Brian US English" - help - US English male voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_JMK - bool "John Canadian English" - help - Canadian English voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_SLT - bool "Stephanie US English" - help - US English female voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_AWB_MULTISYN - bool "Alan multisyn (big file)" - help - voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_JMK_MULTISYN - bool "John multisyn (big file)" - help - voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_KAL_SIXTEENK - bool "Kevin diphone US English 16k" - help - diphone voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_KED_EIGHTK - bool "Kurt diphone American English 8k" - help - diphone voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - -config BR2_PACKAGE_FESTVOX_KED_SIXTEENK - bool "Kurt diphone American English 16k" - help - diphone voice for the festival text to speech system - - http://festvox.org/packed/festival/latest - diff --git a/package/festival/voices/festvox.mk b/package/festival/voices/festvox.mk deleted file mode 100644 index 8456a4903..000000000 --- a/package/festival/voices/festvox.mk +++ /dev/null @@ -1,99 +0,0 @@ -############################################################# -# -# festival voices -# -############################################################# -VOICE1 = festvox_cmu_us_awb_arctic_hts.tar.gz -VOICE2 = festvox_cmu_us_bdl_arctic_hts.tar.gz -VOICE3 = festvox_cmu_us_jmk_arctic_hts.tar.gz -VOICE4 = festvox_cmu_us_slt_arctic_hts.tar.gz -VOICE5 = festvox_cstr_us_awb_arctic_multisyn-1.0.tar.gz -VOICE6 = festvox_cstr_us_jmk_arctic_multisyn-1.0.tar.gz -VOICE7 = festvox_kallpc16k.tar.gz -VOICE8 = festvox_kedlpc8k.tar.gz -VOICE9 = festvox_kedlpc16k.tar.gz -FRONTEND1 = festvox_us1.tar.gz -FRONTEND2 = festvox_us2.tar.gz -FRONTEND3 = festvox_us3.tar.gz -FESTVOX_STATUS_DIR = $(BUILD_DIR)/festival_voices -FESTVOX_INSTALL_DIR = $(TARGET_DIR)/usr/share - -$(FESTVOX_STATUS_DIR)/.downloaded: - mkdir -p $(FESTVOX_STATUS_DIR) -ifeq ($(BR2_PACKAGE_FESTVOX_AWB),y) - $(Q)test -e $(DL_DIR)/$(VOICE1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE1) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_BDL),y) - $(Q)test -e $(DL_DIR)/$(VOICE2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE2) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_JMK),y) - $(Q)test -e $(DL_DIR)/$(VOICE3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE3) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_SLT),y) - $(Q)test -e $(DL_DIR)/$(VOICE4) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE4) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_AWB_MULTISYN),y) - $(Q)test -e $(DL_DIR)/$(VOICE5) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE5) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_JMK_MULTISYN),y) - $(Q)test -e $(DL_DIR)/$(VOICE6) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE6) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KAL_SIXTEENK),y) - $(Q)test -e $(DL_DIR)/$(VOICE7) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE7) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KED_EIGHTK),y) - $(Q)test -e $(DL_DIR)/$(VOICE8) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE8) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KED_SIXTEENK),y) - $(Q)test -e $(DL_DIR)/$(VOICE9) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(VOICE9) -endif - $(Q)test -e $(DL_DIR)/$(FRONTEND1) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND1) - $(Q)test -e $(DL_DIR)/$(FRONTEND2) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND2) - $(Q)test -e $(DL_DIR)/$(FRONTEND3) || $(WGET) -P $(DL_DIR) $(FESTIVAL_SITE)/$(FRONTEND3) - - touch $@ - -$(FESTVOX_STATUS_DIR)/.installed: $(FESTVOX_STATUS_DIR)/.downloaded -ifeq ($(BR2_PACKAGE_FESTVOX_AWB),y) - tar -xvf $(DL_DIR)/$(VOICE1) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_BDL),y) - tar -xvf $(DL_DIR)/$(VOICE2) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_JMK),y) - tar -xvf $(DL_DIR)/$(VOICE3) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_SLT),y) - tar -xvf $(DL_DIR)/$(VOICE4) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_AWB_MULTISYN),y) - tar -xvf $(DL_DIR)/$(VOICE5) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_JMK_MULTISYN),y) - tar -xvf $(DL_DIR)/$(VOICE6) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KAL_SIXTEENK),y) - tar -xvf $(DL_DIR)/$(VOICE7) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KED_EIGHTK),y) - tar -xvf $(DL_DIR)/$(VOICE8) --directory $(FESTVOX_INSTALL_DIR) -endif -ifeq ($(BR2_PACKAGE_FESTVOX_KED_SIXTEENK),y) - tar -xvf $(DL_DIR)/$(VOICE9) --directory $(FESTVOX_INSTALL_DIR) -endif - tar -xvf $(DL_DIR)/$(FRONTEND1) --directory $(FESTVOX_INSTALL_DIR) - tar -xvf $(DL_DIR)/$(FRONTEND2) --directory $(FESTVOX_INSTALL_DIR) - tar -xvf $(DL_DIR)/$(FRONTEND3) --directory $(FESTVOX_INSTALL_DIR) - - touch $@ - -festvox: $(FESTVOX_STATUS_DIR)/.installed - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_FESTIVAL)),y) -TARGETS+=festvox -endif diff --git a/package/libid3tag/Config.in b/package/libid3tag/Config.in deleted file mode 100644 index 0f4a1522d..000000000 --- a/package/libid3tag/Config.in +++ /dev/null @@ -1,8 +0,0 @@ -config BR2_PACKAGE_LIBID3TAG - bool "libid3tag" - select BR2_PACKAGE_ZLIB - depends on BR2_PACKAGE_LIBMAD - help - ID3 tag reading library from the MAD project. - - http://www.underbit.com/products/mad/ diff --git a/package/libid3tag/libid3tag.mk b/package/libid3tag/libid3tag.mk deleted file mode 100644 index d299d86ad..000000000 --- a/package/libid3tag/libid3tag.mk +++ /dev/null @@ -1,68 +0,0 @@ -############################################################# -# -# libid3tag -# -############################################################# - -LIBID3TAG_VERSION:=0.15.1b -LIBID3TAG_SOURCE:=libid3tag-$(LIBID3TAG_VERSION).tar.gz -LIBID3TAG_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad -LIBID3TAG_DIR:=$(BUILD_DIR)/libid3tag-$(LIBID3TAG_VERSION) -LIBID3TAG_CAT:=$(ZCAT) -LIBID3TAG_BIN:=libid3tag.so.0.3.0 -LIBID3TAG_TARGET_BIN:=usr/lib/$(LIBID3TAG_BIN) - -$(DL_DIR)/$(LIBID3TAG_SOURCE): - $(WGET) -P $(DL_DIR) $(LIBID3TAG_SITE)/$(LIBID3TAG_SOURCE) - -$(LIBID3TAG_DIR)/.unpacked: $(DL_DIR)/$(LIBID3TAG_SOURCE) - $(LIBID3TAG_CAT) $(DL_DIR)/$(LIBID3TAG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(LIBID3TAG_DIR) package/libid3tag/ libid3tag-$(LIBID3TAG_VERSION)\*.patch\* - $(CONFIG_UPDATE) $(LIBID3TAG_DIR) - touch $@ - -$(LIBID3TAG_DIR)/.configured: $(LIBID3TAG_DIR)/.unpacked - (cd $(LIBID3TAG_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(LIBID3TAG_DIR)/.libs/$(LIBID3TAG_BIN): $(LIBID3TAG_DIR)/.configured - $(MAKE) -C $(LIBID3TAG_DIR) - -$(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN): $(LIBID3TAG_DIR)/.libs/$(LIBID3TAG_BIN) - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBID3TAG_DIR) install - $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libid3tag.la - -$(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN): $(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN) - cp -dpf $(STAGING_DIR)/usr/lib/libid3tag.so* $(TARGET_DIR)/usr/lib/ - -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libid3tag.so* - -libid3tag: uclibc zlib libmad $(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN) - -libid3tag-source: $(DL_DIR)/$(LIBID3TAG_SOURCE) - -libid3tag-clean: - -$(MAKE) -C $(LIBID3TAG_DIR) clean - rm -f $(STAGING_DIR)/$(LIBID3TAG_TARGET_BIN) - rm -f $(TARGET_DIR)/$(LIBID3TAG_TARGET_BIN) \ - $(TARGET_DIR)/usr/lib/libid3tag* - -libid3tag-dirclean: - rm -rf $(LIBID3TAG_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_LIBID3TAG)),y) -TARGETS+=libid3tag -endif diff --git a/package/libmad/Config.in b/package/libmad/Config.in deleted file mode 100644 index 867a11a1e..000000000 --- a/package/libmad/Config.in +++ /dev/null @@ -1,14 +0,0 @@ -config BR2_PACKAGE_LIBMAD - bool "libmad" - help - High-quality MPEG audio decoder. All computations are performed - with fixed-point integer arithmetic, making it ideal for systems - without a floating-point unit. - - http://www.underbit.com/products/mad/ - -config BR2_PACKAGE_LIBMAD_TARGET_HEADERS - bool "libmad headers in target" - depends on BR2_PACKAGE_LIBMAD - help - Put headers files in the target. diff --git a/package/libmad/libmad-0.15.1b-optimization.patch.avr32 b/package/libmad/libmad-0.15.1b-optimization.patch.avr32 deleted file mode 100644 index b74eea322..000000000 --- a/package/libmad/libmad-0.15.1b-optimization.patch.avr32 +++ /dev/null @@ -1,2922 +0,0 @@ -diff --git a/bit.c b/bit.c -index c2bfb24..262ce3a 100644 ---- a/bit.c -+++ b/bit.c -@@ -25,12 +25,6 @@ - - # include "global.h" - --# ifdef HAVE_LIMITS_H --# include --# else --# define CHAR_BIT 8 --# endif -- - # include "bit.h" - - /* -@@ -81,6 +75,8 @@ unsigned short const crc_table[256] = { - - # define CRC_POLY 0x8005 - -+#ifndef FPM_AVR32 -+ - /* - * NAME: bit->init() - * DESCRIPTION: initialize bit pointer struct -@@ -190,6 +186,8 @@ void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len, - } - # endif - -+#endif -+ - /* - * NAME: bit->crc() - * DESCRIPTION: compute CRC-check word -diff --git a/bit.h b/bit.h -index 5a51570..70f550a 100644 ---- a/bit.h -+++ b/bit.h -@@ -22,6 +22,92 @@ - # ifndef LIBMAD_BIT_H - # define LIBMAD_BIT_H - -+# ifdef HAVE_LIMITS_H -+# include -+# else -+# define CHAR_BIT 8 -+# endif -+ -+#ifdef FPM_AVR32 -+ -+struct mad_bitptr { -+ unsigned char const *byte; -+ unsigned int read_bytes; -+}; -+ -+/* -+ * NAME: bit->init() -+ * DESCRIPTION: initialize bit pointer struct -+ */ -+static void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte) -+{ -+ bitptr->byte = byte; -+ bitptr->read_bytes = 0; -+} -+ -+/* -+ * NAME: bit->length() -+ * DESCRIPTION: return number of bits between start and end points -+ */ -+static unsigned int mad_bit_length(struct mad_bitptr const *begin, -+ struct mad_bitptr const *end) -+{ -+ return (end->read_bytes - begin->read_bytes) + -+ 8 * (end->byte - begin->byte); -+} -+ -+/* -+ * NAME: bit->nextbyte() -+ * DESCRIPTION: return pointer to next unprocessed byte -+ */ -+static unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr) -+{ -+ return bitptr->byte + ((bitptr->read_bytes + 0x7) >> 3); -+} -+ -+/* -+ * NAME: bit->skip() -+ * DESCRIPTION: advance bit pointer -+ */ -+static void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len) -+{ -+ bitptr->read_bytes += len; -+ bitptr->byte += (bitptr->read_bytes >> 3); -+ bitptr->read_bytes &= 0x7; -+} -+ -+/* -+ * NAME: bit->read() -+ * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value -+ */ -+static unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len) -+{ -+ register unsigned long value; -+ -+ if (!len) -+ return 0; -+ -+ value = *(unsigned int *)bitptr->byte; -+ -+ value <<= bitptr->read_bytes; -+ value >>= (32 - len); -+ -+ bitptr->read_bytes += len; -+ bitptr->byte += (bitptr->read_bytes >> 3); -+ bitptr->read_bytes &= 0x7; -+ -+ return value; -+} -+ -+# define mad_bit_finish(bitptr) /* nothing */ -+ -+static unsigned long mad_bit_bitsleft(struct mad_bitptr *bitptr) -+{ -+ return (8 - (bitptr)->read_bytes); -+} -+ -+#else /* #ifdef FPM_AVR32 */ -+ - struct mad_bitptr { - unsigned char const *byte; - unsigned short cache; -@@ -42,6 +128,8 @@ void mad_bit_skip(struct mad_bitptr *, unsigned int); - unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); - void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); - -+#endif -+ - unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); - - # endif -diff --git a/configure.ac b/configure.ac -index 9b79399..063cb9b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -274,13 +274,14 @@ fi - AC_MSG_CHECKING(for architecture-specific fixed-point math routines) - AC_ARG_ENABLE(fpm, AC_HELP_STRING([--enable-fpm=ARCH], - [use ARCH-specific fixed-point math routines -- (one of: intel, arm, mips, sparc, ppc, 64bit, default)]), -+ (one of: intel, arm, avr32, mips, sparc, ppc, 64bit, default)]), - [ - case "$enableval" in - yes) ;; - no|default|approx) FPM="DEFAULT" ;; - intel|i?86) FPM="INTEL" ;; - arm) FPM="ARM" ;; -+ avr32) FPM="AVR32" ;; - mips) FPM="MIPS" ;; - sparc) FPM="SPARC" ;; - ppc|powerpc) FPM="PPC" ;; -@@ -298,6 +299,7 @@ then - case "$host" in - i?86-*) FPM="INTEL" ;; - arm*-*) FPM="ARM" ;; -+ avr32*-*) FPM="AVR32" ;; - mips*-*) FPM="MIPS" ;; - sparc*-*) FPM="SPARC" ;; - powerpc*-*) FPM="PPC" ;; -@@ -343,6 +345,11 @@ then - ASO="$ASO -DASO_IMDCT" - ASO_OBJS="imdct_l_arm.lo" - ;; -+ avr32*-*) -+ ASO="$ASO -DASO_INTERLEAVE2" -+ ASO="$ASO -DASO_ZEROCHECK" -+ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo" -+ ;; - mips*-*) - ASO="$ASO -DASO_INTERLEAVE2" - ASO="$ASO -DASO_ZEROCHECK" -diff --git a/configure b/configure -index ee421cc..7a9f0c8 100755 ---- a/configure -+++ b/configure -@@ -1048,7 +1048,7 @@ Optional Features: - --enable-speed optimize for speed over accuracy - --enable-accuracy optimize for accuracy over speed - --enable-fpm=ARCH use ARCH-specific fixed-point math routines (one of: -- intel, arm, mips, sparc, ppc, 64bit, default) -+ intel, arm, avr32, mips, sparc, ppc, 64bit, default) - --enable-sso use subband synthesis optimization - --disable-aso disable architecture-specific optimizations - --enable-strict-iso use strict ISO/IEC interpretations -@@ -21477,6 +21477,7 @@ if test "${enable_fpm+set}" = set; then - no|default|approx) FPM="DEFAULT" ;; - intel|i?86) FPM="INTEL" ;; - arm) FPM="ARM" ;; -+ avr32) FPM="AVR32" ;; - mips) FPM="MIPS" ;; - sparc) FPM="SPARC" ;; - ppc|powerpc) FPM="PPC" ;; -@@ -21498,6 +21499,7 @@ then - case "$host" in - i?86-*) FPM="INTEL" ;; - arm*-*) FPM="ARM" ;; -+ avr32*-*) FPM="AVR32" ;; - mips*-*) FPM="MIPS" ;; - sparc*-*) FPM="SPARC" ;; - powerpc*-*) FPM="PPC" ;; -@@ -21554,6 +21556,11 @@ then - ASO="$ASO -DASO_IMDCT" - ASO_OBJS="imdct_l_arm.lo" - ;; -+ avr32*-*) -+ ASO="$ASO -DASO_INTERLEAVE2" -+ ASO="$ASO -DASO_ZEROCHECK" -+ ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo" -+ ;; - mips*-*) - ASO="$ASO -DASO_INTERLEAVE2" - ASO="$ASO -DASO_ZEROCHECK" -diff --git a/dct32_avr32.S b/dct32_avr32.S -new file mode 100644 -index 0000000..7513340 ---- /dev/null -+++ b/dct32_avr32.S -@@ -0,0 +1,780 @@ -+/* -+ Optimized 32-point Discrete Cosine Transform (DCT) -+ Copyright 2003-2006 Atmel Corporation. -+ -+ Written by Ronny Pedersen, Atmel Norway -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#define SHIFT 12 -+#define MAD_F_SCALEBITS 28 -+#define SLOTS 8 -+ -+#define MAD_F(x) ((x + (1 << 15)) >> 16) -+ -+# define costab1 MAD_F(0x7fd8878e) -+# define costab2 MAD_F(0x7f62368f) -+# define costab3 MAD_F(0x7e9d55fc) -+# define costab4 MAD_F(0x7d8a5f40) -+# define costab5 MAD_F(0x7c29fbee) -+# define costab6 MAD_F(0x7a7d055b) -+# define costab7 MAD_F(0x78848414) -+# define costab8 MAD_F(0x7641af3d) -+# define costab9 MAD_F(0x73b5ebd1) -+# define costab10 MAD_F(0x70e2cbc6) -+# define costab11 MAD_F(0x6dca0d14) -+# define costab12 MAD_F(0x6a6d98a4) -+# define costab13 MAD_F(0x66cf8120) -+# define costab14 MAD_F(0x62f201ac) -+# define costab15 MAD_F(0x5ed77c8a) -+# define costab16 MAD_F(0x5a82799a) -+# define costab17 MAD_F(0x55f5a4d2) -+# define costab18 MAD_F(0x5133cc94) -+# define costab19 MAD_F(0x4c3fdff4) -+# define costab20 MAD_F(0x471cece7) -+# define costab21 MAD_F(0x41ce1e65) -+# define costab22 MAD_F(0x3c56ba70) -+# define costab23 MAD_F(0x36ba2014) -+# define costab24 MAD_F(0x30fbc54d) -+# define costab25 MAD_F(0x2b1f34eb) -+# define costab26 MAD_F(0x25280c5e) -+# define costab27 MAD_F(0x1f19f97b) -+# define costab28 MAD_F(0x18f8b83c) -+# define costab29 MAD_F(0x12c8106f) -+# define costab30 MAD_F(0x0c8bd35e) -+# define costab31 MAD_F(0x0647d97c) -+ -+ -+ .macro butterfly2_in out1, out2, out3, out4, in, idx_in1, idx_in2, idx_in3, idx_in4, coeff1, coeff2, tmplo, tmphi -+ mov \tmplo, \coeff1 -+ ld.w \out1, \in[\idx_in1 * 4] -+ ld.w \out2, \in[\idx_in2 * 4] -+ ld.w \out3, \in[\idx_in3 * 4] -+ ld.w \out4, \in[\idx_in4 * 4] -+ sub \tmphi, \out1, \out2 -+ add \out1, \out2 -+ mulsatrndwh.w \out2, \tmphi, \tmplo:b -+ -+ sub \tmphi, \out3, \out4 -+ mov \tmplo, \coeff2 -+ add \out3, \out4 -+ mulsatrndwh.w \out4, \tmphi, \tmplo:b -+ .endm -+ -+ .macro butterfly2 in1, in2, in3, in4, coeff1, tmplo, tmphi, tmp -+ mov \tmp, \coeff1 -+ sub \tmphi, \in1, \in2 -+ add \in1, \in2 -+ mulsatrndwh.w \in2, \tmphi, \tmp:b -+ -+ sub \tmphi, \in3, \in4 -+ add \in3, \in4 -+ mulsatrndwh.w \in4, \tmphi, \tmp:b -+ .endm -+ -+ .macro butterfly4 in1, in2, in3, in4, in5, in6, in7, in8, coeff1, tmplo, tmphi, tmp -+ mov \tmp, \coeff1 -+ sub \tmphi, \in1, \in2 -+ add \in1, \in2 -+ mulsatrndwh.w \in2, \tmphi, \tmp:b -+ -+ sub \tmphi, \in3, \in4 -+ add \in3, \in4 -+ mulsatrndwh.w \in4, \tmphi, \tmp:b -+ -+ sub \tmphi, \in5, \in6 -+ add \in5, \in6 -+ mulsatrndwh.w \in6, \tmphi, \tmp:b -+ -+ sub \tmphi, \in7, \in8 -+ add \in7, \in8 -+ mulsatrndwh.w \in8, \tmphi, \tmp:b -+ .endm -+ -+ .macro scale reg -+ .endm -+ -+/*void dct32( mad_fixed_t const in[32], unsigned int slot, -+ mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]) */ -+ -+ .global dct32_avr32 -+dct32_avr32: -+ stm --sp, r0-r7, r9-r11, lr -+ -+ sub sp, 32*4 -+ -+/* t0 = in[0] + in[31]; t16 = MUL(in[0] - in[31], costab1); -+ t1 = in[15] + in[16]; t17 = MUL(in[15] - in[16], costab31); */ -+ butterfly2_in r4/*t0*/, r5/*t16*/, r6/*t1*/, r7/*t17*/, r12, 0, 31, 15, 16, costab1, costab31, r10, r11 -+ -+/* t41 = t16 + t17; -+ t59 = MUL(t16 - t17, costab2); -+ t33 = t0 + t1; -+ t50 = MUL(t0 - t1, costab2);*/ -+ butterfly2 r5/*t41*/, r7/*t59*/, r4/*t33*/, r6/*t50*/, costab2, r10, r11, lr -+ -+/* t2 = in[7] + in[24]; t18 = MUL(in[7] - in[24], costab15); -+ t3 = in[8] + in[23]; t19 = MUL(in[8] - in[23], costab17); */ -+ butterfly2_in r0/*t2*/, r1/*t18*/, r2/*t3*/, r3/*t19*/, r12, 7, 24, 8, 23, costab15, costab17, r10, r11 -+ -+/* t42 = t18 + t19; -+ t60 = MUL(t18 - t19, costab30); -+ t34 = t2 + t3; -+ t51 = MUL(t2 - t3, costab30); */ -+ butterfly2 r1/*t42*/, r3/*t60*/, r0/*t34*/, r2/*t51*/, costab30, r10, r11, lr -+ -+/* t73 = t41 + t42; t94 = MUL(t41 - t42, costab4); -+ t83 = t59 + t60; t106 = MUL(t59 - t60, costab4); */ -+ -+ -+/* t69 = t33 + t34; t89 = MUL(t33 - t34, costab4); -+ t78 = t50 + t51; t100 = MUL(t50 - t51, costab4); */ -+ butterfly4 r5/*t73*/, r1/*t94*/, r7/*t83*/, r3/*t106*/,r4/*t69*/, r0/*t89*/, r6/*t78*/, r2/*t100*/, costab4, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 */ -+ stm sp, r0-r7 -+ -+ -+/* t4 = in[3] + in[28]; t20 = MUL(in[3] - in[28], costab7); -+ t5 = in[12] + in[19]; t21 = MUL(in[12] - in[19], costab25); */ -+ butterfly2_in r4/*t4*/, r5/*t20*/, r6/*t5*/, r7/*t21*/, r12, 3, 28, 12, 19, costab7, costab25, r10, r11 -+ -+/* t43 = t20 + t21; -+ t61 = MUL(t20 - t21, costab14); -+ t35 = t4 + t5; -+ t52 = MUL(t4 - t5, costab14); */ -+ butterfly2 r5/*t43*/, r7/*t61*/, r4/*t35*/, r6/*t52*/, costab14, r10, r11, lr -+ -+/* t6 = in[4] + in[27]; t22 = MUL(in[4] - in[27], costab9); -+ t7 = in[11] + in[20]; t23 = MUL(in[11] - in[20], costab23); */ -+ butterfly2_in r0/*t6*/, r1/*t22*/, r2/*t7*/, r3/*t23*/, r12, 4, 27, 11, 20, costab9, costab23, r10, r11 -+ -+/* t44 = t22 + t23; -+ t62 = MUL(t22 - t23, costab18); -+ t36 = t6 + t7; -+ t53 = MUL(t6 - t7, costab18); */ -+ butterfly2 r1/*t44*/, r3/*t62*/, r0/*t36*/, r2/*t53*/, costab18, r10, r11, lr -+ -+/* t74 = t43 + t44; t95 = MUL(t43 - t44, costab28); -+ t84 = t61 + t62; t107 = MUL(t61 - t62, costab28); */ -+ -+/* t70 = t35 + t36; t90 = MUL(t35 - t36, costab28); -+ t79 = t52 + t53; t101 = MUL(t52 - t53, costab28); */ -+ butterfly4 r5/*t74*/, r1/*t95*/, r7/*t84*/, r3/*t107*/, r4/*t70*/, r0/*t90*/, r6/*t79*/, r2/*t101*/, costab28, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 */ -+ sub r10, sp, -8*4 -+ stm r10, r0-r7 -+ -+ -+/* t8 = in[1] + in[30]; t24 = MUL(in[1] - in[30], costab3); -+ t9 = in[14] + in[17]; t25 = MUL(in[14] - in[17], costab29); */ -+ butterfly2_in r4/*t8*/, r5/*t24*/, r6/*t9*/, r7/*t25*/, r12, 1, 30, 14, 17, costab3, costab29, r10, r11 -+ -+ -+/* t45 = t24 + t25; -+ t63 = MUL(t24 - t25, costab6); -+ t37 = t8 + t9; -+ t54 = MUL(t8 - t9, costab6); */ -+ butterfly2 r5/*t45*/, r7/*t63*/, r4/*t37*/, r6/*t54*/, costab6, r10, r11, lr -+ -+/* t10 = in[6] + in[25]; t26 = MUL(in[6] - in[25], costab13); -+ t11 = in[9] + in[22]; t27 = MUL(in[9] - in[22], costab19); */ -+ butterfly2_in r0/*t10*/, r1/*t26*/, r2/*t11*/, r3/*t27*/, r12, 6, 25, 9, 22, costab13, costab19, r10, r11 -+ -+/* t46 = t26 + t27; -+ t64 = MUL(t26 - t27, costab26); -+ t38 = t10 + t11; -+ t55 = MUL(t10 - t11, costab26); */ -+ butterfly2 r1/*t46*/, r3/*t64*/, r0/*t38*/, r2/*t55*/, costab26, r10, r11, lr -+ -+/* t75 = t45 + t46; t96 = MUL(t45 - t46, costab12); -+ t85 = t63 + t64; t108 = MUL(t63 - t64, costab12); */ -+ -+/* t71 = t37 + t38; t91 = MUL(t37 - t38, costab12); -+ t80 = t54 + t55; t102 = MUL(t54 - t55, costab12); */ -+ butterfly4 r5/*t75*/, r1/*t96*/, r7/*t85*/, r3/*t108*/, r4/*t71*/, r0/*t91*/, r6/*t80*/, r2/*t102*/, costab12, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 */ -+ sub r10, sp, -16*4 -+ stm r10, r0-r7 -+ -+/* t12 = in[2] + in[29]; t28 = MUL(in[2] - in[29], costab5); -+ t13 = in[13] + in[18]; t29 = MUL(in[13] - in[18], costab27); */ -+ butterfly2_in r4/*t12*/, r5/*t28*/, r6/*t13*/, r7/*t29*/, r12, 2, 29, 13, 18, costab5, costab27, r10, r11 -+ -+/* t47 = t28 + t29; -+ t65 = MUL(t28 - t29, costab10); -+ t39 = t12 + t13; -+ t56 = MUL(t12 - t13, costab10); */ -+ butterfly2 r5/*t47*/, r7/*t65*/, r4/*t39*/, r6/*t56*/, costab10, r10, r11, lr -+ -+/* t14 = in[5] + in[26]; t30 = MUL(in[5] - in[26], costab11); -+ t15 = in[10] + in[21]; t31 = MUL(in[10] - in[21], costab21);*/ -+ butterfly2_in r0/*t14*/, r1/*t30*/, r2/*t15*/, r3/*t31*/, r12, 5, 26, 10, 21, costab11, costab21, r10, r11 -+ -+/* t48 = t30 + t31; -+ t66 = MUL(t30 - t31, costab22); -+ t40 = t14 + t15; -+ t57 = MUL(t14 - t15, costab22);*/ -+ butterfly2 r1/*t48*/, r3/*t66*/, r0/*t40*/, r2/*t57*/, costab22, r10, r11, lr -+ -+/* t76 = t47 + t48; t97 = MUL(t47 - t48, costab20); -+ t86 = t65 + t66; t109 = MUL(t65 - t66, costab20);*/ -+ -+/* t72 = t39 + t40; t92 = MUL(t39 - t40, costab20); -+ t81 = t56 + t57; t103 = MUL(t56 - t57, costab20);*/ -+ butterfly4 r5/*t76*/, r1/*t97*/, r7/*t86*/, r3/*t109*/,r4/*t72*/, r0/*t92*/, r6/*t81*/, r2/*t103*/, costab20, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */ -+ sub r10, sp, -24*4 -+ stm r10, r0-r7 -+ -+/* We now have the following on the stack: -+ -+ sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 -+ sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 -+ sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 -+ sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */ -+ -+/* Load {r0...r7} = { t72, t76, t71, t75, t70, t74, t69, t73 } */ -+ ld.d r6, sp[2*4] -+ ld.d r4, sp[10*4] -+ ld.d r2, sp[18*4] -+ ld.d r0, sp[26*4] -+ -+ -+/* t113 = t69 + t70; -+ t141 = MUL(t69 - t70, costab8); -+ -+ t115 = t73 + t74; -+ t144 = MUL(t73 - t74, costab8); */ -+ butterfly2 r6/*t113*/, r4/*t141*/, r7/*t115*/, r5/*t144*/, costab8, r10, r11, lr -+ -+/* t114 = t71 + t72; -+ t142 = MUL(t71 - t72, costab24); -+ -+ t116 = t75 + t76; -+ t145 = MUL(t75 - t76, costab24); */ -+ butterfly2 r2/*t114*/, r0/*t142*/, r3/*t116*/, r1/*t145*/, costab24, r10, r11, lr -+ -+ -+/* -+ t191 = t113 + t114; -+ t192 = MUL(t113 - t114, costab16) -+ -+ t32 = t115 + t116; -+ t177 = MUL(t115 - t116, costab16) ; -+ -+ t143 = t141 + t142; -+ t190 = MUL(t141 - t142, costab16) ; -+ -+ t146 = t144 + t145; -+ t184 = MUL(t144 - t145, costab16) ; */ -+ butterfly4 r6/*t191*/, r2/*t192*/, r7/*t32*/, r3/*t177*/, r4/*t143*/, r0/*190*/, r5/*t146*/, r1/*t184*/, costab16, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[2-3] = t32, t191 -+ sp[10-11] = t146, t143 -+ sp[18-19] = t177, t192 -+ sp[26-27] = t184, t190 */ -+ st.d sp[2*4] , r6 -+ st.d sp[10*4], r4 -+ st.d sp[18*4], r2 -+ st.d sp[26*4], r0 -+ -+/* Load {r0...r7} = { t81, t86, t80, t85, t79, t84, t78, t83 } */ -+ ld.d r6, sp[0*4] -+ ld.d r4, sp[8*4] -+ ld.d r2, sp[16*4] -+ ld.d r0, sp[24*4] -+ -+ -+/* t118 = t78 + t79; -+ t148 = MUL(t78 - t79, costab8); -+ -+ t121 = t83 + t84; -+ t152 = MUL(t83 - t84, costab8); */ -+ butterfly2 r6/*t118*/, r4/*t148*/, r7/*t121*/, r5/*t152*/, costab8, r10, r11, lr -+ -+/* t119 = t80 + t81; -+ t149 = MUL(t80 - t81, costab24); -+ -+ t122 = t85 + t86; -+ t153 = MUL(t85 - t86, costab24); */ -+ butterfly2 r2/*t119*/, r0/*t149*/, r3/*t122*/, r1/*t153*/, costab24, r10, r11, lr -+ -+ -+ -+/* t58 = t118 + t119; -+ t178 = MUL(t118 - t119, costab16) ; -+ -+ t67 = t121 + t122; -+ t179 = MUL(t121 - t122, costab16) ; -+ -+ t150 = t148 + t149; -+ t185 = MUL(t148 - t149, costab16) ; -+ -+ t154 = t152 + t153; -+ t186 = MUL(t152 - t153, costab16) ; */ -+ butterfly4 r6/*t58*/, r2/*t178*/, r7/*t67*/, r3/*t179*/, r4/*t150*/, r0/*185*/, r5/*t154*/, r1/*t186*/, costab16, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[0-1] = t67, t58 -+ sp[8-9] = t154, t150 -+ sp[16-17] = t179, t178 -+ sp[24-25] = t186, t185 */ -+ st.d sp[0*4] , r6 -+ st.d sp[8*4], r4 -+ st.d sp[16*4], r2 -+ st.d sp[24*4], r0 -+ -+/* Load {r0...r7} = { t92, t97, t91, t96, t90, t95, t89, t94 } */ -+ ld.d r6, sp[6*4] -+ ld.d r4, sp[14*4] -+ ld.d r2, sp[22*4] -+ ld.d r0, sp[30*4] -+ -+ -+/* t125 = t89 + t90; -+ t157 = MUL(t89 - t90, costab8); -+ -+ t128 = t94 + t95; -+ t161 = MUL(t94 - t95, costab8); */ -+ butterfly2 r6/*t125*/, r4/*t157*/, r7/*t128*/, r5/*t161*/, costab8, r10, r11, lr -+ -+/* t126 = t91 + t92; -+ t158 = MUL(t91 - t92, costab24); -+ -+ t129 = t96 + t97; -+ t162 = MUL(t96 - t97, costab24); */ -+ butterfly2 r2/*t126*/, r0/*t158*/, r3/*t129*/, r1/*t162*/, costab24, r10, r11, lr -+ -+ -+/* -+ t93 = t125 + t126; -+ t180 = MUL(t125 - t126, costab16) ; -+ -+ t98 = t128 + t129; -+ t181 = MUL(t128 - t129, costab16) ; -+ -+ t159 = t157 + t158; -+ t187 = MUL(t157 - t158, costab16) ; -+ -+ t163 = t161 + t162; -+ t188 = MUL(t161 - t162, costab16) ; */ -+ butterfly4 r6/*t93*/, r2/*t180*/, r7/*t98*/, r3/*t181*/, r4/*t159*/, r0/*187*/, r5/*t163*/, r1/*t188*/, costab16, r10, r11, lr -+ -+ -+/* Store away the computed butterflies: -+ sp[6-7] = t98, t93 -+ sp[14-15] = t163, t159 -+ sp[22-23] = t181, t180 -+ sp[30-31] = t188, t187 */ -+ st.d sp[6*4] , r6 -+ st.d sp[14*4], r4 -+ st.d sp[22*4], r2 -+ st.d sp[30*4], r0 -+ -+/* Load {r0...r7} = { t103, t109, t102, t108, t101, t107, t100, t106 } */ -+ ld.d r6, sp[4*4] -+ ld.d r4, sp[12*4] -+ ld.d r2, sp[20*4] -+ ld.d r0, sp[28*4] -+ -+ -+ -+/* t132 = t100 + t101; -+ t166 = MUL(t100 - t101, costab8); -+ -+ t136 = t106 + t107; -+ t171 = MUL(t106 - t107, costab8); */ -+ butterfly2 r6/*t132*/, r4/*t166*/, r7/*t136*/, r5/*t171*/, costab8, r10, r11, lr -+ -+/* t133 = t102 + t103; -+ t167 = MUL(t102 - t103, costab24); -+ -+ t137 = t108 + t109; -+ t172 = MUL(t108 - t109, costab24);*/ -+ butterfly2 r2/*t133*/, r0/*t167*/, r3/*t137*/, r1/*t172*/, costab24, r10, r11, lr -+ -+ -+/* t104 = t132 + t133; -+ t182 = MUL(t132 - t133, costab16) ; -+ -+ t110 = t136 + t137; -+ t183 = MUL(t136 - t137, costab16) ; -+ -+ t168 = t166 + t167; -+ t189 = MUL(t166 - t167, costab16) ; -+ -+ t173 = t171 + t172; -+ t208 = MUL(t171 - t172, costab16) ; */ -+ butterfly4 r6/*t104*/, r2/*t182*/, r7/*t110*/, r3/*t183*/, r4/*t168*/, r0/*189*/, r5/*t173*/, r1/*t208*/, costab16, r10, r11, lr -+ -+/* Store away the computed butterflies: -+ sp[4-5] = t110, t104 -+ sp[12-13] = t173, t168 -+ sp[20-21] = t183, t182 -+ sp[28-29] = t208, t189 */ -+ st.d sp[4*4] , r6 -+ st.d sp[12*4], r4 -+ st.d sp[20*4], r2 -+ st.d sp[28*4], r0 -+ -+/* Now we have the following stack -+ -+ sp[0-7] = t67, t58 , t32, t191, t110, t104, t98, t93 -+ sp[8-15] = t154, t150, t146, t143, t173, t168, t163, t159 -+ sp[16-23] = t179, t178, t177, t192, t183, t182, t181, t180 -+ sp[24-31] = t186, t185, t184, t190, t208, t189, t188, t187 -+*/ -+ -+ /* Get slot, lo and hi from stack */ -+ lddsp lr, sp[32*4 + 4] /*slot*/ -+ lddsp r12, sp[32*4 + 8] /*lo*/ -+ lddsp r11, sp[32*4 + 12] /*hi*/ -+ -+ add r12, r12, lr << 2 -+ add r11, r11, lr << 2 -+ -+ -+/* t49 = -(t67 * 2) + t32; -+ hi[14][slot] = SHIFT(t32); -+ t87 = -(t110 * 2) + t67; -+ t138 = -(t173 * 2) + t110; -+ t203 = -(t208 * 2) + t173; */ -+ -+ lddsp r0/*t67*/, sp[0] -+ lddsp r1/*t32*/, sp[2*4] -+ lddsp r2/*t110*/, sp[4*4] -+ lddsp r3/*t173*/, sp[12*4] -+ lddsp r5/*t208*/, sp[28*4] -+ -+ sub r4/*t49*/, r1, r0 << 1 -+ scale r1 -+ sub r0/*t87*/, r0, r2 << 1 -+ st.w r11[14*SLOTS*4], r1 -+ sub r2/*t138*/, r2, r3 << 1 -+ sub r1/*t203*/, r3, r5 << 1 -+ -+/* Live: r0 = t87, r1= t203, r2= t138, r4 = t49 -+ Free: r3, r5, r6, r7, r8, r9, r10, lr */ -+ -+/* t68 = (t98 * 2) + t49; -+ hi[12][slot] = SHIFT(-t49); -+ t130 = -(t163 * 2) + t98; -+ t201 = -(t188 * 2) + t163; -+ t200 = -(t186 * 2) + t154; -+ t111 = (t154 * 2) + t87; -+ t77 = -(-(t87 * 2) - t68); -+ t88 = (t146 * 2) + t77; -+ t199 = -(t184 * 2) + t146; -+ hi[ 8][slot] = SHIFT(-t77); -+ hi[10][slot] = SHIFT(t68);*/ -+ lddsp r3/*t98*/, sp[6*4] -+ lddsp r5/*t163*/, sp[14*4] -+ lddsp r6/*t188*/, sp[30*4] -+ lddsp r10/*t186*/, sp[24*4] -+ -+ add r7/*t68*/, r4, r3 << 1 -+ neg r4 -+ scale r4 -+ lddsp r9/*t154*/, sp[8*4] -+ sub r3/*t130*/, r3, r5 << 1 -+ st.w r11[12*SLOTS*4], r4 -+ sub r8/*t201*/, r5, r6 << 1 -+ sub r4/*t200*/, r9, r10 << 1 -+ lddsp lr/*t146*/, sp[10*4] -+ lddsp r6/*t184*/, sp[26*4] -+ add r10/*t111*/, r0, r9 << 1 -+ add r5/*t77*/,r7, r0 << 1 -+ add r0/*t88*/, r5, lr << 1 -+ sub r6/*t199*/, lr, r6 << 1 -+ neg r5 -+ scale r5 -+ scale r7 -+ st.w r11[8*SLOTS*4], r5 -+ st.w r11[10*SLOTS*4], r7 -+ -+/* Live: r0 = t88, r1= t203, r2= t138, r3 = t130, r4 = t200, -+ r6 = 199, r8 = t201, r10 = t111 -+ Free: r5, r7, r9, lr */ -+ -+ -+/* -+ t123 = -(-(t138 * 2) - t111); -+ t174 = (t183 * 2) + t138; -+ t99 = -(t111 * 2) + t88; -+ hi[ 6][slot] = SHIFT(t88); */ -+ lddsp r5/*t183*/, sp[20*4] -+ -+ add r7/*t123*/, r10, r2 << 1 -+ sub r10/*t99*/, r0, r10 << 1 -+ scale r0 -+ add r2/*t174*/, r2, r5 << 1 -+ st.w r11[6*SLOTS*4], r0 -+ -+/* Live: r1 = t203, r2 = t174, r3 = t130, r4 = t200, -+ r6 = t199, r7 = t123, r8 = t201, r10 = t99 -+ Free: r0, r5, r9, lr */ -+ -+/* t112 = -(t130 * 2) + t99; -+ t164 = (t181 * 2) + t130; -+ hi[ 4][slot] = SHIFT(-t99); */ -+ lddsp r0/*t181*/, sp[22*4] -+ -+ sub r5/*t112*/, r10, r3 << 1 -+ neg r10 -+ scale r10 -+ add r3/*164*/, r3, r0 << 1 -+ st.w r11[4*SLOTS*4], r10 -+ -+/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200, -+ r5 = t112, r6 = t199, r7 = t123, r8 = t201 -+ Free: r0, r9, r10, lr */ -+ -+ -+/* t117 = -(-(t123 * 2) - t112); -+ t139 = (t179 * 2) + t123; -+ hi[ 2][slot] = SHIFT(t112); */ -+ lddsp r0/*t179*/, sp[16*4] -+ -+ add r9/*t117*/, r5, r7 << 1 -+ scale r5 -+ add r7/*t139*/, r7, r0 << 1 -+ st.w r11[2*SLOTS*4], r5 -+ -+/* Live: r1 = t203, r2 = t174, r3 = t164, r4 = t200, -+ r6 = t199, r7 = t139, r8 = t201, r9 = t117 -+ Free: r0, r5, r10, lr */ -+ -+/* t155 = -(t174 * 2) + t139; -+ t204 = -(-(t203 * 2) - t174); -+ t124 = (t177 * 2) + t117; -+ hi[ 0][slot] = SHIFT(-t117); -+ t131 = -(t139 * 2) + t124; -+ lo[ 1][slot] = SHIFT(t124);*/ -+ lddsp r0/*t177*/, sp[18*4] -+ -+ sub r5/*t155*/, r7, r2 << 1 -+ add r2/*t204*/, r2, r1 << 1 -+ add r0/*t124*/, r9, r0 << 1 -+ neg r9 -+ scale r9 -+ sub r7/*t131*/, r0, r7 << 1 -+ scale r0 -+ st.w r11[0*SLOTS*4], r9 -+ st.w r12[1*SLOTS*4], r0 -+ -+/* Live: r2 = t204, r3 = t164, r4 = t200, -+ r5 = t155, r6 = t199, r7 = t131, r8 = t201 -+ Free: r0, r1, r9, r10, lr */ -+ -+/* t140 = (t164 * 2) + t131; -+ lo[ 3][slot] = SHIFT(-t131); -+ t202 = -(-(t201 * 2) - t164); */ -+ add r0/*t140*/, r7, r3 << 1 -+ neg r7 -+ scale r7 -+ add r3/*t202*/, r3, r8 << 1 -+ st.w r12[3*SLOTS*4], r7 -+ -+/* Live: r0 = t140, r2 = t204, r3 = t202, r4 = t200, -+ r5 = t155, r6 = t199 -+ Free: r1, r7, r8, r9, r10, lr */ -+ -+ -+/* t147 = -(-(t155 * 2) - t140); -+ lo[ 5][slot] = SHIFT(t140); -+ t175 = -(t200 * 2) + t155; -+ t156 = -(t199 * 2) + t147; -+ lo[ 7][slot] = SHIFT(-t147); */ -+ add r1/*t147*/, r0, r5 << 1 -+ scale r0 -+ sub r5/*t175*/, r5, r4 << 1 -+ sub r4/*156*/, r1, r6 << 1 -+ neg r1 -+ scale r1 -+ st.w r12[5*SLOTS*4], r0 -+ st.w r12[7*SLOTS*4], r1 -+ -+/* Live: r2 = t204, r3 = t202, -+ r4 = t156, r5 = t175 -+ Free: r0, r1, r6, r7, r8, r9, r10, lr */ -+ -+ -+/* t205 = -(-(t204 * 2) - t175); -+ t165 = -(t175 * 2) + t156; -+ lo[ 9][slot] = SHIFT(t156); -+ t176 = -(t202 * 2) + t165; -+ lo[11][slot] = SHIFT(-t165); -+ t206 = -(-(t205 * 2) - t176); -+ lo[15][slot] = SHIFT(-t206) -+ lo[13][slot] = SHIFT(t176) */ -+ add r0/*t205*/, r5, r2 << 1 -+ sub r1/*t165*/, r4, r5 << 1 -+ scale r4 -+ sub r3/*t176*/, r1, r3 << 1 -+ st.w r12[9*SLOTS*4], r4 -+ neg r1 -+ scale r1 -+ add r6/*t206*/, r3, r0 << 1 -+ neg r6 -+ scale r6 -+ scale r3 -+ st.w r12[11*SLOTS*4], r1 -+ st.w r12[15*SLOTS*4], r6 -+ st.w r12[13*SLOTS*4], r3 -+ -+/* t193 = -((t190 * 2) - t143) -+ hi[ 7][slot] = SHIFT(t143); -+ lo[ 8][slot] = SHIFT(-t193); -+ t82 = -(t104 * 2) + t58; -+ hi[13][slot] = SHIFT(t58); -+ t134 = -(t168 * 2) + t104; -+ t196 = -(t189 * 2) + t168; */ -+ -+ lddsp r0/*t190*/, sp[27*4] -+ lddsp r1/*t143*/, sp[11*4] -+ lddsp r2/*t104*/, sp[5*4] -+ lddsp r3/*t58*/, sp[1*4] -+ lddsp r4/*t168*/, sp[13*4] -+ lddsp r5/*t189*/, sp[29*4] -+ sub r0/*t193*/, r1, r0 << 1 -+ neg r0 -+ scale r1 -+ scale r0 -+ st.w r11[7*SLOTS*4], r1 -+ st.w r12[8*SLOTS*4], r0 -+ sub r0/*t82*/, r3, r2 << 1 -+ scale r3 -+ sub r2/*t134*/, r2, r4 << 1 -+ sub r4/*t196*/, r4, r5 << 1 -+ st.w r11[13*SLOTS*4], r3 -+ -+/* Live: r0 = t82, r2 = t134, -+ r4 = t196 -+ Free: r1, r3, r5, r6, r7, r8, r9, r10, lr */ -+ -+ -+ -+/* -+ -+ t207 = -(t185 * 2) + t150; -+ t105 = (t150 * 2) + t82; -+ hi[ 9][slot] = SHIFT(-t82); -+ t120 = -(-(t134 * 2) - t105); -+ hi[ 5][slot] = SHIFT(t105); -+ t169 = (t182 * 2) + t134; -+ -+ t135 = (t178 * 2) + t120; -+ hi[ 1][slot] = SHIFT(-t120); -+ t197 = -(-(t196 * 2) - t169); -+ t151 = -(t169 * 2) + t135; -+ lo[ 2][slot] = SHIFT(t135); */ -+ lddsp r1/*t185*/, sp[25*4] -+ lddsp r3/*t150*/, sp[9*4] -+ lddsp r5/*t182*/, sp[21*4] -+ lddsp r8/*t178*/, sp[17*4] -+ -+ sub r6/*t207*/, r3, r1 << 1 -+ add r3/*t105*/, r0, r3 << 1 -+ neg r0 -+ scale r0 -+ add r7/*t120*/, r3, r2 << 1 -+ scale r3 -+ st.w r11[9*SLOTS*4], r0 -+ st.w r11[5*SLOTS*4], r3 -+ add r2/*t169*/, r2, r5 << 1 -+ add r8/*t135*/, r7, r8 << 1 -+ neg r7 -+ scale r7 -+ add r4/*t197*/, r2, r4 << 1 -+ sub r2/*t151*/, r8, r2 << 1 -+ scale r8 -+ st.w r11[1*SLOTS*4], r7 -+ st.w r12[2*SLOTS*4], r8 -+ -+/* Live: r2 = t151, r4 = t197, r6 = t207 -+ -+ Free: r0, r1, r3, r5, r7, r8, r9, r10, lr */ -+ -+ -+ -+/* t170 = -(t207 * 2) + t151; -+ lo[ 6][slot] = SHIFT(-t151); -+ -+ t198 = -(-(t197 * 2) - t170); -+ lo[10][slot] = SHIFT(t170); -+ lo[14][slot] = SHIFT(-t198); -+ -+ t127 = -(t159 * 2) + t93; -+ hi[11][slot] = SHIFT(t93); -+ t194 = -(t187 * 2) + t159; */ -+ lddsp r0/*t159*/, sp[15*4] -+ lddsp r1/*t93*/, sp[7*4] -+ lddsp r3/*t187*/, sp[31*4] -+ sub r5/*t170*/, r2, r6 << 1 -+ neg r2 -+ scale r2 -+ add r4/*t198*/,r5, r4 << 1 -+ neg r4 -+ scale r5 -+ scale r4 -+ st.w r12[6*SLOTS*4], r2 -+ st.w r12[10*SLOTS*4], r5 -+ st.w r12[14*SLOTS*4], r4 -+ sub r7/*t127*/, r1, r0 << 1 -+ scale r1 -+ sub r0/*t194*/, r0, r3 << 1 -+ st.w r11[11*SLOTS*4], r1 -+ -+ -+/* Live: r0 = t194, r7 = t127 -+ Free: r1, r2, r3, r4, r6, r5, r8, r9, r10, lr */ -+ -+/* t160 = (t180 * 2) + t127; -+ hi[ 3][slot] = SHIFT(-t127); -+ t195 = -(-(t194 * 2) - t160); -+ lo[ 4][slot] = SHIFT(t160); -+ lo[12][slot] = SHIFT(-t195); -+ -+ hi[15][slot] = SHIFT(t191); -+ lo[ 0][slot] = SHIFT(t192); */ -+ lddsp r1/*t180*/, sp[23*4] -+ lddsp r2/*t191*/, sp[3*4] -+ lddsp r3/*t192*/, sp[19*4] -+ add r4/*t160*/, r7, r1 << 1 -+ neg r7 -+ scale r7 -+ add r6/*t195*/, r4, r0 << 1 -+ scale r4 -+ neg r6 -+ scale r6 -+ st.w r11[3*SLOTS*4], r7 -+ st.w r12[4*SLOTS*4], r4 -+ st.w r12[12*SLOTS*4], r6 -+ scale r2 -+ scale r3 -+ st.w r11[15*SLOTS*4], r2 -+ st.w r12[0*SLOTS*4], r3 -+ -+ sub sp, -32*4 -+ ldm sp++,r0-r7, r9-r11, pc -diff --git a/fixed.h b/fixed.h -index 4b58abf..0a1350a 100644 ---- a/fixed.h -+++ b/fixed.h -@@ -237,6 +237,46 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) - # define MAD_F_SCALEBITS MAD_F_FRACBITS - # endif - -+/* --- AVR32 ----------------------------------------------------------------- */ -+ -+# elif defined(FPM_AVR32) -+ -+typedef signed short mad_coeff_t; -+ -+struct DWstruct {int high, low;}; -+ -+typedef union { -+ struct DWstruct s; -+ long long ll; -+} DWunion; -+ -+# define MAD_F_MLX(hi, lo, x, y) \ -+ { register DWunion __res; \ -+ __res.ll = (long long)x * (long long)y; \ -+ /* asm ("muls.d\t%0, %1, %2" : "=r" (__res.ll) : "r" (x), "r" (y));*/ \ -+ hi = __res.s.high; \ -+ lo = __res.s.low; } -+ -+# define MAD_F_MLA(hi, lo, x, y) \ -+ { register DWunion __res; \ -+ __res.s.high = hi; \ -+ __res.s.low = lo; \ -+ __res.ll += (long long)x * (long long)y; \ -+/* asm ("macs.d\t%0, %1, %2" : "+r" (__res.ll) : "r" (x), "r" (y));*/ \ -+ hi = __res.s.high; \ -+ lo = __res.s.low; } -+ -+ -+# define MAD_F_MLN(hi, lo) \ -+ asm ("neg %0\n" \ -+ "acr %1\n" \ -+ "neg %1" \ -+ : "+r" (lo), "+r" (hi) \ -+ :: "cc") -+ -+ -+# define MAD_F_SCALEBITS MAD_F_FRACBITS -+ - /* --- ARM ----------------------------------------------------------------- */ - - # elif defined(FPM_ARM) -@@ -433,6 +473,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) - * - * Pre-rounding is required to stay within the limits of compliance. - */ -+typedef signed int mad_coeff_t; -+ - # if defined(OPT_SPEED) - # define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) - # else -diff --git a/imdct_avr32.S b/imdct_avr32.S -new file mode 100644 -index 0000000..d0ee6b4 ---- /dev/null -+++ b/imdct_avr32.S -@@ -0,0 +1,789 @@ -+/* -+ Optimized 36-point Inverse Modified Cosine Transform (IMDCT) -+ Copyright 2003-2006 Atmel Corporation. -+ -+ Written by Ronny Pedersen, Atmel Norway -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#define MAD_F(x) ((x + (1 << 13)) >> 14) -+ -+ .public imdct36_avr32 -+ -+/* -+ void imdct36(mad_fixed_t const x[18], mad_fixed_t y[36]) -+ { -+ mad_fixed_t tmp[18]; -+ int i; -+*/ -+/* DCT-IV */ -+imdct36_avr32: -+ pushm r0-r7,r11,lr -+ sub sp, 4*18 -+/* -+ { -+ mad_fixed_t tmp2[18]; -+ int i; -+ -+ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (4 * 18)) */ -+/* -+ static mad_fixed_t const scale[18] = { -+ MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120), -+ MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b), -+ MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4), -+ MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3), -+ MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5), -+ MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c) -+ }; -+*/ -+ -+ /* scaling */ -+ -+/* -+ for (i = 0; i < 18; i += 3) { -+ tmp2[i + 0] = mad_f_mul(x[i + 0], scale[i + 0]); -+ tmp2[i + 1] = mad_f_mul(x[i + 1], scale[i + 1]); -+ tmp2[i + 2] = mad_f_mul(x[i + 2], scale[i + 2]); -+ } -+*/ -+ /* even input butterfly */ -+ -+/* -+ for (i = 0; i < 9; i += 3) { -+ tmp3[i + 0] = tmp2[i + 0] + tmp2[18 - (i + 0) - 1]; -+ tmp3[i + 1] = tmp2[i + 1] + tmp2[18 - (i + 1) - 1]; -+ tmp3[i + 2] = tmp2[i + 2] + tmp2[18 - (i + 2) - 1]; -+ } -+ for (i = 0; i < 9; i += 3) { -+ tmp4[i + 0] = tmp2[i + 0] - tmp2[18 - (i + 0) - 1]; -+ tmp4[i + 1] = tmp2[i + 1] - tmp2[18 - (i + 1) - 1]; -+ tmp4[i + 2] = tmp2[i + 2] - tmp2[18 - (i + 2) - 1]; -+ } -+*/ -+ -+ ld.d r8, r12[0] /*r8 = x[1], r9 = x[0]*/ -+ ld.d r0, pc[scale_dctIV - .] /*r0 = {scale[2], scale[3]}, r1 = { scale[0], scale[1] }*/ -+ ld.d r2, r12[2*4] /*r2 = x[3], r3 = x[2]*/ -+ ld.d r4, pc[scale_dctIV - . + 14*2] /*r4 = {scale[16], scale[17]}, r5 = { scale[14], scale[15] }*/ -+ mulsatrndwh.w r9/*tmp2[0]*/, r9, r1:t /*tmp2[0] = mad_f_mul(x[0], scale[0]) */ -+ ld.d r6, r12[16*4] /*r6 = x[17], r7 = x[16]*/ -+ mulsatrndwh.w r8/*tmp2[1]*/, r8, r1:b /*tmp2[1] = mad_f_mul(x[1], scale[1]) */ -+ mulsatrndwh.w r3/*tmp2[2]*/, r3, r0:t /*tmp2[2] = mad_f_mul(x[2], scale[2]) */ -+ mulsatrndwh.w r2/*tmp2[3]*/, r2, r0:b /*tmp2[3] = mad_f_mul(x[3], scale[3]) */ -+ ld.d r0, r12[14*4] /*r0 = x[15], r1 = x[14]*/ -+ mulsatrndwh.w r7/*tmp2[16]*/, r7, r4:t /*tmp2[16] = mad_f_mul(x[16], scale[16]) */ -+ mulsatrndwh.w r6/*tmp2[17]*/, r6, r4:b /*tmp2[17] = mad_f_mul(x[17], scale[17]) */ -+ mulsatrndwh.w r1/*tmp2[14]*/, r1, r5:t /*tmp2[14] = mad_f_mul(x[14], scale[14]) */ -+ mulsatrndwh.w r0/*tmp2[15]*/, r0, r5:b /*tmp2[15] = mad_f_mul(x[15], scale[15]) */ -+ -+ ld.d r4, r12[4*4] /*r4 = x[5], r5 = x[4]*/ -+ -+ sub lr/*tmp4[0]*/, r9, r6 -+ add r6/*tmp3[0]*/, r9, r6 -+ sub r10/*tmp4[1]*/, r8, r7 -+ add r7/*tmp3[1]*/, r8, r7 -+ sub r9/*tmp4[2]*/, r3, r0 -+ add r0/*tmp3[2]*/, r3, r0 -+ sub r8/*tmp4[3]*/, r2, r1 -+ add r1/*tmp3[3]*/, r2, r1 -+ -+ ld.d r2, pc[scale_dctIV - . + 4*2] /*r2 = {scale[6], scale[7]}, r3 = { scale[4], scale[5] }*/ -+ -+ stm --sp, r8-r10, lr /*sp[0] = tmp4[0],sp[1] = tmp4[1], -+ sp[2] = tmp4[2],sp[3] = tmp4[3] */ -+ -+ /* Registers used: r0 = tmp3[2], r1 = tmp3[3], r6 = tmp3[0], r7 = tmp3[1], r12 = x -+ Free registers: r2-r5, r8-r11, lr -+ */ -+ ld.d r8, r12[6*4] /*r8 = x[7], r9 = x[6]*/ -+ ld.d r10, pc[scale_dctIV - . + 10*2] /*r10 = {scale[12], scale[13]}, r11 = { scale[10], scale[11] }*/ -+ mulsatrndwh.w r5/*tmp2[4]*/, r5, r3:t /*tmp2[4] = mad_f_mul(x[4], scale[4]) */ -+ mulsatrndwh.w r4/*tmp2[5]*/, r4, r3:b /*tmp2[5] = mad_f_mul(x[5], scale[5]) */ -+ mulsatrndwh.w r9/*tmp2[6]*/, r9, r2:t /*tmp2[6] = mad_f_mul(x[6], scale[6]) */ -+ mulsatrndwh.w r8/*tmp2[7]*/, r8, r2:b /*tmp2[7] = mad_f_mul(x[7], scale[7]) */ -+ -+ ld.d r2, r12[12*4] /*r2 = x[13], r3 = x[12]*/ -+ ld.w lr, r12[11*4] /*lr = x[11] */ -+ mulsatrndwh.w r3/*tmp2[12]*/, r3, r10:t /*tmp2[12] = mad_f_mul(x[12], scale[12]) */ -+ mulsatrndwh.w r2/*tmp2[13]*/, r2, r10:b /*tmp2[13] = mad_f_mul(x[13], scale[13]) */ -+ ld.w r10, r12[10*4] /*r10 = x[10] */ -+ mulsatrndwh.w lr/*tmp2[11]*/, lr, r11:b /*tmp2[11] = mad_f_mul(x[11], scale[11]) */ -+ mulsatrndwh.w r10/*tmp2[10]*/, r10, r11:t /*tmp2[10] = mad_f_mul(x[10], scale[10]) */ -+ -+ sub r11/*tmp4[4]*/, r5, r2 -+ add r2/*tmp3[4]*/, r5, r2 -+ sub r5/*tmp4[5]*/, r4, r3 -+ add r3/*tmp3[5]*/, r4, r3 -+ sub r4/*tmp4[6]*/, r9, lr -+ add lr/*tmp3[6]*/, r9, lr -+ sub r9/*tmp4[7]*/, r8, r10 -+ add r10/*tmp3[7]*/, r8, r10 -+ lddpc r8, scale_dctIV + 8*2 /*r8 = {scale[8], scale[9]} */ -+ -+ stm --sp, r4, r5, r9, r11 /*sp[0] = tmp4[4],sp[1] = tmp4[7], -+ sp[2] = tmp4[5],sp[3] = tmp4[6] */ -+ ld.d r4, r12[8*4] /*r4 = x[9], r5 = x[8]*/ -+ mulsatrndwh.w r5/*tmp2[8]*/, r5, r8:t /*tmp2[8] = mad_f_mul(x[8], scale[8]) */ -+ mulsatrndwh.w r4/*tmp2[9]*/, r4, r8:b /*tmp2[9] = mad_f_mul(x[9], scale[9]) */ -+ sub r9/*tmp4[8]*/, r5, r4 -+ add r5/*tmp3[8]*/, r5, r4 -+ -+ st.w --sp, r9 /* sp[0] = tmp4[8] */ -+ -+ /* Registers used: -+ -+ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r10=tmp3[7], lr=tmp3[6] -+ Free registers: -+ r4, r8, r9, r11, r12 -+ */ -+ -+ -+ /* SDCT-II */ -+/* -+ -+ { -+ mad_fixed_t tmp3[9]; -+ int i; -+*/ -+ /* scale[i] = 2 * cos(PI * (2 * i + 1) / (2 * 18)) */ -+/* -+ static mad_fixed_t const scale[9] = { -+ MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930), -+ MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8), -+ MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7) -+ }; -+*/ -+ /* divide the 18-point SDCT-II into two 9-point SDCT-IIs */ -+ -+ -+ /* fastdct */ -+ -+/* -+ { -+ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; -+ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25; -+ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7; -+*/ -+// enum { -+// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */ -+// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */ -+// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */ -+// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */ -+// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */ -+// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */ -+// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */ -+// }; -+ -+/* -+ a2 = tmp3[6] + tmp3[2]; -+ a6 = tmp3[8] + tmp3[0]; -+ a11 = a2 - a6; -+ m5 = mad_f_mul(a11, -c6) ; -+ a4 = tmp3[1] + tmp3[7]; -+ -+ a18 = tmp3[4] + a4; -+ a19 = -2 * tmp3[4] + a4; -+ -+ a0 = tmp3[3] + tmp3[5]; -+ -+*/ -+ add r11/*a4*/, r7, r10 -+ add r12/*a18*/, r2, r11 -+ sub r11/*a19*/, r11, r2<<1 -+ -+ add r4/*a2*/, lr, r0 -+ add r8/*a6*/, r5, r6 -+ sub r9/*a11*/, r4, r8 -+ -+ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/ -+ -+ mov r2, MAD_F(0x1e11f642) -+ mulsatrndwh.w r9/*m5*/, r9, r2:b -+ -+ add r2/*a0*/, r1, r3 -+ -+ /* Registers used: -+ -+ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r8=a6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6] -+ Free registers: -+ r0, r1 -+ */ -+ -+/* -+ a8 = a0 + a2; -+ a12 = a8 + a6; -+ a10 = a0 - a6; -+ a9 = a0 - a2; -+ m7 = mad_f_mul(a9, -c2) ; -+ m6 = mad_f_mul(a10, -c5) ; -+*/ -+ -+ add r0/*a8*/, r2, r4 -+ add r0/*a12*/, r8 -+ rsub r8/*a10*/, r2 -+ sub r2/*a9*/, r4 -+ mov r1, -MAD_F(0x18836fa3) -+ mulsatrndwh.w r2/*m7*/, r2, r1:b -+ mov r1, -MAD_F(0x058e86a0) -+ mulsatrndwh.w r8/*m6*/, r8, r1:b -+ -+ /* Registers used: -+ -+ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r8=m6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6] -+ Free registers: -+ r1, r4 -+ */ -+ -+ -+/* -+ a21 = -a19 - (m5 << 1); -+ tmp[ 8] = a21 - (m6 << 1); -+ -+ a20 = a19 - (m5 << 1); -+ tmp[ 4] = (m7 << 1) + a20; -+ a22 = -a19 + (m6 << 1); -+ tmp[16] = a22 + (m7 << 1); -+ tmp[ 0] = a18 + a12; -+ tmp[12] = a12 - 2 * a18; -+*/ -+ add r1/*a21*/, r11, r9 << 1 -+ neg r1 -+ sub r1/*tmp[8]*/, r1, r8 << 1 -+ stdsp sp[4*11/*tmp3[..] on the stack*/ + 8*4], r1 -+ sub r4/*a20*/, r11, r9 << 1 -+ add r4/*tmp[4]*/, r4, r2 << 1 -+ stdsp sp[4*11/*tmp3[..] on the stack*/ + 4*4], r4 -+ neg r11 -+ add r1/*a22*/, r11, r8 << 1 -+ add r1/*tmp[16]*/, r1, r2 << 1 -+ stdsp sp[4*11/*tmp3[..] on the stack*/ + 16*4], r1 -+ add r4, r12, r0 -+ sub r1, r0, r12 << 1 -+ stdsp sp[4*11/*tmp3[..] on the stack*/ + 0*4], r4 -+ stdsp sp[4*11/*tmp3[..] on the stack*/ + 12*4], r1 -+ -+ ld.d r0, sp++ -+ -+ /* Registers used: -+ -+ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r10=tmp3[7], r11=a19, lr=tmp3[6] -+ Free registers: -+ r2,r4,r8,r9,r12 -+ */ -+ -+/* -+ a5 = tmp3[1] - tmp3[7]; -+ a7 = tmp3[8] - tmp3[0]; -+ a3 = tmp3[6] - tmp3[2]; -+ a1 = tmp3[3] - tmp3[5]; -+ a13 = a1 - a3; -+ a14 = a13 + a7; -+ m3 = mad_f_mul(a14, -c1) ; -+ m4 = mad_f_mul(a5, -c1) ; -+ tmp[ 6] = m3 << 1; -+*/ -+ sub r7/*a5*/, r10 -+ sub r2/*a7*/, r5, r6 -+ sub r4/*a3*/, lr, r0 -+ sub r8/*a1*/, r1, r3 -+ sub r9/*a13*/, r8, r4 -+ add r12/*a14*/, r9, r2 -+ mov r0, -MAD_F(0x1bb67ae8) -+ mulsatrndwh.w r12/*m3*/, r12, r0:b -+ mulsatrndwh.w r7/*m4*/, r7, r0:b -+ lsl r12, 1 -+ stdsp sp[4*9/*tmp3[..] on the stack*/ + 6*4], r12 -+ -+ /* Registers used: -+ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3 -+ -+ Free registers: -+ r0, r1, r3, r5, r6, r10, r9, r11, lr -+ */ -+ -+ -+/* -+ a15 = a3 + a7; -+ m2 = mad_f_mul(a15, -c4) ; -+ a17 = a1 + a3; -+ m0 = mad_f_mul(a17, -c3) ; -+ a23 = (m4 << 1) + (m2 << 1); -+ tmp[14] = a23 + (m0 << 1); */ -+ add r0/*a15*/, r4, r2 -+ mov r1, -MAD_F(0x0af1d43a) -+ mulsatrndwh.w r0/*m2*/, r0, r1:b -+ mov r3, -MAD_F(0x1491b752) -+ add r5/*a17*/, r8, r4 -+ mulsatrndwh.w r5/*m0*/, r5, r3:b -+ lsl r7, 1 -+ add r6/*a23*/, r7, r0 << 1 -+ add r6/*tmp[14]*/, r6, r5 << 1 -+ stdsp sp[4*9/*tmp3[..] on the stack*/ + 14*4], r6 -+ -+ /* Registers used: -+ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1 -+ -+ Free registers: -+ r1, r3, r4, r6, r10, r9, r11, lr -+ */ -+ -+/* -+ a16 = a1 - a7; -+ m1 = mad_f_mul(a16, -c0) ; -+ a24 = (m4 << 1) - (m2 << 1); -+ tmp[10] = a24 - (m1 << 1); -+ -+ a25 = (m4 << 1) + (m1 << 1); -+ tmp[ 2] = (m0 << 1) - a25; -+*/ -+ sub r3/*a16*/, r8, r2 -+ mov r4, -MAD_F(0x1f838b8d) -+ mulsatrndwh.w r3/*m1*/, r3, r4:b -+ sub r1/*a24*/, r7, r0 << 1 -+ sub r1/*tmp[10]*/, r1, r3 << 1 -+ stdsp sp[4*9/*tmp3[..] on the stack*/ + 10*4], r1 -+ add r7/*a25*/, r7, r3 << 1 -+ sub r7, r7, r5 << 1 -+ neg r7 -+ stdsp sp[4*9/*tmp3[..] on the stack*/ + 2*4], r7 -+ -+ -+ -+ -+ /* output to every other slot for convenience */ -+ -+ /*} */ -+ /* End fastdct */ -+ -+ /* odd input butterfly and scaling */ -+ -+ -+ /* On the stack: -+ sp[0] = tmp4[8], sp[1] = tmp4[4],sp[2] = tmp4[7], sp[3] = tmp4[5],sp[4] = tmp4[6] -+ sp[5] = tmp4[0], sp[6] = tmp4[1],sp[7] = tmp4[2],sp[8] = tmp4[3] -+ */ -+ -+ /* -+ tmp3[0] = mad_f_mul(tmp4[0], scale[0]); -+ tmp3[1] = mad_f_mul(tmp4[1], scale[1]) << 1; -+ tmp3[2] = mad_f_mul(tmp4[2], scale[2]); -+ tmp3[3] = mad_f_mul(tmp4[3], scale[3]) << 1; -+ tmp3[4] = mad_f_mul(tmp4[4], scale[4]); -+ tmp3[5] = mad_f_mul(tmp4[5], scale[5]); -+ tmp3[6] = mad_f_mul(tmp4[6], scale[6]) << 1; -+ tmp3[7] = mad_f_mul(tmp4[7], scale[7]); -+ tmp3[8] = mad_f_mul(tmp4[8], scale[8]) << 1; -+ */ -+ /* Registers used: -+ r1 = tmp4[3], r2 = tmp4[2], r3 = tmp4[1], r4 = tmp4[0], r7 = tmp4[6] -+ r10 = tmp4[5], r11 = tmp4[7], r12 = tmp4[4], lr = tmp4[8] -+ -+ Free registers: -+ r0, r5, r6, r8, r9 -+ */ -+ ld.d r8, pc[ scale_sdctII - . + 4*2] /* r8 = { scale[6], scale[7] }, r9 = { scale[4], scale[5]} */ -+ ldm sp++, r1, r2, r3, r4, r7, r10, r11, r12, lr -+ mov r5, MAD_F(0x02c9fad7) /* r3 = scale[8] */ -+ mulsatrndwh.w r5/*tmp3[8]*/, lr, r5:b -+ mulsatrndwh.w lr/*tmp3[6]*/, r7, r8:t -+ ld.d r6, pc[ scale_sdctII - . + 0*2] /* r6 = { scale[2], scale[3] }, r7 = { scale[0], scale[1]} */ -+ lsl lr, 1 -+ lsl r5, 1 -+ mulsatrndwh.w r0/*tmp3[2]*/, r2, r6:t -+ mulsatrndwh.w r1/*tmp3[3]*/, r1, r6:b -+ mulsatrndwh.w r6/*tmp3[0]*/, r4, r7:t -+ mulsatrndwh.w r7/*tmp3[1]*/, r3, r7:b -+ mulsatrndwh.w r3/*tmp3[5]*/, r10, r9:b -+ mulsatrndwh.w r2/*tmp3[4]*/, r12, r9:t -+ mulsatrndwh.w r9/*tmp3[7]*/, r11, r8:b -+ lsl r1, 1 -+ lsl r7, 1 -+ -+ -+ /* fastdct */ -+ -+/* -+ { -+ mad_fixed_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; -+ mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25; -+ mad_fixed_t m0, m1, m2, m3, m4, m5, m6, m7; -+*/ -+// enum { -+// c0 = MAD_F(0x1f838b8d), /* 2 * cos( 1 * PI / 18) */ -+// c1 = MAD_F(0x1bb67ae8), /* 2 * cos( 3 * PI / 18) */ -+// c2 = MAD_F(0x18836fa3), /* 2 * cos( 4 * PI / 18) */ -+// c3 = MAD_F(0x1491b752), /* 2 * cos( 5 * PI / 18) */ -+// c4 = MAD_F(0x0af1d43a), /* 2 * cos( 7 * PI / 18) */ -+// c5 = MAD_F(0x058e86a0), /* 2 * cos( 8 * PI / 18) */ -+// c6 = -MAD_F(0x1e11f642) /* 2 * cos(16 * PI / 18) */ -+// }; -+ -+ /* Registers used: -+ -+ r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r9=tmp3[7], lr=tmp3[6] -+ Free registers: -+ r4, r8, r10, r11, r12 -+ */ -+ -+/* -+ a2 = tmp3[6] + (tmp3[2] << 1); -+ a6 = tmp3[8] + (tmp3[0] << 1); -+ a11 = a2 - a6; -+ m5 = mad_f_mul(a11, c6) ; -+ a4 = tmp3[1] + (tmp3[7] << 1); -+ -+ a18 = (tmp3[4] << 1) + a4; -+ a19 = -2 * (tmp3[4] << 1) + a4; -+ -+ a0 = tmp3[3] + (tmp3[5] << 1); -+ -+*/ -+ add r11/*a4*/, r7, r9 << 1 -+ add r12/*a18*/, r11, r2 << 1 -+ sub r11/*a19*/, r11, r2 << 2 -+ -+ add r4/*a2*/, lr, r0 << 1 -+ add r8/*a6*/, r5, r6 << 1 -+ sub r10/*a11*/, r4, r8 -+ -+ st.d --sp, r0 /* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/ -+ -+ mov r2, -MAD_F(0x1e11f642) -+ mulsatrndwh.w r10/*m5*/, r10, r2:b -+ -+ add r2/*a0*/, r1, r3 << 1 -+ -+ /* Registers used: -+ -+ r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r8=a6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6] -+ Free registers: -+ r0, r1 -+ */ -+ -+/* -+ a8 = a0 + a2; -+ a12 = a8 + a6; -+ a10 = a0 - a6; -+ a9 = a0 - a2; -+ m7 = mad_f_mul(a9, -c2) ; -+ m6 = mad_f_mul(a10, -c5) ; -+*/ -+ -+ add r0/*a8*/, r2, r4 -+ add r0/*a12*/, r8 -+ rsub r8/*a10*/, r2 -+ sub r2/*a9*/, r4 -+ mov r1, -MAD_F(0x18836fa3) -+ mulsatrndwh.w r2/*m7*/, r2, r1:b -+ mov r1, -MAD_F(0x058e86a0) -+ mulsatrndwh.w r8/*m6*/, r8, r1:b -+ -+ /* Registers used: -+ -+ r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r8=m6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6] -+ Free registers: -+ r1, r4 -+ */ -+ -+ -+/* -+ a21 = -a19 + (m5 << 1); -+ tmp[ 9] = a21 - (m6 << 1); -+ -+ a20 = -(-a19 - (m5 << 1)); -+ tmp[ 5] = (m7 << 1) + a20; -+ a22 = -a19 + (m6 << 1); -+ tmp[17] = a22 + (m7 << 1); -+ tmp[ 1] = a18 + a12; -+ tmp[13] = a12 - 2 * a18; -+*/ -+ sub r1/*a21*/, r11, r10 << 1 -+ neg r1 -+ sub r1/*tmp[9]*/, r1, r8 << 1 -+ stdsp sp[4*2/*tmp3[..] on the stack*/ + 9*4], r1 -+ add r4/*a20*/, r11, r10 << 1 -+ add r4/*tmp[5]*/, r4, r2 << 1 -+ stdsp sp[4*2/*tmp3[..] on the stack*/ + 5*4], r4 -+ neg r11 -+ add r1/*a22*/, r11, r8 << 1 -+ add r1/*tmp[17]*/, r1, r2 << 1 -+ stdsp sp[4*2/*tmp3[..] on the stack*/ + 17*4], r1 -+ add r4, r12, r0 -+ sub r1, r0, r12 << 1 -+ stdsp sp[4*2/*tmp3[..] on the stack*/ + 1*4], r4 -+ stdsp sp[4*2/*tmp3[..] on the stack*/ + 13*4], r1 -+ -+ ld.d r0, sp++ -+ -+ /* Registers used: -+ -+ r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0], -+ r7 = tmp3[1], r9=tmp3[7], r11=a19, lr=tmp3[6] -+ Free registers: -+ r2,r4,r8,r10,r12 -+ */ -+ -+/* -+ a5 = tmp3[1] - (tmp3[7] << 1); -+ a7 = tmp3[8] - (tmp3[0] << 1); -+ a3 = tmp3[6] - (tmp3[2] << 1); -+ a1 = tmp3[3] - (tmp3[5] << 1); -+ a13 = a1 - a3; -+ a14 = a13 + a7; -+ m3 = mad_f_mul(a14, -c1) ; -+ m4 = mad_f_mul(a5, -c1) ; -+ tmp[ 7] = m3 << 1; -+*/ -+ sub r7/*a5*/, r7, r9 << 1 -+ sub r2/*a7*/, r5, r6 << 1 -+ sub r4/*a3*/, lr, r0 << 1 -+ sub r8/*a1*/, r1, r3 << 1 -+ sub r10/*a13*/, r8, r4 -+ add r12/*a14*/, r10, r2 -+ mov r0, -MAD_F(0x1bb67ae8) -+ mulsatrndwh.w r12/*m3*/, r12, r0:b -+ mulsatrndwh.w r7/*m4*/, r7, r0:b -+ lsl r12, 1 -+ stdsp sp[7*4], r12 -+ -+ /* Registers used: -+ r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3 -+ -+ Free registers: -+ r0, r1, r3, r5, r6, r9, r10, r11, lr -+ */ -+ -+ -+/* -+ a15 = a3 + a7; -+ m2 = mad_f_mul(a15, -c4) ; -+ a17 = a1 + a3; -+ m0 = mad_f_mul(a17, -c3) ; -+ a23 = (m4 << 1) + (m2 << 1); -+ tmp[15] = a23 + (m0 << 1); */ -+ add r0/*a15*/, r4, r2 -+ mov r1, -MAD_F(0x0af1d43a) -+ mulsatrndwh.w r0/*m2*/, r0, r1:b -+ mov r3, -MAD_F(0x1491b752) -+ add r5/*a17*/, r8, r4 -+ mulsatrndwh.w r5/*m0*/, r5, r3:b -+ lsl r7, 1 -+ add r6/*a23*/, r7, r0 << 1 -+ add r6/*tmp[15]*/, r6, r5 << 1 -+ stdsp sp[15*4], r6 -+ -+ /* Registers used: -+ r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1 -+ -+ Free registers: -+ r1, r3, r4, r6, r9, r10, r11, lr -+ */ -+ -+/* -+ a16 = a1 - a7; -+ m1 = mad_f_mul(a16, -c0) ; -+ a24 = (m4 << 1) - (m2 << 1); -+ tmp[11] = a24 - (m1 << 1); -+ -+ a25 = (m4 << 1) + (m1 << 1); -+ tmp[ 3] = (m0 << 1) - a25; -+*/ -+ sub r3/*a16*/, r8, r2 -+ mov r4, -MAD_F(0x1f838b8d) -+ mulsatrndwh.w r3/*m1*/, r3, r4:b -+ sub r1/*a24*/, r7, r0 << 1 -+ sub r1/*tmp[11]*/, r1, r3 << 1 -+ stdsp sp[11*4], r1 -+ add r7/*a25*/, r7, r3 << 1 -+ sub r7, r7, r5 << 1 -+ neg r7 -+ lddsp r12, sp[4*18+4] /* Get y from stack */ -+ stdsp sp[3*4], r7 -+ -+ -+ /* output to every other slot for convenience */ -+ -+ /* End fastdct */ -+ -+ /* output accumulation */ -+ -+/* for (i = 3; i < 18; i += 8) { -+ tmp[i + 0] -= tmp[(i + 0) - 2]; -+ tmp[i + 2] -= tmp[(i + 2) - 2]; -+ tmp[i + 4] -= tmp[(i + 4) - 2]; -+ tmp[i + 6] -= tmp[(i + 6) - 2]; -+ } -+ } -+*/ -+ -+/* End SDCT-II */ -+ -+ -+ -+ /* scale reduction and output accumulation */ -+ -+/* -+ for (i = 1; i < 17; i += 4) { -+ tmp[i + 0] = tmp[i + 0] - tmp[(i + 0) - 1]; -+ tmp[i + 1] = tmp[i + 1] - tmp[(i + 1) - 1]; -+ tmp[i + 2] = tmp[i + 2] - tmp[(i + 2) - 1]; -+ tmp[i + 3] = tmp[i + 3] - tmp[(i + 3) - 1]; -+ } -+ tmp[17] = tmp[17] - tmp[16]; -+ } -+*/ -+/* End DCT-IV */ -+ -+ -+ /* convert 18-point DCT-IV to 36-point IMDCT */ -+ -+/* -+ for (i = 0; i < 9; i += 3) { -+ y[i + 0] = tmp[9 + (i + 0)]; -+ y[i + 1] = tmp[9 + (i + 1)]; -+ y[i + 2] = tmp[9 + (i + 2)]; -+ } -+ for (i = 9; i < 27; i += 3) { -+ y[i + 0] = -tmp[36 - (9 + (i + 0)) - 1]; -+ y[i + 1] = -tmp[36 - (9 + (i + 1)) - 1]; -+ y[i + 2] = -tmp[36 - (9 + (i + 2)) - 1]; -+ } -+ for (i = 27; i < 36; i += 3) { -+ y[i + 0] = -tmp[(i + 0) - 27]; -+ y[i + 1] = -tmp[(i + 1) - 27]; -+ y[i + 2] = -tmp[(i + 2) - 27]; -+ } -+ } -+*/ -+ -+ /* Registers used: -+ r0 = tmp[8], r1 = tmp[7], r2 = tmp[6], r3 = tmp[5], r4 = tmp[4] -+ r5 = tmp[3], r6 = tmp[2], r7 = tmp[1], r8 = tmp[0], r12 = y -+ -+ Free registers: -+ r9, r10, r11, lr -+ */ -+ -+ ldm sp++, r0-r8 /* Get tmp[0]-tmp[8] from stack */ -+ sub r5, r7 /* tmp[3] -= tmp[1]*/ -+ sub r3, r5 /* tmp[5] -= tmp[3]*/ -+ sub r1, r3 /* tmp[7] -= tmp[5]*/ -+ -+ sub r7, r8 /* tmp[1] -= tmp[0]*/ -+ sub r6, r7 /* tmp[2] -= tmp[1]*/ -+ sub r5, r6 /* tmp[3] -= tmp[2]*/ -+ neg r8 -+ st.w r12[26*4], r8 /* y[26] = -tmp[0] */ -+ st.w r12[27*4], r8 /* y[27] = -tmp[0] */ -+ neg r7 -+ neg r6 -+ st.w r12[25*4], r7 /* y[25] = -tmp[1] */ -+ st.w r12[24*4], r6 /* y[24] = -tmp[2] */ -+ st.d r12[28*4], r6 /* y[28] = -tmp[1], y[29] = -tmp[2]*/ -+ -+ sub r4, r5 /* tmp[4] -= tmp[3]*/ -+ sub r3, r4 /* tmp[5] -= tmp[4]*/ -+ neg r5 -+ neg r4 -+ st.w r12[23*4], r5 /* y[23] = -tmp[3] */ -+ st.w r12[22*4], r4 /* y[22] = -tmp[4] */ -+ st.d r12[30*4], r4 /* y[30] = -tmp[3], y[31] = -tmp[4]*/ -+ -+ ldm sp++, r4-r11,lr /* Get tmp[9]-tmp[17] from stack */ -+ -+ sub r2, r3 /* tmp[6] -= tmp[5]*/ -+ -+ sub lr, r1 /* tmp[9] -= tmp[7]*/ -+ sub r10, lr /* tmp[11] -= tmp[9]*/ -+ sub r8, r10 /* tmp[13] -= tmp[11]*/ -+ sub r6, r8 /* tmp[15] -= tmp[13]*/ -+ sub r4, r6 /* tmp[17] -= tmp[15]*/ -+ -+ sub r1, r2 /* tmp[7] -= tmp[6]*/ -+ sub r0, r1 /* tmp[8] -= tmp[7]*/ -+ neg r3 -+ neg r2 -+ st.w r12[21*4], r3 /* y[21] = -tmp[5] */ -+ st.w r12[20*4], r2 /* y[20] = -tmp[6] */ -+ st.d r12[32*4], r2 /* y[32] = -tmp[5], y[33] = -tmp[6]*/ -+ -+ sub lr, r0 /* tmp[9] -= tmp[8]*/ -+ sub r11, lr /* tmp[10] -= tmp[9]*/ -+ neg r1 -+ neg r0 -+ st.w r12[19*4], r1 /* y[19] = -tmp[7] */ -+ st.w r12[18*4], r0 /* y[18] = -tmp[8] */ -+ st.d r12[34*4], r0 /* y[34] = -tmp[7], y[35] = -tmp[8]*/ -+ -+ sub r10, r11 /* tmp[11] -= tmp[10]*/ -+ sub r9, r10 /* tmp[12] -= tmp[11]*/ -+ -+ st.w r12[0*4], lr /* y[0] = tmp[9]*/ -+ neg lr -+ st.w r12[17*4], lr /* y[17] = -tmp[9]*/ -+ st.d r12[1*4], r10 /* y[1] = tmp[10], y[2] = tmp[11] */ -+ neg r11 -+ neg r10 -+ st.w r12[16*4], r11 /* y[16] = -tmp[10] */ -+ st.w r12[15*4], r10 /* y[15] = -tmp[11] */ -+ -+ -+ sub r8, r9 /* tmp[13] -= tmp[12]*/ -+ sub r7, r8 /* tmp[14] -= tmp[13]*/ -+ st.d r12[3*4], r8 /* y[3] = tmp[12], y[4] = tmp[13] */ -+ neg r9 -+ neg r8 -+ st.w r12[14*4], r9 /* y[14] = -tmp[12] */ -+ st.w r12[13*4], r8 /* y[13] = -tmp[13] */ -+ -+ sub r6, r7 /* tmp[15] -= tmp[14]*/ -+ sub r5, r6 /* tmp[16] -= tmp[15]*/ -+ sub r4, r5 /* tmp[17] -= tmp[16]*/ -+ -+ st.d r12[5*4], r6 /* y[5] = tmp[14], y[6] = tmp[15] */ -+ neg r7 -+ neg r6 -+ st.w r12[12*4], r7 /* y[12] = -tmp[14] */ -+ st.w r12[11*4], r6 /* y[11] = -tmp[15] */ -+ -+ st.d r12[7*4], r4 /* y[7] = tmp[16], y[8] = tmp[17] */ -+ neg r5 -+ neg r4 -+ st.w r12[10*4], r5 /* y[10] = -tmp[16] */ -+ st.w r12[9*4], r4 /* y[9] = -tmp[17] */ -+ -+ popm r0-r7,r11,pc -+ -+ .align 2 -+scale_dctIV: -+ .short MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120) -+ .short MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b) -+ .short MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4) -+ .short MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3) -+ .short MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5) -+ .short MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c) -+ -+ .align 2 -+scale_sdctII: -+ .short MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930) -+ .short MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8) -+ .short MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7) -diff --git a/layer3.c b/layer3.c -index 4e5d3fa..dffdab3 100644 ---- a/layer3.c -+++ b/layer3.c -@@ -378,6 +378,11 @@ mad_fixed_t const ca[8] = { - -MAD_F(0x003a2847) /* -0.014198569 */, -MAD_F(0x000f27b4) /* -0.003699975 */ - }; - -+#ifdef FPM_AVR32 -+# undef MAD_F -+# define MAD_F(x) ((x + (1 << 12)) >> 13) -+#endif -+ - /* - * IMDCT coefficients for short blocks - * derived from section 2.4.3.4.10.2 of ISO/IEC 11172-3 -@@ -386,7 +391,7 @@ mad_fixed_t const ca[8] = { - * imdct_s[i /odd][k] = cos((PI / 24) * (2 * (6 + (i-1)/2) + 7) * (2 * k + 1)) - */ - static --mad_fixed_t const imdct_s[6][6] = { -+mad_coeff_t const imdct_s[6][6] = { - # include "imdct_s.dat" - }; - -@@ -398,7 +403,7 @@ mad_fixed_t const imdct_s[6][6] = { - * window_l[i] = sin((PI / 36) * (i + 1/2)) - */ - static --mad_fixed_t const window_l[36] = { -+mad_coeff_t const window_l[36] = { - MAD_F(0x00b2aa3e) /* 0.043619387 */, MAD_F(0x0216a2a2) /* 0.130526192 */, - MAD_F(0x03768962) /* 0.216439614 */, MAD_F(0x04cfb0e2) /* 0.300705800 */, - MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x07635284) /* 0.461748613 */, -@@ -429,7 +434,7 @@ mad_fixed_t const window_l[36] = { - * window_s[i] = sin((PI / 12) * (i + 1/2)) - */ - static --mad_fixed_t const window_s[12] = { -+mad_coeff_t const window_s[12] = { - MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x061f78aa) /* 0.382683432 */, - MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0cb19346) /* 0.793353340 */, - MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0fdcf549) /* 0.991444861 */, -@@ -438,6 +443,11 @@ mad_fixed_t const window_s[12] = { - MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x0216a2a2) /* 0.130526192 */, - }; - -+#ifdef FPM_AVR32 -+# undef MAD_F -+# define MAD_F(x) ((mad_fixed_t) (x##L)) -+#endif -+ - /* - * coefficients for intensity stereo processing - * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3 -@@ -879,6 +889,42 @@ void III_exponents(struct channel const *channel, - * NAME: III_requantize() - * DESCRIPTION: requantize one (positive) value - */ -+ -+#if 0 -+/*static*/ -+mad_fixed_t III_requantize(unsigned int value, signed int exp) -+{ -+ register mad_fixed_t tmp2, tmp3; -+ long long tmp_d; -+ -+ asm ("asr\t%0, %1, 2\n" -+ "ld.w\t%2, %4[%5 << 2]\n" -+ "sub\t%1, %1, %0 << 2\n" -+ "asr\t%3, %2, 7\n" -+ "andl\t%2, 0x7f, COH\n" -+ "add\t%0, %2\n" -+ "lsl\t%m0,%3,%0\n" -+ "neg\t%0\n" -+ "asr\t%3,%3,%0\n" -+ "add\t%2, %6, %1 << 2\n" -+ "ld.w\t%2, %2[12]\n" -+ "cp.w\t%0, 0\n" -+ "movlt\t%3, %m0\n" -+ "muls.d\t%0, %3, %2\n" -+ "cp.w\t%1, 0\n" -+ "breq\t0f\n" -+ "lsr\t%0, %0, 28\n" -+ "or\t%3, %0, %m0 << 4\n" -+ "0:\n" -+ : "=&r"(tmp_d), "+r"(exp), "=&r"(tmp2), "=&r"(tmp3) -+ : "r"(&rq_table), "r"(value), "r"(root_table)); -+ -+ -+ return tmp3; -+} -+ -+#else -+ - static - mad_fixed_t III_requantize(unsigned int value, signed int exp) - { -@@ -918,6 +964,7 @@ mad_fixed_t III_requantize(unsigned int value, signed int exp) - - return frac ? mad_f_mul(requantized, root_table[3 + frac]) : requantized; - } -+#endif - - /* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */ - # define MASK(cache, sz, bits) \ -@@ -2054,27 +2101,42 @@ void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36]) - } - # endif - -+ -+#ifdef FPM_AVR32 -+# undef mad_f_mul -+# define mad_f_mul(x, y) __builtin_mulsatrndwh_w(x, y) -+#endif -+ - /* - * NAME: III_imdct_l() - * DESCRIPTION: perform IMDCT and windowing for long blocks - */ - static --void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], -+void III_imdct_l(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36], - unsigned int block_type) - { - unsigned int i; -+ mad_fixed_t *z_ptr; -+ mad_coeff_t *w_ptr; - - /* IMDCT */ - -+#ifdef FPM_AVR32 -+ imdct36_avr32(X, z); -+#else - imdct36(X, z); -+#endif - - /* windowing */ - -+ z_ptr = &z[0]; -+ w_ptr = &window_l[0]; -+ - switch (block_type) { - case 0: /* normal window */ - # if defined(ASO_INTERLEAVE1) - { -- register mad_fixed_t tmp1, tmp2; -+ register mad_coeff_t tmp1, tmp2; - - tmp1 = window_l[0]; - tmp2 = window_l[1]; -@@ -2091,15 +2153,16 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], - } - # elif defined(ASO_INTERLEAVE2) - { -- register mad_fixed_t tmp1, tmp2; -+ register mad_fixed_t tmp1; -+ register mad_coeff_t tmp2; - -- tmp1 = z[0]; -- tmp2 = window_l[0]; -+ tmp1 = *z_ptr; -+ tmp2 = *w_ptr++; - - for (i = 0; i < 35; ++i) { -- z[i] = mad_f_mul(tmp1, tmp2); -- tmp1 = z[i + 1]; -- tmp2 = window_l[i + 1]; -+ *z_ptr++ = mad_f_mul(tmp1, tmp2); -+ tmp1 = *z_ptr; -+ tmp2 = *w_ptr++; - } - - z[35] = mad_f_mul(tmp1, tmp2); -@@ -2118,23 +2181,28 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], - - case 1: /* start block */ - for (i = 0; i < 18; i += 3) { -- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]); -- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]); -- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]); -+ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); -+ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); -+ *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++); - } -+ z_ptr += 6; -+ w_ptr = &window_s[6]; - /* (i = 18; i < 24; ++i) z[i] unchanged */ -- for (i = 24; i < 30; ++i) z[i] = mad_f_mul(z[i], window_s[i - 18]); -- for (i = 30; i < 36; ++i) z[i] = 0; -+ for (i = 24; i < 30; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); -+ for (i = 30; i < 36; ++i) *z_ptr++ = 0; - break; - - case 3: /* stop block */ -- for (i = 0; i < 6; ++i) z[i] = 0; -- for (i = 6; i < 12; ++i) z[i] = mad_f_mul(z[i], window_s[i - 6]); -+ w_ptr = &window_s[0]; -+ for (i = 0; i < 6; ++i) *z_ptr++ = 0; -+ for (i = 6; i < 12; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); - /* (i = 12; i < 18; ++i) z[i] unchanged */ -+ w_ptr = &window_l[18]; -+ z_ptr += 6; - for (i = 18; i < 36; i += 3) { -- z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]); -- z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]); -- z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]); -+ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++ ); -+ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); -+ *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++); - } - break; - } -@@ -2146,10 +2214,10 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36], - * DESCRIPTION: perform IMDCT and windowing for short blocks - */ - static --void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) -+void III_imdct_s(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36]) - { - mad_fixed_t y[36], *yptr; -- mad_fixed_t const *wptr; -+ mad_coeff_t const *wptr; - int w, i; - register mad_fixed64hi_t hi; - register mad_fixed64lo_t lo; -@@ -2159,11 +2227,56 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) - yptr = &y[0]; - - for (w = 0; w < 3; ++w) { -- register mad_fixed_t const (*s)[6]; -+ register mad_coeff_t const (*s)[6]; - - s = imdct_s; - - for (i = 0; i < 3; ++i) { -+#ifdef FPM_AVR32 -+ register long long int acc, tmp1, tmp2, tmp3, tmp4; -+ asm volatile ("ld.d\t%0, %5++\n" -+ "ld.d\t%1, %6[0]\n" -+ "ld.d\t%2, %6[2*4]\n" -+ "ld.d\t%3, %6[4*4]\n" -+ "mulwh.d\t%4, %m1, %m0:t\n" -+ "macwh.d\t%4, %1, %m0:b\n" -+ "ld.w\t%m0, %5++\n" -+ "macwh.d\t%4, %m2, %0:t\n" -+ "macwh.d\t%4, %2, %0:b\n" -+ "macwh.d\t%4, %m3, %m0:t\n" -+ "macwh.d\t%4, %3, %m0:b\n" -+ "ld.d\t%0, %5++\n" -+ "rol\t%4\n" -+ "rol\t%m4\n" -+ : "=&r"(tmp1), "=&r"(tmp2), "=&r"(tmp3), "=&r"(tmp4), -+ "=&r"(acc), "+r"(s) -+ : "r"(X)); -+ -+ asm volatile ("st.w\t%1[0], %m0\n" -+ "neg\t%m0\n" -+ "st.w\t%2[5*4], %m0\n" -+ : "+r"(acc) -+ : "r"(&yptr[i]), "r"(&yptr[-i])); -+ -+ asm volatile ("mulwh.d\t%4, %m1, %m0:t\n" -+ "macwh.d\t%4, %1, %m0:b\n" -+ "ld.w\t%m0, %5++\n" -+ "macwh.d\t%4, %m2, %0:t\n" -+ "macwh.d\t%4, %2, %0:b\n" -+ "macwh.d\t%4, %m3, %m0:t\n" -+ "macwh.d\t%4, %3, %m0:b\n" -+ "rol\t%4\n" -+ "rol\t%m4\n" -+ : "+r"(tmp1), "+r"(tmp2), "+r"(tmp3), "+r"(tmp4), -+ "=&r"(acc), "+r"(s) -+ : "r"(X)); -+ -+ asm volatile ( "st.w\t%1[6*4], %m0\n" -+ "st.w\t%2[11*4], %m0\n" -+ :: "r"(acc), "r"(&yptr[i]), "r"(&yptr[-i])); -+ -+ -+#else - MAD_F_ML0(hi, lo, X[0], (*s)[0]); - MAD_F_MLA(hi, lo, X[1], (*s)[1]); - MAD_F_MLA(hi, lo, X[2], (*s)[2]); -@@ -2187,6 +2300,7 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) - yptr[11 - i] = yptr[i + 6]; - - ++s; -+#endif - } - - yptr += 12; -@@ -2198,6 +2312,196 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) - yptr = &y[0]; - wptr = &window_s[0]; - -+#ifdef FPM_AVR32 -+ /* z[0] = 0; -+ z[1] = 0; -+ z[2] = 0; -+ z[3] = 0; -+ z[4] = 0; -+ z[5] = 0; -+ z[30] = 0; -+ z[31] = 0; -+ z[32] = 0; -+ z[33] = 0; -+ z[34] = 0; -+ z[35] = 0; -+ */ -+ { -+ register long long int tmp, tmp2, tmp3, w0123, w4567, w891011; -+ asm volatile ("mov\t%m0, 0\n" -+ "mov\t%0, %m0\n" -+ "st.d\t%1[0], %0\n" -+ "st.d\t%1[2*4], %0\n" -+ "st.d\t%1[4*4], %0\n" -+ "st.d\t%1[30*4], %0\n" -+ "st.d\t%1[32*4], %0\n" -+ "st.d\t%1[34*4], %0\n" -+ : "=&r"(tmp) : "r"(z)); -+ -+ -+ -+ /* -+ z[6] = mad_f_mul(yptr [0], wptr[0]); -+ z[7] = mad_f_mul(yptr [1], wptr[1]); -+ z[8] = mad_f_mul(yptr [2], wptr[2]); -+ z[9] = mad_f_mul(yptr [3], wptr[3]); -+ z[10] = mad_f_mul(yptr[4], wptr[4]); -+ z[11] = mad_f_mul(yptr[5], wptr[5]); -+ z[24] = mad_f_mul(yptr [30], wptr[6]); -+ z[25] = mad_f_mul(yptr [31], wptr[7]); -+ z[26] = mad_f_mul(yptr [32], wptr[8]); -+ z[27] = mad_f_mul(yptr [33], wptr[9]); -+ z[28] = mad_f_mul(yptr[34], wptr[10]); -+ z[29] = mad_f_mul(yptr[35], wptr[11]); -+ */ -+ -+ -+ asm volatile ("ld.d\t%0, %5[0*4]\n" -+ "ld.d\t%3, %6[0*4]\n" -+ "ld.d\t%1, %5[2*4]\n" -+ "ld.d\t%2, %5[4*4]\n" -+ "mulsatrndwh.w\t%m3, %m3, %m0:t\n" -+ "mulsatrndwh.w\t%3, %3, %m0:b\n" -+ "ld.d\t%4, %6[2*4]\n" -+ "st.d\t%7[6*4], %3\n" -+ -+ "mulsatrndwh.w\t%m4, %m4, %0:t\n" -+ "mulsatrndwh.w\t%4, %4, %0:b\n" -+ "ld.d\t%3, %6[4*4]\n" -+ "st.d\t%7[8*4], %4\n" -+ -+ "mulsatrndwh.w\t%m3, %m3, %m1:t\n" -+ "mulsatrndwh.w\t%3, %3, %m1:b\n" -+ "ld.d\t%4, %6[30*4]\n" -+ "st.d\t%7[10*4], %3\n" -+ -+ "mulsatrndwh.w\t%m4, %m4, %1:t\n" -+ "mulsatrndwh.w\t%4, %4, %1:b\n" -+ "ld.d\t%3, %6[32*4]\n" -+ "st.d\t%7[24*4], %4\n" -+ -+ "mulsatrndwh.w\t%m3, %m3, %m2:t\n" -+ "mulsatrndwh.w\t%3, %3, %m2:b\n" -+ "ld.d\t%4, %6[34*4]\n" -+ "st.d\t%7[26*4], %3\n" -+ -+ "mulsatrndwh.w\t%m4, %m4, %2:t\n" -+ "mulsatrndwh.w\t%4, %4, %2:b\n" -+ "st.d\t%7[28*4], %4\n" -+ -+ : "=&r"(w0123), "=&r"(w4567), "=&r"(w891011), "=&r"(tmp), "=&r"(tmp2) -+ : "r"(wptr), "r"(yptr), "r"(z)); -+ /* -+ MAD_F_ML0(hi, lo, yptr[6], wptr[6]); -+ MAD_F_MLA(hi, lo, yptr[12], wptr[0]); -+ z[12] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[7], wptr[7]); -+ MAD_F_MLA(hi, lo, yptr[13], wptr[1]); -+ z[13] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[8], wptr[8]); -+ MAD_F_MLA(hi, lo, yptr[14], wptr[2]); -+ z[14] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[9], wptr[9]); -+ MAD_F_MLA(hi, lo, yptr[15], wptr[3]); -+ z[15] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[10], wptr[10]); -+ MAD_F_MLA(hi, lo, yptr[16], wptr[4]); -+ z[16] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[11], wptr[11]); -+ MAD_F_MLA(hi, lo, yptr[17], wptr[5]); -+ z[17] = MAD_F_MLZ(hi, lo); -+ -+ MAD_F_ML0(hi, lo, yptr[18], wptr[6]); -+ MAD_F_MLA(hi, lo, yptr[24], wptr[0]); -+ z[18] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[19], wptr[7]); -+ MAD_F_MLA(hi, lo, yptr[25], wptr[1]); -+ z[19] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[20], wptr[8]); -+ MAD_F_MLA(hi, lo, yptr[26], wptr[2]); -+ z[20] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[21], wptr[9]); -+ MAD_F_MLA(hi, lo, yptr[27], wptr[3]); -+ z[21] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[22], wptr[10]); -+ MAD_F_MLA(hi, lo, yptr[28], wptr[4]); -+ z[22] = MAD_F_MLZ(hi, lo); -+ MAD_F_ML0(hi, lo, yptr[23], wptr[11]); -+ MAD_F_MLA(hi, lo, yptr[29], wptr[5]); -+ z[23] = MAD_F_MLZ(hi, lo);*/ -+ -+ -+ asm volatile ("ld.d\t%0, %3[6*4]\n" -+ "ld.d\t%1, %3[12*4]\n" -+ "mulwh.d\t%2, %m0, %5:t\n" -+ "macwh.d\t%2, %m1, %m4:t\n" -+ "mulwh.d\t%0, %0, %5:b\n" -+ "macwh.d\t%0, %1, %m4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[12*4], %2\n" -+ -+ "ld.d\t%0, %3[18*4]\n" -+ "ld.d\t%1, %3[24*4]\n" -+ "mulwh.d\t%2, %m0, %5:t\n" -+ "macwh.d\t%2, %m1, %m4:t\n" -+ "mulwh.d\t%0, %0, %5:b\n" -+ "macwh.d\t%0, %1, %m4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[18*4], %2\n" -+ -+ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) -+ : "r"(yptr), "r"(w0123), "r"(w4567), "r"(z)); -+ -+ asm volatile ("ld.d\t%0, %3[8*4]\n" -+ "ld.d\t%1, %3[14*4]\n" -+ "mulwh.d\t%2, %m0, %m5:t\n" -+ "macwh.d\t%2, %m1, %4:t\n" -+ "mulwh.d\t%0, %0, %m5:b\n" -+ "macwh.d\t%0, %1, %4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[14*4], %2\n" -+ -+ "ld.d\t%0, %3[20*4]\n" -+ "ld.d\t%1, %3[26*4]\n" -+ "mulwh.d\t%2, %m0, %m5:t\n" -+ "macwh.d\t%2, %m1, %4:t\n" -+ "mulwh.d\t%0, %0, %m5:b\n" -+ "macwh.d\t%0, %1, %4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[20*4], %2\n" -+ -+ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) -+ : "r"(yptr), "r"(w0123), "r"(w891011), "r"(z)); -+ -+ asm volatile ("ld.d\t%0, %3[10*4]\n" -+ "ld.d\t%1, %3[16*4]\n" -+ "mulwh.d\t%2, %m0, %5:t\n" -+ "macwh.d\t%2, %m1, %m4:t\n" -+ "mulwh.d\t%0, %0, %5:b\n" -+ "macwh.d\t%0, %1, %m4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[16*4], %2\n" -+ -+ "ld.d\t%0, %3[22*4]\n" -+ "ld.d\t%1, %3[28*4]\n" -+ "mulwh.d\t%2, %m0, %5:t\n" -+ "macwh.d\t%2, %m1, %m4:t\n" -+ "mulwh.d\t%0, %0, %5:b\n" -+ "macwh.d\t%0, %1, %m4:b\n" -+ "lsl\t%m2, 1\n" -+ "lsl\t%2, %m0, 1\n" -+ "st.d\t%6[22*4], %2\n" -+ -+ : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3) -+ : "r"(yptr), "r"(w4567), "r"(w891011), "r"(z)); -+ -+ } -+#else - for (i = 0; i < 6; ++i) { - z[i + 0] = 0; - z[i + 6] = mad_f_mul(yptr[ 0 + 0], wptr[0]); -@@ -2218,8 +2522,15 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]) - ++yptr; - ++wptr; - } -+#endif - } - -+#ifdef FPM_AVR32 -+# undef mad_f_mul -+# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ -+ (((y) + (1L << 15)) >> 16)) -+#endif -+ - /* - * NAME: III_overlap() - * DESCRIPTION: perform overlap-add of windowed IMDCT outputs -diff --git a/synth.c b/synth.c -index 1d28d43..f42d49b 100644 ---- a/synth.c -+++ b/synth.c -@@ -29,20 +29,6 @@ - # include "frame.h" - # include "synth.h" - --/* -- * NAME: synth->init() -- * DESCRIPTION: initialize synth struct -- */ --void mad_synth_init(struct mad_synth *synth) --{ -- mad_synth_mute(synth); -- -- synth->phase = 0; -- -- synth->pcm.samplerate = 0; -- synth->pcm.channels = 0; -- synth->pcm.length = 0; --} - - /* - * NAME: synth->mute() -@@ -88,6 +74,10 @@ void mad_synth_mute(struct mad_synth *synth) - - /* FPM_DEFAULT without OPT_SSO will actually lose accuracy and performance */ - -+# if defined(FPM_AVR32) -+# define OPT_SSO -+# endif -+ - # if defined(FPM_DEFAULT) && !defined(OPT_SSO) - # define OPT_SSO - # endif -@@ -522,9 +512,15 @@ void dct32(mad_fixed_t const in[32], unsigned int slot, - # endif - # define ML0(hi, lo, x, y) ((lo) = (x) * (y)) - # define MLA(hi, lo, x, y) ((lo) += (x) * (y)) --# define MLN(hi, lo) ((lo) = -(lo)) --# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) --# define SHIFT(x) ((x) >> 2) -+# if defined(FPM_AVR32) -+# define MLN(hi, lo) MAD_F_MLN((hi), (lo)) -+# define MLZ(hi, lo) (hi) -+# define SHIFT(x) ((x) << 2) -+# else -+# define MLN(hi, lo) ((lo) = -(lo)) -+# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) -+# define SHIFT(x) ((x) >> 2) -+# endif - # define PRESHIFT(x) ((MAD_F(x) + (1L << 13)) >> 14) - # else - # define ML0(hi, lo, x, y) MAD_F_ML0((hi), (lo), (x), (y)) -@@ -541,11 +537,54 @@ void dct32(mad_fixed_t const in[32], unsigned int slot, - # endif - # endif - -+/* -+ * NAME: synth->init() -+ * DESCRIPTION: initialize synth struct -+ */ -+ -+#ifdef FPM_AVR32 -+short Dmod[17][33]; -+#endif -+ - static -+#ifdef FPM_AVR32 -+short const D[17][32] = { -+#else - mad_fixed_t const D[17][32] = { -+#endif - # include "D.dat" - }; - -+void mad_synth_init(struct mad_synth *synth) -+{ -+ -+ mad_synth_mute(synth); -+ -+ synth->phase = 0; -+ -+ synth->pcm.samplerate = 0; -+ synth->pcm.channels = 0; -+ synth->pcm.length = 0; -+ -+#ifdef FPM_AVR32 -+ { -+ int i, j; -+ for ( i = 0; i < 17; i++ ){ -+ for ( j = 0; j < 32; j++ ){ -+ if ( j & 1 ){ -+ Dmod[i][17 + (j >> 1)]= D[i][j]; -+ } else { -+ Dmod[i][(j >> 1)]= D[i][j]; -+ } -+ } -+ -+ Dmod[i][16]= Dmod[i][16+8]; -+ } -+ } -+#endif -+ -+} -+ - # if defined(ASO_SYNTH) - void synth_full(struct mad_synth *, struct mad_frame const *, - unsigned int, unsigned int); -@@ -560,9 +599,13 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, - { - unsigned int phase, ch, s, sb, pe, po; - mad_fixed_t *pcm1, *pcm2, (*filter)[2][2][16][8]; -- mad_fixed_t const (*sbsample)[36][32]; -+ mad_fixed_t /*const*/ (*sbsample)[36][32]; - register mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8]; -+#ifdef FPM_AVR32 -+ register short const (*Dptr)[32], *ptr; -+#else - register mad_fixed_t const (*Dptr)[32], *ptr; -+#endif - register mad_fixed64hi_t hi; - register mad_fixed64lo_t lo; - -@@ -573,6 +616,20 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, - pcm1 = synth->pcm.samples[ch]; - - for (s = 0; s < ns; ++s) { -+# ifdef FPM_AVR32 -+/* -+ int i; -+ for ( i = 0; i < 32; i++ ){ -+ (*sbsample)[s][i] = ((*sbsample)[s][i] + (1 << 13)) & 0xFFFFC000; -+ } -+*/ -+ dct32_avr32((*sbsample)[s], phase >> 1, -+ (*filter)[0][phase & 1], (*filter)[1][phase & 1]); -+ /* printf("dct32: %d\n", GET_CYCLES);*/ -+ pcm1 = synth_avr32(phase, (mad_fixed_t *)filter, \ -+ pcm1, (short *)&Dmod[0]); -+ /* printf("synth_window: %d\n", GET_CYCLES);*/ -+# else - dct32((*sbsample)[s], phase >> 1, - (*filter)[0][phase & 1], (*filter)[1][phase & 1]); - -@@ -679,6 +736,7 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame, - MLA(hi, lo, (*fo)[7], ptr[ 2]); - - *pcm1 = SHIFT(-MLZ(hi, lo)); -+# endif - pcm1 += 16; - - phase = (phase + 1) % 16; -diff --git a/synth_avr32.S b/synth_avr32.S -new file mode 100644 -index 0000000..701077b ---- /dev/null -+++ b/synth_avr32.S -@@ -0,0 +1,394 @@ -+/* -+ Optimized function for speeding up synthesis filter -+ in MPEG Audio Decoding. -+ Copyright 2003-2006 Atmel Corporation. -+ -+ Written by Ronny Pedersen and Lars Even Almås, Atmel Norway -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+ -+/* ***************** -+ Defining macros -+ ***************** */ -+ -+ .macro window_1 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi -+ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */ -+ ld.w \tmp2_lo, \ptr[0*2+\ptr_offset*2] /* tmp2_lo = { ptr[0], ptr[1] }*/ -+ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */ -+ ld.w \tmp2_hi, \ptr[6*2+\ptr_offset*2] /* tmp2_hi = { ptr[6], ptr[7] }*/ -+ .if \mul -+ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/ -+ .else -+ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[0]*/ -+ .endif -+ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[7] * ptr[1]*/ -+ ld.w \tmp2_lo, \ptr[2*2+\ptr_offset*2] /* tmp2_lo = { ptr[2], ptr[3] }*/ -+ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[1] * ptr[7]*/ -+ ld.d \tmp1_lo, \f[2*4] /* tmp1 = { f[2], f[3] } */ -+ -+ macwh.d \acc, \tmp3_hi, \tmp2_lo:t /* f[6] * ptr[2]*/ -+ macwh.d \acc, \tmp1_hi, \tmp2_hi:t /* f[2] * ptr[6]*/ -+ ld.d \tmp3_lo, \f[4*4] /* tmp3 = { f[4], f[5] } */ -+ ld.w \tmp2_hi, \ptr[4*2+\ptr_offset*2] /* tmp2_hi = { ptr[4], ptr[5] }*/ -+ macwh.d \acc, \tmp3_lo, \tmp2_lo:b /* f[5] * ptr[3]*/ -+ -+ macwh.d \acc, \tmp1_lo, \tmp2_hi:b /* f[3] * ptr[5]*/ -+ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[4] * ptr[4]*/ -+ .endm -+ -+ .macro window_2 f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi -+ ld.d \tmp1_lo, \f[0*4] /* tmp1 = { f[0], f[1] } */ -+ ld.w \tmp2_lo, \ptr[7*2+\ptr_offset*2] /* tmp2_lo = { ptr[7], ptr[8] }*/ -+ ld.d \tmp3_lo, \f[2*4] /* tmp3 = { f[2], f[3] } */ -+ ld.w \tmp2_hi, \ptr[9*2+\ptr_offset*2] /* tmp2_hi = { ptr[9], ptr[10] }*/ -+ .if \mul -+ mulwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/ -+ .else -+ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[0] * ptr[7]*/ -+ .endif -+ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[1] * ptr[8]*/ -+ -+ ld.d \tmp1_lo, \f[4*4] /* tmp1 = { f[4], f[5] } */ -+ ld.w \tmp2_lo, \ptr[11*2+\ptr_offset*2] /* tmp2_lo = { ptr[11], ptr[12] }*/ -+ -+ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[2] * ptr[9]*/ -+ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[3] * ptr[10]*/ -+ -+ ld.d \tmp3_lo, \f[6*4] /* tmp3 = { f[6], f[7] } */ -+ ld.w \tmp2_hi, \ptr[13*2+\ptr_offset*2] /* tmp2_hi = { ptr[13], ptr[14] }*/ -+ -+ macwh.d \acc, \tmp1_hi, \tmp2_lo:t /* f[4] * ptr[11]*/ -+ macwh.d \acc, \tmp1_lo, \tmp2_lo:b /* f[5] * ptr[12]*/ -+ macwh.d \acc, \tmp3_hi, \tmp2_hi:t /* f[6] * ptr[13]*/ -+ macwh.d \acc, \tmp3_lo, \tmp2_hi:b /* f[7] * ptr[14]*/ -+ .endm -+ -+ .macro scale res, d_lo, d_hi -+ lsl \d_hi, 2 -+ .endm -+ -+/* ********************** -+ Starting main function -+ ********************** */ -+ -+/* Function synth_avr32 is called from synth.c with arguments: -+ phase, filter, *pcm1, &D[0] */ -+ -+ .global synth_avr32 -+synth_avr32: -+ pushm r0-r7, lr -+ sub sp, 8 -+ -+ /* R12 = phase, R11 = filter, R10 = pcm1, r9 = D*/ -+ bld r12, 0 -+ brcc synth_even -+ -+ /* Filter for odd phases */ -+ -+ /* fe = &(*filter)[0][1][0]; -+ fx = &(*filter)[0][0][0]; -+ fo = &(*filter)[1][0][0]; */ -+ sub lr /*fe*/, r11, -16*8*4 -+ sub r8 /*fo*/, r11, -16*8*4*2 -+ -+ /* pe = phase >> 1; */ -+ lsr r12, 1 -+ stdsp sp[4], r12 -+ /* ptr = (short const *)Dmod + pe; */ -+ add r12, r9, r12 << 1 -+ -+ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fx)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fx)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fx)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fx)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fx)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fx)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */ -+ window_1 r11/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ -+ /* MLN(hi, lo); */ -+ neg r0 -+ acr r1 -+ neg r1 -+ -+ /* MLA(hi, lo, (*fe)[0], ptr[0]); -+ MLA(hi, lo, (*fe)[1], ptr[7]); -+ MLA(hi, lo, (*fe)[2], ptr[6]); -+ MLA(hi, lo, (*fe)[3], ptr[5]); -+ MLA(hi, lo, (*fe)[4], ptr[4]); -+ MLA(hi, lo, (*fe)[5], ptr[3]); -+ MLA(hi, lo, (*fe)[6], ptr[2]); -+ MLA(hi, lo, (*fe)[7], ptr[1]); */ -+ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ /* *pcm1++ = SHIFT(MLZ(hi, lo)); -+ -+ pcm2 = pcm1 + 31; */ -+ scale r1, r0, r1 -+ st.w r10/*pcm_1*/++, r1 -+ sub r11/*pcm2*/, r10, -4*31 -+ -+ /* for (sb = 1; sb < 16; ++sb) { */ -+ mov r2, 15 -+ stdsp sp[0], r2 -+odd_loop: -+ /* ++fe; -+ ptr += 33; */ -+ sub lr /*fe*/, -8*4 -+ sub r12, -33*2 -+ -+ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ -+ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ /* MLN(hi, lo); */ -+ -+ neg r0 -+ acr r1 -+ neg r1 -+ -+ /* MLA(hi, lo, (*fe)[7], ptr[1]); -+ MLA(hi, lo, (*fe)[6], ptr[2]); -+ MLA(hi, lo, (*fe)[5], ptr[3]); -+ MLA(hi, lo, (*fe)[4], ptr[4]); -+ MLA(hi, lo, (*fe)[3], ptr[5]); -+ MLA(hi, lo, (*fe)[2], ptr[6]); -+ MLA(hi, lo, (*fe)[1], ptr[7]); -+ MLA(hi, lo, (*fe)[0], ptr[0]); */ -+ window_1 lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ /* ptr -= 2*pe; */ -+ lddsp r2, sp[4] -+ -+ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */ -+ -+ scale r1, r0, r1 -+ sub r12/*ptr*/, r12, r2/*pe*/<< 2 -+ st.w r10/*pcm_1*/++, r1 -+ -+ -+ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17]); -+ MLA(hi, lo, (*fe)[1], ptr[8 + 17]); -+ MLA(hi, lo, (*fe)[2], ptr[9 + 17]); -+ MLA(hi, lo, (*fe)[3], ptr[10 + 17]); -+ MLA(hi, lo, (*fe)[4], ptr[11 + 17]); -+ MLA(hi, lo, (*fe)[5], ptr[12 + 17]); -+ MLA(hi, lo, (*fe)[6], ptr[13 + 17]); -+ MLA(hi, lo, (*fe)[7], ptr[14 + 17]); */ -+ window_2 lr/*fe*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ /* MLA(hi, lo, (*fo)[7], ptr[14]); -+ MLA(hi, lo, (*fo)[6], ptr[13]); -+ MLA(hi, lo, (*fo)[5], ptr[12]); -+ MLA(hi, lo, (*fo)[4], ptr[11]); -+ MLA(hi, lo, (*fo)[3], ptr[10]); -+ MLA(hi, lo, (*fo)[2], ptr[9]); -+ MLA(hi, lo, (*fo)[1], ptr[8]); -+ MLA(hi, lo, (*fo)[0], ptr[7]); */ -+ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ -+ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */ -+ lddsp r3, sp[4] -+ lddsp r2, sp[0] -+ scale r1, r0, r1 -+ st.w --r11/*pcm_2*/, r1 -+ -+ /* ptr += 2*pe; */ -+ add r12/*ptr*/, r12, r3/*pe*/<< 2 -+ -+ /* ++fo; -+ } */ -+ sub r8/*fo*/, -8*4 -+ -+ sub r2, 1 -+ stdsp sp[0], r2 -+ brne odd_loop -+ -+ /* ptr += 33; */ -+ sub r12/*ptr*/, -33*2 -+ -+ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ -+ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ -+ rjmp synth_end -+synth_even: -+ /* Filter for even phases */ -+ -+ /* fe = &(*filter)[0][0][0]; -+ fx = &(*filter)[0][1][0]; -+ fo = &(*filter)[1][1][0]; */ -+ sub lr /*fx*/, r11, -16*8*4 -+ sub r8 /*fo*/, r11, -(16*8*4*2 + 16*8*4) -+ -+ /* po = ((phase - 1) & 0xF) >> 1; */ -+ sub r12, 1 -+ andl r12, 0xe, COH -+ stdsp sp[4], r12 -+ /* ptr = (short const *)Dmod + po; */ -+ add r12, r9, r12 -+ -+ /* ML0(hi, lo, (*fx)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fx)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fx)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fx)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fx)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fx)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fx)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */ -+ window_1 lr/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ -+ /* MLN(hi, lo); */ -+ neg r0 -+ acr r1 -+ neg r1 -+ -+ /* MLA(hi, lo, (*fe)[0], ptr[0 + 1]); -+ MLA(hi, lo, (*fe)[1], ptr[7 + 1]); -+ MLA(hi, lo, (*fe)[2], ptr[6 + 1]); -+ MLA(hi, lo, (*fe)[3], ptr[5 + 1]); -+ MLA(hi, lo, (*fe)[4], ptr[4 + 1]); -+ MLA(hi, lo, (*fe)[5], ptr[3 + 1]); -+ MLA(hi, lo, (*fe)[6], ptr[2 + 1]); -+ MLA(hi, lo, (*fe)[7], ptr[1 + 1]); */ -+ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ /* *pcm1++ = SHIFT(MLZ(hi, lo)); -+ -+ pcm2 = pcm1 + 31; */ -+ scale r1, r0, r1 -+ st.w r10/*pcm_1*/++, r1 -+ sub lr/*pcm2*/, r10, -4*31 -+ -+ /* for (sb = 1; sb < 16; ++sb) { */ -+ mov r2, 15 -+ stdsp sp[0], r2 -+even_loop: -+ /* ++fe; -+ ptr += 33; */ -+ sub r11 /*fe*/, -8*4 -+ sub r12, -33*2 -+ -+ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ -+ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ /* MLN(hi, lo); */ -+ neg r0 -+ acr r1 -+ neg r1 -+ -+ /* MLA(hi, lo, (*fe)[7], ptr[1 + 1]); -+ MLA(hi, lo, (*fe)[6], ptr[2 + 1]); -+ MLA(hi, lo, (*fe)[5], ptr[3 + 1]); -+ MLA(hi, lo, (*fe)[4], ptr[4 + 1]); -+ MLA(hi, lo, (*fe)[3], ptr[5 + 1]); -+ MLA(hi, lo, (*fe)[2], ptr[6 + 1]); -+ MLA(hi, lo, (*fe)[1], ptr[7 + 1]); -+ MLA(hi, lo, (*fe)[0], ptr[0 + 1]); */ -+ window_1 r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ /* *pcm1++ = SHIFT(MLZ(hi, lo)); */ -+ lddsp r2, sp[4] -+ scale r1, r0, r1 -+ /* ptr -= 2*po; */ -+ sub r12/*ptr*/, r12, r2/*po*/<< 1 -+ st.w r10/*pcm_1*/++, r1 -+ -+ -+ /* ML0(hi, lo, (*fe)[0], ptr[7 + 17 - 1]); -+ MLA(hi, lo, (*fe)[1], ptr[8 + 17 - 1]); -+ MLA(hi, lo, (*fe)[2], ptr[9 + 17 - 1]); -+ MLA(hi, lo, (*fe)[3], ptr[10 + 17 - 1]); -+ MLA(hi, lo, (*fe)[4], ptr[11 + 17 - 1]); -+ MLA(hi, lo, (*fe)[5], ptr[12 + 17 - 1]); -+ MLA(hi, lo, (*fe)[6], ptr[13 + 17 - 1]); -+ MLA(hi, lo, (*fe)[7], ptr[14 + 17 - 1]); */ -+ window_2 r11/*fe*/,r12/*ptr*/,r0/*acc*/,16/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ /* MLA(hi, lo, (*fo)[7], ptr[14]); -+ MLA(hi, lo, (*fo)[6], ptr[13]); -+ MLA(hi, lo, (*fo)[5], ptr[12]); -+ MLA(hi, lo, (*fo)[4], ptr[11]); -+ MLA(hi, lo, (*fo)[3], ptr[10]); -+ MLA(hi, lo, (*fo)[2], ptr[9]); -+ MLA(hi, lo, (*fo)[1], ptr[8]); -+ MLA(hi, lo, (*fo)[0], ptr[7]); */ -+ window_2 r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7 -+ -+ -+ /* *pcm2-- = SHIFT(MLZ(hi, lo)); */ -+ lddsp r3, sp[4] -+ lddsp r2, sp[0] -+ scale r1, r0, r1 -+ st.w --lr/*pcm_2*/, r1 -+ -+ /* ptr += 2*po; */ -+ add r12/*ptr*/, r12, r3/*po*/<< 1 -+ -+ /* ++fo; -+ } */ -+ sub r8/*fo*/, -8*4 -+ -+ sub r2, 1 -+ stdsp sp[0], r2 -+ brne even_loop -+ -+ /* ptr += 33; */ -+ sub r12/*ptr*/, -33*2 -+ -+ /* ML0(hi, lo, (*fo)[0], ptr[0 + 17]); -+ MLA(hi, lo, (*fo)[1], ptr[7 + 17]); -+ MLA(hi, lo, (*fo)[2], ptr[6 + 17]); -+ MLA(hi, lo, (*fo)[3], ptr[5 + 17]); -+ MLA(hi, lo, (*fo)[4], ptr[4 + 17]); -+ MLA(hi, lo, (*fo)[5], ptr[3 + 17]); -+ MLA(hi, lo, (*fo)[6], ptr[2 + 17]); -+ MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */ -+ window_1 r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7 -+ -+ -+ -+synth_end: -+ /* *pcm1 = SHIFT(-MLZ(hi, lo)); */ -+ scale r1, r0, r1 -+ neg r1 -+ st.w r10/*pcm_1*/, r1 -+ -+ mov r12, r10 -+ sub sp, -8 -+ popm r0-r7, pc -+ -+ -+ -+ -+ diff --git a/package/libmad/libmad.mk b/package/libmad/libmad.mk deleted file mode 100644 index 9ea27fd4d..000000000 --- a/package/libmad/libmad.mk +++ /dev/null @@ -1,86 +0,0 @@ -############################################################# -# -# libmad -# -############################################################# - -LIBMAD_VERSION=0.15.1b -LIBMAD_SOURCE=libmad-$(LIBMAD_VERSION).tar.gz -LIBMAD_SITE=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad/ -LIBMAD_DIR=$(BUILD_DIR)/libmad-$(LIBMAD_VERSION) -LIBMAD_CAT:=$(ZCAT) - -$(DL_DIR)/$(LIBMAD_SOURCE): - $(WGET) -P $(DL_DIR) $(LIBMAD_SITE)/$(LIBMAD_SOURCE) - -$(LIBMAD_DIR)/.unpacked: $(DL_DIR)/$(LIBMAD_SOURCE) - $(LIBMAD_CAT) $(DL_DIR)/$(LIBMAD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - $(CONFIG_UPDATE) $(LIBMAD_DIR) - toolchain/patch-kernel.sh $(LIBMAD_DIR) package/libmad/ libmad-$(LIBMAD_VERSION)\*.patch - toolchain/patch-kernel.sh $(LIBMAD_DIR) package/libmad/ libmad-$(LIBMAD_VERSION)\*.patch.$(ARCH) - # Prevent automake from running. - (cd $(LIBMAD_DIR); touch -c config* aclocal.m4 Makefile*); - touch $@ - -$(LIBMAD_DIR)/.configured: $(LIBMAD_DIR)/.unpacked - (cd $(LIBMAD_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --disable-debugging \ - --enable-speed \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(LIBMAD_DIR)/libmad.la: $(LIBMAD_DIR)/.configured - rm -f $@ - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(LIBMAD_DIR) - -$(STAGING_DIR)/usr/lib/libmad.so.0: $(LIBMAD_DIR)/libmad.la - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBMAD_DIR) install - $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libmad.la - -$(TARGET_DIR)/usr/lib/libmad.so.0: $(STAGING_DIR)/usr/lib/libmad.so.0 - cp -dpf $(STAGING_DIR)/usr/lib/libmad.so.* $(TARGET_DIR)/usr/lib/ - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libmad.so.* - -$(TARGET_DIR)/usr/lib/libmad.a: $(STAGING_DIR)/usr/lib/libmad.so.0 - mkdir -p $(TARGET_DIR)/usr/include - cp -dpf $(STAGING_DIR)/usr/include/mad.h $(TARGET_DIR)/usr/include/ - cp -dpf $(STAGING_DIR)/usr/lib/libmad.la $(TARGET_DIR)/usr/lib/ - cp -dpf $(STAGING_DIR)/usr/lib/libmad.so $(TARGET_DIR)/usr/lib/ - cp -dpf $(STAGING_DIR)/usr/lib/libmad.a $(TARGET_DIR)/usr/lib/ - -libmad: uclibc $(TARGET_DIR)/usr/lib/libmad.so.0 - -libmad-headers: $(TARGET_DIR)/usr/lib/libmad.a - -libmad-source: $(DL_DIR)/$(LIBMAD_SOURCE) - -libmad-clean: - -$(MAKE) -C $(LIBMAD_DIR) clean - -rm -f $(STAGING_DIR)/usr/lib/libmad.* - rm -f $(STAGING_DIR)/usr/include/mad.h - -rm -f $(TARGET_DIR)/usr/lib/libmad.* - rm -f $(TARGET_DIR)/usr/include/mad.h - - -libmad-dirclean: - rm -rf $(LIBMAD_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_LIBMAD)),y) -TARGETS+=libmad -endif -ifeq ($(strip $(BR2_PACKAGE_LIBMAD_TARGET_HEADERS)),y) -TARGETS+=libmad-headers -endif diff --git a/package/libogg/Config.in b/package/libogg/Config.in deleted file mode 100644 index bbaf08797..000000000 --- a/package/libogg/Config.in +++ /dev/null @@ -1,6 +0,0 @@ -config BR2_PACKAGE_LIBOGG - bool "libogg" - select BR2_PACKAGE_PKGCONFIG - help - Ogg is the name of Xiph.org's container format for audio, - video, and metadata diff --git a/package/libogg/libogg.mk b/package/libogg/libogg.mk deleted file mode 100644 index 91deabee5..000000000 --- a/package/libogg/libogg.mk +++ /dev/null @@ -1,78 +0,0 @@ -############################################################# -# -# libogg -# -############################################################# -LIBOGG_VERSION:=1.1.3 -LIBOGG_NAME:=libogg-$(LIBOGG_VERSION) -LIBOGG_SOURCE:=$(LIBOGG_NAME).tar.gz -LIBOGG_SITE:=http://downloads.xiph.org/releases/ogg/$(LIBOGG-SOURCE) -LIBOGG_DIR:=$(BUILD_DIR)/libogg-$(LIBOGG_VERSION) -LIBOGG_BINARY:=libogg -LIBOGG_TARGET_BINARY:=usr/lib/libogg -LIBOGG_CAT:=$(ZCAT) - -$(DL_DIR)/$(LIBOGG_SOURCE): - $(WGET) -P $(DL_DIR) $(LIBOGG_SITE)/$(LIBOGG_SOURCE) - -$(LIBOGG_DIR)/.source: $(DL_DIR)/$(LIBOGG_SOURCE) - $(LIBOGG_CAT) $(DL_DIR)/$(LIBOGG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - touch $@ - -$(LIBOGG_DIR)/.configured: $(LIBOGG_DIR)/.source - (cd $(LIBOGG_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - PKG_CONFIG_PATH="$(STAGING_DIR)/lib/pkconfig:$(STAGING_DIR)/usr/lib/pkgconfig" \ - PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \ - PKG_CONFIG_SYSROOT=$(STAGING_DIR) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --enable-shared \ - --enable-static \ - --disable-oggtest \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(LIBOGG_DIR)/.libs: $(LIBOGG_DIR)/.configured - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(LIBOGG_DIR) - touch $@ - -$(STAGING_DIR)/usr/lib/libogg.so: $(LIBOGG_DIR)/.libs - mkdir -p $(STAGING_DIR) - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBOGG_DIR) install - $(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libogg.la - -$(TARGET_DIR)/usr/lib/libogg.so: $(STAGING_DIR)/usr/lib/libogg.so - cp -dpf $(STAGING_DIR)/usr/lib/libogg.so* $(TARGET_DIR)/usr/lib - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libogg.so* -ifneq ($(strip $(BR2_HAVE_MANPAGES)),y) - rm -rf $(TARGET_DIR)/usr/share/doc/$(LIBOGG_NAME) -endif - -libogg: uclibc pkgconfig $(TARGET_DIR)/usr/lib/libogg.so - -libogg-source: $(DL_DIR)/$(LIBOGG_SOURCE) - -libogg-clean: - -rm -rf $(TARGET_DIR)/usr/lib/libogg.so* - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBOGG_DIR) uninstall - -$(MAKE) -C $(LIBOGG_DIR) clean - -libogg-dirclean: - rm -rf $(LIBOGG_DIR) - -############################################################ -# -# Toplevel Makefile options -# -############################################################ -ifeq ($(strip $(BR2_PACKAGE_LIBOGG)),y) -TARGETS+=libogg -endif diff --git a/package/libsndfile/Config.in b/package/libsndfile/Config.in deleted file mode 100644 index ccc4dad6f..000000000 --- a/package/libsndfile/Config.in +++ /dev/null @@ -1,7 +0,0 @@ -config BR2_PACKAGE_LIBSNDFILE - bool "libsndfile" - help - Libsndfile is a C library for reading and writing files containing - sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) - through one standard library interface. - diff --git a/package/libsndfile/libsndfile-srconly.patch b/package/libsndfile/libsndfile-srconly.patch deleted file mode 100644 index 1796b80c0..000000000 --- a/package/libsndfile/libsndfile-srconly.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libsndfile-1.0.17/Makefile.in.orig 2006-12-06 17:26:46.000000000 +0100 -+++ libsndfile-1.0.17/Makefile.in 2006-12-06 17:31:11.000000000 +0100 -@@ -209,7 +209,7 @@ - target_cpu = @target_cpu@ - target_os = @target_os@ - target_vendor = @target_vendor@ --SUBDIRS = man doc Win32 Octave src examples regtest tests -+SUBDIRS = src - DIST_SUBDIRS = $(SUBDIRS) - EXTRA_DIST = reconfigure.mk acinclude.m4 libsndfile.spec.in \ - sndfile.pc.in Mingw-make-dist.sh diff --git a/package/libsndfile/libsndfile.mk b/package/libsndfile/libsndfile.mk deleted file mode 100644 index 5a5fcda7c..000000000 --- a/package/libsndfile/libsndfile.mk +++ /dev/null @@ -1,65 +0,0 @@ -############################################################# -# -# libsndfile -# -############################################################# -LIBSNDFILE_VERSION:=1.0.17 -LIBSNDFILE_SOURCE:=libsndfile-$(LIBSNDFILE_VERSION).tar.gz -LIBSNDFILE_SITE:=http://www.mega-nerd.com/libsndfile/$(LIBUSB_SOURCE) -LIBSNDFILE_DIR:=$(BUILD_DIR)/libsndfile-$(LIBSNDFILE_VERSION) -LIBSNDFILE_BINARY:=src/.libs/libsndfile.so -LIBSNDFILE_TARGET_BINARY:=usr/lib/libsndfile.so - -$(DL_DIR)/$(LIBSNDFILE_SOURCE): - $(WGET) -P $(DL_DIR) $(LIBSNDFILE_SITE)/$(LIBSNDFILE_SOURCE) - -$(LIBSNDFILE_DIR)/.unpacked: $(DL_DIR)/$(LIBSNDFILE_SOURCE) - $(ZCAT) $(DL_DIR)/$(LIBSNDFILE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(LIBSNDFILE_DIR) package/libsndfile/ \*.patch - $(CONFIG_UPDATE) $(LIBSNDFILE_DIR) - touch $@ - -$(LIBSNDFILE_DIR)/.configured: $(LIBSNDFILE_DIR)/.unpacked - (cd $(LIBSNDFILE_DIR); rm -f config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - ) - touch $@ - -$(LIBSNDFILE_DIR)/$(LIBSNDFILE_BINARY): $(LIBSNDFILE_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(LIBSNDFILE_DIR) - -$(TARGET_DIR)/$(LIBSNDFILE_TARGET_BINARY): $(LIBSNDFILE_DIR)/$(LIBSNDFILE_BINARY) - $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBSNDFILE_DIR) install - $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBSNDFILE_DIR) install -ifneq ($(BR2_HAVE_MANPAGES),y) - rm -Rf $(TARGET_DIR)/usr/share/man - rm -Rf $(STAGING_DIR)/usr/share/man -endif - -libsndfile: uclibc $(TARGET_DIR)/$(LIBSNDFILE_TARGET_BINARY) - -libsndfile-source: $(DL_DIR)/$(LIBSNDFILE_SOURCE) - -libsndfile-clean: - $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBSNDFILE_DIR) uninstall - $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBSNDFILE_DIR) uninstall - -$(MAKE) -C $(LIBSNDFILE_DIR) clean - -libsndfile-dirclean: - rm -rf $(LIBSNDFILE_DIR) - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_LIBSNDFILE)),y) -TARGETS+=libsndfile -endif diff --git a/package/libvorbis/Config.in b/package/libvorbis/Config.in deleted file mode 100644 index 17fd4e845..000000000 --- a/package/libvorbis/Config.in +++ /dev/null @@ -1,25 +0,0 @@ -config BR2_PACKAGE_LIBVORBIS - bool "libvorbis" - depends on BR2_PACKAGE_LIBOGG - select BR2_PACKAGE_PKGCONFIG - help - Library for the Vorbis open source audio decoder - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, - general-purpose compressed audio format for mid to high quality - (8kHz-48.0kHz, 16+ bit, polyphonic) audio and music at fixed and - variable bitrates from 16 to 128 kbps/channel. - - This places Vorbis in the same competitive class as audio - representations such as MPEG-4 (AAC), and similar to, but higher - performance than MPEG-1/2 audio layer 3, MPEG-4 audio (TwinVQ), - WMA and PAC. - -config BR2_PACKAGE_LIBVORBIS_TREMOR - bool "use fixed point implementation (tremor)" - default y if BR2_SOFT_FLOAT - depends on BR2_PACKAGE_LIBVORBIS - help - Use the Tremor fixed point implementation - -comment "libvorbis requires the package libogg to build" - depends on !BR2_PACKAGE_LIBOGG diff --git a/package/libvorbis/libvorbis.mk b/package/libvorbis/libvorbis.mk deleted file mode 100644 index 6e72ad586..000000000 --- a/package/libvorbis/libvorbis.mk +++ /dev/null @@ -1,143 +0,0 @@ -############################################################# -# -# libvorbis -# -############################################################# -LIBVORBIS_VERSION:=1.2.0 -LIBVORBIS_SOURCE:=libvorbis-$(LIBVORBIS_VERSION).tar.gz -LIBVORBIS_SITE:=http://downloads.xiph.org/releases/vorbis/$(LIBVORBIS-SOURCE) -LIBVORBIS_DIR:=$(BUILD_DIR)/libvorbis-$(LIBVORBIS_VERSION) -LIBVORBIS_BINARY:=libvorbis -LIBVORBIS_TARGET_BINARY:=usr/bin/libvorbis -LIBVORBIS_CAT:=$(ZCAT) - -$(DL_DIR)/$(LIBVORBIS_SOURCE): - $(WGET) -P $(DL_DIR) $(LIBVORBIS_SITE)/$(LIBVORBIS_SOURCE) - -$(LIBVORBIS_DIR)/.source: $(DL_DIR)/$(LIBVORBIS_SOURCE) - $(LIBVORBIS_CAT) $(DL_DIR)/$(LIBVORBIS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - touch $@ - -$(LIBVORBIS_DIR)/.configured: $(LIBVORBIS_DIR)/.source - (cd $(LIBVORBIS_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - PKG_CONFIG_PATH="$(STAGING_DIR)/lib/pkconfig:$(STAGING_DIR)/usr/lib/pkgconfig" \ - PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \ - PKG_CONFIG_SYSROOT=$(STAGING_DIR) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --enable-shared \ - --enable-static \ - --disable-oggtest \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(LIBVORBIS_DIR)/.libs: $(LIBVORBIS_DIR)/.configured - $(MAKE) -C $(@D) - touch $@ - -$(STAGING_DIR)/usr/lib/libvorbis.so: $(LIBVORBIS_DIR)/.libs - $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LIBVORBIS_DIR) install - -$(TARGET_DIR)/usr/lib/libvorbis.so: $(STAGING_DIR)/usr/lib/libvorbis.so - $(INSTALL) -D $(STAGING_DIR)/usr/lib/libvorbis*.so* $(TARGET_DIR)/usr/lib - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libvorbis*.so* - -libvorbis: uclibc pkgconfig libogg $(TARGET_DIR)/usr/lib/libvorbis.so - -libvorbis-source: $(DL_DIR)/$(LIBVORBIS_SOURCE) - -libvorbis-clean: - $(MAKE) prefix=$(STAGING_DIR)/usr -C $(LIBVORBIS_DIR) uninstall - -$(MAKE) -C $(LIBVORBIS_DIR) clean - -libvorbis-dirclean: - rm -rf $(LIBVORBIS_DIR) - -############################################################ -# -# Tremor (Integer decoder for Vorbis) -# -############################################################ - -TREMOR_TRUNK:=http://svn.xiph.org/trunk/Tremor/ -TREMOR_VERSION:=svn-$(DATE) -TREMOR_NAME:=Tremor-$(TREMOR_VERSION) -TREMOR_DIR:=$(BUILD_DIR)/$(TREMOR_NAME) -TREMOR_SOURCE:=$(TREMOR_NAME).tar.bz2 -TREMOR_CAT=$(BZCAT) - -$(DL_DIR)/$(TREMOR_SOURCE): - (cd $(BUILD_DIR); \ - $(SVN_CO) $(TREMOR_TRUNK); \ - mv -f Tremor $(TREMOR_NAME); \ - tar -cvf $(TREMOR_NAME).tar $(TREMOR_NAME); \ - bzip2 $(TREMOR_NAME).tar; \ - rm -rf $(TREMOR_DIR); \ - mv $(TREMOR_SOURCE) $(DL_DIR)/$(TREMOR_SOURCE); \ - ) - -$(TREMOR_DIR)/.source: $(DL_DIR)/$(TREMOR_SOURCE) - $(TREMOR_CAT) $(DL_DIR)/$(TREMOR_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - touch $@ - -$(TREMOR_DIR)/.configured: $(TREMOR_DIR)/.source - (cd $(TREMOR_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - ./autogen.sh \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --enable-shared \ - --enable-static \ - --disable-oggtest \ - $(DISABLE_NLS) \ - ) - touch $@ - -$(TREMOR_DIR)/.libs: $(TREMOR_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) -C $(TREMOR_DIR) - touch $@ - -$(TARGET_DIR)/usr/lib/tremor.so: $(TREMOR_DIR)/.libs - $(MAKE) prefix=$(TARGET_DIR)/usr -C $(TREMOR_DIR) install - touch $@ - -$(TARGET_DIR)/usr/lib/tremor.a: $(TARGET_DIR)/usr/lib/tremor.so - cp -dpf $(TREMOR_DIR)/lib/tremor.a $(TARGET_DIR)/usr/lib/ - touch $@ - -tremor: uclibc pkgconfig libogg $(TARGET_DIR)/usr/lib/tremor.so - -tremor-source: $(DL_DIR)/$(TREMOR_SOURCE) - -tremor-clean: - $(MAKE) prefix=$(STAGING_DIR)/usr -C $(TREMOR_DIR) uninstall - -$(MAKE) -C $(TREMOR_DIR) clean - -tremor-dirclean: - rm -rf $(TREMOR_DIR) - - -############################################################ -# -# Toplevel Makefile options -# -############################################################ -ifeq ($(strip $(BR2_PACKAGE_LIBVORBIS)),y) -ifeq ($(strip $(BR2_PACKAGE_LIBVORBIS_TREMOR)),y) -TARGETS+=tremor -endif -TARGETS+=libvorbis -endif diff --git a/package/madplay/Config.in b/package/madplay/Config.in deleted file mode 100644 index a77cc367e..000000000 --- a/package/madplay/Config.in +++ /dev/null @@ -1,17 +0,0 @@ -config BR2_PACKAGE_MADPLAY - bool "madplay" - select BR2_PACKAGE_LIBMAD - select BR2_PACKAGE_LIBID3TAG - help - Command-line front-end to libmad, a high-quality MPEG audio decoder. - It currently supports MPEG-1 and the MPEG-2 extension to lower - sampling frequencies, as well as the de facto MPEG 2.5 format. All - three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — - are fully implemented. - - http://www.underbit.com/products/mad/ - -config BR2_PACKAGE_MADPLAY_ALSA - bool - default y - depends on BR2_PACKAGE_MADPLAY && BR2_PACKAGE_ALSA_LIB diff --git a/package/madplay/madplay.mk b/package/madplay/madplay.mk deleted file mode 100644 index 2d99916b3..000000000 --- a/package/madplay/madplay.mk +++ /dev/null @@ -1,73 +0,0 @@ -############################################################# -# -# madplay -# -############################################################# -MADPLAY_VERSION:=0.15.2b -MADPLAY_SOURCE:=madplay-$(MADPLAY_VERSION).tar.gz -MADPLAY_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mad -MADPLAY_CAT:=$(ZCAT) -MADPLAY_DIR:=$(BUILD_DIR)/madplay-$(MADPLAY_VERSION) -MADPLAY_BIN:=madplay -MADPLAY_TARGET_BIN:=usr/bin/$(MADPLAY_BIN) - -# Check if ALSA is built, then we should configure after alsa-lib so -# ./configure can find alsa-lib. -ifeq ($(strip $(BR2_PACKAGE_MADPLAY_ALSA)),y) -MADPLAY_USE_ALSA:=--with-alsa -MADPLAY_ALSA_DEP:=alsa-lib -endif - -$(DL_DIR)/$(MADPLAY_SOURCE): - $(WGET) -P $(DL_DIR) $(MADPLAY_SITE)/$(MADPLAY_SOURCE) - -$(MADPLAY_DIR)/.unpacked: $(DL_DIR)/$(MADPLAY_SOURCE) - $(MADPLAY_CAT) $(DL_DIR)/$(MADPLAY_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(MADPLAY_DIR) package/madplay madplay\*.patch\* - $(CONFIG_UPDATE) $(MADPLAY_DIR) - touch $@ - -$(MADPLAY_DIR)/.configured: $(MADPLAY_DIR)/.unpacked - (cd $(MADPLAY_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS) $(BR2_MADPLAY_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" \ - ./configure \ - --target=$(REAL_GNU_TARGET_NAME) \ - --host=$(REAL_GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - $(MADPLAY_USE_ALSA) \ - $(DISABLE_NLS) \ - $(DISABLE_LARGEFILE) \ - ) - touch $@ - -$(MADPLAY_DIR)/$(MADPLAY_BIN): $(MADPLAY_DIR)/.configured - $(MAKE) -C $(MADPLAY_DIR) - -$(TARGET_DIR)/$(MADPLAY_TARGET_BIN): $(MADPLAY_DIR)/$(MADPLAY_BIN) - $(INSTALL) -D $(MADPLAY_DIR)/$(MADPLAY_BIN) $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) - -madplay: uclibc $(MADPLAY_ALSA_DEP) libmad libid3tag $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) - -madplay-clean: - rm -f $(TARGET_DIR)/$(MADPLAY_TARGET_BIN) - -$(MAKE) -C $(MADPLAY_DIR) clean - -madplay-dirclean: - rm -rf $(MADPLAY_DIR) - -madplay-source: $(DL_DIR)/$(MADPLAY_SOURCE) - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_MADPLAY)),y) -TARGETS+=madplay -endif diff --git a/package/mpg123/Config.in b/package/mpg123/Config.in deleted file mode 100644 index 69ae4c62a..000000000 --- a/package/mpg123/Config.in +++ /dev/null @@ -1,12 +0,0 @@ -config BR2_PACKAGE_MPG123 - bool "mpg123" - help - Fast, free and portable MPEG audio player for Unix. It supports - MPEG 1.0/2.0 layers 1, 2 and 3. - - http://www.mpg123.de/ - -config BR2_PACKAGE_MPG123_ALSA - bool - default y - depends on BR2_PACKAGE_ALSA_LIB diff --git a/package/mpg123/mpg123-0.59r-cross.patch b/package/mpg123/mpg123-0.59r-cross.patch deleted file mode 100644 index c3fb5830c..000000000 --- a/package/mpg123/mpg123-0.59r-cross.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -ruN mpg123-0.59r.orig/Makefile mpg123-0.59r/Makefile ---- mpg123-0.59r.orig/Makefile 1999-06-15 22:39:06.000000000 +0200 -+++ mpg123-0.59r/Makefile 2006-12-14 15:52:44.000000000 +0100 -@@ -103,14 +103,14 @@ - mpg123-make - - linux: -- $(MAKE) CC=gcc LDFLAGS= \ -+ $(MAKE) LDFLAGS= \ - OBJECTS='decode_i386.o dct64_i386.o decode_i586.o \ - audio_oss.o term.o' \ - CFLAGS='-DI386_ASSEM -DPENTIUM_OPT -DREAL_IS_FLOAT -DLINUX \ - -DREAD_MMAP -DOSS -DTERM_CONTROL\ -- -Wall -O2 -m486 \ -+ -Wall \ - -fomit-frame-pointer -funroll-all-loops \ -- -finline-functions -ffast-math' \ -+ -finline-functions -ffast-math $(CFLAGS)' \ - mpg123-make - - linux-3dnow: -@@ -246,6 +246,22 @@ - -finline-functions -ffast-math' \ - mpg123-make - -+linux-bigend: -+ $(MAKE) LDFLAGS= OBJECTS='decode.o dct64.o audio_oss.o' \ -+ CFLAGS+='-DREAL_IS_FLOAT -DLINUX -DREAD_MMAP \ -+ -DOSS -DOSS_BIG_ENDIAN -Wall \ -+ -fomit-frame-pointer -funroll-loops \ -+ -finline-functions -ffast-math $(CFLAGS)' \ -+ mpg123-make -+ -+linux-littleend: -+ $(MAKE) LDFLAGS= OBJECTS='decode.o dct64.o audio_oss.o' \ -+ CFLAGS='-DREAL_IS_FLOAT -DLINUX -DREAD_MMAP \ -+ -DOSS -Wall \ -+ -fomit-frame-pointer -funroll-loops \ -+ -finline-functions -ffast-math $(CFLAGS)' \ -+ mpg123-make -+ - linux-sajber: - @ $(MAKE) FRONTEND=sajberplay-make linux-frontend - diff --git a/package/mpg123/mpg123.mk b/package/mpg123/mpg123.mk deleted file mode 100644 index 76977e280..000000000 --- a/package/mpg123/mpg123.mk +++ /dev/null @@ -1,73 +0,0 @@ -############################################################# -# -# mpg123 -# -############################################################# -MPG123_VERSION=0.66 -MPG123_SOURCE=mpg123-$(MPG123_VERSION).tar.bz2 -MPG123_CAT:=$(BZCAT) -MPG123_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/mpg123 -MPG123_DIR:=$(BUILD_DIR)/mpg123-$(MPG123_VERSION) -MPG123_BIN:=src/mpg123 -MPG123_TARGET_BIN:=usr/bin/mpg123 - -# Check if ALSA is built, then we should configure after alsa-lib so -# ./configure can find alsa-lib. -ifeq ($(strip $(BR2_PACKAGE_MPG123_ALSA)),y) -MPG123_USE_ALSA:=--with-audio=alsa -MPG123_ALSA_DEP:=alsa-lib -endif - -$(DL_DIR)/$(MPG123_SOURCE): - $(WGET) -P $(DL_DIR) $(MPG123_SITE)/$(MPG123_SOURCE) - -$(MPG123_DIR)/.unpacked: $(DL_DIR)/$(MPG123_SOURCE) - $(MPG123_CAT) $(DL_DIR)/$(MPG123_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(MPG123_DIR) package/mpg123/ mpg123-$(MPG123_VERSION)\*.patch - $(CONFIG_UPDATE) $(MPG123_DIR)/build - touch $@ - -$(MPG123_DIR)/.configured: $(MPG123_DIR)/.unpacked - (cd $(MPG123_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_ARGS) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" \ - ./configure \ - --target=$(REAL_GNU_TARGET_NAME) \ - --host=$(REAL_GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --with-cpu=generic_nofpu \ - $(MPG123_USE_ALSA) \ - $(DISABLE_NLS) \ - $(DISABLE_LARGEFILE) \ - ) - touch $@ - -$(MPG123_DIR)/$(MPG123_BIN): $(MPG123_DIR)/.configured - $(MAKE) -C $(MPG123_DIR) - -$(TARGET_DIR)/$(MPG123_TARGET_BIN): $(MPG123_DIR)/$(MPG123_BIN) - $(INSTALL) -D $(MPG123_DIR)/$(MPG123_BIN) $(TARGET_DIR)/$(MPG123_TARGET_BIN) - $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/$(MPG123_TARGET_BIN) - -mpg123: uclibc $(MPG123_ALSA_DEP) $(TARGET_DIR)/$(MPG123_TARGET_BIN) - -mpg123-clean: - -$(MAKE) -C $(MPG123_DIR) clean - -mpg123-dirclean: - rm -rf $(MPG123_DIR) $(MPG123_DIR) - -mpg123-source: $(DL_DIR)/$(MPG123_SOURCE) - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_MPG123)),y) -TARGETS+=mpg123 -endif diff --git a/package/speex/Config.in b/package/speex/Config.in deleted file mode 100644 index 424a83001..000000000 --- a/package/speex/Config.in +++ /dev/null @@ -1,25 +0,0 @@ -config BR2_PACKAGE_SPEEX - bool "speex" - select BR2_PACKAGE_LIBOGG - help - Speex is an Open Source/Free Software patent-free - audio compression format designed for speech. - It can be used for Voice over IP - - http://www.speex.org/ - -config BR2_PACKAGE_SPEEX_ARM_GENERIC - bool - default y - depends on BR2_PACKAGE_SPEEX && (BR2_generic_arm || BR2_arm610 || BR2_arm710) - -config BR2_PACKAGE_SPEEX_ARM4 - bool - default y - depends on BR2_PACKAGE_SPEEX && (BR2_arm7tdmi || BR2_arm720t || BR2_arm920t || BR2_arm922t || BR2_sa110 || BR2_sa1100) - -config BR2_PACKAGE_SPEEX_ARM5E - default y - bool - depends on BR2_PACKAGE_SPEEX && BR2_arm && !(BR2_PACKAGE_SPEEX_ARM_GENERIC || BR2_PACKAGE_SPEEX_ARM4) - diff --git a/package/speex/speex.mk b/package/speex/speex.mk deleted file mode 100644 index 0ffd20325..000000000 --- a/package/speex/speex.mk +++ /dev/null @@ -1,37 +0,0 @@ -############################################################# -# -# speex -# -############################################################# -SPEEX_VERSION=1.2rc1 -SPEEX_SOURCE=speex-$(SPEEX_VERSION).tar.gz -SPEEX_SITE=http://downloads.us.xiph.org/releases/speex -SPEEX_AUTORECONF = NO -SPEEX_INSTALL_STAGING = YES -SPEEX_INSTALL_TARGET = YES -SPEEX_INSTALL_TARGET_OPT:=DESTDIR=$(TARGET_DIR) install-strip -SPEEX_DEPENDENCIES = libogg -SPEEX_CONF_OPT = --with-ogg-libraries=$(STAGING_DIR)/usr/lib \ - --with-ogg-includes=$(STAGING_DIR)/usr/include \ - --enable-fixed-point $(DISABLE_NLS) - -ifeq ($(BR2_PACKAGE_SPEEX_ARM4),y) - SPEEX_CONF_OPT += --enable-arm4-asm -endif - -ifeq ($(BR2_PACKAGE_SPEEX_ARM5E),y) - SPEEX_CONF_OPT += --enable-arm5e-asm -endif - -$(eval $(call AUTOTARGETS,package,speex)) - -$(SPEEX_TARGET_BUILD): $(SPEEX_TARGET_CONFIGURE) - $(call MESSAGE,"Building") - $(SED) 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' $(SPEEX_DIR)/libtool - $(SED) 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' $(SPEEX_DIR)/libtool - $($(PKG)_MAKE_ENV) $(MAKE) $($(PKG)_MAKE_OPT) -C $(@D)/$($(PKG)_SUBDIR) - $(Q)touch $@ - -$(SPEEX_HOOK_POST_INSTALL): $(SPEEX_TARGET_INSTALL_TARGET) - rm -rf $(TARGET_DIR)/usr/share/doc/speex $(TARGET_DIR)/usr/share/aclocal - touch $@ -- cgit v1.2.3