Eliminate signed overflow in constant, minor makefile.draft updates.
authorGregory Maxwell <greg@xiph.org>
Wed, 28 Sep 2011 21:09:23 +0000 (17:09 -0400)
committerGregory Maxwell <greg@xiph.org>
Wed, 28 Sep 2011 21:14:42 +0000 (17:14 -0400)
Makefile.draft
silk/ana_filt_bank_1.c

index d2f307e..59c1a10 100644 (file)
@@ -7,16 +7,16 @@
 # VAR_ARRAYS: Use C99 variable-length arrays for stack allocation
 # USE_ALLOCA: Use alloca() for stack allocation
 # If none is defined, then the fallback is a non-threadsafe global array
-CFLAGS += -DUSE_ALLOCA
-#CFLAGS += -DVAR_ARRAYS
+CFLAGS := -DUSE_ALLOCA $(CFLAGS)
+#CFLAGS := -DVAR_ARRAYS $(CFLAGS)
 
 # These options affect performance
 # HAVE_LRINTF: Use C99 intrinsics to speed up float-to-int conversion
 #      inline: Don't use the 'inline' keyword (for ANSI C compilers)
 #    restrict: Don't use the 'restrict' keyword (for pre-C99 compilers)
-#CFLAGS += -DHAVE_LRINTF
-#CFLAGS += -Dinline=
-CFLAGS += -Drestrict=
+#CFLAGS := -DHAVE_LRINTF $(CFLAGS)
+#CFLAGS := -Dinline= $(CFLAGS)
+CFLAGS := -Drestrict= $(CFLAGS)
 
 ###################### END OF OPTIONS ######################
 
@@ -53,6 +53,25 @@ ifdef FIXED_POINT
 CFLAGS += -DFIXED_POINT=1 -DDISABLE_FLOAT_API
 endif
 
+CINCLUDES += silk/ \
+        silk/float/ \
+        silk/fixed/ \
+       celt/ \
+       src/
+
+# VPATH e.g. VPATH = src:../headers
+VPATH = ./ \
+        silk/interface \
+        silk/src_FIX \
+        silk/src_FLP \
+        silk/src_SigProc_FIX \
+        silk/src_SigProc_FLP \
+        test
+
+LIBS = m
+
+LDLIBDIRS = ./
+
 CFLAGS  += $(call cppflags-from-defines,$(CDEFINES))
 CFLAGS  += $(call cppflags-from-includes,$(CINCLUDES))
 LDFLAGS += $(call ldflags-from-ldlibdirs,$(LDLIBDIRS))
@@ -73,20 +92,6 @@ ARCHIVE.cmdline     = $(AR) $(ARFLAGS) $@ $^ && $(RANLIB) $@
 
 # Directives
 
-CINCLUDES += silk/ \
-        silk/float/ \
-        silk/fixed/ \
-       celt/ \
-       src/
-
-# VPATH e.g. VPATH = src:../headers
-VPATH = ./ \
-        silk/interface \
-        silk/src_FIX \
-        silk/src_FLP \
-        silk/src_SigProc_FIX \
-        silk/src_SigProc_FLP \
-        test
 
 # Variable definitions
 LIB_NAME = opus
@@ -102,10 +107,6 @@ TESTOPUS_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUS_SRCS_C))
 OPUSCOMPARE_SRCS_C = src/opus_compare.c
 OPUSCOMPARE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSCOMPARE_SRCS_C))
 
-LIBS = m
-
-LDLIBDIRS = ./
-
 # Rules
 default: all
 
index 3cca817..a3f93fb 100644 (file)
@@ -32,9 +32,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "SigProc_FIX.h"
 
 /* Coefficients for 2-band filter bank based on first-order allpass filters */
-/* old*/
-static opus_int16 A_fb1_20[ 1 ] = {  5394 << 1 };
-static opus_int16 A_fb1_21[ 1 ] = { 20623 << 1 };        /* wrap-around to negative number is intentional */
+static opus_int16 A_fb1_20 = 5394 << 1;
+static opus_int16 A_fb1_21 = -24290; /* (opus_int16)(20623 << 1) */
 
 /* Split signal into two decimated bands using first-order allpass filters */
 void silk_ana_filt_bank_1(
@@ -55,7 +54,7 @@ void silk_ana_filt_bank_1(
 
         /* All-pass section for even input sample */
         Y      = silk_SUB32( in32, S[ 0 ] );
-        X      = silk_SMLAWB( Y, Y, A_fb1_21[ 0 ] );
+        X      = silk_SMLAWB( Y, Y, A_fb1_21 );
         out_1  = silk_ADD32( S[ 0 ], X );
         S[ 0 ] = silk_ADD32( in32, X );
 
@@ -64,7 +63,7 @@ void silk_ana_filt_bank_1(
 
         /* All-pass section for odd input sample, and add to output of previous section */
         Y      = silk_SUB32( in32, S[ 1 ] );
-        X      = silk_SMULWB( Y, A_fb1_20[ 0 ] );
+        X      = silk_SMULWB( Y, A_fb1_20 );
         out_2  = silk_ADD32( S[ 1 ], X );
         S[ 1 ] = silk_ADD32( in32, X );