summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2005-10-31 20:33:27 +0000
committerDave Chapman <dave@dchapman.com>2005-10-31 20:33:27 +0000
commit798a4f3533cc63be2b313797bd4be5d53bda8fb9 (patch)
tree0e2b8bdeff50b3d0a1cbe73c591f97ef73179b65 /apps
parent65de1cc6af31f547bd36d320f09cbcc6e6975421 (diff)
downloadrockbox-798a4f3533cc63be2b313797bd4be5d53bda8fb9.tar.gz
rockbox-798a4f3533cc63be2b313797bd4be5d53bda8fb9.zip
Changes to make libfaad compile in Rockbox. Also remove compiler warnings, use some IRAM (IRAM usage needs reviewing) and drastically reduce the stack usage
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7700 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/libfaad/Makefile47
-rw-r--r--apps/codecs/libfaad/README.rockbox19
-rw-r--r--apps/codecs/libfaad/SOURCES35
-rw-r--r--apps/codecs/libfaad/bits.c4
-rw-r--r--apps/codecs/libfaad/bits.h2
-rw-r--r--apps/codecs/libfaad/cfft.c1
-rw-r--r--apps/codecs/libfaad/common.c2
-rw-r--r--apps/codecs/libfaad/common.h30
-rw-r--r--apps/codecs/libfaad/decoder.c4
-rw-r--r--apps/codecs/libfaad/faad_config.h120
-rw-r--r--apps/codecs/libfaad/filtbank.c9
-rw-r--r--apps/codecs/libfaad/hcr.c4
-rw-r--r--apps/codecs/libfaad/lt_predict.c4
-rw-r--r--apps/codecs/libfaad/mdct.c8
-rw-r--r--apps/codecs/libfaad/ps_dec.c22
-rw-r--r--apps/codecs/libfaad/ps_syntax.c1
-rw-r--r--apps/codecs/libfaad/sbr_dec.c21
-rw-r--r--apps/codecs/libfaad/sbr_fbt.c3
-rw-r--r--apps/codecs/libfaad/sbr_hfadj.c4
-rw-r--r--apps/codecs/libfaad/sbr_hfgen.c4
-rw-r--r--apps/codecs/libfaad/sbr_syntax.c1
-rw-r--r--apps/codecs/libfaad/sbr_tf_grid.c3
-rw-r--r--apps/codecs/libfaad/specrec.c9
-rw-r--r--apps/codecs/libfaad/syntax.c32
-rw-r--r--apps/codecs/libfaad/tns.c8
25 files changed, 334 insertions, 63 deletions
diff --git a/apps/codecs/libfaad/Makefile b/apps/codecs/libfaad/Makefile
new file mode 100644
index 0000000000..98ad9b9160
--- /dev/null
+++ b/apps/codecs/libfaad/Makefile
@@ -0,0 +1,47 @@
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id$
+#
+
+INCLUDES=-I$(APPSDIR) -I.. -I. -I$(FIRMDIR)/include -I$(FIRMDIR)/export \
+ -I$(FIRMDIR)/common -I$(FIRMDIR)/drivers -I$(BUILDDIR)
+
+ifdef APPEXTRA
+INCLUDES += -I$(APPSDIR)/$(APPEXTRA)
+endif
+
+FAADOPTS = -O2 -Wno-char-subscripts
+CFLAGS = $(GCCOPTS) $(FAADOPTS) $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
+
+# This sets up 'SRC' based on the files mentioned in SOURCES
+include $(TOOLSDIR)/makesrc.inc
+
+SOURCES = $(SRC)
+OBJS2 := $(SRC:%.c=$(OBJDIR)/%.o)
+OBJS = $(patsubst %.S, $(OBJDIR)/%.o, $(OBJS2))
+DEPFILE = $(OBJDIR)/dep-libfaad
+DIRS =
+
+OUTPUT = $(BUILDDIR)/libfaad.a
+
+all: $(OUTPUT)
+
+$(OUTPUT): $(OBJS)
+ @echo "AR $@"
+ @$(AR) ruv $@ $+ >/dev/null 2>&1
+
+$(OBJDIR)/libfaad/%.o: $(APPSDIR)/codecs/libfaad/%.c
+ @echo "(libfaad) CC $<"
+ @$(CC) -c $(CFLAGS) -I$(APPSDIR)/codecs/libfaad/ $< -o $@
+
+include $(TOOLSDIR)/make.inc
+
+clean:
+ @echo "cleaning libfaad"
+ @rm -f $(OBJS) $(OUTPUT) $(DEPFILE)
+
+-include $(DEPFILE)
diff --git a/apps/codecs/libfaad/README.rockbox b/apps/codecs/libfaad/README.rockbox
new file mode 100644
index 0000000000..5b70f231ba
--- /dev/null
+++ b/apps/codecs/libfaad/README.rockbox
@@ -0,0 +1,19 @@
+Library: libfaad (FAAD2)
+Imported: 2005-10-31 by Dave Chapman
+
+This directory contains the libfaad library from the FAAD2 project.
+
+LICENSING INFORMATION
+
+FAAD2 is licensed under the GNU General Public License and is
+Copyright (C) 2003 M. Bakker (mbakker(at)nero.com), Ahead Software AG
+
+IMPORT DETAILS
+
+The decoder is based on the CVS version of libfaad from 2 February 2005.
+
+A non GPL compatible clause was added to the license as part of the
+CVS commit on 2 February 2005 - so we are not able to use later
+versions of that project in Rockbox.
+
+
diff --git a/apps/codecs/libfaad/SOURCES b/apps/codecs/libfaad/SOURCES
new file mode 100644
index 0000000000..4c7a34d210
--- /dev/null
+++ b/apps/codecs/libfaad/SOURCES
@@ -0,0 +1,35 @@
+bits.c
+cfft.c
+common.c
+decoder.c
+drc.c
+drm_dec.c
+error.c
+filtbank.c
+hcr.c
+huffman.c
+ic_predict.c
+is.c
+lt_predict.c
+mdct.c
+mp4.c
+ms.c
+output.c
+pns.c
+ps_dec.c
+ps_syntax.c
+pulse.c
+rvlc.c
+sbr_dct.c
+sbr_dec.c
+sbr_e_nf.c
+sbr_fbt.c
+sbr_hfadj.c
+sbr_hfgen.c
+sbr_huff.c
+sbr_qmf.c
+sbr_syntax.c
+sbr_tf_grid.c
+specrec.c
+syntax.c
+tns.c
diff --git a/apps/codecs/libfaad/bits.c b/apps/codecs/libfaad/bits.c
index 952a4a9df7..e2e609edd1 100644
--- a/apps/codecs/libfaad/bits.c
+++ b/apps/codecs/libfaad/bits.c
@@ -32,6 +32,8 @@
#include <string.h>
#include "bits.h"
+uint8_t static_buffer[1024] IBSS_ATTR;
+
/* initialize buffer, call once before first getbits or showbits */
void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size)
{
@@ -49,7 +51,7 @@ void faad_initbits(bitfile *ld, const void *_buffer, const uint32_t buffer_size)
return;
}
- ld->buffer = faad_malloc((buffer_size+12)*sizeof(uint8_t));
+ ld->buffer = &static_buffer;
memset(ld->buffer, 0, (buffer_size+12)*sizeof(uint8_t));
memcpy(ld->buffer, _buffer, buffer_size*sizeof(uint8_t));
diff --git a/apps/codecs/libfaad/bits.h b/apps/codecs/libfaad/bits.h
index 56d413e0c8..0ebe04b03f 100644
--- a/apps/codecs/libfaad/bits.h
+++ b/apps/codecs/libfaad/bits.h
@@ -144,7 +144,7 @@ static INLINE void faad_flushbits(bitfile *ld, uint32_t bits)
}
/* return next n bits (right adjusted) */
-static INLINE uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC)
+static uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC)
{
uint32_t ret;
diff --git a/apps/codecs/libfaad/cfft.c b/apps/codecs/libfaad/cfft.c
index 441cd692de..8eec8aa85c 100644
--- a/apps/codecs/libfaad/cfft.c
+++ b/apps/codecs/libfaad/cfft.c
@@ -870,6 +870,7 @@ static void cffti1(uint16_t n, complex_t *wa, uint16_t *ifac)
uint16_t ib;
uint16_t nf, nl, nq, nr;
+ (void)wa;
nl = n;
nf = 0;
j = 0;
diff --git a/apps/codecs/libfaad/common.c b/apps/codecs/libfaad/common.c
index c0676b479f..debc125b3e 100644
--- a/apps/codecs/libfaad/common.c
+++ b/apps/codecs/libfaad/common.c
@@ -433,7 +433,6 @@ int32_t pow2_int(real_t val)
int32_t log2_int(uint32_t val)
{
uint32_t frac;
- uint32_t whole = (val);
int32_t exp = 0;
uint32_t index;
uint32_t index_frac;
@@ -477,7 +476,6 @@ int32_t log2_int(uint32_t val)
real_t log2_fix(uint32_t val)
{
uint32_t frac;
- uint32_t whole = (val >> REAL_BITS);
int8_t exp = 0;
uint32_t index;
uint32_t index_frac;
diff --git a/apps/codecs/libfaad/common.h b/apps/codecs/libfaad/common.h
index efe8288b36..7ee0eda589 100644
--- a/apps/codecs/libfaad/common.h
+++ b/apps/codecs/libfaad/common.h
@@ -32,8 +32,24 @@
extern "C" {
#endif
-#ifdef HAVE_CONFIG_H
-# include "../config.h"
+#include "faad_config.h"
+#include "../codec.h"
+#include "../lib/codeclib.h"
+
+extern struct codec_api* ci;
+
+#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
#define INLINE __inline
@@ -55,7 +71,7 @@ extern "C" {
/* use double precision */
/* #define USE_DOUBLE_PRECISION */
/* use fixed point reals */
-//#define FIXED_POINT
+#define FIXED_POINT
//#define BIG_IQ_TABLE
/* Use if target platform has address generators with autoincrement */
@@ -72,7 +88,7 @@ extern "C" {
/* Allow decoding of MAIN profile AAC */
#define MAIN_DEC
/* Allow decoding of SSR profile AAC */
-//#define SSR_DEC
+#define SSR_DEC
/* Allow decoding of LTP profile AAC */
#define LTP_DEC
/* Allow decoding of LD profile AAC */
@@ -183,10 +199,10 @@ typedef float float32_t;
# if !STDC_HEADERS && HAVE_MEMORY_H
# include <memory.h>
# endif
-# include <string.h>
+//# include <string.h>
#endif
#if HAVE_STRINGS_H
-# include <strings.h>
+//# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
@@ -214,7 +230,7 @@ typedef float float32_t;
#endif
#if STDC_HEADERS
-# include <string.h>
+//# include <string.h>
#else
# if !HAVE_STRCHR
# define strchr index
diff --git a/apps/codecs/libfaad/decoder.c b/apps/codecs/libfaad/decoder.c
index b2c37dadb8..1c8fbd90a1 100644
--- a/apps/codecs/libfaad/decoder.c
+++ b/apps/codecs/libfaad/decoder.c
@@ -53,7 +53,7 @@ uint16_t dbg_count;
/* static function declarations */
static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
uint8_t *buffer, uint32_t buffer_size,
- void **sample_buffer, uint32_t sample_buffer_size);
+ void **sample_buffer, int32_t sample_buffer_size);
static void create_channel_config(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo);
@@ -724,7 +724,7 @@ void* NEAACDECAPI NeAACDecDecode2(NeAACDecHandle hDecoder,
static void* aac_frame_decode(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
uint8_t *buffer, uint32_t buffer_size,
- void **sample_buffer2, uint32_t sample_buffer_size)
+ void **sample_buffer2, int32_t sample_buffer_size)
{
uint8_t channels = 0;
uint8_t output_channels = 0;
diff --git a/apps/codecs/libfaad/faad_config.h b/apps/codecs/libfaad/faad_config.h
new file mode 100644
index 0000000000..163b55669e
--- /dev/null
+++ b/apps/codecs/libfaad/faad_config.h
@@ -0,0 +1,120 @@
+/* config.h. Generated by configure. */
+/* config.h.in. Generated from configure.in by autoheader. */
+
+#include <config.h>
+
+/* Define if you want to use libfaad together with Digital Radio Mondiale
+ (DRM) */
+/* #undef DRM */
+
+/* Define if you want support for Digital Radio Mondiale (DRM) parametric
+ stereo */
+/* #undef DRM_PS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+//#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+//#define HAVE_ERRNO_H 1
+
+/* Define if needed */
+/* #undef HAVE_FLOAT32_T */
+
+/* Define to 1 if you have the <float.h> header file. */
+//#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `getpwuid' function. */
+#define HAVE_GETPWUID 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if you have the IOKit API */
+/* #undef HAVE_IOKIT_IOKITLIB_H */
+
+/* Define to 1 if you have the <limits.h> header file. */
+//#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <mathf.h> header file. */
+/* #undef HAVE_MATHF_H */
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+//#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+//#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+//#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strsep' function. */
+//#define HAVE_STRSEP 1
+
+/* Define to 1 if you have the <sysfs/libsysfs.h> header file. */
+/* #undef HAVE_SYSFS_LIBSYSFS_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+//#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+//#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+//#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+//#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define PACKAGE "faad2"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+//#define TIME_WITH_SYS_TIME 1
+
+/* Version number of package */
+#define LIBFAAD_VERSION "2.0"
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#ifdef ROCKBOX_BIG_ENDIAN
+#define WORDS_BIGENDIAN 1
+#endif
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
diff --git a/apps/codecs/libfaad/filtbank.c b/apps/codecs/libfaad/filtbank.c
index 13cc265e21..603e02fa86 100644
--- a/apps/codecs/libfaad/filtbank.c
+++ b/apps/codecs/libfaad/filtbank.c
@@ -159,13 +159,14 @@ static INLINE void mdct(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t
}
#endif
+ALIGN real_t transf_buf[2*1024] = {0};
+
void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
uint8_t window_shape_prev, real_t *freq_in,
real_t *time_out, real_t *overlap,
uint8_t object_type, uint16_t frame_len)
{
int16_t i;
- ALIGN real_t transf_buf[2*1024] = {0};
const real_t *window_long = NULL;
const real_t *window_long_prev = NULL;
@@ -182,6 +183,7 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
int64_t count = faad_get_ts();
#endif
+ memset(transf_buf,0,sizeof(transf_buf));
/* select windows of current frame and previous frame (Sine or KBD) */
#ifdef LD_DEC
if (object_type == LD)
@@ -331,13 +333,13 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
#ifdef LTP_DEC
+ALIGN real_t windowed_buf[2*1024] = {0};
/* only works for LTP -> no overlapping, no short blocks */
void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
uint8_t window_shape_prev, real_t *in_data, real_t *out_mdct,
uint8_t object_type, uint16_t frame_len)
{
int16_t i;
- ALIGN real_t windowed_buf[2*1024] = {0};
const real_t *window_long = NULL;
const real_t *window_long_prev = NULL;
@@ -348,8 +350,9 @@ void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, uint8_t window_shape,
uint16_t nshort = frame_len/8;
uint16_t nflat_ls = (nlong-nshort)/2;
- assert(window_sequence != EIGHT_SHORT_SEQUENCE);
+ //assert(window_sequence != EIGHT_SHORT_SEQUENCE);
+ memset(windowed_buf,0,sizeof(windowed_buf));
#ifdef LD_DEC
if (object_type == LD)
{
diff --git a/apps/codecs/libfaad/hcr.c b/apps/codecs/libfaad/hcr.c
index a5e67bb85d..f2766c38e1 100644
--- a/apps/codecs/libfaad/hcr.c
+++ b/apps/codecs/libfaad/hcr.c
@@ -217,8 +217,8 @@ uint8_t reordered_spectral_data(NeAACDecHandle hDecoder, ic_stream *ics,
uint16_t PCWs_done;
uint16_t numberOfSegments, numberOfSets, numberOfCodewords;
- codeword_t codeword[512];
- bits_t segment[512];
+ static codeword_t codeword[512];
+ static bits_t segment[512];
uint16_t sp_offset[8];
uint16_t g, i, sortloop, set, bitsread;
diff --git a/apps/codecs/libfaad/lt_predict.c b/apps/codecs/libfaad/lt_predict.c
index ad6bc77f69..3edb9c7586 100644
--- a/apps/codecs/libfaad/lt_predict.c
+++ b/apps/codecs/libfaad/lt_predict.c
@@ -77,6 +77,8 @@ ALIGN static const real_t codebook[8] =
REAL_CONST(1.369533)
};
+ALIGN real_t x_est[2048];
+ALIGN real_t X_est[2048];
void lt_prediction(ic_stream *ics, ltp_info *ltp, real_t *spec,
int16_t *lt_pred_stat, fb_info *fb, uint8_t win_shape,
uint8_t win_shape_prev, uint8_t sr_index,
@@ -84,8 +86,6 @@ void lt_prediction(ic_stream *ics, ltp_info *ltp, real_t *spec,
{
uint8_t sfb;
uint16_t bin, i, num_samples;
- ALIGN real_t x_est[2048];
- ALIGN real_t X_est[2048];
if (ics->window_sequence != EIGHT_SHORT_SEQUENCE)
{
diff --git a/apps/codecs/libfaad/mdct.c b/apps/codecs/libfaad/mdct.c
index 78712a0bc5..158ea22205 100644
--- a/apps/codecs/libfaad/mdct.c
+++ b/apps/codecs/libfaad/mdct.c
@@ -60,7 +60,7 @@ mdct_info *faad_mdct_init(uint16_t N)
{
mdct_info *mdct = (mdct_info*)faad_malloc(sizeof(mdct_info));
- assert(N % 8 == 0);
+ //assert(N % 8 == 0);
mdct->N = N;
@@ -123,10 +123,10 @@ void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out)
complex_t x;
#ifdef ALLOW_SMALL_FRAMELENGTH
#ifdef FIXED_POINT
- real_t scale, b_scale = 0;
+ real_t scale = 0, b_scale = 0;
#endif
#endif
- ALIGN complex_t Z1[512];
+ ALIGN static complex_t Z1[512];
complex_t *sincos = mdct->sincos;
uint16_t N = mdct->N;
@@ -230,7 +230,7 @@ void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out)
uint16_t k;
complex_t x;
- ALIGN complex_t Z1[512];
+ ALIGN static complex_t Z1[512];
complex_t *sincos = mdct->sincos;
uint16_t N = mdct->N;
diff --git a/apps/codecs/libfaad/ps_dec.c b/apps/codecs/libfaad/ps_dec.c
index cfc5629cbe..b219f58ae0 100644
--- a/apps/codecs/libfaad/ps_dec.c
+++ b/apps/codecs/libfaad/ps_dec.c
@@ -159,10 +159,10 @@ typedef struct
/* static function declarations */
static void ps_data_decode(ps_info *ps);
-static hyb_info *hybrid_init();
+static hyb_info *hybrid_init(void);
static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter,
qmf_t *buffer, qmf_t **X_hybrid);
-static void INLINE DCT3_4_unscaled(real_t *y, real_t *x);
+static INLINE void DCT3_4_unscaled(real_t *y, real_t *x);
static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filter,
qmf_t *buffer, qmf_t **X_hybrid);
static void hybrid_analysis(hyb_info *hyb, qmf_t X[32][64], qmf_t X_hybrid[32][32],
@@ -256,6 +256,7 @@ static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filt
{
uint8_t i;
+ (void)hyb;
for (i = 0; i < frame_len; i++)
{
real_t r0 = MUL_F(filter[0],(QMF_RE(buffer[0+i]) + QMF_RE(buffer[12+i])));
@@ -290,6 +291,7 @@ static void channel_filter4(hyb_info *hyb, uint8_t frame_len, const real_t *filt
uint8_t i;
real_t input_re1[2], input_re2[2], input_im1[2], input_im2[2];
+ (void)hyb;
for (i = 0; i < frame_len; i++)
{
input_re1[0] = -MUL_F(filter[2], (QMF_RE(buffer[i+2]) + QMF_RE(buffer[i+10]))) +
@@ -338,7 +340,7 @@ static void channel_filter4(hyb_info *hyb, uint8_t frame_len, const real_t *filt
}
}
-static void INLINE DCT3_4_unscaled(real_t *y, real_t *x)
+static INLINE void DCT3_4_unscaled(real_t *y, real_t *x)
{
real_t f0, f1, f2, f3, f4, f5, f6, f7, f8;
@@ -365,6 +367,7 @@ static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filt
real_t input_re1[4], input_re2[4], input_im1[4], input_im2[4];
real_t x[4];
+ (void)hyb;
for (i = 0; i < frame_len; i++)
{
input_re1[0] = MUL_F(filter[6],QMF_RE(buffer[6+i]));
@@ -429,7 +432,7 @@ static void channel_filter8(hyb_info *hyb, uint8_t frame_len, const real_t *filt
}
}
-static void INLINE DCT3_6_unscaled(real_t *y, real_t *x)
+static INLINE void DCT3_6_unscaled(real_t *y, real_t *x)
{
real_t f0, f1, f2, f3, f4, f5, f6, f7;
@@ -457,6 +460,7 @@ static void channel_filter12(hyb_info *hyb, uint8_t frame_len, const real_t *fil
real_t input_re1[6], input_re2[6], input_im1[6], input_im2[6];
real_t out_re1[6], out_re2[6], out_im1[6], out_im2[6];
+ (void)hyb;
for (i = 0; i < frame_len; i++)
{
for (n = 0; n < 6; n++)
@@ -1027,7 +1031,7 @@ static void ps_decorrelate(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][
qmf_t X_hybrid_left[32][32], qmf_t X_hybrid_right[32][32])
{
uint8_t gr, n, m, bk;
- uint8_t temp_delay;
+ uint8_t temp_delay = 0;
uint8_t sb, maxsb;
const complex_t *Phi_Fract_SubQmf;
uint8_t temp_delay_ser[NO_ALLPASS_LINKS];
@@ -1847,6 +1851,7 @@ ps_info *ps_init(uint8_t sr_index)
ps_info *ps = (ps_info*)faad_malloc(sizeof(ps_info));
memset(ps, 0, sizeof(ps_info));
+ (void)sr_index;
ps->hyb = hybrid_init();
ps->ps_data_available = 0;
@@ -1935,8 +1940,11 @@ ps_info *ps_init(uint8_t sr_index)
/* main Parametric Stereo decoding function */
uint8_t ps_decode(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64])
{
- qmf_t X_hybrid_left[32][32] = {{0}};
- qmf_t X_hybrid_right[32][32] = {{0}};
+ qmf_t X_hybrid_left[32][32];
+ qmf_t X_hybrid_right[32][32];
+
+ memset(&X_hybrid_left,0,sizeof(X_hybrid_left));
+ memset(&X_hybrid_right,0,sizeof(X_hybrid_right));
/* delta decoding of the bitstream data */
ps_data_decode(ps);
diff --git a/apps/codecs/libfaad/ps_syntax.c b/apps/codecs/libfaad/ps_syntax.c
index 6c909c01f6..290d7e5523 100644
--- a/apps/codecs/libfaad/ps_syntax.c
+++ b/apps/codecs/libfaad/ps_syntax.c
@@ -469,6 +469,7 @@ static uint16_t ps_extension(ps_info *ps, bitfile *ld,
uint8_t n;
uint16_t bits = (uint16_t)faad_get_processed_bits(ld);
+ (void)num_bits_left;
if (ps_extension_id == 0)
{
ps->enable_ipdopd = (uint8_t)faad_get1bit(ld
diff --git a/apps/codecs/libfaad/sbr_dec.c b/apps/codecs/libfaad/sbr_dec.c
index 04752d793b..c18ea454d5 100644
--- a/apps/codecs/libfaad/sbr_dec.c
+++ b/apps/codecs/libfaad/sbr_dec.c
@@ -226,16 +226,17 @@ static void sbr_save_matrix(sbr_info *sbr, uint8_t ch)
}
}
+#ifdef SBR_LOW_POWER
+ ALIGN real_t deg[64];
+#endif
+
static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_NTSR][64],
uint8_t ch, uint8_t dont_process,
const uint8_t downSampledSBR)
{
int16_t k, l;
-#ifdef SBR_LOW_POWER
- ALIGN real_t deg[64];
-#endif
-
+ (void)downSampledSBR;
#ifdef DRM
if (sbr->Is_DRM_SBR)
{
@@ -369,12 +370,12 @@ static void sbr_process_channel(sbr_info *sbr, real_t *channel_buf, qmf_t X[MAX_
}
}
+ALIGN qmf_t X[MAX_NTSR][64];
uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_chan,
const uint8_t just_seeked, const uint8_t downSampledSBR)
{
uint8_t dont_process = 0;
uint8_t ret = 0;
- ALIGN qmf_t X[MAX_NTSR][64];
if (sbr == NULL)
return 20;
@@ -452,12 +453,12 @@ uint8_t sbrDecodeCoupleFrame(sbr_info *sbr, real_t *left_chan, real_t *right_cha
return 0;
}
+ALIGN qmf_t X[MAX_NTSR][64];
uint8_t sbrDecodeSingleFrame(sbr_info *sbr, real_t *channel,
const uint8_t just_seeked, const uint8_t downSampledSBR)
{
uint8_t dont_process = 0;
uint8_t ret = 0;
- ALIGN qmf_t X[MAX_NTSR][64];
if (sbr == NULL)
return 20;
@@ -519,6 +520,10 @@ uint8_t sbrDecodeSingleFrame(sbr_info *sbr, real_t *channel,
return 0;
}
+
+ALIGN qmf_t X_left[38][64];// = {{0}};
+ALIGN qmf_t X_right[38][64];// = {{0}}; /* must set this to 0 */
+
#if (defined(PS_DEC) || defined(DRM_PS))
uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *right_channel,
const uint8_t just_seeked, const uint8_t downSampledSBR)
@@ -526,9 +531,9 @@ uint8_t sbrDecodeSingleFramePS(sbr_info *sbr, real_t *left_channel, real_t *righ
uint8_t l, k;
uint8_t dont_process = 0;
uint8_t ret = 0;
- ALIGN qmf_t X_left[38][64] = {{0}};
- ALIGN qmf_t X_right[38][64] = {{0}}; /* must set this to 0 */
+ memset(X_left,0,sizeof(X_left));
+ memset(X_right,0,sizeof(X_right));
if (sbr == NULL)
return 20;
diff --git a/apps/codecs/libfaad/sbr_fbt.c b/apps/codecs/libfaad/sbr_fbt.c
index b90ae7d769..812c4059f9 100644
--- a/apps/codecs/libfaad/sbr_fbt.c
+++ b/apps/codecs/libfaad/sbr_fbt.c
@@ -359,6 +359,7 @@ uint8_t master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2,
real_t rk2, rk0;
#endif
+ (void)bs_alter_scale;
/* mft only defined for k2 > k0 */
if (k2 <= k0)
{
@@ -504,7 +505,7 @@ uint8_t master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2,
uint8_t derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band,
uint8_t k2)
{
- uint8_t k, i;
+ uint8_t k, i = 0;
uint32_t minus;
/* The following relation shall be satisfied: bs_xover_band < N_Master */
diff --git a/apps/codecs/libfaad/sbr_hfadj.c b/apps/codecs/libfaad/sbr_hfadj.c
index 17d63f41c2..374d16f443 100644
--- a/apps/codecs/libfaad/sbr_hfadj.c
+++ b/apps/codecs/libfaad/sbr_hfadj.c
@@ -55,8 +55,9 @@ void hf_adjustment(sbr_info *sbr, qmf_t Xsbr[MAX_NTSRHFG][64]
#endif
,uint8_t ch)
{
- ALIGN sbr_hfadj_info adj = {{{0}}};
+ ALIGN sbr_hfadj_info adj;
+ memset(&adj,0,sizeof(adj));
if (sbr->bs_frame_class[ch] == FIXFIX)
{
sbr->l_A[ch] = -1;
@@ -131,6 +132,7 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj,
uint8_t m, l, j, k, k_l, k_h, p;
real_t nrg, div;
+ (void)adj;
if (sbr->bs_interpol_freq == 1)
{
for (l = 0; l < sbr->L_E[ch]; l++)
diff --git a/apps/codecs/libfaad/sbr_hfgen.c b/apps/codecs/libfaad/sbr_hfgen.c
index 5f306c43f3..4991839218 100644
--- a/apps/codecs/libfaad/sbr_hfgen.c
+++ b/apps/codecs/libfaad/sbr_hfgen.c
@@ -628,14 +628,14 @@ static void patch_construction(sbr_info *sbr)
do
{
- uint8_t j = k + 1;
+ int8_t j = k + 1;
do
{
j--;
-
sb = sbr->f_master[j];
odd = (sb - 2 + sbr->k0) % 2;
+
} while (sb > (sbr->k0 - 1 + msb - odd));
sbr->patchNoSubbands[sbr->noPatches] = max(sb - usb, 0);
diff --git a/apps/codecs/libfaad/sbr_syntax.c b/apps/codecs/libfaad/sbr_syntax.c
index 4920d701e6..267e954a2e 100644
--- a/apps/codecs/libfaad/sbr_syntax.c
+++ b/apps/codecs/libfaad/sbr_syntax.c
@@ -821,6 +821,7 @@ static uint16_t sbr_extension(bitfile *ld, sbr_info *sbr,
uint16_t ret;
#endif
+ (void)num_bits_left;
switch (bs_extension_id)
{
#ifdef PS_DEC
diff --git a/apps/codecs/libfaad/sbr_tf_grid.c b/apps/codecs/libfaad/sbr_tf_grid.c
index d41fad6358..2c21173490 100644
--- a/apps/codecs/libfaad/sbr_tf_grid.c
+++ b/apps/codecs/libfaad/sbr_tf_grid.c
@@ -50,7 +50,8 @@ static uint8_t middleBorder(sbr_info *sbr, uint8_t ch);
/* first build into temp vector to be able to use previous vector on error */
uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch)
{
- uint8_t l, border, temp;
+ uint8_t l, temp;
+ int8_t border;
uint8_t t_E_temp[6] = {0};
t_E_temp[0] = sbr->rate * sbr->abs_bord_lead[ch];
diff --git a/apps/codecs/libfaad/specrec.c b/apps/codecs/libfaad/specrec.c
index a452fbd90e..6d74c77562 100644
--- a/apps/codecs/libfaad/specrec.c
+++ b/apps/codecs/libfaad/specrec.c
@@ -409,7 +409,7 @@ uint8_t window_grouping_info(NeAACDecHandle hDecoder, ic_stream *ics)
}
}
-/* iquant() *
+/* iquant() */
/* output = sign(input)*abs(input)^(4/3) */
/**/
static INLINE real_t iquant(int16_t q, const real_t *tab, uint8_t *error)
@@ -543,6 +543,7 @@ static uint8_t quant_to_spec(NeAACDecHandle hDecoder,
};
const real_t *tab = iq_table;
+ (void)frame_len;
uint8_t g, sfb, win;
uint16_t width, bin, k, gindex, wa, wb;
uint8_t error = 0; /* Init error flag */
@@ -856,7 +857,7 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics,
element *sce, int16_t *spec_data)
{
uint8_t retval, output_channels;
- ALIGN real_t spec_coef[1024];
+ ALIGN static real_t spec_coef[1024];
#ifdef PROFILE
int64_t count = faad_get_ts();
@@ -1048,8 +1049,8 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st
element *cpe, int16_t *spec_data1, int16_t *spec_data2)
{
uint8_t retval;
- ALIGN real_t spec_coef1[1024];
- ALIGN real_t spec_coef2[1024];
+ ALIGN static real_t spec_coef1[1024];
+ ALIGN static real_t spec_coef2[1024];
#ifdef PROFILE
int64_t count = faad_get_ts();
diff --git a/apps/codecs/libfaad/syntax.c b/apps/codecs/libfaad/syntax.c
index 1ce086eb4b..85e927b74d 100644
--- a/apps/codecs/libfaad/syntax.c
+++ b/apps/codecs/libfaad/syntax.c
@@ -558,14 +558,16 @@ void raw_data_block(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
/* Table 4.4.4 and */
/* Table 4.4.9 */
+ALIGN int16_t spec_data[1024] = {0};
+element sce IBSS_ATTR;
static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld,
uint8_t channel, uint8_t *tag)
{
uint8_t retval = 0;
- element sce = {0};
ic_stream *ics = &(sce.ics1);
- ALIGN int16_t spec_data[1024] = {0};
+ memset(spec_data,0,sizeof(spec_data));
+ memset(&sce,0,sizeof(sce));
sce.element_instance_tag = (uint8_t)faad_getbits(ld, LEN_TAG
DEBUGVAR(1,38,"single_lfe_channel_element(): element_instance_tag"));
@@ -601,16 +603,19 @@ static uint8_t single_lfe_channel_element(NeAACDecHandle hDecoder, bitfile *ld,
}
/* Table 4.4.5 */
+ALIGN int16_t spec_data1[1024];
+ALIGN int16_t spec_data2[1024];
+element cpe IBSS_ATTR;
static uint8_t channel_pair_element(NeAACDecHandle hDecoder, bitfile *ld,
uint8_t channels, uint8_t *tag)
{
- ALIGN int16_t spec_data1[1024] = {0};
- ALIGN int16_t spec_data2[1024] = {0};
- element cpe = {0};
ic_stream *ics1 = &(cpe.ics1);
ic_stream *ics2 = &(cpe.ics2);
uint8_t result;
+ memset(spec_data1,0,sizeof(spec_data1));
+ memset(spec_data2,0,sizeof(spec_data2));
+ memset(&cpe,0,sizeof(cpe));
cpe.channel = channels;
cpe.paired_channel = channels+1;
@@ -876,7 +881,7 @@ static uint8_t coupling_channel_element(NeAACDecHandle hDecoder, bitfile *ld)
element el_empty = {0};
ic_stream ics_empty = {0};
- int16_t sh_data[1024];
+ static int16_t sh_data[1024];
c = faad_getbits(ld, LEN_TAG
DEBUGVAR(1,900,"coupling_channel_element(): element_instance_tag"));
@@ -961,6 +966,8 @@ static uint16_t data_stream_element(NeAACDecHandle hDecoder, bitfile *ld)
uint8_t byte_aligned;
uint16_t i, count;
+ (void)hDecoder;
+
/* element_instance_tag = */ faad_getbits(ld, LEN_TAG
DEBUGVAR(1,60,"data_stream_element(): element_instance_tag"));
byte_aligned = faad_get1bit(ld
@@ -1158,6 +1165,8 @@ static void gain_control_data(bitfile *ld, ic_stream *ics)
#endif
#ifdef SCALABLE_DEC
+ALIGN int16_t spec_data1[1024] IBSS_ATTR;
+ALIGN int16_t spec_data2[1024] IBSS_ATTR;
/* Table 4.4.13 ASME */
void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo,
bitfile *ld, program_config *pce, drc_info *drc)
@@ -1170,9 +1179,9 @@ void aac_scalable_main_element(NeAACDecHandle hDecoder, NeAACDecFrameInfo *hInfo
ic_stream *ics1 = &(cpe.ics1);
ic_stream *ics2 = &(cpe.ics2);
int16_t *spec_data;
- ALIGN int16_t spec_data1[1024] = {0};
- ALIGN int16_t spec_data2[1024] = {0};
+ memset(spec_data1,0,sizeof(spec_data1));
+ memset(spec_data2,0,sizeof(spec_data2));
hDecoder->fr_ch_ele = 0;
hInfo->error = aac_scalable_main_header(hDecoder, ics1, ics2, ld, this_layer_stereo);
@@ -1810,7 +1819,8 @@ static uint8_t scale_factor_data(NeAACDecHandle hDecoder, ic_stream *ics, bitfil
/* Table 4.4.27 */
static void tns_data(ic_stream *ics, tns_info *tns, bitfile *ld)
{
- uint8_t w, filt, i, start_coef_bits, coef_bits;
+ uint8_t w, filt, i, start_coef_bits = 0;
+ int8_t coef_bits;
uint8_t n_filt_bits = 2;
uint8_t length_bits = 6;
uint8_t order_bits = 5;
@@ -2048,11 +2058,11 @@ static uint16_t extension_payload(bitfile *ld, drc_info *drc, uint16_t count)
return n;
case EXT_FILL_DATA:
/* fill_nibble = */ faad_getbits(ld, 4
- DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be ‘0000’ */
+ DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be æ0000Æ */
for (i = 0; i < count-1; i++)
{
/* fill_byte[i] = */ faad_getbits(ld, 8
- DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be ‘10100101’ */
+ DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be æ10100101Æ */
}
return count;
case EXT_DATA_ELEMENT:
diff --git a/apps/codecs/libfaad/tns.c b/apps/codecs/libfaad/tns.c
index fa33e57a14..a759174196 100644
--- a/apps/codecs/libfaad/tns.c
+++ b/apps/codecs/libfaad/tns.c
@@ -36,9 +36,9 @@
static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t coef_compress,
uint8_t *coef, real_t *a);
static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
- uint8_t order);
+ int8_t order);
static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
- uint8_t order);
+ int8_t order);
#ifdef _MSC_VER
@@ -226,7 +226,7 @@ static void tns_decode_coef(uint8_t order, uint8_t coef_res_bits, uint8_t coef_c
}
static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
- uint8_t order)
+ int8_t order)
{
/*
- Simple all-pole filter of order "order" defined by
@@ -269,7 +269,7 @@ static void tns_ar_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *l
}
static void tns_ma_filter(real_t *spectrum, uint16_t size, int8_t inc, real_t *lpc,
- uint8_t order)
+ int8_t order)
{
/*
- Simple all-zero filter of order "order" defined by