From 91f618f1ba1e507a9aa1cf7ee87eaf0370272b17 Mon Sep 17 00:00:00 2001 From: Thom Johansen Date: Wed, 14 Nov 2007 00:55:05 +0000 Subject: Remove unneeded math wrappers. Clear state structs in decoder init. Start initial work at stripping away parts of Speex in preparation for its use as a statically linked voice UI codec. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15612 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/libspeex/Makefile | 5 +++ apps/codecs/libspeex/SOURCES | 5 +-- apps/codecs/libspeex/nb_celp.c | 1 + apps/codecs/libspeex/rockbox.c | 77 ------------------------------------------ apps/codecs/libspeex/sb_celp.c | 6 ++++ apps/codecs/libspeex/sb_celp.h | 5 +++ 6 files changed, 20 insertions(+), 79 deletions(-) delete mode 100644 apps/codecs/libspeex/rockbox.c diff --git a/apps/codecs/libspeex/Makefile b/apps/codecs/libspeex/Makefile index 7c73f02d67..35a8535369 100644 --- a/apps/codecs/libspeex/Makefile +++ b/apps/codecs/libspeex/Makefile @@ -23,6 +23,11 @@ else SPEEXOPTS += -O2 endif +# We build Speex separately for use as a voice codec +ifdef ROCKBOX_VOICE_CODEC +EXTRA_DEFINES += -DROCKBOX_VOICE_CODEC +endif + CFLAGS = $(INCLUDES) $(GCCOPTS) $(TARGET_INC) $(SPEEXOPTS) $(TARGET) \ $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} ${PROFILE_OPTS} -Wno-unused-parameter diff --git a/apps/codecs/libspeex/SOURCES b/apps/codecs/libspeex/SOURCES index f775a7cd9f..40ea5380b9 100644 --- a/apps/codecs/libspeex/SOURCES +++ b/apps/codecs/libspeex/SOURCES @@ -18,14 +18,15 @@ ltp.c modes.c modes_wb.c nb_celp.c -oggframing.c quant_lsp.c -rockbox.c sb_celp.c speex.c speex_callbacks.c speex_header.c +#ifndef ROCKBOX_VOICE_CODEC +oggframing.c stereo.c +#endif #ifdef CPU_COLDFIRE filters_cf.S ltp_cf.S diff --git a/apps/codecs/libspeex/nb_celp.c b/apps/codecs/libspeex/nb_celp.c index 3de623a482..7dc4920ede 100644 --- a/apps/codecs/libspeex/nb_celp.c +++ b/apps/codecs/libspeex/nb_celp.c @@ -944,6 +944,7 @@ void *nb_decoder_init(const SpeexMode *m) if (!st) return NULL; */ + memset(st, 0, sizeof(*st)); #if defined(VAR_ARRAYS) || defined (USE_ALLOCA) st->stack = NULL; #else diff --git a/apps/codecs/libspeex/rockbox.c b/apps/codecs/libspeex/rockbox.c deleted file mode 100644 index 2abf8ccb32..0000000000 --- a/apps/codecs/libspeex/rockbox.c +++ /dev/null @@ -1,77 +0,0 @@ -/************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2007 Dan Everton - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -#include "../codec.h" -#include "../lib/codeclib.h" - -#if defined(DEBUG) || defined(SIMULATOR) -#undef DEBUGF -#define DEBUGF ci->debugf -#else -#define DEBUGF(...) -#endif - -#ifdef ROCKBOX_HAS_LOGF -#undef LOGF -#define LOGF ci->logf -#else -#define LOGF(...) -#endif - -extern struct codec_api* ci; - -float floor(float x) { - return ((float)(((int)x))); -} - -//Placeholders (not fixed point, only used when encoding): -float pow(float a, float b) { - DEBUGF("pow(%f, %f)\n", a, b); - return 0; -} - -float log(float l) { - DEBUGF("log(%f)\n", l); - return 0; -} - -float fabs(float a) { - DEBUGF("fabs(%f)\n", a); - return 0; -} - -float sin(float a) { - DEBUGF("sin(%f)\n", a); - return 0; -} - -float cos(float a) { - DEBUGF("cos(%f)\n", a); - return 0; -} - -float sqrt(float a) { - DEBUGF("sqrt(%f)\n", a); - return 0; -} - -float exp(float a) { - DEBUGF("exp(%f)\n", a); - return 0; -} - diff --git a/apps/codecs/libspeex/sb_celp.c b/apps/codecs/libspeex/sb_celp.c index 1b648b8c52..3314f6b87e 100644 --- a/apps/codecs/libspeex/sb_celp.c +++ b/apps/codecs/libspeex/sb_celp.c @@ -755,7 +755,10 @@ int sb_encode(void *state, void *vin, SpeexBits *bits) static SBDecState global_decstate_wb IBSS_ATTR; +/* Do not include this for voice codec, files will never be UWB */ +#ifndef SPEEX_ROCKBOX_VOICE_CODEC static SBDecState global_decstate_uwb IBSS_ATTR; +#endif void *sb_decoder_init(const SpeexMode *m) { @@ -767,10 +770,13 @@ void *sb_decoder_init(const SpeexMode *m) if (!st) return NULL; */ +#ifndef ROCKBOX_VOICE_CODEC if (m->modeID == SPEEX_MODEID_UWB) st = &global_decstate_uwb; else +#endif st = &global_decstate_wb; + memset(st, 0, sizeof(*st)); st->mode = m; mode=(const SpeexSBMode*)m->mode; st->encode_submode = 1; diff --git a/apps/codecs/libspeex/sb_celp.h b/apps/codecs/libspeex/sb_celp.h index eaf76c94ab..c4c8160a55 100644 --- a/apps/codecs/libspeex/sb_celp.h +++ b/apps/codecs/libspeex/sb_celp.h @@ -110,7 +110,12 @@ typedef struct SBDecState { char *stack; spx_word16_t g0_mem[64], g1_mem[64]; +/* Voice codec files will be WB mode, which has sub frame size of 40 */ +#ifndef SPEEX_ROCKBOX_VOICE_CODEC spx_word16_t excBuf[80]; +#else + spx_word16_t excBuf[40]; +#endif spx_lsp_t old_qlsp[8]; spx_coef_t interp_qlpc[8]; -- cgit v1.2.3