summaryrefslogtreecommitdiff
path: root/apps/codecs/libspeex
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2007-11-14 00:55:05 +0000
committerThom Johansen <thomj@rockbox.org>2007-11-14 00:55:05 +0000
commit91f618f1ba1e507a9aa1cf7ee87eaf0370272b17 (patch)
tree01e714dc8b41d5ee4332109c0c86720ae291bf96 /apps/codecs/libspeex
parentd75a5486e60d10a74049712d8bdf1fa2816038f8 (diff)
downloadrockbox-91f618f1ba1e507a9aa1cf7ee87eaf0370272b17.zip
rockbox-91f618f1ba1e507a9aa1cf7ee87eaf0370272b17.tar.gz
rockbox-91f618f1ba1e507a9aa1cf7ee87eaf0370272b17.tar.bz2
rockbox-91f618f1ba1e507a9aa1cf7ee87eaf0370272b17.tar.xz
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
Diffstat (limited to 'apps/codecs/libspeex')
-rw-r--r--apps/codecs/libspeex/Makefile5
-rw-r--r--apps/codecs/libspeex/SOURCES5
-rw-r--r--apps/codecs/libspeex/nb_celp.c1
-rw-r--r--apps/codecs/libspeex/rockbox.c77
-rw-r--r--apps/codecs/libspeex/sb_celp.c6
-rw-r--r--apps/codecs/libspeex/sb_celp.h5
6 files changed, 20 insertions, 79 deletions
diff --git a/apps/codecs/libspeex/Makefile b/apps/codecs/libspeex/Makefile
index 7c73f02..35a8535 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 f775a7c..40ea538 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 3de623a..7dc4920 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 2abf8cc..0000000
--- 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 1b648b8..3314f6b 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 eaf76c9..c4c8160 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];