shithub: opus

Download patch

ref: 606cc10f2f7d76046a25fde5ec5e0a35dafdaae6
parent: 446b7f3ffff07fbb18e7bf886e476730b6d60354
author: Koen Vos <[email protected]>
date: Mon Jan 31 11:38:33 EST 2011

Big SILK update

--- a/Makefile.am
+++ b/Makefile.am
@@ -6,18 +6,23 @@
 INCLUDES = -I$(top_srcdir)/src_FLP -I$(top_srcdir)/src_SigProc_FIX -I$(top_srcdir)/src_SigProc_FLP -I$(top_srcdir)/src_common -I$(top_srcdir)/interface -I$(top_srcdir)/../celt/libcelt
 EXTRA_DIST = Silk_FLP.sln \
 Silk_FLP.sln \
-src_FIX/Silk_FIX.vcproj \
-src_FLP/Silk_FLP.vcproj \
-src_common/Silk_Common.vcproj \
-src_common/Silk_CommonFLP.vcproj \
+src_FIX/src_FIX.vcxproj \
+src_FIX/src_FIX.vcxproj.filters \
+src_FLP/src_FLP.vcxproj \
+src_FLP/src_FLP.vcxproj.filters \
+src_common/src_common.vcxproj \
+src_common/src_common.vcxproj.filters \
 test/Encoder.c \
-test/Enc_SDK.vcproj \
 test/Decoder.c \
-test/Dec_SDK.vcproj \
 test/signalCompare.c \
-test/SignalCompare.vcproj \
-src_SigProc_FLP/SigProc_FLP.vcproj \
-src_SigProc_FIX/SigProc_FIX.vcproj
+src_SigProc_FLP/src_SigProc_FLP.vcxproj \
+src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters \
+src_SigProc_FIX/src_SigProc_FIX.vcxproj \
+src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters \
+test_silk_dec/test_silk_dec.vcxproj \
+test_silk_dec/test_silk_dec.vcxproj.filters \
+test_silk_enc/test_silk_enc.vcxproj \
+test_silk_enc/test_silk_enc.vcxproj.filters
 
 lib_LTLIBRARIES	= libSKP_SILK_SDK.la
 libSKP_SILK_SDK_la_SOURCES = src_common/SKP_Silk_CNG.c \
@@ -56,9 +61,10 @@
 src_common/SKP_Silk_tables_pitch_lag.c \
 src_common/SKP_Silk_tables_pulses_per_block.c \
 src_common/SKP_Silk_tables_sign.c \
-src_common/SKP_Silk_tables_type_offset.c \
 src_common/SKP_Silk_VAD.c \
 src_common/SKP_Silk_control_audio_bandwidth.c \
+src_common/SKP_Silk_quant_LTP_gains.c \
+src_common/SKP_Silk_VQ_WMat_EC.c \
 src_FLP/SKP_Silk_apply_sine_window_FLP.c \
 src_FLP/SKP_Silk_control_codec_FLP.c \
 src_FLP/SKP_Silk_corrMatrix_FLP.c \
@@ -81,16 +87,9 @@
 src_FLP/SKP_Silk_prefilter_FLP.c \
 src_FLP/SKP_Silk_process_gains_FLP.c \
 src_FLP/SKP_Silk_process_NLSFs_FLP.c \
-src_FLP/SKP_Silk_quant_LTP_gains_FLP.c \
 src_FLP/SKP_Silk_regularize_correlations_FLP.c \
 src_FLP/SKP_Silk_residual_energy_FLP.c \
 src_FLP/SKP_Silk_solve_LS_FLP.c \
-src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c \
-src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c \
-src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c \
-src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c \
-src_FLP/SKP_Silk_tables_other_FLP.c \
-src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c \
 src_FLP/SKP_Silk_warped_autocorrelation_FLP.c \
 src_FLP/SKP_Silk_wrappers_FLP.c \
 src_SigProc_FIX/SKP_Silk_A2NLSF.c \
@@ -177,21 +176,14 @@
 src_common/SKP_Silk_PLC.h \
 src_common/SKP_Silk_structs.h \
 src_common/SKP_Silk_tables.h \
-src_common/SKP_Silk_tables_NLSF_CB0_10.h \
-src_common/SKP_Silk_tables_NLSF_CB0_16.h \
-src_common/SKP_Silk_tables_NLSF_CB1_10.h \
-src_common/SKP_Silk_tables_NLSF_CB1_16.h \
+src_common/SKP_Silk_tables_NLSF_CB.h \
 src_common/SKP_Silk_tuning_parameters.h \
 src_common/SKP_Silk_setup_complexity.h \
-src_FIX/SKP_Silk_define_FIX.h \
 src_FIX/SKP_Silk_main_FIX.h \
-src_FIX/SKP_Silk_perceptual_parameters_FIX.h \
 src_FIX/SKP_Silk_structs_FIX.h \
 src_FLP/SKP_Silk_assembler_FLP.h \
-src_FLP/SKP_Silk_define_FLP.h \
 src_FLP/SKP_Silk_main_FLP.h \
 src_FLP/SKP_Silk_structs_FLP.h \
-src_FLP/SKP_Silk_tables_FLP.h \
 src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h \
 src_SigProc_FIX/SKP_Silk_Inlines.h \
 src_SigProc_FIX/SKP_Silk_MacroCount.h \
@@ -202,19 +194,18 @@
 src_SigProc_FIX/SKP_Silk_resampler_rom.h \
 src_SigProc_FIX/SKP_Silk_resampler_structs.h \
 src_SigProc_FIX/SKP_Silk_SigProc_FIX.h \
-src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h \
 src_SigProc_FLP/SKP_Silk_SigProc_FLP.h
 
 bin_PROGRAMS = Encoder Decoder signalCompare
-Encoder_SOURCES = test/Encoder.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
+Encoder_SOURCES = test/Encoder.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
 Encoder_LDADD = $(lib_LTLIBRARIES) 
 Encoder_LDFLAGS = $(LIBS)
 
-Decoder_SOURCES = test/Decoder.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
+Decoder_SOURCES = test/Decoder.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
 Decoder_LDADD = $(lib_LTLIBRARIES) 
 Decoder_LDFLAGS = $(LIBS)
 
-signalCompare_SOURCES = test/signalCompare.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
+signalCompare_SOURCES = test/signalCompare.c $(top_builddir)/interface/SKP_Silk_SDK_API.h
 signalCompare_LDADD = $(lib_LTLIBRARIES) 
 signalCompare_LDFLAGS = $(LIBS)
 
--- a/interface/SKP_Silk_SDK_API.h
+++ b/interface/SKP_Silk_SDK_API.h
@@ -118,7 +118,7 @@
     ec_dec                              *psRangeDec,    /* I/O  Compressor data structure                       */
     const SKP_int                       nBytesIn,       /* I:   Number of input bytes                           */
     SKP_int16                           *samplesOut,    /* O:   Decoded output speech vector                    */
-    SKP_int32                           *nSamplesOut    /* I/O: Number of samples (vector/decoded)              */
+    SKP_int32                           *nSamplesOut    /* O:   Number of samples decoded                       */
 );
 
 /***************************************************************/
--- a/interface/SKP_debug.h
+++ b/interface/SKP_debug.h
@@ -254,7 +254,18 @@
 /************************************/
 /* opens an empty file if this file has not yet been open, then writes to the file and closes it            */
 /* if file has been open previously it is opened again and the fwrite is appending, finally it is closed    */
-#define SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES) { static SKP_int32 init = 0;FILE *fp;if (init == 0) {init = 1;fp = fopen(#FILE_NAME, "wb");}else {fp = fopen(#FILE_NAME, "ab+");}   fwrite((DATA_PTR), (N_BYTES), 1, fp);fclose(fp);}   
+#define SAVE_DATA( FILE_NAME, DATA_PTR, N_BYTES ) {                 \
+    static SKP_int32 init = 0;                                      \
+    FILE *fp;                                                       \
+    if (init == 0)	{                                               \
+        init = 1;                                                   \
+        fp = fopen(#FILE_NAME, "wb");                               \
+    } else {                                                        \
+        fp = fopen(#FILE_NAME, "ab+");                              \
+    }	                                                            \
+    fwrite((DATA_PTR), (N_BYTES), 1, fp);                           \
+    fclose(fp);                                                     \
+}	
 
 /* Example: DEBUG_STORE_DATA(testfile.pcm, &RIN[0], 160*sizeof(SKP_int16)); */
 
@@ -261,18 +272,33 @@
 #if 0
 /* Ensure that everything is written to files when an assert breaks */
 #define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES) SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES)
+#define DEBUG_STORE_CLOSE_FILES
+
 #else
+
+#define SKP_NUM_STORES_MAX                                  100
+extern FILE *SKP_debug_store_fp[ SKP_NUM_STORES_MAX ];
+extern int SKP_debug_store_count;
+
 /* Faster way of storing the data */
-#define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES) {    \
-    static SKP_int32 init = 0;                              \
-    static FILE *fp;                                        \
-    if (init == 0)                                          \
-    {                                                       \
-        init = 1;                                           \
-        fp = fopen(#FILE_NAME, "wb");                       \
-    }                                                       \
-    fwrite((DATA_PTR), (N_BYTES), 1, fp);                   \
+#define DEBUG_STORE_DATA( FILE_NAME, DATA_PTR, N_BYTES ) {          \
+    static SKP_int init = 0, cnt = 0;                               \
+    static FILE **fp;                                               \
+    if (init == 0) {                                                \
+        init = 1;											        \
+        cnt = SKP_debug_store_count++;                              \
+        SKP_debug_store_fp[ cnt ] = fopen(#FILE_NAME, "wb");        \
+    }                                                               \
+    fwrite((DATA_PTR), (N_BYTES), 1, SKP_debug_store_fp[ cnt ]);    \
 }
+
+/* Call this at the end of main() */
+#define DEBUG_STORE_CLOSE_FILES {                                   \
+    SKP_int i;                                                      \
+    for( i = 0; i < SKP_debug_store_count; i++ ) {                  \
+        fclose( SKP_debug_store_fp[ i ] );                          \
+    }                                                               \
+}
 #endif
 
 /* micro sec */
@@ -283,6 +309,7 @@
 /* define macros as empty strings */
 #define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES)
 #define SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES)
+#define DEBUG_STORE_CLOSE_FILES
 
 #endif /* SKP_DEBUG */
 
--- a/src_FIX/SKP_Silk_VQ_nearest_neighbor_FIX.c
+++ /dev/null
@@ -1,107 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_main_FIX.h"
-
-/* Entropy constrained MATRIX-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */
-void SKP_Silk_VQ_WMat_EC_FIX(
-    SKP_int                         *ind,               /* O    index of best codebook vector               */
-    SKP_int32                       *rate_dist_Q14,     /* O    best weighted quantization error + mu * rate*/
-    const SKP_int16                 *in_Q14,            /* I    input vector to be quantized                */
-    const SKP_int32                 *W_Q18,             /* I    weighting matrix                            */
-    const SKP_int16                 *cb_Q14,            /* I    codebook                                    */
-    const SKP_int16                 *cl_Q6,             /* I    code length for each codebook vector        */
-    const SKP_int                   mu_Q8,              /* I    tradeoff between weighted error and rate    */
-    SKP_int                         L                   /* I    number of vectors in codebook               */
-)
-{
-    SKP_int   k;
-    const SKP_int16 *cb_row_Q14;
-    SKP_int16 diff_Q14[ 5 ];
-    SKP_int32 sum1_Q14, sum2_Q16;
-
-    /* Loop over codebook */
-    *rate_dist_Q14 = SKP_int32_MAX;
-    cb_row_Q14 = cb_Q14;
-    for( k = 0; k < L; k++ ) {
-        diff_Q14[ 0 ] = in_Q14[ 0 ] - cb_row_Q14[ 0 ];
-        diff_Q14[ 1 ] = in_Q14[ 1 ] - cb_row_Q14[ 1 ];
-        diff_Q14[ 2 ] = in_Q14[ 2 ] - cb_row_Q14[ 2 ];
-        diff_Q14[ 3 ] = in_Q14[ 3 ] - cb_row_Q14[ 3 ];
-        diff_Q14[ 4 ] = in_Q14[ 4 ] - cb_row_Q14[ 4 ];
-
-        /* Weighted rate */
-        sum1_Q14 = SKP_SMULBB( mu_Q8, cl_Q6[ k ] );
-
-        SKP_assert( sum1_Q14 >= 0 );
-
-        /* first row of W_Q18 */
-        sum2_Q16 = SKP_SMULWB(           W_Q18[  1 ], diff_Q14[ 1 ] );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  2 ], diff_Q14[ 2 ] );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  3 ], diff_Q14[ 3 ] );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  4 ], diff_Q14[ 4 ] );
-        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  0 ], diff_Q14[ 0 ] );
-        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 0 ] );
-
-        /* second row of W_Q18 */
-        sum2_Q16 = SKP_SMULWB(           W_Q18[  7 ], diff_Q14[ 2 ] ); 
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  8 ], diff_Q14[ 3 ] );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  9 ], diff_Q14[ 4 ] );
-        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  6 ], diff_Q14[ 1 ] );
-        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 1 ] );
-
-        /* third row of W_Q18 */
-        sum2_Q16 = SKP_SMULWB(           W_Q18[ 13 ], diff_Q14[ 3 ] ); 
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] );
-        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] );
-        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 2 ] );
-
-        /* fourth row of W_Q18 */
-        sum2_Q16 = SKP_SMULWB(           W_Q18[ 19 ], diff_Q14[ 4 ] ); 
-        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
-        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] );
-        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 3 ] );
-
-        /* last row of W_Q18 */
-        sum2_Q16 = SKP_SMULWB(           W_Q18[ 24 ], diff_Q14[ 4 ] ); 
-        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 4 ] );
-
-        SKP_assert( sum1_Q14 >= 0 );
-
-        /* find best */
-        if( sum1_Q14 < *rate_dist_Q14 ) {
-            *rate_dist_Q14 = sum1_Q14;
-            *ind = k;
-        }
-
-        /* Go to next cbk vector */
-        cb_row_Q14 += LTP_ORDER;
-    }
-}
--- a/src_FIX/SKP_Silk_control_codec_FIX.c
+++ b/src_FIX/SKP_Silk_control_codec_FIX.c
@@ -34,11 +34,6 @@
     SKP_int                         fs_kHz              /* I                        */
 );
 
-SKP_INLINE SKP_int SKP_Silk_setup_packetsize(
-    SKP_Silk_encoder_state_FIX      *psEnc,             /* I/O                      */
-    SKP_int                         PacketSize_ms       /* I                        */
-);
-
 SKP_INLINE SKP_int SKP_Silk_setup_fs(
     SKP_Silk_encoder_state_FIX      *psEnc,             /* I/O                      */
     SKP_int                         fs_kHz,             /* I                        */
@@ -141,40 +136,6 @@
     }
 }
 
-SKP_INLINE SKP_int SKP_Silk_setup_packetsize(
-    SKP_Silk_encoder_state_FIX      *psEnc,             /* I/O                      */
-    SKP_int                         PacketSize_ms       /* I                        */
-)
-{
-    SKP_int ret = SKP_SILK_NO_ERROR;
-    if( ( PacketSize_ms !=  10 ) &&
-        ( PacketSize_ms !=  20 ) &&
-        ( PacketSize_ms !=  40 ) && 
-        ( PacketSize_ms !=  60 ) ) {
-        ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
-    } else {
-        if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) {
-            if( PacketSize_ms == 10 ) {
-                /* Only allowed when the payload buffer is empty */
-                psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1;
-                psEnc->sCmn.PacketSize_ms = PacketSize_ms;
-                psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, psEnc->sCmn.fs_kHz );
-                /* Packet length changes. Reset LBRR buffer */
-                SKP_Silk_LBRR_reset( &psEnc->sCmn );
-            } else{
-                psEnc->sCmn.nb_subfr = MAX_NB_SUBFR;
-                psEnc->sCmn.PacketSize_ms = PacketSize_ms;
-                psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, psEnc->sCmn.fs_kHz );
-                /* Packet length changes. Reset LBRR buffer */
-                SKP_Silk_LBRR_reset( &psEnc->sCmn );
-            }
-        }
-        psEnc->sCmn.frame_length = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr );
-    }
-
-    return(ret);
-}
-
 SKP_INLINE SKP_int SKP_Silk_setup_resamplers(
     SKP_Silk_encoder_state_FIX      *psEnc,             /* I/O                      */
     SKP_int                         fs_kHz              /* I                        */
@@ -235,16 +196,37 @@
 {
     SKP_int ret = SKP_SILK_NO_ERROR;
 
+    /* Set packet size */
+    if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) {
+        if( ( PacketSize_ms !=  10 ) &&
+            ( PacketSize_ms !=  20 ) &&
+            ( PacketSize_ms !=  40 ) && 
+            ( PacketSize_ms !=  60 ) ) {
+            ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
+        }
+        if( PacketSize_ms == 10 ) {
+            /* Only allowed when the payload buffer is empty */
+            psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1;
+            psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
+        } else {
+            psEnc->sCmn.nb_subfr = MAX_NB_SUBFR;
+            psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
+        }
+        /* Packet length changes. Reset LBRR buffer */
+        SKP_Silk_LBRR_reset( &psEnc->sCmn );
+        psEnc->sCmn.PacketSize_ms = PacketSize_ms;
+    }
+
     /* Set internal sampling frequency */
     if( psEnc->sCmn.fs_kHz != fs_kHz ) {
         /* reset part of the state */
-        SKP_memset( &psEnc->sShape,          0,                            sizeof( SKP_Silk_shape_state_FIX ) );
-        SKP_memset( &psEnc->sPrefilt,        0,                            sizeof( SKP_Silk_prefilter_state_FIX ) );
-        SKP_memset( &psEnc->sNSQ,            0,                            sizeof( SKP_Silk_nsq_state ) );
-        SKP_memset( &psEnc->sPred,           0,                            sizeof( SKP_Silk_predict_state_FIX ) );
-        SKP_memset( psEnc->sNSQ.xq,          0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) );
-        SKP_memset( psEnc->sNSQ_LBRR.xq,     0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) );
-        SKP_memset( psEnc->sCmn.LBRR_buffer, 0,           MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) );
+        SKP_memset( &psEnc->sShape,          0,                        sizeof( SKP_Silk_shape_state_FIX ) );
+        SKP_memset( &psEnc->sPrefilt,        0,                        sizeof( SKP_Silk_prefilter_state_FIX ) );
+        SKP_memset( &psEnc->sNSQ,            0,                        sizeof( SKP_Silk_nsq_state ) );
+        SKP_memset( &psEnc->sPred,           0,                        sizeof( SKP_Silk_predict_state_FIX ) );
+        SKP_memset( psEnc->sNSQ.xq,          0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) );
+        SKP_memset( psEnc->sNSQ_LBRR.xq,     0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) );
+        SKP_memset( psEnc->sCmn.LBRR_buffer, 0,       MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) );
 #if SWITCH_TRANSITION_FILTERING
         SKP_memset( psEnc->sCmn.sLP.In_LP_State, 0, 2 * sizeof( SKP_int32 ) );
         if( psEnc->sCmn.sLP.mode == 1 ) {
@@ -278,12 +260,29 @@
             psEnc->sCmn.predictLPCOrder = MIN_LPC_ORDER;
             psEnc->sCmn.psNLSF_CB[ 0 ]  = &SKP_Silk_NLSF_CB0_10;
             psEnc->sCmn.psNLSF_CB[ 1 ]  = &SKP_Silk_NLSF_CB1_10;
+            if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; 
+            } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         } else {
             psEnc->sCmn.predictLPCOrder = MAX_LPC_ORDER;
             psEnc->sCmn.psNLSF_CB[ 0 ]  = &SKP_Silk_NLSF_CB0_16;
             psEnc->sCmn.psNLSF_CB[ 1 ]  = &SKP_Silk_NLSF_CB1_16;
+            if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; 
+            } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         }
-        psEnc->sCmn.subfr_length   = SKP_SMULBB( SUB_FRAME_LENGTH_MS, fs_kHz );
+        psEnc->sCmn.subfr_length   = SUB_FRAME_LENGTH_MS * fs_kHz;
+        psEnc->sCmn.frame_length   = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr );
         psEnc->sCmn.ltp_mem_length = SKP_SMULBB( LTP_MEM_LENGTH_MS, fs_kHz ); 
         psEnc->sCmn.la_pitch       = SKP_SMULBB( LA_PITCH_MS, fs_kHz );
         psEnc->sPred.min_pitch_lag = SKP_SMULBB(  3, fs_kHz );
@@ -290,34 +289,39 @@
         psEnc->sPred.max_pitch_lag = SKP_SMULBB( 18, fs_kHz );
         if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
             psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
-        } else {
+        } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
             psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
+        } else {
+            /* Unsupported number of frames */
+            SKP_assert( 0 );
         }
         if( psEnc->sCmn.fs_kHz == 24 ) {
-            psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 8 );
-            psEnc->sCmn.bitrate_threshold_up   = SKP_int32_MAX;
-            psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; 
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = SKP_int32_MAX;
+            psEnc->sCmn.bitrate_threshold_down  = SWB2WB_BITRATE_BPS; 
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF;
         } else if( psEnc->sCmn.fs_kHz == 16 ) {
-            psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 8 );
-            psEnc->sCmn.bitrate_threshold_up   = WB2SWB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; 
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = WB2SWB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = WB2MB_BITRATE_BPS; 
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF;
         } else if( psEnc->sCmn.fs_kHz == 12 ) {
-            psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 8 );
-            psEnc->sCmn.bitrate_threshold_up   = MB2WB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS;
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = MB2WB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = MB2NB_BITRATE_BPS;
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF;
+        } else if( psEnc->sCmn.fs_kHz == 8 ) {
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = NB2MB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = 0;
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF;
         } else {
-            psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 8 );
-            psEnc->sCmn.bitrate_threshold_up   = NB2MB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = 0;
+            /* unsupported sampling rate */
+            SKP_assert( 0 );
         }
         psEnc->sCmn.fs_kHz_changed = 1;
     }
 
-    /********************************************/
-    /* Set packet size                          */
-    /********************************************/
-    ret += SKP_Silk_setup_packetsize( psEnc, PacketSize_ms );
-
     /* Check that settings are valid */
     SKP_assert( ( psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr ) == psEnc->sCmn.frame_length );
  
@@ -329,9 +333,9 @@
     SKP_int                         TargetRate_bps      /* I                        */
 )
 {
-    SKP_int k, ret = 0;
+    SKP_int k, ret = SKP_SILK_NO_ERROR;
     SKP_int32 frac_Q6;
-    const SKP_int32 *rateTable;
+    const SKP_uint16 *rateTable;
 
     /* Set bitrate/coding quality */
     if( TargetRate_bps != psEnc->sCmn.TargetRate_bps ) {
--- a/src_FIX/SKP_Silk_define_FIX.h
+++ /dev/null
@@ -1,92 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_DEFINE_FIX_H
-#define SKP_SILK_DEFINE_FIX_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Head room for correlations                           */
-#define LTP_CORRS_HEAD_ROOM                             2
-#define LPC_CORRS_HEAD_ROOM                             10
-
-#define WB_DETECT_ACTIVE_SPEECH_LEVEL_THRES_Q8          179     // 179.2_Q8 = 0.7f required speech activity for counting frame as active
-
-/* DTX settings */
-#define SPEECH_ACTIVITY_DTX_THRES_Q8                    26      // 25.60_Q8 = 0.1f
-
-#define LBRR_SPEECH_ACTIVITY_THRES_Q8                   128
-
-/* level of noise floor for whitening filter LPC analysis in pitch analysis */
-#define FIND_PITCH_WHITE_NOISE_FRACTION_Q16             66
-
-/* bandwdith expansion for whitening filter in pitch analysis */
-#define FIND_PITCH_BANDWITH_EXPANSION_Q16               64881
-
-/* Threshold used by pitch estimator for early escape */
-#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_HC_MODE    45875       // 0.7
-#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_MC_MODE    49152       // 0.75
-#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_LC_MODE    52429       // 0.8
-
-/* Regualarization factor for correlation matrix. Equivalent to adding noise at -50 dB */
-#define FIND_LTP_COND_FAC_Q31                           21475
-#define FIND_LPC_COND_FAC_Q32                           257698       // 6e-5
-
-/* Find Pred Coef defines */
-#define INACTIVE_BWExp_Q16                              64225       // 0.98
-#define ACTIVE_BWExp_Q16                                65470       // 0.999
-#define LTP_DAMPING_Q16                                 66
-#define LTP_SMOOTHING_Q26                               6710886
-
-/* LTP quantization settings */
-#define MU_LTP_QUANT_NB_Q8                              8
-#define MU_LTP_QUANT_MB_Q8                              6
-#define MU_LTP_QUANT_WB_Q8                              5
-#define MU_LTP_QUANT_SWB_Q8                             4
-
-/***********************/
-/* High pass filtering */
-/***********************/
-/* Smoothing parameters for low end of pitch frequency range estimation */
-#define VARIABLE_HP_SMTH_COEF1_Q16                      6554    // 0.1
-#define VARIABLE_HP_SMTH_COEF2_Q16                      983     // 0.015
-
-/* Min and max values for low end of pitch frequency range estimation */
-#define VARIABLE_HP_MIN_FREQ_Q0                         80
-#define VARIABLE_HP_MAX_FREQ_Q0                         150
-
-/* Max absolute difference between log2 of pitch frequency and smoother state, to enter the smoother */
-#define VARIABLE_HP_MAX_DELTA_FREQ_Q7                   51      // 0.4 in Q7
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/src_FIX/SKP_Silk_encode_frame_FIX.c
+++ b/src_FIX/SKP_Silk_encode_frame_FIX.c
@@ -46,7 +46,6 @@
     SKP_int16   pIn_HP[ MAX_FRAME_LENGTH ];
     SKP_int16   res_pitch[ 2 * MAX_FRAME_LENGTH + LA_PITCH_MAX ];
     SKP_int     LBRR_idx, frame_terminator, SNR_dB_Q7;
-    const SKP_uint16 *FrameTermination_CDF;
 
     /* Low bitrate redundancy parameters */
     SKP_uint8   LBRRpayload[ MAX_ARITHM_BYTES ];
@@ -115,7 +114,7 @@
     /* Find linear prediction coefficients (LPC + LTP) */
     /***************************************************/
 TIC(FIND_PRED_COEF)
-    SKP_Silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch );
+    SKP_Silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch, x_frame );
 TOC(FIND_PRED_COEF)
 
     /****************************************/
@@ -133,7 +132,7 @@
     /****************************************/
     nBytesLBRR = MAX_ARITHM_BYTES;
 TIC(LBRR)
-    SKP_Silk_LBRR_encode_FIX( psEnc, &sEncCtrl, LBRRpayload, &nBytesLBRR, xfw );
+    //SKP_Silk_LBRR_encode_FIX( psEnc, &sEncCtrl, LBRRpayload, &nBytesLBRR, xfw );
 TOC(LBRR)
 
     /*****************************************/
@@ -186,7 +185,6 @@
     /****************************************/
 TIC(ENCODE_PARAMS)
     SKP_Silk_encode_parameters( &psEnc->sCmn, &sEncCtrl.sCmn, psRangeEnc );
-    FrameTermination_CDF = SKP_Silk_FrameTermination_CDF;
 TOC(ENCODE_PARAMS)
 
     /****************************************/
@@ -220,8 +218,7 @@
         frame_terminator = SKP_SILK_NO_LBRR;
 
         /* Add the frame termination info to stream */
-        ec_encode_bin( psRangeEnc, FrameTermination_CDF[ frame_terminator ], 
-            FrameTermination_CDF[ frame_terminator + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 );
 
         /* Code excitation signal */
         for( i = 0; i < psEnc->sCmn.nFramesInPayloadBuf; i++ ) {
@@ -316,7 +313,6 @@
         int i;
         DEBUG_STORE_DATA( xf.dat,                   x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.frame_length    * sizeof( SKP_int16 ) );
         DEBUG_STORE_DATA( xfw.dat,                  xfw,                            psEnc->sCmn.frame_length    * sizeof( SKP_int16 ) );
-        //	DEBUG_STORE_DATA( q.dat,                    &psEnc->sCmn.q[ ( psEnc->sCmn.nFramesInPayloadBuf - 1)*psEnc->sCmn.frame_length ],  psEnc->sCmn.frame_length    * sizeof( SKP_int8 ) );
         DEBUG_STORE_DATA( pitchL.dat,               sEncCtrl.sCmn.pitchL,           psEnc->sCmn.nb_subfr            * sizeof( SKP_int ) );
         for( i = 0; i < psEnc->sCmn.nb_subfr * LTP_ORDER; i++ ) {
             tmp[ i ] = (SKP_float)sEncCtrl.LTPCoef_Q14[ i ] / 16384.0f;
@@ -471,8 +467,7 @@
             frame_terminator = SKP_SILK_LAST_FRAME;
 
             /* Add the frame termination info to stream */
-            ec_encode_bin( psRangeEnc_LBRR, FrameTermination_CDF[ frame_terminator ], 
-                FrameTermination_CDF[ frame_terminator + 1 ], 16 );
+            ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 );
 
             /*********************************************/
             /* Encode quantization indices of excitation */
@@ -512,8 +507,7 @@
 
             /* Encode that more frames follows */
             frame_terminator = SKP_SILK_MORE_FRAMES;
-            ec_encode_bin( psRangeEnc_LBRR, FrameTermination_CDF[ frame_terminator ], 
-                FrameTermination_CDF[ frame_terminator + 1 ], 16 );
+            ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 );
         }
 
         /* Restore original Gains */
--- a/src_FIX/SKP_Silk_find_pitch_lags_FIX.c
+++ b/src_FIX/SKP_Silk_find_pitch_lags_FIX.c
@@ -82,7 +82,7 @@
     SKP_Silk_autocorr( auto_corr, &scale, Wsig, psPredSt->pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1 ); 
         
     /* Add white noise, as fraction of energy */
-    auto_corr[ 0 ] = SKP_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SKP_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) );
+    auto_corr[ 0 ] = SKP_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SKP_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ) + 1;
 
     /* Calculate the reflection coefficients using schur */
     res_nrg = SKP_Silk_schur( rc_Q15, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder );
--- a/src_FIX/SKP_Silk_find_pred_coefs_FIX.c
+++ b/src_FIX/SKP_Silk_find_pred_coefs_FIX.c
@@ -54,10 +54,16 @@
 
 /* integer to floating-point conversion */
 SKP_INLINE void SKP_short2float_array(
-	SKP_float		*out, 
-	const SKP_int16 *in, 
-	SKP_int32		length
-);
+    SKP_float       *out, 
+    const SKP_int16 *in, 
+    SKP_int32       length
+) 
+{
+    SKP_int32 k;
+    for (k = length-1; k >= 0; k--) {
+        out[k] = (SKP_float)in[k];
+    }
+}
 
 SKP_INLINE SKP_float SKP_Silk_log2( double x ) { return ( SKP_float )( 3.32192809488736 * log10( x ) ); }
 
@@ -66,7 +72,8 @@
 void SKP_Silk_find_pred_coefs_FIX(
     SKP_Silk_encoder_state_FIX      *psEnc,         /* I/O  encoder state                               */
     SKP_Silk_encoder_control_FIX    *psEncCtrl,     /* I/O  encoder control                             */
-    const SKP_int16                 res_pitch[]     /* I    Residual from pitch analysis                */
+    const SKP_int16                 res_pitch[],    /* I    Residual from pitch analysis                */
+    const SKP_int16                 x[]             /* I    Speech signal                               */
 )
 {
     SKP_int         i;
@@ -126,8 +133,8 @@
 #endif
 
         /* Quantize LTP gain parameters */
-        SKP_Silk_quant_LTP_gains_FIX( psEncCtrl->LTPCoef_Q14, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, 
-            WLTP, psEnc->mu_LTP_Q8, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr);
+        SKP_Silk_quant_LTP_gains( psEncCtrl->LTPCoef_Q14, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, 
+            WLTP, psEnc->sCmn.mu_LTP_Q10, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr);
 
         /* Control LTP scaling */
         SKP_Silk_LTP_scale_ctrl_FIX( psEnc, psEncCtrl );
@@ -141,7 +148,7 @@
         /* UNVOICED */
         /************/
         /* Create signal with prepended subframes, scaled by inverse gains */
-        x_ptr     = psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder;
+        x_ptr     = x - psEnc->sCmn.predictLPCOrder;
         x_pre_ptr = LPC_in_pre;
         for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
             SKP_Silk_scale_copy_vector16( x_pre_ptr, x_ptr, invGains_Q16[ i ], 
--- a/src_FIX/SKP_Silk_main_FIX.h
+++ b/src_FIX/SKP_Silk_main_FIX.h
@@ -144,7 +144,8 @@
 void SKP_Silk_find_pred_coefs_FIX(
     SKP_Silk_encoder_state_FIX      *psEnc,         /* I/O  encoder state                               */
     SKP_Silk_encoder_control_FIX    *psEncCtrl,     /* I/O  encoder control                             */
-    const SKP_int16                 res_pitch[]     /* I    Residual from pitch analysis                */
+    const SKP_int16                 res_pitch[],    /* I    Residual from pitch analysis                */
+    const SKP_int16                 x[]             /* I    Speech signal                               */
 );
 
 /* LPC analysis */
@@ -197,17 +198,6 @@
     const SKP_int   LPC_order                       /* I    LPC order                       */
 );
 
-/* LTP tap quantizer */
-void SKP_Silk_quant_LTP_gains_FIX(
-    SKP_int16           B_Q14[],                /* I/O  (un)quantized LTP gains     */
-    SKP_int             cbk_index[],            /* O    Codebook Index              */
-    SKP_int             *periodicity_index,     /* O    Periodicity Index           */
-    const SKP_int32     W_Q18[],                /* I    Error Weights in Q18        */
-    SKP_int             mu_Q8,                  /* I    Mu value (R/D tradeoff)     */
-    SKP_int             lowComplexity,          /* I    Flag for low complexity     */
-    const SKP_int       nb_subfr                /* I    number of subframes         */
-);
-
 /******************/
 /* NLSF Quantizer */
 /******************/
@@ -263,18 +253,6 @@
     SKP_int32                       wxx,                /* I    Signal energy                               */
     SKP_int                         D,                  /* I    Dimension                                   */
     SKP_int                         cQ                  /* I    Q value for c vector 0 - 15                 */
-);
-
-/* Entropy constrained MATRIX-weighted VQ, for a single input data vector */
-void SKP_Silk_VQ_WMat_EC_FIX(
-    SKP_int                         *ind,               /* O    index of best codebook vector               */
-    SKP_int32                       *rate_dist_Q14,     /* O    best weighted quantization error + mu * rate*/
-    const SKP_int16                 *in_Q14,            /* I    input vector to be quantized                */
-    const SKP_int32                 *W_Q18,             /* I    weighting matrix                            */
-    const SKP_int16                 *cb_Q14,            /* I    codebook                                    */
-    const SKP_int16                 *cl_Q6,             /* I    code length for each codebook vector        */
-    const SKP_int                   mu_Q8,              /* I    tradeoff between weighted error and rate    */
-    SKP_int                         L                   /* I    number of vectors in codebook               */
 );
 
 /* Processing of gains */
--- a/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c
+++ b/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c
@@ -161,14 +161,15 @@
     /****************/
     /* CONTROL SNR  */
     /****************/
-#if DEACTIVATE_SNR_FEEDBACK
-    psEncCtrl->current_SNR_dB_Q7 = psEnc->SNR_dB_Q7;
-#else
     /* Reduce SNR_dB values if recent bitstream has exceeded TargetRate */
     psEncCtrl->current_SNR_dB_Q7 = psEnc->SNR_dB_Q7 - SKP_SMULWB( SKP_LSHIFT( ( SKP_int32 )psEnc->BufferedInChannel_ms, 7 ), 
-        SKP_FIX_CONST( 0.05, 16 ) );
-#endif
+        SKP_FIX_CONST( 0.1, 16 ) );
 
+    /* Reduce SNR for 10 ms frames */
+    if( psEnc->sCmn.nb_subfr == 2 ) {
+        psEncCtrl->current_SNR_dB_Q7 -= SKP_FIX_CONST( 1.5, 7 );
+    }
+
     /* Reduce SNR_dB if inband FEC used */
     if( psEnc->speech_activity_Q8 > SKP_FIX_CONST( LBRR_SPEECH_ACTIVITY_THRES, 8 ) ) {
         psEncCtrl->current_SNR_dB_Q7 -= SKP_RSHIFT( psEnc->inBandFEC_SNR_comp_Q8, 1 );
@@ -186,11 +187,14 @@
         SKP_FIX_CONST( 18.0, 7 ), 4 ) ), 1 );
 
     /* Reduce coding SNR during low speech activity */
-    b_Q8 = SKP_FIX_CONST( 1.0, 8 ) - psEnc->speech_activity_Q8;
-    b_Q8 = SKP_SMULWB( SKP_LSHIFT( b_Q8, 8 ), b_Q8 );
-    SNR_adj_dB_Q7 = SKP_SMLAWB( psEncCtrl->current_SNR_dB_Q7,
-        SKP_SMULBB( SKP_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ),                                       // Q11
-        SKP_SMULWB( SKP_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) );     // Q12
+    SNR_adj_dB_Q7 = psEncCtrl->current_SNR_dB_Q7;
+    if( psEnc->sCmn.useCBR == 0 ) {
+        b_Q8 = SKP_FIX_CONST( 1.0, 8 ) - psEnc->speech_activity_Q8;
+        b_Q8 = SKP_SMULWB( SKP_LSHIFT( b_Q8, 8 ), b_Q8 );
+        SNR_adj_dB_Q7 = SKP_SMLAWB( SNR_adj_dB_Q7,
+            SKP_SMULBB( SKP_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ),                                       // Q11
+            SKP_SMULWB( SKP_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) );     // Q12
+    }
 
     if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) {
         /* Reduce gains for periodic signals */
@@ -356,31 +360,17 @@
     /* Gain tweaking */
     /*****************/
     /* Increase gains during low speech activity and put lower limit on gains */
-    gain_mult_Q16 = SKP_Silk_log2lin( -SKP_SMLAWB( -SKP_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7,                            SKP_FIX_CONST( 0.16, 16 ) ) );
-    gain_add_Q16  = SKP_Silk_log2lin(  SKP_SMLAWB(  SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( NOISE_FLOOR_dB, 7 ),       SKP_FIX_CONST( 0.16, 16 ) ) );
-    tmp32         = SKP_Silk_log2lin(  SKP_SMLAWB(  SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( RELATIVE_MIN_GAIN_dB, 7 ), SKP_FIX_CONST( 0.16, 16 ) ) );
-    tmp32 = SKP_SMULWW( psEnc->avgGain_Q16, tmp32 );
-    gain_add_Q16 = SKP_ADD_SAT32( gain_add_Q16, tmp32 );
-    SKP_assert( gain_mult_Q16 >= 0 );
-
+    gain_mult_Q16 = SKP_Silk_log2lin( -SKP_SMLAWB( -SKP_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7, SKP_FIX_CONST( 0.16, 16 ) ) );
+    gain_add_Q16  = SKP_Silk_log2lin(  SKP_SMLAWB(  SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( MIN_QGAIN_DB, 7 ), SKP_FIX_CONST( 0.16, 16 ) ) );
+    SKP_assert( gain_mult_Q16 > 0 );
     for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->Gains_Q16[ k ] = SKP_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 );
         SKP_assert( psEncCtrl->Gains_Q16[ k ] >= 0 );
-    }
-
-    for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->Gains_Q16[ k ] = SKP_ADD_POS_SAT32( psEncCtrl->Gains_Q16[ k ], gain_add_Q16 );
-        psEnc->avgGain_Q16 = SKP_ADD_SAT32( 
-            psEnc->avgGain_Q16, 
-            SKP_SMULWB(
-                psEncCtrl->Gains_Q16[ k ] - psEnc->avgGain_Q16, 
-                SKP_RSHIFT_ROUND( SKP_SMULBB( psEnc->speech_activity_Q8, SKP_FIX_CONST( GAIN_SMOOTHING_COEF, 10 ) ), 2 ) 
-            ) );
     }
 
     gain_mult_Q16 = SKP_FIX_CONST( 1.0, 16 ) + SKP_RSHIFT_ROUND( SKP_MLA( SKP_FIX_CONST( INPUT_TILT, 26 ), 
         psEncCtrl->coding_quality_Q14, SKP_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) ), 10 );
-
     for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->GainsPre_Q14[ k ] = SKP_SMULWB( gain_mult_Q16, psEncCtrl->GainsPre_Q14[ k ] );
     }
@@ -389,8 +379,15 @@
     /* Control low-frequency shaping and noise tilt */
     /************************************************/
     /* Less low frequency shaping for noisy inputs */
+#if 1
     strength_Q16 = SKP_MUL( SKP_FIX_CONST( LOW_FREQ_SHAPING, 0 ), SKP_FIX_CONST( 1.0, 16 ) + 
         SKP_SMULBB( SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 1 ), psEncCtrl->input_quality_bands_Q15[ 0 ] - SKP_FIX_CONST( 1.0, 15 ) ) );
+#else
+// TODO: CHECK THAT BELOW WORKS FINE AND REPLACE
+    strength_Q16 = SKP_MUL( SKP_FIX_CONST( LOW_FREQ_SHAPING, 4 ), SKP_SMLAWB( SKP_FIX_CONST( 1.0, 12 ),
+        SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 13 ), psEncCtrl->input_quality_bands_Q15[ 0 ] - SKP_FIX_CONST( 1.0, 15 ) ) );
+#endif
+    strength_Q16 = SKP_RSHIFT( SKP_MUL( strength_Q16, psEnc->speech_activity_Q8 ), 8 );
     if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) {
         /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */
         /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/
--- a/src_FIX/SKP_Silk_perceptual_parameters_FIX.h
+++ /dev/null
@@ -1,117 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H
-#define SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H
-
-#include "SKP_Silk_perceptual_parameters.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* reduction in coding SNR during low speech activity */
-#define BG_SNR_DECR_dB_Q7                               SKP_FIX_CONST( BG_SNR_DECR_dB, 7 )
-
-/* factor for reducing quantization noise during voiced speech */
-#define HARM_SNR_INCR_dB_Q7                             SKP_FIX_CONST( HARM_SNR_INCR_dB, 7 )
-
-/* factor for reducing quantization noise for unvoiced sparse signals */
-#define SPARSE_SNR_INCR_dB_Q7                           SKP_FIX_CONST( SPARSE_SNR_INCR_dB, 7 )
-
-/* threshold for sparseness measure above which to use lower quantization offset during unvoiced */
-#define SPARSENESS_THRESHOLD_QNT_OFFSET_Q8              SKP_FIX_CONST( SPARSENESS_THRESHOLD_QNT_OFFSET, 8 )
-
-
-/* noise shaping filter chirp factor */
-#define BANDWIDTH_EXPANSION_Q16                         SKP_FIX_CONST( BANDWIDTH_EXPANSION, 16 )
-
-/* difference between chirp factors for analysis and synthesis noise shaping filters at low bitrates */
-#define LOW_RATE_BANDWIDTH_EXPANSION_DELTA_Q16          SKP_FIX_CONST( LOW_RATE_BANDWIDTH_EXPANSION_DELTA, 16 )
-
-/* factor to reduce all bandwidth expansion coefficients for super wideband, relative to wideband */
-#define SWB_BANDWIDTH_EXPANSION_REDUCTION_Q16           SKP_FIX_CONST( SWB_BANDWIDTH_EXPANSION_REDUCTION, 16 )
-
-/* gain reduction for fricatives */
-#define DE_ESSER_COEF_SWB_dB_Q7                         SKP_FIX_CONST( DE_ESSER_COEF_SWB_dB, 7 )
-#define DE_ESSER_COEF_WB_dB_Q7                          SKP_FIX_CONST( DE_ESSER_COEF_WB_dB, 7 )
-
-/* extra harmonic boosting (signal shaping) at low bitrates */
-#define LOW_RATE_HARMONIC_BOOST_Q16                     SKP_FIX_CONST( LOW_RATE_HARMONIC_BOOST, 16 )
-
-/* extra harmonic boosting (signal shaping) for noisy input signals */
-#define LOW_INPUT_QUALITY_HARMONIC_BOOST_Q16            SKP_FIX_CONST( LOW_INPUT_QUALITY_HARMONIC_BOOST, 16 )
-
-/* harmonic noise shaping */
-#define HARMONIC_SHAPING_Q16                            SKP_FIX_CONST( HARMONIC_SHAPING, 16 )
-
-/* extra harmonic noise shaping for high bitrates or noisy input */
-#define HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING_Q16   SKP_FIX_CONST( HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING, 16 )
-
-
-/* parameter for shaping noise towards higher frequencies */
-#define HP_NOISE_COEF_Q16                               SKP_FIX_CONST( HP_NOISE_COEF, 16 )
-
-/* parameter for shaping noise extra towards higher frequencies during voiced speech */
-#define HARM_HP_NOISE_COEF_Q24                          SKP_FIX_CONST( HARM_HP_NOISE_COEF, 24 )
-
-/* parameter for applying a high-pass tilt to the input signal */
-#define INPUT_TILT_Q26                                  SKP_FIX_CONST( INPUT_TILT, 26 )
-
-/* parameter for extra high-pass tilt to the input signal at high rates */
-#define HIGH_RATE_INPUT_TILT_Q12                        SKP_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 )
-
-/* parameter for reducing noise at the very low frequencies */
-#define LOW_FREQ_SHAPING_Q0                             SKP_FIX_CONST( LOW_FREQ_SHAPING, 0 )
-
-/* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */
-#define LOW_QUALITY_LOW_FREQ_SHAPING_DECR_Q1            SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 1 )
-
-/* fraction added to first autocorrelation value */
-#define SHAPE_WHITE_NOISE_FRACTION_Q20                  SKP_FIX_CONST( SHAPE_WHITE_NOISE_FRACTION, 20 )
-
-/* fraction of first autocorrelation value added to residual energy value; limits prediction gain */
-#define SHAPE_MIN_ENERGY_RATIO_Q24                      SKP_FIX_CONST( SHAPE_MIN_ENERGY_RATIO, 24 )
-
-/* noise floor to put a low limit on the quantization step size */
-#define NOISE_FLOOR_dB_Q7                               SKP_FIX_CONST( NOISE_FLOOR_dB, 7 )
-
-/* noise floor relative to active speech gain level */
-#define RELATIVE_MIN_GAIN_dB_Q7                         SKP_FIX_CONST( RELATIVE_MIN_GAIN_dB, 7 )
-
-/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */
-#define GAIN_SMOOTHING_COEF_Q10                         SKP_FIX_CONST( GAIN_SMOOTHING_COEF, 10 )
-
-/* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */
-#define SUBFR_SMTH_COEF_Q16                             SKP_FIX_CONST( SUBFR_SMTH_COEF, 16 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H
--- a/src_FIX/SKP_Silk_quant_LTP_gains_FIX.c
+++ /dev/null
@@ -1,124 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_main_FIX.h"
-
-void SKP_Silk_quant_LTP_gains_FIX(
-    SKP_int16           B_Q14[],                /* I/O  (un)quantized LTP gains     */
-    SKP_int             cbk_index[],            /* O    Codebook Index              */
-    SKP_int             *periodicity_index,     /* O    Periodicity Index           */
-    const SKP_int32     W_Q18[],                /* I    Error Weights in Q18        */
-    SKP_int             mu_Q8,                  /* I    Mu value (R/D tradeoff)     */
-    SKP_int             lowComplexity,          /* I    Flag for low complexity     */
-    const SKP_int       nb_subfr                /* I    number of subframes         */
-)
-{
-    SKP_int             j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size;
-    const SKP_uint16    *cdf_ptr;
-    const SKP_int16     *cl_ptr;
-    const SKP_int16     *cbk_ptr_Q14;
-    const SKP_int16     *b_Q14_ptr;
-    const SKP_int32     *W_Q18_ptr;
-    SKP_int32           rate_dist_subfr, rate_dist, min_rate_dist;
-
-
-TIC(quant_LTP_fix)
-
-    /***************************************************/
-    /* iterate over different codebooks with different */
-    /* rates/distortions, and choose best */
-    /***************************************************/
-    min_rate_dist = SKP_int32_MAX;
-    for( k = 0; k < 3; k++ ) {
-        cdf_ptr     = SKP_Silk_LTP_gain_CDF_ptrs[     k ];
-        cl_ptr      = SKP_Silk_LTP_gain_BITS_Q6_ptrs[ k ];
-        cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[       k ];
-        cbk_size    = SKP_Silk_LTP_vq_sizes[          k ];
-
-        /* Setup pointer to first subframe */
-        W_Q18_ptr = W_Q18;
-        b_Q14_ptr = B_Q14;
-
-        rate_dist = 0;
-        for( j = 0; j < nb_subfr; j++ ) {
-
-            SKP_Silk_VQ_WMat_EC_FIX(
-                &temp_idx[ j ],         /* O    index of best codebook vector                           */
-                &rate_dist_subfr,       /* O    best weighted quantization error + mu * rate            */
-                b_Q14_ptr,              /* I    input vector to be quantized                            */
-                W_Q18_ptr,              /* I    weighting matrix                                        */
-                cbk_ptr_Q14,            /* I    codebook                                                */
-                cl_ptr,                 /* I    code length for each codebook vector                    */
-                mu_Q8,                  /* I    tradeoff between weighted error and rate                */
-                cbk_size                /* I    number of vectors in codebook                           */
-            );
-
-            rate_dist = SKP_ADD_POS_SAT32( rate_dist, rate_dist_subfr );
-
-            b_Q14_ptr += LTP_ORDER;
-            W_Q18_ptr += LTP_ORDER * LTP_ORDER;
-        }
-
-        /* Avoid never finding a codebook */
-        rate_dist = SKP_min( SKP_int32_MAX - 1, rate_dist );
-
-        if( rate_dist < min_rate_dist ) {
-            min_rate_dist = rate_dist;
-            SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) );
-            *periodicity_index = k;
-        }
-
-        /* Break early in low-complexity mode if rate distortion is below threshold */
-        if( lowComplexity && ( rate_dist < SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) {
-            break;
-        }
-    }
-
-    cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ *periodicity_index ];
-    for( j = 0; j < nb_subfr; j++ ) {
-        for( k = 0; k < LTP_ORDER; k++ ) { 
-            B_Q14[ j * LTP_ORDER + k ] = cbk_ptr_Q14[ SKP_MLA( k, cbk_index[ j ], LTP_ORDER ) ];
-        }
-    }
-TOC(quant_LTP_fix)
-#ifdef SAVE_ALL_INTERNAL_DATA
-	/* save rate */
-	{
-		SKP_int nbits_LTP;
-		SKP_float rateBPF_LTP;
-
-		cl_ptr   = SKP_Silk_LTP_gain_BITS_Q6_ptrs[*periodicity_index];
-		nbits_LTP = 0;
-		for(j = 0; j < nb_subfr; j++){
-			nbits_LTP += cl_ptr[cbk_index[j]];
-		}
-		rateBPF_LTP = (SKP_float)nbits_LTP / 64.0f; // Q6 -> Q0
-		SAVE_DATA( rateBPF_LTP.dat, &rateBPF_LTP, sizeof(SKP_float));
-	}
-#endif
-}
-
--- a/src_FIX/SKP_Silk_structs_FIX.h
+++ b/src_FIX/SKP_Silk_structs_FIX.h
@@ -91,10 +91,7 @@
     /* Buffer for find pitch and noise shape analysis */
     SKP_DWORD_ALIGN SKP_int16 x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];
     SKP_int                         LTPCorr_Q15;                    /* Normalized correlation from pitch lag estimator                      */
-    SKP_int                         mu_LTP_Q8;                      /* Rate-distortion tradeoff in LTP quantization                         */
     SKP_int32                       SNR_dB_Q7;                      /* Quality setting                                                      */
-    SKP_int32                       avgGain_Q16;                    /* average gain during active speech                                    */
-    SKP_int32                       avgGain_Q16_one_bit_per_sample; /* average gain during active speech                                    */
     SKP_int                         BufferedInChannel_ms;           /* Simulated number of ms buffer because of exceeded TargetRate_bps     */
     SKP_int                         speech_activity_Q8;             /* Speech activity in Q8                                                */
 
--- a/src_FIX/Silk_FIX.vcproj
+++ /dev/null
@@ -1,288 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="Silk_FIX"
-	ProjectGUID="{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"
-	RootNamespace="Silk"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="&quot;../../../celt-0.8.0/libcelt&quot;;../interface;../src_common;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_FIX_Win32_debug.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="&quot;../../../celt-0.8.0/libcelt&quot;;../interface;../src_common;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
-				GeneratePreprocessedFile="0"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_FIX_Win32_mt.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_control_codec_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_corrMatrix_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_encode_frame_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_LPC_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_LTP_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_pitch_lags_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_pred_coefs_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_HP_variable_cutoff_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_init_encoder_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LTP_analysis_filter_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LTP_scale_ctrl_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_MSVQ_encode_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_rate_distortion_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_sum_error_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_noise_shape_analysis_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_prefilter_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_process_gains_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_process_NLSFs_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_quant_LTP_gains_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_regularize_correlations_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_residual_energy16_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_residual_energy_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_solve_LS_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_VQ_nearest_neighbor_FIX.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_warped_autocorrelation_FIX.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_define_FIX.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_main_FIX.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_perceptual_parameters_FIX.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_structs_FIX.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/src_FIX/src_FIX.vcxproj
@@ -1,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8484C90D-1561-402F-A91D-2DB10F8C5171}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>src_FIX</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_main_FIX.h" />
+    <ClInclude Include="SKP_Silk_structs_FIX.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_control_codec_FIX.c" />
+    <ClCompile Include="SKP_Silk_corrMatrix_FIX.c" />
+    <ClCompile Include="SKP_Silk_encode_frame_FIX.c" />
+    <ClCompile Include="SKP_Silk_find_LPC_FIX.c" />
+    <ClCompile Include="SKP_Silk_find_LTP_FIX.c" />
+    <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c" />
+    <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c" />
+    <ClCompile Include="SKP_Silk_HP_variable_cutoff_FIX.c" />
+    <ClCompile Include="SKP_Silk_init_encoder_FIX.c" />
+    <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c" />
+    <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c" />
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FIX.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FIX.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FIX.c" />
+    <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c" />
+    <ClCompile Include="SKP_Silk_prefilter_FIX.c" />
+    <ClCompile Include="SKP_Silk_process_gains_FIX.c" />
+    <ClCompile Include="SKP_Silk_process_NLSFs_FIX.c" />
+    <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c" />
+    <ClCompile Include="SKP_Silk_residual_energy16_FIX.c" />
+    <ClCompile Include="SKP_Silk_residual_energy_FIX.c" />
+    <ClCompile Include="SKP_Silk_solve_LS_FIX.c" />
+    <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/src_FIX/src_FIX.vcxproj.filters
@@ -1,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_main_FIX.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_structs_FIX.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_control_codec_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_corrMatrix_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_encode_frame_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_LPC_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_LTP_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_HP_variable_cutoff_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_init_encoder_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_prefilter_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_process_gains_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_process_NLSFs_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_residual_energy_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_residual_energy16_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_solve_LS_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c
+++ b/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c
@@ -91,22 +91,22 @@
         s_ptr = &s[ix - 1];
 
         /* short-term prediction */
-        LPC_pred = s_ptr[ 0 ]   * PredCoef[ 0 ]  + 
-                   s_ptr[-1]  * PredCoef[ 1 ]  +
-                   s_ptr[-2]  * PredCoef[ 2 ]  +
-                   s_ptr[-3]  * PredCoef[ 3 ]  +
-                   s_ptr[-4]  * PredCoef[ 4 ]  +
-                   s_ptr[-5]  * PredCoef[ 5 ]  +
-                   s_ptr[-6]  * PredCoef[ 6 ]  +
-                   s_ptr[-7]  * PredCoef[ 7 ]  +
-                   s_ptr[-8]  * PredCoef[ 8 ]  +
-                   s_ptr[-9]  * PredCoef[ 9 ]  +
-                   s_ptr[-10] * PredCoef[ 10 ] +
-                   s_ptr[-11] * PredCoef[ 11 ] +
-                   s_ptr[-12] * PredCoef[ 12 ] +
-                   s_ptr[-13] * PredCoef[ 13 ] +
-                   s_ptr[-14] * PredCoef[ 14 ] +
-                   s_ptr[-15] * PredCoef[ 15 ];
+        LPC_pred = s_ptr[  0 ]  * PredCoef[ 0 ]  + 
+                   s_ptr[ -1 ]  * PredCoef[ 1 ]  +
+                   s_ptr[ -2 ]  * PredCoef[ 2 ]  +
+                   s_ptr[ -3 ]  * PredCoef[ 3 ]  +
+                   s_ptr[ -4 ]  * PredCoef[ 4 ]  +
+                   s_ptr[ -5 ]  * PredCoef[ 5 ]  +
+                   s_ptr[ -6 ]  * PredCoef[ 6 ]  +
+                   s_ptr[ -7 ]  * PredCoef[ 7 ]  +
+                   s_ptr[ -8 ]  * PredCoef[ 8 ]  +
+                   s_ptr[ -9 ]  * PredCoef[ 9 ]  +
+                   s_ptr[ -10 ] * PredCoef[ 10 ] +
+                   s_ptr[ -11 ] * PredCoef[ 11 ] +
+                   s_ptr[ -12 ] * PredCoef[ 12 ] +
+                   s_ptr[ -13 ] * PredCoef[ 13 ] +
+                   s_ptr[ -14 ] * PredCoef[ 14 ] +
+                   s_ptr[ -15 ] * PredCoef[ 15 ];
 
         /* prediction error */
         r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
@@ -129,18 +129,18 @@
         s_ptr = &s[ix - 1];
 
         /* short-term prediction */
-        LPC_pred = s_ptr[ 0 ]   * PredCoef[ 0 ]  + 
-                   s_ptr[-1]  * PredCoef[ 1 ]  +
-                   s_ptr[-2]  * PredCoef[ 2 ]  +
-                   s_ptr[-3]  * PredCoef[ 3 ]  +
-                   s_ptr[-4]  * PredCoef[ 4 ]  +
-                   s_ptr[-5]  * PredCoef[ 5 ]  +
-                   s_ptr[-6]  * PredCoef[ 6 ]  +
-                   s_ptr[-7]  * PredCoef[ 7 ]  +
-                   s_ptr[-8]  * PredCoef[ 8 ]  +
-                   s_ptr[-9]  * PredCoef[ 9 ]  +
-                   s_ptr[-10] * PredCoef[ 10 ] +
-                   s_ptr[-11] * PredCoef[ 11 ];
+        LPC_pred = s_ptr[  0 ]  * PredCoef[ 0 ]  + 
+                   s_ptr[ -1 ]  * PredCoef[ 1 ]  +
+                   s_ptr[ -2 ]  * PredCoef[ 2 ]  +
+                   s_ptr[ -3 ]  * PredCoef[ 3 ]  +
+                   s_ptr[ -4 ]  * PredCoef[ 4 ]  +
+                   s_ptr[ -5 ]  * PredCoef[ 5 ]  +
+                   s_ptr[ -6 ]  * PredCoef[ 6 ]  +
+                   s_ptr[ -7 ]  * PredCoef[ 7 ]  +
+                   s_ptr[ -8 ]  * PredCoef[ 8 ]  +
+                   s_ptr[ -9 ]  * PredCoef[ 9 ]  +
+                   s_ptr[ -10 ] * PredCoef[ 10 ] +
+                   s_ptr[ -11 ] * PredCoef[ 11 ];
 
         /* prediction error */
         r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
@@ -163,16 +163,16 @@
         s_ptr = &s[ix - 1];
 
         /* short-term prediction */
-        LPC_pred = s_ptr[ 0 ]   * PredCoef[ 0 ]  + 
-                   s_ptr[-1]  * PredCoef[ 1 ]  +
-                   s_ptr[-2]  * PredCoef[ 2 ]  +
-                   s_ptr[-3]  * PredCoef[ 3 ]  +
-                   s_ptr[-4]  * PredCoef[ 4 ]  +
-                   s_ptr[-5]  * PredCoef[ 5 ]  +
-                   s_ptr[-6]  * PredCoef[ 6 ]  +
-                   s_ptr[-7]  * PredCoef[ 7 ]  +
-                   s_ptr[-8]  * PredCoef[ 8 ]  +
-                   s_ptr[-9]  * PredCoef[ 9 ];
+        LPC_pred = s_ptr[  0 ] * PredCoef[ 0 ]  + 
+                   s_ptr[ -1 ] * PredCoef[ 1 ]  +
+                   s_ptr[ -2 ] * PredCoef[ 2 ]  +
+                   s_ptr[ -3 ] * PredCoef[ 3 ]  +
+                   s_ptr[ -4 ] * PredCoef[ 4 ]  +
+                   s_ptr[ -5 ] * PredCoef[ 5 ]  +
+                   s_ptr[ -6 ] * PredCoef[ 6 ]  +
+                   s_ptr[ -7 ] * PredCoef[ 7 ]  +
+                   s_ptr[ -8 ] * PredCoef[ 8 ]  +
+                   s_ptr[ -9 ] * PredCoef[ 9 ];
 
         /* prediction error */
         r_LPC[ix] = s_ptr[ 1 ] - LPC_pred;
@@ -217,7 +217,7 @@
     const SKP_int                   length              /* I    Length of input signal                  */
 )
 {
-    SKP_int   ix = 8;
+    SKP_int   ix = 6;
     SKP_float LPC_pred;
     const SKP_float *s_ptr;
 
--- a/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c
+++ b/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c
@@ -30,65 +30,68 @@
 /* NLSF vector decoder */
 void SKP_Silk_NLSF_MSVQ_decode_FLP(
           SKP_float                 *pNLSF,             /* O    Decoded output vector [ LPC_ORDER ]     */
-    const SKP_Silk_NLSF_CB_FLP      *psNLSF_CB_FLP,     /* I    NLSF codebook struct                    */  
+    const SKP_Silk_NLSF_CB_struct   *psNLSF_CB,         /* I    NLSF codebook struct                    */  
     const SKP_int                   *NLSFIndices,       /* I    NLSF indices [ nStages ]                */
     const SKP_int                   LPC_order           /* I    LPC order used                          */
 )
 {
-    const SKP_float *pCB_element;
-          SKP_int    s;
-          SKP_int    i;
+    const SKP_int8 *pCB_element;
+          SKP_int  s;
+          SKP_int  i;
 
     /* Check that each index is within valid range */
-    SKP_assert( 0 <= NLSFIndices[ 0 ] && NLSFIndices[ 0 ] < psNLSF_CB_FLP->CBStages[ 0 ].nVectors );
+    SKP_assert( 0 <= NLSFIndices[ 0 ] && NLSFIndices[ 0 ] < psNLSF_CB->CBStages[ 0 ].nVectors );
 
     /* Point to the first vector element */
-    pCB_element = &psNLSF_CB_FLP->CBStages[ 0 ].CB[ SKP_MUL( NLSFIndices[ 0 ], LPC_order ) ];
+    pCB_element = &psNLSF_CB->CBStages[ 0 ].CB_NLSF_Q8[ SKP_MUL( NLSFIndices[ 0 ], LPC_order ) ];
 
     /* Initialize with the codebook vector from stage 0 */
-    SKP_memcpy( pNLSF, pCB_element, LPC_order * sizeof( SKP_float ) );
+    for( i = 0; i < LPC_order; i++ ) {
+        pNLSF[ i ] = ( SKP_float )pCB_element[ i ];
+    }
           
-    for( s = 1; s < psNLSF_CB_FLP->nStages; s++ ) {
+    for( s = 1; s < psNLSF_CB->nStages; s++ ) {
         /* Check that each index is within valid range */
-        SKP_assert( 0 <= NLSFIndices[ s ] && NLSFIndices[ s ] < psNLSF_CB_FLP->CBStages[ s ].nVectors );
+        SKP_assert( 0 <= NLSFIndices[ s ] && NLSFIndices[ s ] < psNLSF_CB->CBStages[ s ].nVectors );
 
         if( LPC_order == 16 ) {
             /* Point to the first vector element */
-            pCB_element = &psNLSF_CB_FLP->CBStages[ s ].CB[ SKP_LSHIFT( NLSFIndices[ s ], 4 ) ];
+            pCB_element = &psNLSF_CB->CBStages[ s ].CB_NLSF_Q8[ SKP_LSHIFT( NLSFIndices[ s ], 4 ) ];
 
             /* Add the codebook vector from the current stage */
-            pNLSF[ 0 ]  += pCB_element[ 0 ];
-            pNLSF[ 1 ]  += pCB_element[ 1 ];
-            pNLSF[ 2 ]  += pCB_element[ 2 ];
-            pNLSF[ 3 ]  += pCB_element[ 3 ];
-            pNLSF[ 4 ]  += pCB_element[ 4 ];
-            pNLSF[ 5 ]  += pCB_element[ 5 ];
-            pNLSF[ 6 ]  += pCB_element[ 6 ];
-            pNLSF[ 7 ]  += pCB_element[ 7 ];
-            pNLSF[ 8 ]  += pCB_element[ 8 ];
-            pNLSF[ 9 ]  += pCB_element[ 9 ];
-            pNLSF[ 10 ] += pCB_element[ 10 ];
-            pNLSF[ 11 ] += pCB_element[ 11 ];
-            pNLSF[ 12 ] += pCB_element[ 12 ];
-            pNLSF[ 13 ] += pCB_element[ 13 ];
-            pNLSF[ 14 ] += pCB_element[ 14 ];
-            pNLSF[ 15 ] += pCB_element[ 15 ];
+            pNLSF[ 0 ]  += ( SKP_float )pCB_element[ 0 ];
+            pNLSF[ 1 ]  += ( SKP_float )pCB_element[ 1 ];
+            pNLSF[ 2 ]  += ( SKP_float )pCB_element[ 2 ];
+            pNLSF[ 3 ]  += ( SKP_float )pCB_element[ 3 ];
+            pNLSF[ 4 ]  += ( SKP_float )pCB_element[ 4 ];
+            pNLSF[ 5 ]  += ( SKP_float )pCB_element[ 5 ];
+            pNLSF[ 6 ]  += ( SKP_float )pCB_element[ 6 ];
+            pNLSF[ 7 ]  += ( SKP_float )pCB_element[ 7 ];
+            pNLSF[ 8 ]  += ( SKP_float )pCB_element[ 8 ];
+            pNLSF[ 9 ]  += ( SKP_float )pCB_element[ 9 ];
+            pNLSF[ 10 ] += ( SKP_float )pCB_element[ 10 ];
+            pNLSF[ 11 ] += ( SKP_float )pCB_element[ 11 ];
+            pNLSF[ 12 ] += ( SKP_float )pCB_element[ 12 ];
+            pNLSF[ 13 ] += ( SKP_float )pCB_element[ 13 ];
+            pNLSF[ 14 ] += ( SKP_float )pCB_element[ 14 ];
+            pNLSF[ 15 ] += ( SKP_float )pCB_element[ 15 ];
         } else {
             /* Point to the first vector element */
-            pCB_element = &psNLSF_CB_FLP->CBStages[ s ].CB[ NLSFIndices[ s ] * LPC_order ];
+            pCB_element = &psNLSF_CB->CBStages[ s ].CB_NLSF_Q8[ NLSFIndices[ s ] * LPC_order ];
 
             /* Add the codebook vector from the current stage */
             for( i = 0; i < LPC_order; i++ ) {
-                pNLSF[ i ] += pCB_element[ i ];
+                pNLSF[ i ] += ( SKP_float )pCB_element[ i ];
             }
         }
     }
 
-    /* Add 1/2 */
+    /* Add 1/2 in Q8 and convert to Q0 */
     for( i = 0; i < LPC_order; i++ ) {
-        pNLSF[ i ] += 0.5f;
+        pNLSF[ i ] += 128.0f;
+        pNLSF[ i ] *= ( 1.0f / 256.0f );
     }
 
     /* NLSF stabilization */
-    SKP_Silk_NLSF_stabilize_FLP( pNLSF, psNLSF_CB_FLP->NDeltaMin, LPC_order );
+    SKP_Silk_NLSF_stabilize_FLP( pNLSF, psNLSF_CB->NDeltaMin_Q15, LPC_order );
 }
--- a/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c
+++ b/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c
@@ -33,7 +33,7 @@
 void SKP_Silk_NLSF_MSVQ_encode_FLP(
           SKP_int                   *NLSFIndices,       /* O    Codebook path vector [ CB_STAGES ]      */
           SKP_float                 *pNLSF,             /* I/O  Quantized NLSF vector [ LPC_ORDER ]     */
-    const SKP_Silk_NLSF_CB_FLP      *psNLSF_CB_FLP,     /* I    Codebook object                         */
+    const SKP_Silk_NLSF_CB_struct   *psNLSF_CB,         /* I    Codebook object                         */
     const SKP_float                 *pNLSF_q_prev,      /* I    Prev. quantized NLSF vector [LPC_ORDER] */
     const SKP_float                 *pW,                /* I    NLSF weight vector [ LPC_ORDER ]        */
     const SKP_float                 NLSF_mu,            /* I    Rate weight for the RD optimization     */
@@ -44,7 +44,10 @@
 )
 {
     SKP_int     i, s, k, cur_survivors, prev_survivors, min_survivors, input_index, cb_index, bestIndex;
-    SKP_float   se, wsse, rateDistThreshold, bestRateDist;
+    SKP_float   rateDistThreshold;
+#if( NLSF_MSVQ_FLUCTUATION_REDUCTION == 1 )
+    SKP_float   se, wsse, bestRateDist;
+#endif
 
 #if( LOW_COMPLEXITY_ONLY == 1 )
     SKP_float   pRateDist[      NLSF_MSVQ_TREE_SEARCH_MAX_VECTORS_EVALUATED_LC_MODE ];
@@ -53,8 +56,8 @@
     SKP_int     pTempIndices[   MAX_NLSF_MSVQ_SURVIVORS_LC_MODE ];
     SKP_int     pPath[          MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * NLSF_MSVQ_MAX_CB_STAGES ];
     SKP_int     pPath_new[      MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * NLSF_MSVQ_MAX_CB_STAGES ];
-    SKP_float   pRes[           MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ];
-    SKP_float   pRes_new[       MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ];
+    SKP_float   pRes_Q8[        MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ];
+    SKP_float   pRes_Q8_new[    MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ];
 #else
     SKP_float   pRateDist[      NLSF_MSVQ_TREE_SEARCH_MAX_VECTORS_EVALUATED ];
     SKP_float   pRate[          MAX_NLSF_MSVQ_SURVIVORS ];
@@ -62,8 +65,8 @@
     SKP_int     pTempIndices[   MAX_NLSF_MSVQ_SURVIVORS ];
     SKP_int     pPath[          MAX_NLSF_MSVQ_SURVIVORS * NLSF_MSVQ_MAX_CB_STAGES ];
     SKP_int     pPath_new[      MAX_NLSF_MSVQ_SURVIVORS * NLSF_MSVQ_MAX_CB_STAGES ];
-    SKP_float   pRes[           MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ];
-    SKP_float   pRes_new[       MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ];
+    SKP_float   pRes_Q8[        MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ];
+    SKP_float   pRes_Q8_new[    MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ];
 #endif
 
     const SKP_float *pConstFloat;
@@ -70,12 +73,19 @@
           SKP_float *pFloat;
     const SKP_int   *pConstInt;
           SKP_int   *pInt;
-    const SKP_float *pCB_element;
-    const SKP_Silk_NLSF_CBS_FLP *pCurrentCBStage;
+    const SKP_int8  *pCB_element;
+    const SKP_Silk_NLSF_CBS *pCurrentCBStage;
 
     SKP_assert( NLSF_MSVQ_Survivors <= MAX_NLSF_MSVQ_SURVIVORS );
     SKP_assert( ( LOW_COMPLEXITY_ONLY == 0 ) || ( NLSF_MSVQ_Survivors <= MAX_NLSF_MSVQ_SURVIVORS_LC_MODE ) );
 
+#ifdef SAVE_ALL_INTERNAL_DATA
+    /* Use sigtype.dat to seperate into signal types */
+    DEBUG_STORE_DATA( NLSF.dat,    pNLSF,    LPC_order * sizeof( SKP_float ) );
+    DEBUG_STORE_DATA( WNLSF.dat,   pW,       LPC_order * sizeof( SKP_float ) );
+    DEBUG_STORE_DATA( NLSF_mu.dat, &NLSF_mu,             sizeof( SKP_float ) );
+#endif
+
     cur_survivors = NLSF_MSVQ_Survivors;
 
     /****************************************************/
@@ -85,9 +95,9 @@
     /* Clear accumulated rates */
     SKP_memset( pRate, 0, NLSF_MSVQ_Survivors * sizeof( SKP_float ) );
 
-    /* Subtract 1/2 from NLSF input vector to create initial residual */
+    /* Subtract 1/2 from NLSF input vector to create initial residual, and scale to Q8 */
     for( i = 0; i < LPC_order; i++ ) {
-        pRes[ i ] = pNLSF[ i ] - 0.5f;
+        pRes_Q8[ i ] = ( pNLSF[ i ] - 0.5f ) * 256.0f;        
     }
 
     /* Set first stage values */
@@ -97,10 +107,10 @@
     min_survivors = NLSF_MSVQ_Survivors / 2;
 
     /* Loop over all stages */
-    for( s = 0; s < psNLSF_CB_FLP->nStages; s++ ) {
+    for( s = 0; s < psNLSF_CB->nStages; s++ ) {
 
         /* Set a pointer to the current stage codebook */
-        pCurrentCBStage = &psNLSF_CB_FLP->CBStages[ s ];
+        pCurrentCBStage = &psNLSF_CB->CBStages[ s ];
 
         /* Calculate the number of survivors in the current stage */
         cur_survivors = SKP_min_32( NLSF_MSVQ_Survivors, prev_survivors * pCurrentCBStage->nVectors );
@@ -108,12 +118,12 @@
 #if( NLSF_MSVQ_FLUCTUATION_REDUCTION == 0 )
         /* Find a single best survivor in the last stage, if we */
         /* do not need candidates for fluctuation reduction     */
-        if( s == psNLSF_CB_FLP->nStages - 1 ) {
+        if( s == psNLSF_CB->nStages - 1 ) {
             cur_survivors = 1;
         }
 #endif
         /* Nearest neighbor clustering for multiple input data vectors */
-        SKP_Silk_NLSF_VQ_rate_distortion_FLP( pRateDist, pCurrentCBStage, pRes, pW, pRate, NLSF_mu, prev_survivors, LPC_order );
+        SKP_Silk_NLSF_VQ_rate_distortion_FLP( pRateDist, pCurrentCBStage, pRes_Q8, pW, pRate, NLSF_mu, prev_survivors, LPC_order );
 
         /* Sort the rate-distortion errors */
         SKP_Silk_insertion_sort_increasing_FLP( pRateDist, pTempIndices, prev_survivors * pCurrentCBStage->nVectors, cur_survivors );
@@ -142,19 +152,19 @@
             }
 
             /* Subtract new contribution from the previous residual vector for each of 'cur_survivors' */
-            pConstFloat = &pRes[ input_index * LPC_order ];
-            pCB_element = &pCurrentCBStage->CB[ cb_index * LPC_order ];
-            pFloat      = &pRes_new[ k * LPC_order ];
+            pConstFloat = &pRes_Q8[ input_index * LPC_order ];
+            pCB_element = &pCurrentCBStage->CB_NLSF_Q8[ cb_index * LPC_order ];
+            pFloat      = &pRes_Q8_new[ k * LPC_order ];
             for( i = 0; i < LPC_order; i++ ) {
                 pFloat[ i ] = pConstFloat[ i ] - pCB_element[ i ];
             }
 
             /* Update accumulated rate for stage 1 to the current */
-            pRate_new[ k ] = pRate[ input_index ] + pCurrentCBStage->Rates[ cb_index ];
+            pRate_new[ k ] = pRate[ input_index ] + 0.0625f * ( SKP_float )pCurrentCBStage->Rates_Q4[ cb_index ];
 
             /* Copy paths from previous matrix, starting with the best path */
-            pConstInt = &pPath[ input_index * psNLSF_CB_FLP->nStages ];
-            pInt      = &pPath_new[       k * psNLSF_CB_FLP->nStages ];
+            pConstInt = &pPath[ input_index * psNLSF_CB->nStages ];
+            pInt      = &pPath_new[       k * psNLSF_CB->nStages ];
             for( i = 0; i < s; i++ ) {
                 pInt[ i ] = pConstInt[ i ];
             }
@@ -162,15 +172,15 @@
             pInt[ s ] = cb_index;
         }
 
-        if( s < psNLSF_CB_FLP->nStages - 1 ) {
+        if( s < psNLSF_CB->nStages - 1 ) {
             /* Copy NLSF residual matrix for next stage */
-            SKP_memcpy(pRes, pRes_new, cur_survivors * LPC_order * sizeof( SKP_float ) );
+            SKP_memcpy( pRes_Q8, pRes_Q8_new, cur_survivors * LPC_order * sizeof( SKP_float ) );
 
             /* Copy rate vector for next stage */
-            SKP_memcpy(pRate, pRate_new, cur_survivors * sizeof( SKP_float ) );
+            SKP_memcpy( pRate, pRate_new, cur_survivors * sizeof( SKP_float ) );
 
             /* Copy best path matrix for next stage */
-            SKP_memcpy(pPath, pPath_new, cur_survivors * psNLSF_CB_FLP->nStages * sizeof( SKP_int ) );
+            SKP_memcpy( pPath, pPath_new, cur_survivors * psNLSF_CB->nStages * sizeof( SKP_int ) );
         }
 
         prev_survivors = cur_survivors;
@@ -189,7 +199,7 @@
         bestRateDist = SKP_float_MAX;
         for( s = 0; s < cur_survivors; s++ ) {
             /* Decode survivor to compare with previous quantized NLSF vector */
-            SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB_FLP, &pPath_new[ s * psNLSF_CB_FLP->nStages ], LPC_order );
+            SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB, &pPath_new[ s * psNLSF_CB->nStages ], LPC_order );
 
             /* Compare decoded NLSF vector with the previously quantized vector */ 
             wsse = 0;
@@ -216,9 +226,9 @@
 #endif
 
     /* Copy best path to output argument */
-    SKP_memcpy( NLSFIndices, &pPath_new[ bestIndex * psNLSF_CB_FLP->nStages ], psNLSF_CB_FLP->nStages * sizeof( SKP_int ) );
+    SKP_memcpy( NLSFIndices, &pPath_new[ bestIndex * psNLSF_CB->nStages ], psNLSF_CB->nStages * sizeof( SKP_int ) );
 
     /* Decode and stabilize the best survivor */
-    SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB_FLP, NLSFIndices, LPC_order );
+    SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB, NLSFIndices, LPC_order );
 
 }
--- a/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c
+++ b/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c
@@ -26,11 +26,11 @@
 ***********************************************************************/
 
 #include "SKP_Silk_main_FLP.h"
-    
+
 /* Rate-Distortion calculations for multiple input data vectors */
 void SKP_Silk_NLSF_VQ_rate_distortion_FLP(
           SKP_float             *pRD,               /* O   Rate-distortion values [psNLSF_CBS_FLP->nVectors*N] */
-    const SKP_Silk_NLSF_CBS_FLP *psNLSF_CBS_FLP,    /* I   NLSF codebook stage struct                          */
+    const SKP_Silk_NLSF_CBS     *psNLSF_CBS,        /* I   NLSF codebook stage struct                          */
     const SKP_float             *in,                /* I   Input vectors to be quantized                       */
     const SKP_float             *w,                 /* I   Weight vector                                       */
     const SKP_float             *rate_acc,          /* I   Accumulated rates from previous stage               */
@@ -43,15 +43,15 @@
     SKP_int   i, n;
 
     /* Compute weighted quantization errors for all input vectors over one codebook stage */
-    SKP_Silk_NLSF_VQ_sum_error_FLP( pRD, in, w, psNLSF_CBS_FLP->CB, N, psNLSF_CBS_FLP->nVectors, LPC_order );
+    SKP_Silk_NLSF_VQ_sum_error_FLP( pRD, in, w, psNLSF_CBS->CB_NLSF_Q8, N, psNLSF_CBS->nVectors, LPC_order );
 
     /* Loop over input vectors */
     pRD_vec = pRD;
     for( n = 0; n < N; n++ ) {
         /* Add rate cost to error for each codebook vector */
-        for( i = 0; i < psNLSF_CBS_FLP->nVectors; i++ ) {
-            pRD_vec[ i ] += mu * ( rate_acc[n] + psNLSF_CBS_FLP->Rates[ i ] );
+        for( i = 0; i < psNLSF_CBS->nVectors; i++ ) {
+            pRD_vec[ i ] += mu * ( rate_acc[n] + 0.0625f * ( SKP_float )psNLSF_CBS->Rates_Q4[ i ] );
         }
-        pRD_vec += psNLSF_CBS_FLP->nVectors;
+        pRD_vec += psNLSF_CBS->nVectors;
     }
 }
--- a/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c
+++ b/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c
@@ -30,18 +30,18 @@
 /* compute weighted quantization errors for LPC_order element input vectors, over one codebook stage */
 void SKP_Silk_NLSF_VQ_sum_error_FLP(
           SKP_float                 *err,               /* O    Weighted quantization errors [ N * K ]  */
-    const SKP_float                 *in,                /* I    Input vectors [ N * LPC_order ]         */
+    const SKP_float                 *in_NLSF_Q8,        /* I    Input vectors [ N * LPC_order ]         */
     const SKP_float                 *w,                 /* I    Weighting vectors [ N * LPC_order ]     */
-    const SKP_float                 *pCB,               /* I    Codebook vectors [ K * LPC_order ]      */
+    const SKP_int8                  *pCB_NLSF_Q8,       /* I    Codebook vectors [ K * LPC_order ]      */
     const SKP_int                   N,                  /* I    Number of input vectors                 */
     const SKP_int                   K,                  /* I    Number of codebook vectors              */
     const SKP_int                   LPC_order           /* I    LPC order                               */
 )
 {
-    SKP_int     i, n;
-    SKP_float   diff, sum_error;
-    SKP_float   Wcpy[ MAX_LPC_ORDER ];
-    const SKP_float *cb_vec;
+    SKP_int        i, n;
+    SKP_float      diff_Q8, sum_error_Q16;
+    SKP_float      Wcpy[ MAX_LPC_ORDER ];
+    const SKP_int8 *cb_vec_NLSF_Q8;
 
     /* Copy to local stack */
     SKP_memcpy( Wcpy, w, LPC_order * sizeof( SKP_float ) );
@@ -50,47 +50,47 @@
         /* Loop over input vectors */
         for( n = 0; n < N; n++ ) {
             /* Loop over codebook */
-            cb_vec = pCB;
+            cb_vec_NLSF_Q8 = pCB_NLSF_Q8;
             for( i = 0; i < K; i++ ) {
                 /* Compute weighted squared quantization error */
-                diff = in[ 0 ] - cb_vec[ 0 ];
-                sum_error  = Wcpy[ 0 ] * diff * diff;
-                diff = in[ 1 ] - cb_vec[ 1 ];
-                sum_error += Wcpy[ 1 ] * diff * diff;
-                diff = in[ 2 ] - cb_vec[ 2 ];
-                sum_error += Wcpy[ 2 ] * diff * diff;
-                diff = in[ 3 ] - cb_vec[ 3 ];
-                sum_error += Wcpy[ 3 ] * diff * diff;
-                diff = in[ 4 ] - cb_vec[ 4 ];
-                sum_error += Wcpy[ 4 ] * diff * diff;
-                diff = in[ 5 ] - cb_vec[ 5 ];
-                sum_error += Wcpy[ 5 ] * diff * diff;
-                diff = in[ 6 ] - cb_vec[ 6 ];
-                sum_error += Wcpy[ 6 ] * diff * diff;
-                diff = in[ 7 ] - cb_vec[ 7 ];
-                sum_error += Wcpy[ 7 ] * diff * diff;
-                diff = in[ 8 ] - cb_vec[ 8 ];
-                sum_error += Wcpy[ 8 ] * diff * diff;
-                diff = in[ 9 ] - cb_vec[ 9 ];
-                sum_error += Wcpy[ 9 ] * diff * diff;
-                diff = in[ 10 ] - cb_vec[ 10 ];
-                sum_error += Wcpy[ 10 ] * diff * diff;
-                diff = in[ 11 ] - cb_vec[ 11 ];
-                sum_error += Wcpy[ 11 ] * diff * diff;
-                diff = in[ 12 ] - cb_vec[ 12 ];
-                sum_error += Wcpy[ 12 ] * diff * diff;
-                diff = in[ 13 ] - cb_vec[ 13 ];
-                sum_error += Wcpy[ 13 ] * diff * diff;
-                diff = in[ 14 ] - cb_vec[ 14 ];
-                sum_error += Wcpy[ 14 ] * diff * diff;
-                diff = in[ 15 ] - cb_vec[ 15 ];
-                sum_error += Wcpy[ 15 ] * diff * diff;
+                diff_Q8 = in_NLSF_Q8[ 0 ] - ( SKP_float )cb_vec_NLSF_Q8[ 0 ];
+                sum_error_Q16  = Wcpy[ 0 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 1 ] - ( SKP_float )cb_vec_NLSF_Q8[ 1 ];
+                sum_error_Q16 += Wcpy[ 1 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 2 ] - ( SKP_float )cb_vec_NLSF_Q8[ 2 ];
+                sum_error_Q16 += Wcpy[ 2 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 3 ] - ( SKP_float )cb_vec_NLSF_Q8[ 3 ];
+                sum_error_Q16 += Wcpy[ 3 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 4 ] - ( SKP_float )cb_vec_NLSF_Q8[ 4 ];
+                sum_error_Q16 += Wcpy[ 4 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 5 ] - ( SKP_float )cb_vec_NLSF_Q8[ 5 ];
+                sum_error_Q16 += Wcpy[ 5 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 6 ] - ( SKP_float )cb_vec_NLSF_Q8[ 6 ];
+                sum_error_Q16 += Wcpy[ 6 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 7 ] - ( SKP_float )cb_vec_NLSF_Q8[ 7 ];
+                sum_error_Q16 += Wcpy[ 7 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 8 ] - ( SKP_float )cb_vec_NLSF_Q8[ 8 ];
+                sum_error_Q16 += Wcpy[ 8 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 9 ] - ( SKP_float )cb_vec_NLSF_Q8[ 9 ];
+                sum_error_Q16 += Wcpy[ 9 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 10 ] - ( SKP_float )cb_vec_NLSF_Q8[ 10 ];
+                sum_error_Q16 += Wcpy[ 10 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 11 ] - ( SKP_float )cb_vec_NLSF_Q8[ 11 ];
+                sum_error_Q16 += Wcpy[ 11 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 12 ] - ( SKP_float )cb_vec_NLSF_Q8[ 12 ];
+                sum_error_Q16 += Wcpy[ 12 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 13 ] - ( SKP_float )cb_vec_NLSF_Q8[ 13 ];
+                sum_error_Q16 += Wcpy[ 13 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 14 ] - ( SKP_float )cb_vec_NLSF_Q8[ 14 ];
+                sum_error_Q16 += Wcpy[ 14 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 15 ] - ( SKP_float )cb_vec_NLSF_Q8[ 15 ];
+                sum_error_Q16 += Wcpy[ 15 ] * diff_Q8 * diff_Q8;
 
-                err[ i ] = sum_error;
-                cb_vec += 16;
+                err[ i ] = ( 1.0f / 65536.0f ) * sum_error_Q16;
+                cb_vec_NLSF_Q8 += 16;
             }
-            err += K;
-            in  += 16;
+            err        += K;
+            in_NLSF_Q8 += 16;
         }
     } else {
         SKP_assert( LPC_order == 10 );
@@ -98,35 +98,35 @@
         /* Loop over input vectors */
         for( n = 0; n < N; n++ ) {
             /* Loop over codebook */
-            cb_vec = pCB;
+            cb_vec_NLSF_Q8 = pCB_NLSF_Q8;
             for( i = 0; i < K; i++ ) {
                 /* Compute weighted squared quantization error */
-                diff = in[ 0 ] - cb_vec[ 0 ];
-                sum_error  = Wcpy[ 0 ] * diff * diff;
-                diff = in[ 1 ] - cb_vec[ 1 ];
-                sum_error += Wcpy[ 1 ] * diff * diff;
-                diff = in[ 2 ] - cb_vec[ 2 ];
-                sum_error += Wcpy[ 2 ] * diff * diff;
-                diff = in[ 3 ] - cb_vec[ 3 ];
-                sum_error += Wcpy[ 3 ] * diff * diff;
-                diff = in[ 4 ] - cb_vec[ 4 ];
-                sum_error += Wcpy[ 4 ] * diff * diff;
-                diff = in[ 5 ] - cb_vec[ 5 ];
-                sum_error += Wcpy[ 5 ] * diff * diff;
-                diff = in[ 6 ] - cb_vec[ 6 ];
-                sum_error += Wcpy[ 6 ] * diff * diff;
-                diff = in[ 7 ] - cb_vec[ 7 ];
-                sum_error += Wcpy[ 7 ] * diff * diff;
-                diff = in[ 8 ] - cb_vec[ 8 ];
-                sum_error += Wcpy[ 8 ] * diff * diff;
-                diff = in[ 9 ] - cb_vec[ 9 ];
-                sum_error += Wcpy[ 9 ] * diff * diff;
+                diff_Q8 = in_NLSF_Q8[ 0 ] - ( SKP_float )cb_vec_NLSF_Q8[ 0 ];
+                sum_error_Q16  = Wcpy[ 0 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 1 ] - ( SKP_float )cb_vec_NLSF_Q8[ 1 ];
+                sum_error_Q16 += Wcpy[ 1 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 2 ] - ( SKP_float )cb_vec_NLSF_Q8[ 2 ];
+                sum_error_Q16 += Wcpy[ 2 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 3 ] - ( SKP_float )cb_vec_NLSF_Q8[ 3 ];
+                sum_error_Q16 += Wcpy[ 3 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 4 ] - ( SKP_float )cb_vec_NLSF_Q8[ 4 ];
+                sum_error_Q16 += Wcpy[ 4 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 5 ] - ( SKP_float )cb_vec_NLSF_Q8[ 5 ];
+                sum_error_Q16 += Wcpy[ 5 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 6 ] - ( SKP_float )cb_vec_NLSF_Q8[ 6 ];
+                sum_error_Q16 += Wcpy[ 6 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 7 ] - ( SKP_float )cb_vec_NLSF_Q8[ 7 ];
+                sum_error_Q16 += Wcpy[ 7 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 8 ] - ( SKP_float )cb_vec_NLSF_Q8[ 8 ];
+                sum_error_Q16 += Wcpy[ 8 ] * diff_Q8 * diff_Q8;
+                diff_Q8 = in_NLSF_Q8[ 9 ] - ( SKP_float )cb_vec_NLSF_Q8[ 9 ];
+                sum_error_Q16 += Wcpy[ 9 ] * diff_Q8 * diff_Q8;
 
-                err[ i ] = sum_error;
-                cb_vec += 10;
+                err[ i ] = ( 1.0f / 65536.0f ) * sum_error_Q16;
+                cb_vec_NLSF_Q8 += 10;
             }
-            err += K;
-            in  += 10;
+            err        += K;
+            in_NLSF_Q8 += 10;
         }
     }
 }
--- a/src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c
+++ /dev/null
@@ -1,98 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_main_FLP.h"
-
-#define Q14_CONVERSION_FAC                              6.1035e-005f // 1 / 2^14
-
-/* entropy constrained MATRIX-weighted VQ, for a single input data vector */
-void SKP_Silk_VQ_WMat_EC_FLP(
-          SKP_int                   *ind,               /* O    Index of best codebook vector           */
-          SKP_float                 *rate_dist,         /* O    Best weighted quant. error + mu * rate  */
-    const SKP_float                 *in,                /* I    Input vector to be quantized            */
-    const SKP_float                 *W,                 /* I    Weighting matrix                        */
-    const SKP_int16                 *cb,                /* I    Codebook                                */
-    const SKP_int16                 *cl_Q6,             /* I    Code length for each codebook vector    */
-    const SKP_float                 mu,                 /* I    Tradeoff between WSSE and rate          */
-    const SKP_int                   L                   /* I    Number of vectors in codebook           */
-)
-{
-    SKP_int   k;
-    SKP_float sum1;
-    SKP_float diff[ 5 ];
-    const SKP_int16 *cb_row;
-
-    /* Loop over codebook */
-    *rate_dist = SKP_float_MAX;
-    cb_row = cb;
-    for( k = 0; k < L; k++ ) {
-        /* Calc difference between in vector and cbk vector */
-        diff[ 0 ] = in[ 0 ] - ( SKP_float )cb_row[ 0 ] * Q14_CONVERSION_FAC;
-        diff[ 1 ] = in[ 1 ] - ( SKP_float )cb_row[ 1 ] * Q14_CONVERSION_FAC;
-        diff[ 2 ] = in[ 2 ] - ( SKP_float )cb_row[ 2 ] * Q14_CONVERSION_FAC;
-        diff[ 3 ] = in[ 3 ] - ( SKP_float )cb_row[ 3 ] * Q14_CONVERSION_FAC;
-        diff[ 4 ] = in[ 4 ] - ( SKP_float )cb_row[ 4 ] * Q14_CONVERSION_FAC;
-
-        /* Weighted rate */
-        sum1 = mu * cl_Q6[ k ] / 64.0f;
-
-        /* Add weighted quantization error, assuming W is symmetric */
-        /* first row of W */
-        sum1 += diff[ 0 ] * ( W[ 0 ] * diff[ 0 ] + 
-                     2.0f * ( W[ 1 ] * diff[ 1 ] + 
-                              W[ 2 ] * diff[ 2 ] + 
-                              W[ 3 ] * diff[ 3 ] + 
-                              W[ 4 ] * diff[ 4 ] ) );
-
-        /* second row of W */
-        sum1 += diff[ 1 ] * ( W[ 6 ] * diff[ 1 ] + 
-                     2.0f * ( W[ 7 ] * diff[ 2 ] + 
-                              W[ 8 ] * diff[ 3 ] + 
-                              W[ 9 ] * diff[ 4 ] ) );
-
-        /* third row of W */
-        sum1 += diff[ 2 ] * ( W[ 12 ] * diff[ 2 ] + 
-                    2.0f *  ( W[ 13 ] * diff[ 3 ] + 
-                              W[ 14 ] * diff[ 4 ] ) );
-
-        /* fourth row of W */
-        sum1 += diff[ 3 ] * ( W[ 18 ] * diff[ 3 ] + 
-                     2.0f * ( W[ 19 ] * diff[ 4 ] ) );
-
-        /* last row of W */
-        sum1 += diff[ 4 ] * ( W[ 24 ] * diff[ 4 ] );
-
-        /* find best */
-        if( sum1 < *rate_dist ) {
-            *rate_dist = sum1;
-            *ind = k;
-        }
-
-        /* Go to next cbk vector */
-        cb_row += LTP_ORDER;
-    }
-}
--- a/src_FLP/SKP_Silk_control_codec_FLP.c
+++ b/src_FLP/SKP_Silk_control_codec_FLP.c
@@ -33,11 +33,6 @@
     SKP_int                         fs_kHz              /* I    Internal sampling rate (kHz)            */
 );
 
-SKP_INLINE SKP_int SKP_Silk_setup_packetsize(
-    SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O  Pointer to Silk encoder state FLP       */
-    SKP_int                         PacketSize_ms       /* I    Packet length (ms)                      */
-);
-
 SKP_INLINE SKP_int SKP_Silk_setup_fs(
     SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O                      */
     SKP_int                         fs_kHz,             /* I                        */
@@ -140,40 +135,6 @@
     }
 }
 
-SKP_INLINE SKP_int SKP_Silk_setup_packetsize(
-    SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O                      */
-    SKP_int                         PacketSize_ms       /* I                        */
-)
-{
-    SKP_int ret = SKP_SILK_NO_ERROR;
-    if( ( PacketSize_ms !=  10 ) &&
-        ( PacketSize_ms !=  20 ) &&
-        ( PacketSize_ms !=  40 ) && 
-        ( PacketSize_ms !=  60 ) ) {
-        ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
-    } else {
-        if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) {
-            if( PacketSize_ms == 10 ) {
-                /* Only allowed when the payload buffer is empty */
-                psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1;
-                psEnc->sCmn.PacketSize_ms = PacketSize_ms;
-                psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, psEnc->sCmn.fs_kHz );
-                /* Packet length changes. Reset LBRR buffer */
-                SKP_Silk_LBRR_reset( &psEnc->sCmn );
-            } else{
-                psEnc->sCmn.nb_subfr = MAX_NB_SUBFR;
-                psEnc->sCmn.PacketSize_ms = PacketSize_ms;
-                psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, psEnc->sCmn.fs_kHz );
-                /* Packet length changes. Reset LBRR buffer */
-                SKP_Silk_LBRR_reset( &psEnc->sCmn );
-            }
-        }
-        psEnc->sCmn.frame_length = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr );
-    }
-
-    return(ret);
-}
-
 SKP_INLINE SKP_int SKP_Silk_setup_resamplers(
     SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O  Pointer to Silk encoder state FLP       */
     SKP_int                         fs_kHz              /* I    External (API) sampling rate (Hz)       */
@@ -238,16 +199,37 @@
 {
     SKP_int ret = SKP_SILK_NO_ERROR;
 
+    /* Set packet size */
+    if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) {
+        if( ( PacketSize_ms !=  10 ) &&
+            ( PacketSize_ms !=  20 ) &&
+            ( PacketSize_ms !=  40 ) && 
+            ( PacketSize_ms !=  60 ) ) {
+            ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED;
+        }
+        if( PacketSize_ms == 10 ) {
+            /* Only allowed when the payload buffer is empty */
+            psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1;
+            psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
+        } else {
+            psEnc->sCmn.nb_subfr = MAX_NB_SUBFR;
+            psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
+        }
+        /* Packet length changes. Reset LBRR buffer */
+        SKP_Silk_LBRR_reset( &psEnc->sCmn );
+        psEnc->sCmn.PacketSize_ms = PacketSize_ms;
+    }
+
     /* Set internal sampling frequency */
     if( psEnc->sCmn.fs_kHz != fs_kHz ) {
         /* reset part of the state */
-        SKP_memset( &psEnc->sShape,          0,                            sizeof( SKP_Silk_shape_state_FLP ) );
-        SKP_memset( &psEnc->sPrefilt,        0,                            sizeof( SKP_Silk_prefilter_state_FLP ) );
-        SKP_memset( &psEnc->sNSQ,            0,                            sizeof( SKP_Silk_nsq_state ) );
-        SKP_memset( &psEnc->sPred,           0,                            sizeof( SKP_Silk_predict_state_FLP ) );
-        SKP_memset( psEnc->sNSQ.xq,          0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) );
-        SKP_memset( psEnc->sNSQ_LBRR.xq,     0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) );
-        SKP_memset( psEnc->sCmn.LBRR_buffer, 0,           MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) );
+        SKP_memset( &psEnc->sShape,          0,                        sizeof( SKP_Silk_shape_state_FLP ) );
+        SKP_memset( &psEnc->sPrefilt,        0,                        sizeof( SKP_Silk_prefilter_state_FLP ) );
+        SKP_memset( &psEnc->sNSQ,            0,                        sizeof( SKP_Silk_nsq_state ) );
+        SKP_memset( &psEnc->sPred,           0,                        sizeof( SKP_Silk_predict_state_FLP ) );
+        SKP_memset( psEnc->sNSQ.xq,          0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) );
+        SKP_memset( psEnc->sNSQ_LBRR.xq,     0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) );
+        SKP_memset( psEnc->sCmn.LBRR_buffer, 0,       MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) );
 #if SWITCH_TRANSITION_FILTERING
         SKP_memset( psEnc->sCmn.sLP.In_LP_State, 0, 2 * sizeof( SKP_int32 ) );
         if( psEnc->sCmn.sLP.mode == 1 ) {
@@ -281,16 +263,29 @@
             psEnc->sCmn.predictLPCOrder = MIN_LPC_ORDER;
             psEnc->sCmn.psNLSF_CB[ 0 ]  = &SKP_Silk_NLSF_CB0_10;
             psEnc->sCmn.psNLSF_CB[ 1 ]  = &SKP_Silk_NLSF_CB1_10;
-            psEnc->psNLSF_CB_FLP[  0 ]  = &SKP_Silk_NLSF_CB0_10_FLP;
-            psEnc->psNLSF_CB_FLP[  1 ]  = &SKP_Silk_NLSF_CB1_10_FLP;
+            if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; 
+            } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         } else {
             psEnc->sCmn.predictLPCOrder = MAX_LPC_ORDER;
             psEnc->sCmn.psNLSF_CB[ 0 ]  = &SKP_Silk_NLSF_CB0_16;
             psEnc->sCmn.psNLSF_CB[ 1 ]  = &SKP_Silk_NLSF_CB1_16;
-            psEnc->psNLSF_CB_FLP[  0 ]  = &SKP_Silk_NLSF_CB0_16_FLP;
-            psEnc->psNLSF_CB_FLP[  1 ]  = &SKP_Silk_NLSF_CB1_16_FLP;
+            if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; 
+            } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
+                psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         }
         psEnc->sCmn.subfr_length   = SUB_FRAME_LENGTH_MS * fs_kHz;
+        psEnc->sCmn.frame_length   = psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr;
         psEnc->sCmn.ltp_mem_length = LTP_MEM_LENGTH_MS * fs_kHz; 
         psEnc->sCmn.la_pitch       = LA_PITCH_MS * fs_kHz;
         psEnc->sPred.min_pitch_lag =  3 * fs_kHz;
@@ -297,34 +292,39 @@
         psEnc->sPred.max_pitch_lag = 18 * fs_kHz;
         if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){
             psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz );
-        } else {
+        } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){
             psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz );
+        } else {
+            /* Unsupported number of frames */
+            SKP_assert( 0 );
         }
         if( psEnc->sCmn.fs_kHz == 24 ) {
-            psEnc->mu_LTP = MU_LTP_QUANT_SWB;
-            psEnc->sCmn.bitrate_threshold_up   = SKP_int32_MAX;
-            psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; 
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = SKP_int32_MAX;
+            psEnc->sCmn.bitrate_threshold_down  = SWB2WB_BITRATE_BPS; 
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF;
         } else if( psEnc->sCmn.fs_kHz == 16 ) {
-            psEnc->mu_LTP = MU_LTP_QUANT_WB;
-            psEnc->sCmn.bitrate_threshold_up   = WB2SWB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; 
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = WB2SWB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = WB2MB_BITRATE_BPS; 
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF;
         } else if( psEnc->sCmn.fs_kHz == 12 ) {
-            psEnc->mu_LTP = MU_LTP_QUANT_MB;
-            psEnc->sCmn.bitrate_threshold_up   = MB2WB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS;
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = MB2WB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = MB2NB_BITRATE_BPS;
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF;
+        } else if( psEnc->sCmn.fs_kHz == 8 ) {
+            psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 10 );
+            psEnc->sCmn.bitrate_threshold_up    = NB2MB_BITRATE_BPS;
+            psEnc->sCmn.bitrate_threshold_down  = 0;
+            psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF;
         } else {
-            psEnc->mu_LTP = MU_LTP_QUANT_NB;
-            psEnc->sCmn.bitrate_threshold_up   = NB2MB_BITRATE_BPS;
-            psEnc->sCmn.bitrate_threshold_down = 0;
+            /* unsupported sampling rate */
+            SKP_assert( 0 );
         }
         psEnc->sCmn.fs_kHz_changed = 1;
     }
 
-    /********************************************/
-    /* Set packet size                          */
-    /********************************************/
-    ret += SKP_Silk_setup_packetsize( psEnc, PacketSize_ms );
-
     /* Check that settings are valid */
     SKP_assert( ( psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr ) == psEnc->sCmn.frame_length );
  
@@ -338,7 +338,7 @@
 {
     SKP_int k, ret = SKP_SILK_NO_ERROR;
     SKP_float frac;
-    const SKP_int32 *rateTable;
+    const SKP_uint16 *rateTable;
 
     /* Set bitrate/coding quality */
     if( TargetRate_bps != psEnc->sCmn.TargetRate_bps ) {
--- a/src_FLP/SKP_Silk_define_FLP.h
+++ /dev/null
@@ -1,103 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_DEFINE_FLP_H
-#define SKP_SILK_DEFINE_FLP_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/*******************/
-/* Pitch estimator */
-/*******************/
-
-/* Level of noise floor for whitening filter LPC analysis in pitch analysis */
-#define FIND_PITCH_WHITE_NOISE_FRACTION                 1e-3f
-
-/* Bandwidth expansion for whitening filter in pitch analysis */
-#define FIND_PITCH_BANDWITH_EXPANSION                   0.99f
-
-/* Threshold used by pitch estimator for early escape */
-#define FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE        0.7f
-#define FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE        0.75f
-#define FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE        0.8f
-
-/***********************/
-/* Long-Term predictor */
-/***********************/
-
-/* Regualarization factor for correlation matrix. Equivalent to adding noise at -50 dB */
-#define FIND_LTP_COND_FAC                               1e-5f
-#define FIND_LPC_COND_FAC                               6e-5f
-
-/* Find prediction coefficients defines */
-#define LTP_DAMPING                                     0.001f
-#define LTP_SMOOTHING                                   0.1f
-
-/* LTP quantization settings */
-#define MU_LTP_QUANT_NB                                 0.03f
-#define MU_LTP_QUANT_MB                                 0.025f
-#define MU_LTP_QUANT_WB                                 0.02f
-#define MU_LTP_QUANT_SWB                                0.016f
-
-/***********************/
-/* High pass filtering */
-/***********************/
-
-/* Smoothing parameters for low end of pitch frequency range estimation */
-#define VARIABLE_HP_SMTH_COEF1                          0.1f
-#define VARIABLE_HP_SMTH_COEF2                          0.015f
-
-/* Min and max values for low end of pitch frequency range estimation */
-#define VARIABLE_HP_MIN_FREQ                            80.0f
-#define VARIABLE_HP_MAX_FREQ                            150.0f
-
-/* Max absolute difference between log2 of pitch frequency and smoother state, to enter the smoother */
-#define VARIABLE_HP_MAX_DELTA_FREQ                      0.4f
-
-/***********/
-/* Various */
-/***********/
-
-/* Required speech activity for counting frame as active */
-#define WB_DETECT_ACTIVE_SPEECH_LEVEL_THRES             0.7f        
-
-#define SPEECH_ACTIVITY_DTX_THRES                       0.1f
-
-/* Speech Activity LBRR enable threshold (needs tuning) */
-#define LBRR_SPEECH_ACTIVITY_THRES                      0.5f        
-
-#define Q14_CONVERSION_FAC                              6.1035e-005f // 1 / 2^14
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/src_FLP/SKP_Silk_encode_frame_FLP.c
+++ b/src_FLP/SKP_Silk_encode_frame_FLP.c
@@ -52,8 +52,6 @@
     SKP_uint8   LBRRpayload[ MAX_ARITHM_BYTES ];
     SKP_int16   nBytesLBRR;
 
-    const SKP_uint16 *FrameTermination_CDF;
-
 TIC(ENCODE_FRAME)
 
     sEncCtrl.sCmn.Seed = psEnc->sCmn.frameCounter++ & 3;
@@ -125,7 +123,7 @@
     /* Find linear prediction coefficients (LPC + LTP) */
     /***************************************************/
 TIC(FIND_PRED_COEF)
-    SKP_Silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch );
+    SKP_Silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch, x_frame );
 TOC(FIND_PRED_COEF)
 
     /****************************************/
@@ -183,7 +181,6 @@
     /****************************************/
 TIC(ENCODE_PARAMS)
     SKP_Silk_encode_parameters( &psEnc->sCmn, &sEncCtrl.sCmn, psRangeEnc );
-    FrameTermination_CDF = SKP_Silk_FrameTermination_CDF;
 TOC(ENCODE_PARAMS)
 
     /****************************************/
@@ -217,8 +214,7 @@
         frame_terminator = SKP_SILK_NO_LBRR;
 
         /* Add the frame termination info to stream */
-        ec_encode_bin( psRangeEnc, FrameTermination_CDF[ frame_terminator ], 
-            FrameTermination_CDF[ frame_terminator + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 );
 
         /* Code excitation signal */
         for( i = 0; i < psEnc->sCmn.nFramesInPayloadBuf; i++ ) {
@@ -304,9 +300,8 @@
 
 TOC(ENCODE_FRAME)
 #ifdef SAVE_ALL_INTERNAL_DATA
-    DEBUG_STORE_DATA( xf.dat,                   pIn_HP_LP,                           psEnc->sCmn.frame_length * sizeof( SKP_int16 ) );
-    DEBUG_STORE_DATA( xfw.dat,                  xfw,                                 psEnc->sCmn.frame_length * sizeof( SKP_float ) );
-//  DEBUG_STORE_DATA( q.dat,                    q,                                   psEnc->sCmn.frame_length * sizeof( SKP_int   ) );
+    //DEBUG_STORE_DATA( xf.dat,                   pIn_HP_LP,                           psEnc->sCmn.frame_length * sizeof( SKP_int16 ) );
+    //DEBUG_STORE_DATA( xfw.dat,                  xfw,                                 psEnc->sCmn.frame_length * sizeof( SKP_float ) );
     DEBUG_STORE_DATA( pitchL.dat,               sEncCtrl.sCmn.pitchL,                            MAX_NB_SUBFR * sizeof( SKP_int   ) );
     DEBUG_STORE_DATA( pitchG_quantized.dat,     sEncCtrl.LTPCoef,            psEnc->sCmn.nb_subfr * LTP_ORDER * sizeof( SKP_float ) );
     DEBUG_STORE_DATA( pitch_freq_low_Hz.dat,    &sEncCtrl.pitch_freq_low_Hz,                                    sizeof( SKP_float ) );
@@ -313,7 +308,7 @@
     DEBUG_STORE_DATA( LTPcorr.dat,              &psEnc->LTPCorr,                                                sizeof( SKP_float ) );
     DEBUG_STORE_DATA( tilt.dat,                 &sEncCtrl.input_tilt,                                           sizeof( SKP_float ) );
     DEBUG_STORE_DATA( gains.dat,                sEncCtrl.Gains,                          psEnc->sCmn.nb_subfr * sizeof( SKP_float ) );
-//    DEBUG_STORE_DATA( gains_indices.dat,        sEncCtrl.sCmn.GainsIndices, MAX_LAYERS * psEnc->sCmn.nb_subfr * sizeof( SKP_int   ) );
+    DEBUG_STORE_DATA( gains_indices.dat,        &sEncCtrl.sCmn.GainsIndices,             psEnc->sCmn.nb_subfr * sizeof( SKP_int   ) );
     DEBUG_STORE_DATA( nBytes.dat,               &nBytes,                                                        sizeof( SKP_int   ) );
     DEBUG_STORE_DATA( current_SNR_db.dat,       &sEncCtrl.current_SNR_dB,                                       sizeof( SKP_float ) );
     DEBUG_STORE_DATA( QuantOffsetType.dat,      &sEncCtrl.sCmn.QuantOffsetType,                                 sizeof( SKP_int   ) );
--- a/src_FLP/SKP_Silk_find_pitch_lags_FLP.c
+++ b/src_FLP/SKP_Silk_find_pitch_lags_FLP.c
@@ -81,7 +81,7 @@
     SKP_Silk_autocorrelation_FLP( auto_corr, Wsig, psPredSt->pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1 );
 
     /* Add white noise, as a fraction of the energy */
-    auto_corr[ 0 ] += auto_corr[ 0 ] * FIND_PITCH_WHITE_NOISE_FRACTION;
+    auto_corr[ 0 ] += auto_corr[ 0 ] * FIND_PITCH_WHITE_NOISE_FRACTION + 1;
 
     /* Calculate the reflection coefficients using Schur */
     res_nrg = SKP_Silk_schur_FLP( refl_coef, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder );
--- a/src_FLP/SKP_Silk_find_pred_coefs_FLP.c
+++ b/src_FLP/SKP_Silk_find_pred_coefs_FLP.c
@@ -29,9 +29,10 @@
 
 
 void SKP_Silk_find_pred_coefs_FLP(
-    SKP_Silk_encoder_state_FLP      *psEnc,         /* I/O  Encoder state FLP               */
-    SKP_Silk_encoder_control_FLP    *psEncCtrl,     /* I/O  Encoder control FLP             */
-    const SKP_float                 res_pitch[]     /* I    Residual from pitch analysis    */
+    SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O  Encoder state FLP                       */
+    SKP_Silk_encoder_control_FLP    *psEncCtrl,         /* I/O  Encoder control FLP                     */
+    const SKP_float                 res_pitch[],        /* I    Residual from pitch analysis            */
+    const SKP_float                 x[]                 /* I    Speech signal                           */
 )
 {
     SKP_int         i;
@@ -60,9 +61,14 @@
             psEncCtrl->sCmn.pitchL, Wght, psEnc->sCmn.subfr_length,
             psEnc->sCmn.nb_subfr, psEnc->sCmn.ltp_mem_length );
 
+#ifdef SAVE_ALL_INTERNAL_DATA
+		DEBUG_STORE_DATA( ltp_gains.dat, psEncCtrl->LTPCoef, sizeof( psEncCtrl->LTPCoef ) );
+		DEBUG_STORE_DATA( ltp_weights.dat, WLTP, sizeof( WLTP ) );
+#endif
+
         /* Quantize LTP gain parameters */
         SKP_Silk_quant_LTP_gains_FLP( psEncCtrl->LTPCoef, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, 
-            WLTP, psEnc->mu_LTP, psEnc->sCmn.LTPQuantLowComplexity , psEnc->sCmn.nb_subfr );
+            WLTP, psEnc->sCmn.mu_LTP_Q10, psEnc->sCmn.LTPQuantLowComplexity , psEnc->sCmn.nb_subfr );
 
         /* Control LTP scaling */
         SKP_Silk_LTP_scale_ctrl_FLP( psEnc, psEncCtrl );
@@ -76,7 +82,7 @@
         /* UNVOICED */
         /************/
         /* Create signal with prepended subframes, scaled by inverse gains */
-        x_ptr     = psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder;
+        x_ptr     = x - psEnc->sCmn.predictLPCOrder;
         x_pre_ptr = LPC_in_pre;
         for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) {
             SKP_Silk_scale_copy_vector_FLP( x_pre_ptr, x_ptr, invGains[ i ], 
@@ -104,7 +110,5 @@
 
     /* Copy to prediction struct for use in next frame for fluctuation reduction */
     SKP_memcpy( psEnc->sPred.prev_NLSFq, NLSF, psEnc->sCmn.predictLPCOrder * sizeof( SKP_float ) );
-
-
 }
 
--- a/src_FLP/SKP_Silk_main_FLP.h
+++ b/src_FLP/SKP_Silk_main_FLP.h
@@ -31,7 +31,6 @@
 #include "SKP_Silk_SigProc_FLP.h"
 #include "SKP_Silk_SigProc_FIX.h"
 #include "SKP_Silk_structs_FLP.h"
-#include "SKP_Silk_tables_FLP.h"
 #include "SKP_Silk_main.h"
 #include "SKP_Silk_define.h"
 #include "SKP_debug.h"
@@ -146,7 +145,8 @@
 void SKP_Silk_find_pred_coefs_FLP(
     SKP_Silk_encoder_state_FLP      *psEnc,             /* I/O  Encoder state FLP                       */
     SKP_Silk_encoder_control_FLP    *psEncCtrl,         /* I/O  Encoder control FLP                     */
-    const SKP_float                 res_pitch[]         /* I    Residual from pitch analysis            */
+    const SKP_float                 res_pitch[],        /* I    Residual from pitch analysis            */
+    const SKP_float                 x[]                 /* I    Speech signal                           */
 );
 
 /* LPC analysis */
@@ -248,13 +248,13 @@
 
 /* LTP tap quantizer */
 void SKP_Silk_quant_LTP_gains_FLP(
-          SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ],          /* I/O  (Un-)quantized LTP gains                */
-          SKP_int   cbk_index[ MAX_NB_SUBFR ],              /* O    Codebook index                          */
-          SKP_int   *periodicity_index,                     /* O    Periodicity index                       */
-    const SKP_float W[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ],  /* I    Error weights                           */
-    const SKP_float mu,                                     /* I    Mu value (R/D tradeoff)                 */
-    const SKP_int   lowComplexity,                          /* I    Flag for low complexity                 */
-    const SKP_int   nb_subfr                                /* I    number of subframes                     */
+          SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ],              /* I/O  (Un-)quantized LTP gains                */
+          SKP_int   cbk_index[ MAX_NB_SUBFR ],                  /* O    Codebook index                          */
+          SKP_int   *periodicity_index,                         /* O    Periodicity index                       */
+    const SKP_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ],  /* I    Error weights                           */
+    const SKP_int   mu_Q10,                                     /* I    Mu value (R/D tradeoff)     */
+    const SKP_int   lowComplexity,                              /* I    Flag for low complexity                 */
+    const SKP_int   nb_subfr                                    /* I    number of subframes                     */
 );
 
 /******************/
@@ -271,7 +271,7 @@
 void SKP_Silk_NLSF_MSVQ_encode_FLP(
           SKP_int                   *NLSFIndices,       /* O    Codebook path vector [ CB_STAGES ]      */
           SKP_float                 *pNLSF,             /* I/O  Quantized NLSF vector [ LPC_ORDER ]     */
-    const SKP_Silk_NLSF_CB_FLP      *psNLSF_CB_FLP,     /* I    Codebook object                         */
+    const SKP_Silk_NLSF_CB_struct   *psNLSF_CB,         /* I    Codebook object                         */
     const SKP_float                 *pNLSF_q_prev,      /* I    Prev. quantized NLSF vector [LPC_ORDER] */
     const SKP_float                 *pW,                /* I    NLSF weight vector [ LPC_ORDER ]        */
     const SKP_float                 NLSF_mu,            /* I    Rate weight for the RD optimization     */
@@ -284,7 +284,7 @@
 /* Rate-Distortion calculations for multiple input data vectors */
 void SKP_Silk_NLSF_VQ_rate_distortion_FLP(
           SKP_float             *pRD,               /* O   Rate-distortion values [psNLSF_CBS_FLP->nVectors*N] */
-    const SKP_Silk_NLSF_CBS_FLP *psNLSF_CBS_FLP,    /* I   NLSF codebook stage struct                          */
+    const SKP_Silk_NLSF_CBS     *psNLSF_CBS,        /* I   NLSF codebook stage struct                          */
     const SKP_float             *in,                /* I   Input vectors to be quantized                       */
     const SKP_float             *w,                 /* I   Weight vector                                       */
     const SKP_float             *rate_acc,          /* I   Accumulated rates from previous stage               */
@@ -298,7 +298,7 @@
           SKP_float                 *err,               /* O    Weighted quantization errors [ N * K ]  */
     const SKP_float                 *in,                /* I    Input vectors [ N * LPC_order ]         */
     const SKP_float                 *w,                 /* I    Weighting vectors [ N * LPC_order ]     */
-    const SKP_float                 *pCB,               /* I    Codebook vectors [ K * LPC_order ]      */
+    const SKP_int8                  *pCB_NLSF_Q8,       /* I    Codebook vectors [ K * LPC_order ]      */
     const SKP_int                   N,                  /* I    Number of input vectors                 */
     const SKP_int                   K,                  /* I    Number of codebook vectors              */
     const SKP_int                   LPC_order           /* I    LPC order                               */
@@ -307,7 +307,7 @@
 /* NLSF vector decoder */
 void SKP_Silk_NLSF_MSVQ_decode_FLP(
           SKP_float                 *pNLSF,             /* O    Decoded output vector [ LPC_ORDER ]     */
-    const SKP_Silk_NLSF_CB_FLP      *psNLSF_CB_FLP,     /* I    NLSF codebook struct                    */  
+    const SKP_Silk_NLSF_CB_struct   *psNLSF_CB,         /* I    NLSF codebook struct                    */  
     const SKP_int                   *NLSFIndices,       /* I    NLSF indices [ nStages ]                */
     const SKP_int                   LPC_order           /* I    LPC order used                          */
 );
@@ -404,8 +404,8 @@
 
 /* NLSF stabilizer, for a single input data vector */
 void SKP_Silk_NLSF_stabilize_FLP(
-          SKP_float                 *pNLSF,             /* I/O  (Un)stable NLSF vector [ LPC_order ]    */
-    const SKP_float                 *pNDelta_min,       /* I    Normalized delta min vector[LPC_order+1]*/
+          SKP_float                 *pNLSF,            /* I/O  (Un)stable NLSF vector [ LPC_order ]    */
+    const SKP_int                   *pNDelta_min_Q15,   /* I    Normalized delta min vector[LPC_order+1]*/
     const SKP_int                   LPC_order           /* I    LPC order                               */
 );
 
--- a/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c
+++ b/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c
@@ -142,8 +142,13 @@
     /* CONTROL SNR  */
     /****************/
     /* Reduce SNR_dB values if recent bitstream has exceeded TargetRate */
-    psEncCtrl->current_SNR_dB = psEnc->SNR_dB - 0.05f * psEnc->BufferedInChannel_ms;
+    psEncCtrl->current_SNR_dB = psEnc->SNR_dB - 0.1f * psEnc->BufferedInChannel_ms;
 
+    /* Reduce SNR for 10 ms frames */
+    if( psEnc->sCmn.nb_subfr == 2 ) {
+        psEncCtrl->current_SNR_dB -= 1.5f;
+    }
+
     /* Reduce SNR_dB if inband FEC used */
     if( psEnc->speech_activity > LBRR_SPEECH_ACTIVITY_THRES ) {
         psEncCtrl->current_SNR_dB -= psEnc->inBandFEC_SNR_comp;
@@ -158,10 +163,12 @@
     /* Coding quality level, between 0.0 and 1.0 */
     psEncCtrl->coding_quality = SKP_sigmoid( 0.25f * ( psEncCtrl->current_SNR_dB - 18.0f ) );
 
-    /* Reduce coding SNR during low speech activity */
-    b = 1.0f - psEnc->speech_activity;
-    SNR_adj_dB = psEncCtrl->current_SNR_dB - 
-        BG_SNR_DECR_dB * psEncCtrl->coding_quality * ( 0.5f + 0.5f * psEncCtrl->input_quality ) * b * b;
+    SNR_adj_dB = psEncCtrl->current_SNR_dB;
+    if( psEnc->sCmn.useCBR == 0 ) {
+        /* Reduce coding SNR during low speech activity */
+        b = 1.0f - psEnc->speech_activity;
+        SNR_adj_dB -= BG_SNR_DECR_dB * psEncCtrl->coding_quality * ( 0.5f + 0.5f * psEncCtrl->input_quality ) * b * b;
+    }
 
     if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) {
         /* Reduce gains for periodic signals */
@@ -290,18 +297,15 @@
     /*****************/
     /* Gain tweaking */
     /*****************/
-    /* Increase gains during low speech activity and put lower limit on gains */
-    gain_mult = ( SKP_float )pow( 2.0f, -0.16f * SNR_adj_dB );
-    gain_add  = ( SKP_float )pow( 2.0f,  0.16f * NOISE_FLOOR_dB ) + 
-                ( SKP_float )pow( 2.0f,  0.16f * RELATIVE_MIN_GAIN_dB ) * psEnc->avgGain;
+    /* Increase gains during low speech activity */
+    gain_mult = (SKP_float)pow( 2.0f, -0.16f * SNR_adj_dB );
+    gain_add  = (SKP_float)pow( 2.0f,  0.16f * MIN_QGAIN_DB );
     for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->Gains[ k ] *= gain_mult;
         psEncCtrl->Gains[ k ] += gain_add;
-        psEnc->avgGain += psEnc->speech_activity * GAIN_SMOOTHING_COEF * ( psEncCtrl->Gains[ k ] - psEnc->avgGain );
     }
 
     gain_mult = 1.0f + INPUT_TILT + psEncCtrl->coding_quality * HIGH_RATE_INPUT_TILT;
-
     for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->GainsPre[ k ] *= gain_mult;
     }
@@ -311,6 +315,7 @@
     /************************************************/
     /* Less low frequency shaping for noisy inputs */
     strength = LOW_FREQ_SHAPING * ( 1.0f + LOW_QUALITY_LOW_FREQ_SHAPING_DECR * ( psEncCtrl->input_quality_bands[ 0 ] - 1.0f ) );
+    strength *= psEnc->speech_activity;
     if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) {
         /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */
         /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/
--- a/src_FLP/SKP_Silk_prefilter_FLP.c
+++ b/src_FLP/SKP_Silk_prefilter_FLP.c
@@ -116,9 +116,9 @@
 
         /* Noise shape parameters */
         HarmShapeGain = psEncCtrl->HarmShapeGain[ k ] * ( 1.0f - psEncCtrl->HarmBoost[ k ] );
-        HarmShapeFIR[ 0 ] = SKP_Silk_HarmShapeFIR_FLP[ 0 ] * HarmShapeGain;
-        HarmShapeFIR[ 1 ] = SKP_Silk_HarmShapeFIR_FLP[ 1 ] * HarmShapeGain;
-        HarmShapeFIR[ 2 ] = SKP_Silk_HarmShapeFIR_FLP[ 2 ] * HarmShapeGain;
+        HarmShapeFIR[ 0 ] = 0.25f               * HarmShapeGain;
+        HarmShapeFIR[ 1 ] = 32767.0f / 65536.0f * HarmShapeGain;
+        HarmShapeFIR[ 2 ] = 0.25f               * HarmShapeGain;
         Tilt      =  psEncCtrl->Tilt[ k ];
         LF_MA_shp =  psEncCtrl->LF_MA_shp[ k ];
         LF_AR_shp =  psEncCtrl->LF_AR_shp[ k ];
--- a/src_FLP/SKP_Silk_process_NLSFs_FLP.c
+++ b/src_FLP/SKP_Silk_process_NLSFs_FLP.c
@@ -38,7 +38,7 @@
     SKP_int     doInterpolate;
     SKP_float   pNLSFW[ MAX_LPC_ORDER ];
     SKP_float   NLSF_mu, NLSF_mu_fluc_red, i_sqr, NLSF_interpolation_factor = 0.0f;
-    const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP;
+    const SKP_Silk_NLSF_CB_struct *psNLSF_CB;
 
     /* Used only for NLSF interpolation */
     SKP_float   pNLSF0_temp[  MAX_LPC_ORDER ];
@@ -81,10 +81,10 @@
     }
 
     /* Set pointer to the NLSF codebook for the current signal type and LPC order */
-    psNLSF_CB_FLP = psEnc->psNLSF_CB_FLP[ psEncCtrl->sCmn.sigtype ];
+    psNLSF_CB = psEnc->sCmn.psNLSF_CB[ psEncCtrl->sCmn.sigtype ];
 
     /* Quantize NLSF parameters given the trained NLSF codebooks */
-    SKP_Silk_NLSF_MSVQ_encode_FLP( psEncCtrl->sCmn.NLSFIndices, pNLSF, psNLSF_CB_FLP, psEnc->sPred.prev_NLSFq, pNLSFW, NLSF_mu, 
+    SKP_Silk_NLSF_MSVQ_encode_FLP( psEncCtrl->sCmn.NLSFIndices, pNLSF, psNLSF_CB, psEnc->sPred.prev_NLSFq, pNLSFW, NLSF_mu, 
         NLSF_mu_fluc_red, psEnc->sCmn.NLSF_MSVQ_Survivors, psEnc->sCmn.predictLPCOrder, psEnc->sCmn.first_frame_after_reset );
 
     /* Convert quantized NLSFs back to LPC coefficients */
--- a/src_FLP/SKP_Silk_process_gains_FLP.c
+++ b/src_FLP/SKP_Silk_process_gains_FLP.c
@@ -65,6 +65,7 @@
     /* Noise shaping quantization */
     SKP_Silk_gains_quant( psEncCtrl->sCmn.GainsIndices, pGains_Q16, 
             &psShapeSt->LastGainIndex, psEnc->sCmn.nFramesInPayloadBuf, psEnc->sCmn.nb_subfr );
+
     /* Overwrite unquantized gains with quantized gains and convert back to Q0 from Q16 */
     for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) {
         psEncCtrl->Gains[ k ] = pGains_Q16[ k ] / 65536.0f;
--- a/src_FLP/SKP_Silk_quant_LTP_gains_FLP.c
+++ /dev/null
@@ -1,110 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_main_FLP.h"
-
-#define Q14_CONVERSION_FAC                              6.1035e-005f // 1 / 2^14
-
-void SKP_Silk_quant_LTP_gains_FLP(
-          SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ],          /* I/O  (Un-)quantized LTP gains                */
-          SKP_int   cbk_index[ MAX_NB_SUBFR ],              /* O    Codebook index                          */
-          SKP_int   *periodicity_index,                     /* O    Periodicity index                       */
-    const SKP_float W[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ],  /* I    Error weights                           */
-    const SKP_float mu,                                     /* I    Mu value (R/D tradeoff)                 */
-    const SKP_int   lowComplexity,                          /* I    Flag for low complexity                 */
-    const SKP_int   nb_subfr                                /* I    number of subframes                     */
-)
-{
-    SKP_int             j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size;
-    const SKP_uint16    *cdf_ptr;
-    const SKP_int16     *cl_ptr;
-    const SKP_int16     *cbk_ptr_Q14;
-    const SKP_float     *b_ptr, *W_ptr;
-    SKP_float           rate_dist_subfr, rate_dist, min_rate_dist;
-
-
-
-    /***************************************************/
-    /* Iterate over different codebooks with different */
-    /* rates/distortions, and choose best */
-    /***************************************************/
-    min_rate_dist = SKP_float_MAX;
-    for( k = 0; k < 3; k++ ) {
-        cdf_ptr     = SKP_Silk_LTP_gain_CDF_ptrs[     k ];
-        cl_ptr      = SKP_Silk_LTP_gain_BITS_Q6_ptrs[ k ];
-        cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[       k ];
-        cbk_size    = SKP_Silk_LTP_vq_sizes[          k ];
-
-        /* Setup pointer to first subframe */
-        W_ptr = W;
-        b_ptr = B;
-
-        rate_dist = 0.0f;
-        for( j = 0; j < nb_subfr; j++ ) {
-
-            SKP_Silk_VQ_WMat_EC_FLP(
-                &temp_idx[ j ],         /* O    index of best codebook vector                           */
-                &rate_dist_subfr,       /* O    best weighted quantization error + mu * rate            */
-                b_ptr,                  /* I    input vector to be quantized                            */
-                W_ptr,                  /* I    weighting matrix                                        */
-                cbk_ptr_Q14,            /* I    codebook                                                */
-                cl_ptr,                 /* I    code length for each codebook vector                    */
-                mu,                     /* I    tradeoff between weighted error and rate                */
-                cbk_size                /* I    number of vectors in codebook                           */
-            );
-
-            rate_dist += rate_dist_subfr;
-
-            b_ptr += LTP_ORDER;
-            W_ptr += LTP_ORDER * LTP_ORDER;
-        }
-
-        if( rate_dist < min_rate_dist ) {
-            min_rate_dist = rate_dist;
-            SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) );
-            *periodicity_index = k;
-        }
-
-        /* Break early in low-complexity mode if rate distortion is below threshold */
-        if( lowComplexity && ( rate_dist * 16384.0f < ( SKP_float )SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) {
-            break;
-        }
-    }
-
-    cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ *periodicity_index ];
-    for( j = 0; j < nb_subfr; j++ ) {
-        SKP_short2float_array( &B[ j * LTP_ORDER ],
-            &cbk_ptr_Q14[ cbk_index[ j ] * LTP_ORDER ],
-            LTP_ORDER );
-    }
-
-    for( j = 0; j < nb_subfr * LTP_ORDER; j++ ) {
-        B[ j ] *= Q14_CONVERSION_FAC;
-    }
-
-}
-
--- a/src_FLP/SKP_Silk_structs_FLP.h
+++ b/src_FLP/SKP_Silk_structs_FLP.h
@@ -70,29 +70,6 @@
     SKP_float   prev_NLSFq[ MAX_LPC_ORDER ];        /* Previously quantized NLSF vector     */
 } SKP_Silk_predict_state_FLP;
 
-/*******************************************/
-/* Structure containing NLSF MSVQ codebook */
-/*******************************************/
-/* structure for one stage of MSVQ */
-typedef struct {
-    const SKP_int32     nVectors;
-    const SKP_float     *CB;
-    const SKP_float     *Rates;
-} SKP_Silk_NLSF_CBS_FLP;
-
-typedef struct {
-    const SKP_int32                         nStages;
-
-    /* fields for (de)quantizing */
-    const SKP_Silk_NLSF_CBS_FLP *CBStages;
-    const SKP_float                         *NDeltaMin;
-
-    /* fields for arithmetic (de)coding */
-    const SKP_uint16                        *CDF;
-    const SKP_uint16 * const                *StartPtr;
-    const SKP_int                           *MiddleIx;
-} SKP_Silk_NLSF_CB_FLP;
-
 /********************************/
 /* Encoder state FLP            */
 /********************************/
@@ -111,9 +88,7 @@
     /* Buffer for find pitch and noise shape analysis */
     SKP_float                           x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];/* Buffer for find pitch and noise shape analysis */
     SKP_float                           LTPCorr;                    /* Normalized correlation from pitch lag estimator */
-    SKP_float                           mu_LTP;                     /* Rate-distortion tradeoff in LTP quantization */
     SKP_float                           SNR_dB;                     /* Quality setting */
-    SKP_float                           avgGain;                    /* average gain during active speech */
     SKP_float                           BufferedInChannel_ms;       /* Simulated number of ms buffer in channel because of exceeded TargetRate_bps */
     SKP_float                           speech_activity;            /* Speech activity */
 
@@ -122,8 +97,6 @@
     SKP_float                           HPLTPredCodGain;
 
     SKP_float                           inBandFEC_SNR_comp;         /* Compensation to SNR_DB when using inband FEC Voiced */
-
-    const SKP_Silk_NLSF_CB_FLP  *psNLSF_CB_FLP[ 2 ];        /* Pointers to voiced/unvoiced NLSF codebooks */
 } SKP_Silk_encoder_state_FLP;
 
 
--- a/src_FLP/SKP_Silk_tables_FLP.h
+++ /dev/null
@@ -1,52 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_TABLES_FLP_H
-#define SKP_SILK_TABLES_FLP_H
-
-#include "SKP_Silk_structs_FLP.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* filters */
-extern const SKP_float SKP_Silk_HarmShapeFIR_FLP[ HARM_SHAPE_FIR_TAPS ];
-
-/* Table of quantization offset values */
-extern const SKP_float SKP_Silk_Quantization_Offsets[ 2 ][ 2 ];
-
-/* NLSF codebooks */
-extern const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_16_FLP, SKP_Silk_NLSF_CB1_16_FLP;
-extern const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_10_FLP, SKP_Silk_NLSF_CB1_10_FLP;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c
+++ /dev/null
@@ -1,784 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/**********************************************/
-/* This file has been automatically generated */
-/*                                            */
-/* ROM usage:  5.68 kB                        */
-/**********************************************/
-
-#include "SKP_Silk_tables_FLP.h"
-#include "SKP_Silk_tables_NLSF_CB0_10.h"
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10_rates[ NLSF_MSVQ_CB0_10_VECTORS ] =
-{
-      4.75000000000000000000f,      4.75000000000000000000f,
-      4.87500000000000000000f,      5.12500000000000000000f,
-      5.37500000000000000000f,      5.37500000000000000000f,
-      5.43750000000000000000f,      5.43750000000000000000f,
-      5.43750000000000000000f,      5.50000000000000000000f,
-      5.50000000000000000000f,      5.50000000000000000000f,
-      5.56250000000000000000f,      5.56250000000000000000f,
-      5.62500000000000000000f,      5.62500000000000000000f,
-      5.62500000000000000000f,      5.68750000000000000000f,
-      5.75000000000000000000f,      5.75000000000000000000f,
-      5.75000000000000000000f,      5.87500000000000000000f,
-      5.87500000000000000000f,      5.87500000000000000000f,
-      5.93750000000000000000f,      5.93750000000000000000f,
-      6.00000000000000000000f,      6.00000000000000000000f,
-      6.00000000000000000000f,      6.06250000000000000000f,
-      6.06250000000000000000f,      6.06250000000000000000f,
-      6.12500000000000000000f,      6.12500000000000000000f,
-      6.12500000000000000000f,      6.12500000000000000000f,
-      6.12500000000000000000f,      6.18750000000000000000f,
-      6.18750000000000000000f,      6.25000000000000000000f,
-      6.25000000000000000000f,      6.25000000000000000000f,
-      6.31250000000000000000f,      6.31250000000000000000f,
-      6.31250000000000000000f,      6.37500000000000000000f,
-      6.37500000000000000000f,      6.37500000000000000000f,
-      6.43750000000000000000f,      6.43750000000000000000f,
-      6.43750000000000000000f,      6.50000000000000000000f,
-      6.75000000000000000000f,      6.75000000000000000000f,
-      6.75000000000000000000f,      7.12500000000000000000f,
-      7.56250000000000000000f,      7.68750000000000000000f,
-      8.00000000000000000000f,      8.00000000000000000000f,
-      8.00000000000000000000f,      8.00000000000000000000f,
-      8.00000000000000000000f,      8.00000000000000000000f,
-      3.68750000000000000000f,      3.68750000000000000000f,
-      3.75000000000000000000f,      3.81250000000000000000f,
-      3.93750000000000000000f,      3.93750000000000000000f,
-      3.93750000000000000000f,      3.93750000000000000000f,
-      3.93750000000000000000f,      4.06250000000000000000f,
-      4.12500000000000000000f,      4.18750000000000000000f,
-      4.18750000000000000000f,      4.18750000000000000000f,
-      4.50000000000000000000f,      4.56250000000000000000f,
-      2.87500000000000000000f,      2.87500000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.00000000000000000000f,      3.06250000000000000000f,
-      3.12500000000000000000f,      3.12500000000000000000f,
-      2.68750000000000000000f,      2.87500000000000000000f,
-      2.93750000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.06250000000000000000f,
-      3.25000000000000000000f,      3.31250000000000000000f,
-      2.87500000000000000000f,      2.93750000000000000000f,
-      2.93750000000000000000f,      2.93750000000000000000f,
-      3.06250000000000000000f,      3.06250000000000000000f,
-      3.06250000000000000000f,      3.06250000000000000000f,
-      2.87500000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.00000000000000000000f,      3.06250000000000000000f,
-      3.06250000000000000000f,      3.12500000000000000000f,
-      3.75000000000000000000f,      3.75000000000000000000f,
-      3.81250000000000000000f,      3.81250000000000000000f,
-      3.81250000000000000000f,      3.81250000000000000000f,
-      3.87500000000000000000f,      3.93750000000000000000f,
-      4.00000000000000000000f,      4.00000000000000000000f,
-      4.06250000000000000000f,      4.18750000000000000000f,
-      4.18750000000000000000f,      4.31250000000000000000f,
-      4.31250000000000000000f,      4.75000000000000000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min[ 10 + 1 ] =
-{
-      0.01687622070312500000f,
-      0.00015258789062500000f,
-      0.00067138671874999989f,
-      0.00057983398437500000f,
-      0.00009155273437500000f,
-      0.00009155273437500000f,
-      0.00549316406250000000f,
-      0.00494384765625000000f,
-      0.00933837890625000000f,
-      0.00521850585937500000f,
-      0.03024291992187500000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * NLSF_MSVQ_CB0_10_VECTORS ] =
-{
-     -0.42187500000000000000f,     -0.35156250000000000000f,
-     -0.27734375000000000000f,     -0.19140625000000000000f,
-     -0.09375000000000000000f,     -0.01953125000000000000f,
-      0.08203125000000000000f,      0.18750000000000000000f,
-      0.29296875000000000000f,      0.38671875000000006000f,
-     -0.42187500000000000000f,     -0.38671875000000006000f,
-     -0.29687500000000000000f,     -0.22265625000000000000f,
-     -0.15234375000000000000f,     -0.02734375000000000000f,
-      0.07812500000000000000f,      0.19531250000000000000f,
-      0.29687500000000000000f,      0.38281250000000000000f,
-     -0.41015625000000000000f,     -0.37890625000000000000f,
-     -0.32421875000000006000f,     -0.19140625000000000000f,
-     -0.07421875000000000000f,     -0.02734375000000000000f,
-      0.10546875000000000000f,      0.18359375000000000000f,
-      0.26171875000000000000f,      0.39843750000000000000f,
-     -0.37890625000000000000f,     -0.35156250000000000000f,
-     -0.29296875000000000000f,     -0.19140625000000000000f,
-     -0.02343750000000000000f,      0.02343750000000000000f,
-      0.10546875000000000000f,      0.21484375000000000000f,
-      0.28515625000000000000f,      0.37109375000000000000f,
-     -0.37109375000000000000f,     -0.34765625000000000000f,
-     -0.28125000000000000000f,     -0.15625000000000000000f,
-     -0.10937500000000000000f,     -0.04296874999999999300f,
-      0.08203125000000000000f,      0.14453125000000000000f,
-      0.27343750000000000000f,      0.33593750000000000000f,
-     -0.40234375000000000000f,     -0.37890625000000000000f,
-     -0.32031250000000000000f,     -0.18750000000000000000f,
-      0.03125000000000000000f,      0.08203125000000000000f,
-      0.14062500000000000000f,      0.21875000000000000000f,
-      0.28906250000000000000f,      0.39453125000000000000f,
-     -0.40234375000000000000f,     -0.37500000000000000000f,
-     -0.31640625000000000000f,     -0.12890625000000000000f,
-     -0.07421875000000000000f,     -0.01171875000000000000f,
-      0.10937500000000000000f,      0.16015625000000000000f,
-      0.33593750000000000000f,      0.39843750000000000000f,
-     -0.43359375000000000000f,     -0.39843750000000000000f,
-     -0.33203125000000000000f,     -0.24218750000000000000f,
-     -0.14843750000000000000f,     -0.08203125000000000000f,
-      0.04296874999999999300f,      0.16015625000000000000f,
-      0.25781250000000000000f,      0.37109375000000000000f,
-     -0.34374999999999994000f,     -0.32031250000000000000f,
-     -0.24609375000000000000f,     -0.10937500000000000000f,
-     -0.03906250000000000000f,      0.00390625000000000000f,
-      0.13671875000000000000f,      0.20703125000000000000f,
-      0.28515625000000000000f,      0.40234375000000000000f,
-     -0.39453125000000000000f,     -0.37500000000000000000f,
-     -0.26171875000000000000f,     -0.06640625000000000000f,
-     -0.01562500000000000000f,      0.03906250000000000000f,
-      0.11718749999999999000f,      0.17578125000000000000f,
-      0.33593750000000000000f,      0.40234375000000000000f,
-     -0.36718750000000000000f,     -0.33984375000000000000f,
-     -0.27343750000000000000f,     -0.21484375000000000000f,
-     -0.17187499999999997000f,     -0.09765625000000000000f,
-      0.14453125000000000000f,      0.21484375000000000000f,
-      0.28515625000000000000f,      0.40625000000000006000f,
-     -0.38281250000000000000f,     -0.35937500000000000000f,
-     -0.27734375000000000000f,     -0.14453125000000000000f,
-     -0.08984375000000000000f,     -0.03906250000000000000f,
-      0.14453125000000000000f,      0.21093750000000000000f,
-      0.28515625000000000000f,      0.40625000000000006000f,
-     -0.44531250000000000000f,     -0.42187500000000000000f,
-     -0.30859375000000000000f,     -0.19140625000000000000f,
-     -0.07812500000000000000f,      0.00781250000000000000f,
-      0.11328125000000000000f,      0.21093750000000000000f,
-      0.31250000000000000000f,      0.40234375000000000000f,
-     -0.41796875000000000000f,     -0.38671875000000006000f,
-     -0.33593750000000000000f,     -0.23437499999999997000f,
-     -0.02734375000000000000f,      0.04296874999999999300f,
-      0.10546875000000000000f,      0.19140625000000000000f,
-      0.26171875000000000000f,      0.37109375000000000000f,
-     -0.39062500000000000000f,     -0.36718750000000000000f,
-     -0.29687500000000000000f,     -0.15625000000000000000f,
-     -0.01953125000000000000f,      0.02343750000000000000f,
-      0.10156250000000001000f,      0.16796875000000000000f,
-      0.24218750000000000000f,      0.39843750000000000000f,
-     -0.34374999999999994000f,     -0.30859375000000000000f,
-     -0.25000000000000000000f,     -0.17187499999999997000f,
-     -0.10937500000000000000f,     -0.05859374999999999300f,
-      0.10156250000000001000f,      0.16796875000000000000f,
-      0.25000000000000000000f,      0.40625000000000006000f,
-     -0.40234375000000000000f,     -0.38281250000000000000f,
-     -0.27734375000000000000f,     -0.10156250000000001000f,
-     -0.05468750000000000000f,      0.01562500000000000000f,
-      0.08984375000000000000f,      0.16796875000000000000f,
-      0.28125000000000000000f,      0.33984375000000000000f,
-     -0.42968750000000000000f,     -0.40234375000000000000f,
-     -0.32421875000000006000f,     -0.22656250000000000000f,
-     -0.10546875000000000000f,     -0.01953125000000000000f,
-      0.06250000000000000000f,      0.13671875000000000000f,
-      0.22656250000000000000f,      0.35937500000000000000f,
-     -0.40234375000000000000f,     -0.36718750000000000000f,
-     -0.30859375000000000000f,     -0.24218750000000000000f,
-     -0.08203125000000000000f,     -0.02734375000000000000f,
-      0.04687500000000000000f,      0.20312500000000003000f,
-      0.26953125000000000000f,      0.34374999999999994000f,
-     -0.41796875000000000000f,     -0.38281250000000000000f,
-     -0.32812500000000000000f,     -0.17187499999999997000f,
-     -0.11328125000000000000f,     -0.04687500000000000000f,
-      0.03515625000000000000f,      0.10937500000000000000f,
-      0.28515625000000000000f,      0.35156250000000000000f,
-     -0.38671875000000006000f,     -0.36328124999999994000f,
-     -0.26562500000000000000f,     -0.12500000000000000000f,
-     -0.07421875000000000000f,     -0.01953125000000000000f,
-      0.04687500000000000000f,      0.10937500000000000000f,
-      0.33593750000000000000f,      0.40625000000000006000f,
-     -0.39062500000000000000f,     -0.35546875000000000000f,
-     -0.29296875000000000000f,     -0.21484375000000000000f,
-     -0.15625000000000000000f,     -0.10156250000000001000f,
-      0.07812500000000000000f,      0.15625000000000000000f,
-      0.22656250000000000000f,      0.39453125000000000000f,
-     -0.39062500000000000000f,     -0.36718750000000000000f,
-     -0.28515625000000000000f,     -0.23437499999999997000f,
-     -0.19140625000000000000f,     -0.00390625000000000000f,
-      0.07031250000000000000f,      0.14062500000000000000f,
-      0.32421875000000006000f,      0.37500000000000000000f,
-     -0.41406250000000000000f,     -0.37890625000000000000f,
-     -0.26953125000000000000f,     -0.18359375000000000000f,
-     -0.09765625000000000000f,      0.04296874999999999300f,
-      0.12109375000000000000f,      0.17968750000000000000f,
-      0.25390625000000000000f,      0.34765625000000000000f,
-     -0.36328124999999994000f,     -0.33984375000000000000f,
-     -0.26953125000000000000f,     -0.17968750000000000000f,
-     -0.12500000000000000000f,     -0.07031250000000000000f,
-     -0.00781250000000000000f,      0.05468750000000000000f,
-      0.28906250000000000000f,      0.40234375000000000000f,
-     -0.36328124999999994000f,     -0.33984375000000000000f,
-     -0.25390625000000000000f,     -0.11328125000000000000f,
-      0.02343750000000000000f,      0.07031250000000000000f,
-      0.14843750000000000000f,      0.22265625000000000000f,
-      0.28906250000000000000f,      0.39843750000000000000f,
-     -0.35937500000000000000f,     -0.33203125000000000000f,
-     -0.25781250000000000000f,     -0.21093750000000000000f,
-     -0.16796875000000000000f,     -0.01562500000000000000f,
-      0.12500000000000000000f,      0.17578125000000000000f,
-      0.34374999999999994000f,      0.40625000000000006000f,
-     -0.42187500000000000000f,     -0.38671875000000006000f,
-     -0.33203125000000000000f,     -0.19531250000000000000f,
-     -0.13671875000000000000f,     -0.07421875000000000000f,
-      0.11328125000000000000f,      0.16015625000000000000f,
-      0.32812500000000000000f,      0.39843750000000000000f,
-     -0.37890625000000000000f,     -0.35156250000000000000f,
-     -0.28515625000000000000f,     -0.22265625000000000000f,
-     -0.18750000000000000000f,     -0.09375000000000000000f,
-      0.08203125000000000000f,      0.13671875000000000000f,
-      0.30859375000000000000f,      0.36718750000000000000f,
-     -0.32812500000000000000f,     -0.29687500000000000000f,
-     -0.22265625000000000000f,     -0.15625000000000000000f,
-     -0.11328125000000000000f,     -0.04296874999999999300f,
-      0.16015625000000000000f,      0.23437499999999997000f,
-      0.31250000000000000000f,      0.40625000000000006000f,
-     -0.39062500000000000000f,     -0.36718750000000000000f,
-     -0.29296875000000000000f,     -0.25000000000000000000f,
-     -0.19921875000000000000f,      0.00781250000000000000f,
-      0.07812500000000000000f,      0.17578125000000000000f,
-      0.26562500000000000000f,      0.33203125000000000000f,
-     -0.39062500000000000000f,     -0.36718750000000000000f,
-     -0.24218750000000000000f,     -0.16015625000000000000f,
-     -0.11718749999999999000f,      0.05078125000000000700f,
-      0.12109375000000000000f,      0.20312500000000003000f,
-      0.33203125000000000000f,      0.39453125000000000000f,
-     -0.37109375000000000000f,     -0.33593750000000000000f,
-     -0.27343750000000000000f,     -0.20312500000000003000f,
-     -0.14843750000000000000f,     -0.08984375000000000000f,
-      0.07031250000000000000f,      0.25000000000000000000f,
-      0.32421875000000006000f,      0.39453125000000000000f,
-     -0.44531250000000000000f,     -0.42187500000000000000f,
-     -0.36718750000000000000f,     -0.26953125000000000000f,
-     -0.12109375000000000000f,     -0.01953125000000000000f,
-      0.09375000000000000000f,      0.17968750000000000000f,
-      0.28125000000000000000f,      0.38671875000000006000f,
-     -0.39062500000000000000f,     -0.37109375000000000000f,
-     -0.21093750000000000000f,     -0.14843750000000000000f,
-     -0.10156250000000001000f,     -0.03906250000000000000f,
-      0.01171875000000000000f,      0.19921875000000000000f,
-      0.29296875000000000000f,      0.34765625000000000000f,
-     -0.40625000000000006000f,     -0.38281250000000000000f,
-     -0.28515625000000000000f,     -0.12109375000000000000f,
-      0.07031250000000000000f,      0.12109375000000000000f,
-      0.17968750000000000000f,      0.25390625000000000000f,
-      0.32031250000000000000f,      0.41015625000000000000f,
-     -0.35156250000000000000f,     -0.32812500000000000000f,
-     -0.24218750000000000000f,     -0.19921875000000000000f,
-     -0.14843750000000000000f,      0.01171875000000000000f,
-      0.09765625000000000000f,      0.17187499999999997000f,
-      0.28125000000000000000f,      0.33593750000000000000f,
-     -0.42578124999999994000f,     -0.40234375000000000000f,
-     -0.32421875000000006000f,     -0.11328125000000000000f,
-      0.00781250000000000000f,      0.04296874999999999300f,
-      0.14843750000000000000f,      0.20703125000000000000f,
-      0.32812500000000000000f,      0.39453125000000000000f,
-     -0.33593750000000000000f,     -0.29296875000000000000f,
-     -0.23828125000000000000f,     -0.17968750000000000000f,
-     -0.06640625000000000000f,     -0.01562500000000000000f,
-      0.07031250000000000000f,      0.20312500000000003000f,
-      0.26953125000000000000f,      0.35546875000000000000f,
-     -0.42578124999999994000f,     -0.39062500000000000000f,
-     -0.32421875000000006000f,     -0.21093750000000000000f,
-     -0.03906250000000000000f,      0.00390625000000000000f,
-      0.07421875000000000000f,      0.13671875000000000000f,
-      0.31640625000000000000f,      0.39062500000000000000f,
-     -0.39453125000000000000f,     -0.37109375000000000000f,
-     -0.30468750000000000000f,     -0.26562500000000000000f,
-     -0.22656250000000000000f,     -0.06250000000000000000f,
-      0.15234375000000000000f,      0.21875000000000000000f,
-      0.33203125000000000000f,      0.40234375000000000000f,
-     -0.33984375000000000000f,     -0.31250000000000000000f,
-     -0.22656250000000000000f,     -0.16015625000000000000f,
-     -0.11328125000000000000f,     -0.02734375000000000000f,
-      0.05468750000000000000f,      0.11718749999999999000f,
-      0.33593750000000000000f,      0.40625000000000006000f,
-     -0.41015625000000000000f,     -0.38671875000000006000f,
-     -0.23828125000000000000f,     -0.02734375000000000000f,
-      0.02343750000000000000f,      0.08203125000000000000f,
-      0.17187499999999997000f,      0.23828125000000000000f,
-      0.33984375000000000000f,      0.39843750000000000000f,
-     -0.33593750000000000000f,     -0.31250000000000000000f,
-     -0.18750000000000000000f,     -0.11718749999999999000f,
-     -0.07031250000000000000f,      0.01953125000000000000f,
-      0.09765625000000000000f,      0.16796875000000000000f,
-      0.32031250000000000000f,      0.37890625000000000000f,
-     -0.38281250000000000000f,     -0.35937500000000000000f,
-     -0.25781250000000000000f,     -0.19140625000000000000f,
-     -0.14062500000000000000f,     -0.05078125000000000700f,
-      0.00000000000000000000f,      0.13671875000000000000f,
-      0.23046875000000000000f,      0.30859375000000000000f,
-     -0.38281250000000000000f,     -0.36328124999999994000f,
-     -0.25781250000000000000f,     -0.20312500000000003000f,
-     -0.15625000000000000000f,     -0.09375000000000000000f,
-     -0.04687500000000000000f,      0.17968750000000000000f,
-      0.31640625000000000000f,      0.38281250000000000000f,
-     -0.41796875000000000000f,     -0.37109375000000000000f,
-     -0.25000000000000000000f,     -0.15234375000000000000f,
-     -0.05468750000000000000f,      0.05468750000000000000f,
-      0.16406250000000000000f,      0.25390625000000000000f,
-      0.34374999999999994000f,      0.41406250000000000000f,
-     -0.40625000000000006000f,     -0.37500000000000000000f,
-     -0.32031250000000000000f,     -0.25390625000000000000f,
-     -0.21093750000000000000f,     -0.13671875000000000000f,
-      0.08203125000000000000f,      0.19921875000000000000f,
-      0.28125000000000000000f,      0.38671875000000006000f,
-     -0.36718750000000000000f,     -0.33984375000000000000f,
-     -0.28906250000000000000f,     -0.23046875000000000000f,
-     -0.08203125000000000000f,     -0.03906250000000000000f,
-      0.05468750000000000000f,      0.13671875000000000000f,
-      0.22656250000000000000f,      0.37500000000000000000f,
-     -0.42187500000000000000f,     -0.39062500000000000000f,
-     -0.33593750000000000000f,     -0.27734375000000000000f,
-     -0.23046875000000000000f,     -0.06250000000000000000f,
-      0.07812500000000000000f,      0.16015625000000000000f,
-      0.28906250000000000000f,      0.37890625000000000000f,
-     -0.40234375000000000000f,     -0.37109375000000000000f,
-     -0.31250000000000000000f,     -0.22265625000000000000f,
-     -0.17578125000000000000f,     -0.09375000000000000000f,
-     -0.02343750000000000000f,      0.07421875000000000000f,
-      0.25781250000000000000f,      0.34765625000000000000f,
-     -0.38671875000000006000f,     -0.36328124999999994000f,
-     -0.28906250000000000000f,     -0.25390625000000000000f,
-     -0.19531250000000000000f,      0.07812500000000000000f,
-      0.15625000000000000000f,      0.22265625000000000000f,
-      0.33203125000000000000f,      0.38281250000000000000f,
-     -0.39843750000000000000f,     -0.37500000000000000000f,
-     -0.16015625000000000000f,     -0.08203125000000000000f,
-     -0.04296874999999999300f,      0.03515625000000000000f,
-      0.09765625000000000000f,      0.23046875000000000000f,
-      0.32421875000000006000f,      0.38281250000000000000f,
-     -0.36718750000000000000f,     -0.33984375000000000000f,
-     -0.27734375000000000000f,     -0.23046875000000000000f,
-     -0.18359375000000000000f,     -0.03125000000000000000f,
-      0.19531250000000000000f,      0.26562500000000000000f,
-      0.33593750000000000000f,      0.41015625000000000000f,
-     -0.42187500000000000000f,     -0.39453125000000000000f,
-     -0.32812500000000000000f,     -0.23046875000000000000f,
-     -0.04296874999999999300f,      0.11328125000000000000f,
-      0.17187499999999997000f,      0.23828125000000000000f,
-      0.32031250000000000000f,      0.38671875000000006000f,
-     -0.38281250000000000000f,     -0.36718750000000000000f,
-     -0.32031250000000000000f,     -0.28515625000000000000f,
-     -0.10156250000000001000f,      0.02343750000000000000f,
-      0.11718749999999999000f,      0.20703125000000000000f,
-      0.30859375000000000000f,      0.38281250000000000000f,
-     -0.33203125000000000000f,     -0.27734375000000000000f,
-     -0.14453125000000000000f,     -0.04687500000000000000f,
-      0.01171875000000000000f,      0.08593749999999998600f,
-      0.16015625000000000000f,      0.23828125000000000000f,
-      0.33203125000000000000f,      0.39062500000000000000f,
-     -0.33203125000000000000f,     -0.30859375000000000000f,
-     -0.25781250000000000000f,     -0.21484375000000000000f,
-     -0.07421875000000000000f,      0.06640625000000000000f,
-      0.12890625000000000000f,      0.21875000000000000000f,
-      0.32421875000000006000f,      0.37890625000000000000f,
-     -0.28125000000000000000f,     -0.25781250000000000000f,
-     -0.23437499999999997000f,     -0.22265625000000000000f,
-     -0.19531250000000000000f,      0.01562500000000000000f,
-      0.10156250000000001000f,      0.20312500000000003000f,
-      0.30859375000000000000f,      0.40234375000000000000f,
-     -0.37109375000000000000f,     -0.28906250000000000000f,
-     -0.12109375000000000000f,     -0.07031250000000000000f,
-     -0.04296874999999999300f,     -0.02343750000000000000f,
-      0.03515625000000000000f,      0.20312500000000003000f,
-      0.30078125000000000000f,      0.39062500000000000000f,
-     -0.30468750000000000000f,     -0.29296875000000000000f,
-     -0.26562500000000000000f,     -0.19921875000000000000f,
-     -0.16796875000000000000f,     -0.14843750000000000000f,
-      0.04687500000000000000f,      0.17578125000000000000f,
-      0.28906250000000000000f,      0.39062500000000000000f,
-     -0.38671875000000006000f,     -0.26562500000000000000f,
-     -0.15625000000000000000f,     -0.12890625000000000000f,
-     -0.09375000000000000000f,     -0.06250000000000000000f,
-      0.08984375000000000000f,      0.22656250000000000000f,
-      0.30859375000000000000f,      0.37890625000000000000f,
-     -0.38671875000000006000f,     -0.18750000000000000000f,
-     -0.16406250000000000000f,     -0.15625000000000000000f,
-     -0.14062500000000000000f,     -0.07421875000000000000f,
-      0.10156250000000001000f,      0.20312500000000003000f,
-      0.31250000000000000000f,      0.41015625000000000000f,
-     -0.28515625000000000000f,     -0.26953125000000000000f,
-     -0.24218750000000000000f,     -0.16796875000000000000f,
-     -0.12109375000000000000f,     -0.09765625000000000000f,
-      0.08203125000000000000f,      0.18750000000000000000f,
-      0.29687500000000000000f,      0.39453125000000000000f,
-      0.03125000000000000000f,      0.02734375000000000000f,
-      0.01953125000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.03125000000000000000f,     -0.04296874999999999300f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.02343750000000000000f,
-     -0.01562500000000000000f,     -0.02734375000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.02343750000000000000f,      0.01953125000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.03125000000000000000f,
-      0.01953125000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-      0.03125000000000000000f,      0.01953125000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.03515625000000000000f,     -0.05078125000000000700f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-      0.03515625000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.03515625000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-      0.04296874999999999300f,      0.02734375000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.04296874999999999300f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.01953125000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.04687500000000000000f,      0.03125000000000000000f,
-      0.01953125000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-     -0.01953125000000000000f,     -0.02343750000000000000f,
-     -0.05078125000000000700f,      0.01953125000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,     -0.01953125000000000000f,
-     -0.03906250000000000000f,      0.03125000000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.01953125000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,     -0.03125000000000000000f,
-      0.03906250000000000000f,      0.01953125000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.03515625000000000000f,      0.04687500000000000000f,
-      0.02343750000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01953125000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.04687500000000000000f,
-      0.03125000000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01953125000000000000f,     -0.02734375000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.01562500000000000000f,
-     -0.03125000000000000000f,      0.02734375000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,      0.01953125000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.02734375000000000000f,
-      0.02343750000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.02343750000000000000f,
-      0.01171875000000000000f,      0.02343750000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.01953125000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01953125000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.01562500000000000000f,
-     -0.01562500000000000000f,     -0.02734375000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.02734375000000000000f,
-     -0.00390625000000000000f,      0.02343750000000000000f,
-     -0.01562500000000000000f,     -0.01562500000000000000f,
-     -0.01953125000000000000f,     -0.01953125000000000000f,
-     -0.01562500000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.03906250000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.02734375000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.02343750000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-      0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-      0.01953125000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.01953125000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.01953125000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.02734375000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.01953125000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01953125000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01953125000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.01953125000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.01953125000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f
-};
-
-const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB0_10_Stage_info_FLP[ NLSF_MSVQ_CB0_10_STAGES ] =
-{
-        {  64, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 *   0 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[   0 ] },
-        {  16, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 *  64 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[  64 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 *  80 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[  80 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 *  88 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[  88 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 *  96 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[  96 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 104 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 104 ] },
-        {  16, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 112 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 112 ] }
-};
-
-const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_10_FLP =
-{
-        NLSF_MSVQ_CB0_10_STAGES,
-        SKP_Silk_NLSF_CB0_10_Stage_info_FLP,
-        SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min,
-        SKP_Silk_NLSF_MSVQ_CB0_10_CDF,
-        SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx
-};
-
--- a/src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c
+++ /dev/null
@@ -1,1381 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/**********************************************/
-/* This file has been automatically generated */
-/*                                            */
-/* ROM usage: 10.40 kB                        */
-/**********************************************/
-
-#include "SKP_Silk_tables_FLP.h"
-#include "SKP_Silk_tables_NLSF_CB0_16.h"
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16_rates[ NLSF_MSVQ_CB0_16_VECTORS ] =
-{
-      4.62500000000000000000f,      4.75000000000000000000f,
-      4.81250000000000000000f,      5.06250000000000000000f,
-      5.25000000000000000000f,      5.25000000000000000000f,
-      5.31250000000000000000f,      5.50000000000000000000f,
-      5.56250000000000000000f,      5.56250000000000000000f,
-      5.56250000000000000000f,      5.62500000000000000000f,
-      5.75000000000000000000f,      5.81250000000000000000f,
-      5.81250000000000000000f,      5.81250000000000000000f,
-      5.87500000000000000000f,      5.87500000000000000000f,
-      5.87500000000000000000f,      5.87500000000000000000f,
-      5.93750000000000000000f,      5.93750000000000000000f,
-      5.93750000000000000000f,      6.00000000000000000000f,
-      6.00000000000000000000f,      6.00000000000000000000f,
-      6.00000000000000000000f,      6.06250000000000000000f,
-      6.06250000000000000000f,      6.12500000000000000000f,
-      6.12500000000000000000f,      6.12500000000000000000f,
-      6.12500000000000000000f,      6.18750000000000000000f,
-      6.18750000000000000000f,      6.18750000000000000000f,
-      6.25000000000000000000f,      6.25000000000000000000f,
-      6.25000000000000000000f,      6.25000000000000000000f,
-      6.25000000000000000000f,      6.31250000000000000000f,
-      6.31250000000000000000f,      6.31250000000000000000f,
-      6.37500000000000000000f,      6.37500000000000000000f,
-      6.43750000000000000000f,      6.50000000000000000000f,
-      6.50000000000000000000f,      6.56250000000000000000f,
-      6.62500000000000000000f,      6.68750000000000000000f,
-      6.68750000000000000000f,      6.68750000000000000000f,
-      6.68750000000000000000f,      6.75000000000000000000f,
-      6.75000000000000000000f,      6.81250000000000000000f,
-      6.81250000000000000000f,      6.93750000000000000000f,
-      6.93750000000000000000f,      7.12500000000000000000f,
-      7.37500000000000000000f,      7.75000000000000000000f,
-      3.56250000000000000000f,      3.62500000000000000000f,
-      3.62500000000000000000f,      3.75000000000000000000f,
-      3.81250000000000000000f,      3.93750000000000000000f,
-      4.06250000000000000000f,      4.06250000000000000000f,
-      4.12500000000000000000f,      4.12500000000000000000f,
-      4.18750000000000000000f,      4.18750000000000000000f,
-      4.25000000000000000000f,      4.31250000000000000000f,
-      4.37500000000000000000f,      4.37500000000000000000f,
-      2.62500000000000000000f,      2.93750000000000000000f,
-      2.93750000000000000000f,      3.00000000000000000000f,
-      3.00000000000000000000f,      3.18750000000000000000f,
-      3.18750000000000000000f,      3.25000000000000000000f,
-      2.87500000000000000000f,      2.87500000000000000000f,
-      2.93750000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.06250000000000000000f,      3.31250000000000000000f,
-      2.75000000000000000000f,      2.75000000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.06250000000000000000f,      3.06250000000000000000f,
-      3.18750000000000000000f,      3.25000000000000000000f,
-      2.81250000000000000000f,      2.81250000000000000000f,
-      2.87500000000000000000f,      2.87500000000000000000f,
-      3.06250000000000000000f,      3.06250000000000000000f,
-      3.25000000000000000000f,      3.31250000000000000000f,
-      2.81250000000000000000f,      2.93750000000000000000f,
-      2.93750000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.06250000000000000000f,
-      3.12500000000000000000f,      3.25000000000000000000f,
-      2.87500000000000000000f,      2.87500000000000000000f,
-      2.87500000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.12500000000000000000f,
-      3.18750000000000000000f,      3.18750000000000000000f,
-      2.87500000000000000000f,      2.93750000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.00000000000000000000f,      3.00000000000000000000f,
-      3.00000000000000000000f,      3.18750000000000000000f,
-      3.75000000000000000000f,      3.75000000000000000000f,
-      3.81250000000000000000f,      3.87500000000000000000f,
-      3.93750000000000000000f,      3.93750000000000000000f,
-      3.93750000000000000000f,      4.00000000000000000000f,
-      4.00000000000000000000f,      4.06250000000000000000f,
-      4.06250000000000000000f,      4.12500000000000000000f,
-      4.12500000000000000000f,      4.12500000000000000000f,
-      4.31250000000000000000f,      4.37500000000000000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min[ 16 + 1 ] =
-{
-      0.00720214843750000000f,
-      0.00012207031250000000f,
-      0.00228881835937500000f,
-      0.00009155273437500000f,
-      0.00009155273437500000f,
-      0.00015258789062500000f,
-      0.00350952148437500040f,
-      0.00289916992187500000f,
-      0.00344848632812500000f,
-      0.00421142578125000000f,
-      0.00537109374999999910f,
-      0.00515747070312500000f,
-      0.00759887695312500000f,
-      0.00781250000000000000f,
-      0.00827026367187500000f,
-      0.00802612304687500000f,
-      0.01922607421875000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * NLSF_MSVQ_CB0_16_VECTORS ] =
-{
-     -0.45703125000000000000f,     -0.41406250000000000000f,
-     -0.36718750000000000000f,     -0.31640625000000000000f,
-     -0.25390625000000000000f,     -0.20312500000000003000f,
-     -0.14453125000000000000f,     -0.08593749999999998600f,
-     -0.01953125000000000000f,      0.04296874999999999300f,
-      0.10546875000000000000f,      0.16406250000000000000f,
-      0.23046875000000000000f,      0.29296875000000000000f,
-      0.35546875000000000000f,      0.41406250000000000000f,
-     -0.46874999999999994000f,     -0.45312500000000000000f,
-     -0.39062500000000000000f,     -0.32812500000000000000f,
-     -0.26171875000000000000f,     -0.19140625000000000000f,
-     -0.12500000000000000000f,     -0.06250000000000000000f,
-      0.00000000000000000000f,      0.05859374999999999300f,
-      0.11718749999999999000f,      0.17968750000000000000f,
-      0.24218750000000000000f,      0.30078125000000000000f,
-      0.36718750000000000000f,      0.42578124999999994000f,
-     -0.47265625000000000000f,     -0.45312500000000000000f,
-     -0.39843750000000000000f,     -0.33203125000000000000f,
-     -0.27734375000000000000f,     -0.22656250000000000000f,
-     -0.15234375000000000000f,     -0.09375000000000000000f,
-     -0.01953125000000000000f,      0.03906250000000000000f,
-      0.11328125000000000000f,      0.17578125000000000000f,
-      0.23828125000000000000f,      0.30078125000000000000f,
-      0.35937500000000000000f,      0.41796875000000000000f,
-     -0.46874999999999994000f,     -0.45312500000000000000f,
-     -0.36718750000000000000f,     -0.32421875000000006000f,
-     -0.26953125000000000000f,     -0.22265625000000000000f,
-     -0.17968750000000000000f,     -0.09765625000000000000f,
-     -0.02734375000000000000f,      0.03906250000000000000f,
-      0.10546875000000000000f,      0.16406250000000000000f,
-      0.22656250000000000000f,      0.29296875000000000000f,
-      0.35546875000000000000f,      0.41796875000000000000f,
-     -0.44531250000000000000f,     -0.42578124999999994000f,
-     -0.36718750000000000000f,     -0.30859375000000000000f,
-     -0.25781250000000000000f,     -0.20312500000000003000f,
-     -0.13671875000000000000f,     -0.07031250000000000000f,
-     -0.01562500000000000000f,      0.03515625000000000000f,
-      0.10156250000000001000f,      0.15625000000000000000f,
-      0.20703125000000000000f,      0.25390625000000000000f,
-      0.31640625000000000000f,      0.35937500000000000000f,
-     -0.44531250000000000000f,     -0.42187500000000000000f,
-     -0.37500000000000000000f,     -0.28906250000000000000f,
-     -0.24218750000000000000f,     -0.19531250000000000000f,
-     -0.13281250000000000000f,     -0.07031250000000000000f,
-      0.00000000000000000000f,      0.07031250000000000000f,
-      0.12890625000000000000f,      0.18359375000000000000f,
-      0.23828125000000000000f,      0.30078125000000000000f,
-      0.36718750000000000000f,      0.41796875000000000000f,
-     -0.45312500000000000000f,     -0.42578124999999994000f,
-     -0.38671875000000006000f,     -0.32812500000000000000f,
-     -0.27734375000000000000f,     -0.23437499999999997000f,
-     -0.17187499999999997000f,     -0.11718749999999999000f,
-     -0.03515625000000000000f,      0.01953125000000000000f,
-      0.07031250000000000000f,      0.12890625000000000000f,
-      0.20312500000000003000f,      0.27343750000000000000f,
-      0.34374999999999994000f,      0.41406250000000000000f,
-     -0.46484375000000000000f,     -0.44531250000000000000f,
-     -0.38671875000000006000f,     -0.34765625000000000000f,
-     -0.27734375000000000000f,     -0.23437499999999997000f,
-     -0.19531250000000000000f,     -0.14453125000000000000f,
-     -0.01562500000000000000f,      0.04687500000000000000f,
-      0.10937500000000000000f,      0.17968750000000000000f,
-      0.23437499999999997000f,      0.30078125000000000000f,
-      0.35546875000000000000f,      0.41406250000000000000f,
-     -0.44140625000000000000f,     -0.42578124999999994000f,
-     -0.33984375000000000000f,     -0.30468750000000000000f,
-     -0.26171875000000000000f,     -0.20312500000000003000f,
-     -0.15625000000000000000f,     -0.07421875000000000000f,
-     -0.03125000000000000000f,      0.04687500000000000000f,
-      0.11328125000000000000f,      0.16796875000000000000f,
-      0.22656250000000000000f,      0.29296875000000000000f,
-      0.36718750000000000000f,      0.44140625000000000000f,
-     -0.46484375000000000000f,     -0.44531250000000000000f,
-     -0.34374999999999994000f,     -0.30078125000000000000f,
-     -0.24609375000000000000f,     -0.19140625000000000000f,
-     -0.14062500000000000000f,     -0.08984375000000000000f,
-      0.00390625000000000000f,      0.06640625000000000000f,
-      0.12890625000000000000f,      0.19921875000000000000f,
-      0.26562500000000000000f,      0.31640625000000000000f,
-      0.37890625000000000000f,      0.42578124999999994000f,
-     -0.46484375000000000000f,     -0.44531250000000000000f,
-     -0.39453125000000000000f,     -0.34374999999999994000f,
-     -0.27734375000000000000f,     -0.22265625000000000000f,
-     -0.16406250000000000000f,     -0.06250000000000000000f,
-     -0.00390625000000000000f,      0.04296874999999999300f,
-      0.09375000000000000000f,      0.14843750000000000000f,
-      0.21093750000000000000f,      0.26953125000000000000f,
-      0.35156250000000000000f,      0.42968750000000000000f,
-     -0.45312500000000000000f,     -0.40234375000000000000f,
-     -0.33593750000000000000f,     -0.28515625000000000000f,
-     -0.22265625000000000000f,     -0.16796875000000000000f,
-     -0.10546875000000000000f,     -0.05078125000000000700f,
-      0.00781250000000000000f,      0.06250000000000000000f,
-      0.12109375000000000000f,      0.17578125000000000000f,
-      0.23828125000000000000f,      0.29687500000000000000f,
-      0.35937500000000000000f,      0.42187500000000000000f,
-     -0.45312500000000000000f,     -0.43750000000000000000f,
-     -0.39062500000000000000f,     -0.30078125000000000000f,
-     -0.26562500000000000000f,     -0.19921875000000000000f,
-     -0.16015625000000000000f,     -0.08593749999999998600f,
-     -0.04296874999999999300f,      0.00000000000000000000f,
-      0.06250000000000000000f,      0.14453125000000000000f,
-      0.21875000000000000000f,      0.28125000000000000000f,
-      0.34374999999999994000f,      0.40625000000000006000f,
-     -0.46093750000000000000f,     -0.44140625000000000000f,
-     -0.37500000000000000000f,     -0.32812500000000000000f,
-     -0.26953125000000000000f,     -0.21484375000000000000f,
-     -0.16406250000000000000f,     -0.11718749999999999000f,
-     -0.04687500000000000000f,      0.06640625000000000000f,
-      0.12890625000000000000f,      0.19921875000000000000f,
-      0.27343750000000000000f,      0.32421875000000006000f,
-      0.38281250000000000000f,      0.42968750000000000000f,
-     -0.42578124999999994000f,     -0.40625000000000006000f,
-     -0.35937500000000000000f,     -0.31250000000000000000f,
-     -0.26171875000000000000f,     -0.21875000000000000000f,
-     -0.16015625000000000000f,     -0.10937500000000000000f,
-     -0.05078125000000000700f,      0.00000000000000000000f,
-      0.05468750000000000000f,      0.10937500000000000000f,
-      0.16796875000000000000f,      0.23437499999999997000f,
-      0.33203125000000000000f,      0.40625000000000006000f,
-     -0.43750000000000000000f,     -0.41796875000000000000f,
-     -0.37109375000000000000f,     -0.32031250000000000000f,
-     -0.27734375000000000000f,     -0.22265625000000000000f,
-     -0.17578125000000000000f,     -0.10156250000000001000f,
-     -0.04296874999999999300f,      0.00390625000000000000f,
-      0.10546875000000000000f,      0.16015625000000000000f,
-      0.20703125000000000000f,      0.25781250000000000000f,
-      0.32812500000000000000f,      0.40625000000000006000f,
-     -0.44921875000000006000f,     -0.43359375000000000000f,
-     -0.38671875000000006000f,     -0.35937500000000000000f,
-     -0.24609375000000000000f,     -0.20312500000000003000f,
-     -0.15234375000000000000f,     -0.09375000000000000000f,
-     -0.05078125000000000700f,      0.01953125000000000000f,
-      0.10546875000000000000f,      0.16406250000000000000f,
-      0.23437499999999997000f,      0.30468750000000000000f,
-      0.36328124999999994000f,      0.42578124999999994000f,
-     -0.43750000000000000000f,     -0.42187500000000000000f,
-     -0.37500000000000000000f,     -0.34765625000000000000f,
-     -0.30078125000000000000f,     -0.19921875000000000000f,
-     -0.16015625000000000000f,     -0.08593749999999998600f,
-     -0.04296874999999999300f,      0.05078125000000000700f,
-      0.12109375000000000000f,      0.17187499999999997000f,
-      0.22265625000000000000f,      0.28125000000000000000f,
-      0.33984375000000000000f,      0.41015625000000000000f,
-     -0.43359375000000000000f,     -0.41796875000000000000f,
-     -0.37109375000000000000f,     -0.33984375000000000000f,
-     -0.30078125000000000000f,     -0.19140625000000000000f,
-     -0.14843750000000000000f,     -0.09375000000000000000f,
-     -0.03906250000000000000f,      0.00000000000000000000f,
-      0.05859374999999999300f,      0.11718749999999999000f,
-      0.21093750000000000000f,      0.29296875000000000000f,
-      0.36328124999999994000f,      0.41796875000000000000f,
-     -0.41796875000000000000f,     -0.40234375000000000000f,
-     -0.36328124999999994000f,     -0.28906250000000000000f,
-     -0.20312500000000003000f,     -0.17187499999999997000f,
-     -0.12109375000000000000f,     -0.06250000000000000000f,
-     -0.01171875000000000000f,      0.03906250000000000000f,
-      0.12890625000000000000f,      0.17578125000000000000f,
-      0.22656250000000000000f,      0.27734375000000000000f,
-      0.33203125000000000000f,      0.38281250000000000000f,
-     -0.44921875000000006000f,     -0.43359375000000000000f,
-     -0.38281250000000000000f,     -0.28125000000000000000f,
-     -0.23437499999999997000f,     -0.19140625000000000000f,
-     -0.13671875000000000000f,     -0.09375000000000000000f,
-      0.00390625000000000000f,      0.04296874999999999300f,
-      0.09765625000000000000f,      0.14843750000000000000f,
-      0.21875000000000000000f,      0.31640625000000000000f,
-      0.38281250000000000000f,      0.43750000000000000000f,
-     -0.45312500000000000000f,     -0.43750000000000000000f,
-     -0.39843750000000000000f,     -0.27343750000000000000f,
-     -0.23046875000000000000f,     -0.19140625000000000000f,
-     -0.14062500000000000000f,     -0.09765625000000000000f,
-     -0.02734375000000000000f,      0.01953125000000000000f,
-      0.06640625000000000000f,      0.11718749999999999000f,
-      0.18750000000000000000f,      0.25781250000000000000f,
-      0.33984375000000000000f,      0.40234375000000000000f,
-     -0.44140625000000000000f,     -0.42578124999999994000f,
-     -0.36718750000000000000f,     -0.33593750000000000000f,
-     -0.29296875000000000000f,     -0.25000000000000000000f,
-     -0.20312500000000003000f,     -0.09375000000000000000f,
-     -0.05468750000000000000f,      0.02343750000000000000f,
-      0.08984375000000000000f,      0.16796875000000000000f,
-      0.23828125000000000000f,      0.30078125000000000000f,
-      0.35937500000000000000f,      0.42187500000000000000f,
-     -0.46093750000000000000f,     -0.43750000000000000000f,
-     -0.39062500000000000000f,     -0.35156250000000000000f,
-     -0.25390625000000000000f,     -0.20703125000000000000f,
-     -0.15234375000000000000f,     -0.08593749999999998600f,
-      0.02343750000000000000f,      0.07031250000000000000f,
-      0.12500000000000000000f,      0.19140625000000000000f,
-      0.26171875000000000000f,      0.31640625000000000000f,
-      0.37890625000000000000f,      0.42578124999999994000f,
-     -0.45312500000000000000f,     -0.42578124999999994000f,
-     -0.38671875000000006000f,     -0.31250000000000000000f,
-     -0.26953125000000000000f,     -0.21484375000000000000f,
-     -0.16015625000000000000f,     -0.10546875000000000000f,
-     -0.04296874999999999300f,      0.01171875000000000000f,
-      0.08984375000000000000f,      0.15625000000000000000f,
-      0.23828125000000000000f,      0.31250000000000000000f,
-      0.39453125000000000000f,      0.44140625000000000000f,
-     -0.42968750000000000000f,     -0.41406250000000000000f,
-     -0.35937500000000000000f,     -0.32812500000000000000f,
-     -0.28515625000000000000f,     -0.16406250000000000000f,
-     -0.12109375000000000000f,     -0.06640625000000000000f,
-     -0.00390625000000000000f,      0.03906250000000000000f,
-      0.10156250000000001000f,      0.14453125000000000000f,
-      0.19921875000000000000f,      0.29687500000000000000f,
-      0.38671875000000006000f,      0.44140625000000000000f,
-     -0.45312500000000000000f,     -0.42968750000000000000f,
-     -0.36328124999999994000f,     -0.29296875000000000000f,
-     -0.22265625000000000000f,     -0.16015625000000000000f,
-     -0.08203125000000000000f,     -0.02343750000000000000f,
-      0.03906250000000000000f,      0.09765625000000000000f,
-      0.15625000000000000000f,      0.21093750000000000000f,
-      0.26562500000000000000f,      0.32031250000000000000f,
-      0.37500000000000000000f,      0.42968750000000000000f,
-     -0.45312500000000000000f,     -0.43359375000000000000f,
-     -0.39062500000000000000f,     -0.35937500000000000000f,
-     -0.31640625000000000000f,     -0.17968750000000000000f,
-     -0.12500000000000000000f,     -0.07421875000000000000f,
-     -0.01953125000000000000f,      0.02734375000000000000f,
-      0.09765625000000000000f,      0.16406250000000000000f,
-      0.22656250000000000000f,      0.28906250000000000000f,
-      0.35937500000000000000f,      0.41796875000000000000f,
-     -0.43750000000000000000f,     -0.42578124999999994000f,
-     -0.33593750000000000000f,     -0.30468750000000000000f,
-     -0.26562500000000000000f,     -0.21875000000000000000f,
-     -0.17578125000000000000f,     -0.08593749999999998600f,
-     -0.05078125000000000700f,     -0.00390625000000000000f,
-      0.05078125000000000700f,      0.12500000000000000000f,
-      0.22656250000000000000f,      0.30468750000000000000f,
-      0.35546875000000000000f,      0.41796875000000000000f,
-     -0.42187500000000000000f,     -0.40625000000000006000f,
-     -0.34765625000000000000f,     -0.29687500000000000000f,
-     -0.25781250000000000000f,     -0.20312500000000003000f,
-     -0.14843750000000000000f,     -0.10156250000000001000f,
-     -0.02734375000000000000f,      0.01562500000000000000f,
-      0.07031250000000000000f,      0.11718749999999999000f,
-      0.16796875000000000000f,      0.28906250000000000000f,
-      0.38281250000000000000f,      0.43750000000000000000f,
-     -0.44531250000000000000f,     -0.42968750000000000000f,
-     -0.32031250000000000000f,     -0.28125000000000000000f,
-     -0.23828125000000000000f,     -0.19531250000000000000f,
-     -0.14453125000000000000f,     -0.07812500000000000000f,
-     -0.04296874999999999300f,      0.00390625000000000000f,
-      0.06640625000000000000f,      0.17968750000000000000f,
-      0.24218750000000000000f,      0.30468750000000000000f,
-      0.36328124999999994000f,      0.43750000000000000000f,
-     -0.43750000000000000000f,     -0.42187500000000000000f,
-     -0.38671875000000006000f,     -0.30078125000000000000f,
-     -0.25781250000000000000f,     -0.22656250000000000000f,
-     -0.12890625000000000000f,     -0.08593749999999998600f,
-     -0.04296874999999999300f,      0.05078125000000000700f,
-      0.09765625000000000000f,      0.13671875000000000000f,
-      0.18359375000000000000f,      0.25000000000000000000f,
-      0.33984375000000000000f,      0.42187500000000000000f,
-     -0.44140625000000000000f,     -0.42578124999999994000f,
-     -0.37500000000000000000f,     -0.27343750000000000000f,
-     -0.23046875000000000000f,     -0.19140625000000000000f,
-     -0.13671875000000000000f,     -0.09375000000000000000f,
-     -0.02343750000000000000f,      0.02734375000000000000f,
-      0.07421875000000000000f,      0.13281250000000000000f,
-      0.25390625000000000000f,      0.30859375000000000000f,
-      0.36718750000000000000f,      0.41406250000000000000f,
-     -0.44921875000000006000f,     -0.43359375000000000000f,
-     -0.37500000000000000000f,     -0.33203125000000000000f,
-     -0.28125000000000000000f,     -0.23046875000000000000f,
-     -0.18359375000000000000f,     -0.12890625000000000000f,
-     -0.07812500000000000000f,     -0.03125000000000000000f,
-      0.03125000000000000000f,      0.13671875000000000000f,
-      0.21875000000000000000f,      0.28906250000000000000f,
-      0.35937500000000000000f,      0.42968750000000000000f,
-     -0.43359375000000000000f,     -0.42187500000000000000f,
-     -0.35937500000000000000f,     -0.25390625000000000000f,
-     -0.21093750000000000000f,     -0.17578125000000000000f,
-     -0.12109375000000000000f,     -0.07812500000000000000f,
-     -0.00781250000000000000f,      0.04296874999999999300f,
-      0.08984375000000000000f,      0.13281250000000000000f,
-      0.18359375000000000000f,      0.24609375000000000000f,
-      0.37500000000000000000f,      0.44531250000000000000f,
-     -0.44140625000000000000f,     -0.42187500000000000000f,
-     -0.38281250000000000000f,     -0.33984375000000000000f,
-     -0.30859375000000000000f,     -0.26562500000000000000f,
-     -0.12500000000000000000f,     -0.07421875000000000000f,
-     -0.01953125000000000000f,      0.04687500000000000000f,
-      0.09765625000000000000f,      0.16015625000000000000f,
-      0.23437499999999997000f,      0.30078125000000000000f,
-      0.37500000000000000000f,      0.42578124999999994000f,
-     -0.44921875000000006000f,     -0.42578124999999994000f,
-     -0.37500000000000000000f,     -0.32031250000000000000f,
-     -0.22656250000000000000f,     -0.18750000000000000000f,
-     -0.13281250000000000000f,     -0.06640625000000000000f,
-     -0.01562500000000000000f,      0.03515625000000000000f,
-      0.14062500000000000000f,      0.19531250000000000000f,
-      0.25390625000000000000f,      0.30859375000000000000f,
-      0.37890625000000000000f,      0.42578124999999994000f,
-     -0.44921875000000006000f,     -0.42968750000000000000f,
-     -0.39062500000000000000f,     -0.34374999999999994000f,
-     -0.21875000000000000000f,     -0.17578125000000000000f,
-     -0.13281250000000000000f,     -0.08203125000000000000f,
-     -0.02734375000000000000f,      0.02734375000000000000f,
-      0.09375000000000000000f,      0.14453125000000000000f,
-      0.19531250000000000000f,      0.25000000000000000000f,
-      0.33593750000000000000f,      0.41796875000000000000f,
-     -0.40625000000000006000f,     -0.38281250000000000000f,
-     -0.34374999999999994000f,     -0.30078125000000000000f,
-     -0.23437499999999997000f,     -0.19921875000000000000f,
-     -0.14453125000000000000f,     -0.07031250000000000000f,
-     -0.01171875000000000000f,      0.03125000000000000000f,
-      0.09765625000000000000f,      0.15625000000000000000f,
-      0.20703125000000000000f,      0.26562500000000000000f,
-      0.35546875000000000000f,      0.41796875000000000000f,
-     -0.46093750000000000000f,     -0.44140625000000000000f,
-     -0.37890625000000000000f,     -0.33203125000000000000f,
-     -0.28906250000000000000f,     -0.24218750000000000000f,
-     -0.19921875000000000000f,     -0.15625000000000000000f,
-     -0.09765625000000000000f,      0.01562500000000000000f,
-      0.09375000000000000000f,      0.15625000000000000000f,
-      0.22265625000000000000f,      0.29296875000000000000f,
-      0.35937500000000000000f,      0.42578124999999994000f,
-     -0.41796875000000000000f,     -0.40234375000000000000f,
-     -0.35937500000000000000f,     -0.32421875000000006000f,
-     -0.28906250000000000000f,     -0.24218750000000000000f,
-     -0.10937500000000000000f,     -0.07031250000000000000f,
-     -0.01562500000000000000f,      0.03515625000000000000f,
-      0.08593749999999998600f,      0.13281250000000000000f,
-      0.19531250000000000000f,      0.26171875000000000000f,
-      0.33984375000000000000f,      0.41796875000000000000f,
-     -0.45312500000000000000f,     -0.43750000000000000000f,
-     -0.29296875000000000000f,     -0.26171875000000000000f,
-     -0.21875000000000000000f,     -0.17578125000000000000f,
-     -0.12109375000000000000f,     -0.06250000000000000000f,
-     -0.01953125000000000000f,      0.03906250000000000000f,
-      0.11718749999999999000f,      0.17578125000000000000f,
-      0.24609375000000000000f,      0.30859375000000000000f,
-      0.37500000000000000000f,      0.43359375000000000000f,
-     -0.41406250000000000000f,     -0.39843750000000000000f,
-     -0.34374999999999994000f,     -0.30078125000000000000f,
-     -0.26562500000000000000f,     -0.20312500000000003000f,
-     -0.14843750000000000000f,     -0.09765625000000000000f,
-     -0.01562500000000000000f,      0.02734375000000000000f,
-      0.08984375000000000000f,      0.14062500000000000000f,
-      0.25781250000000000000f,      0.32812500000000000000f,
-      0.38281250000000000000f,      0.43359375000000000000f,
-     -0.40234375000000000000f,     -0.38671875000000006000f,
-     -0.33984375000000000000f,     -0.29687500000000000000f,
-     -0.25781250000000000000f,     -0.21875000000000000000f,
-     -0.11328125000000000000f,     -0.05078125000000000700f,
-      0.00000000000000000000f,      0.05468750000000000000f,
-      0.12109375000000000000f,      0.16406250000000000000f,
-      0.22265625000000000000f,      0.27734375000000000000f,
-      0.33203125000000000000f,      0.37500000000000000000f,
-     -0.44531250000000000000f,     -0.43359375000000000000f,
-     -0.35546875000000000000f,     -0.22656250000000000000f,
-     -0.18359375000000000000f,     -0.14843750000000000000f,
-     -0.10156250000000001000f,     -0.05468750000000000000f,
-      0.01171875000000000000f,      0.05078125000000000700f,
-      0.10156250000000001000f,      0.15625000000000000000f,
-      0.24218750000000000000f,      0.31250000000000000000f,
-      0.37500000000000000000f,      0.42968750000000000000f,
-     -0.44531250000000000000f,     -0.42968750000000000000f,
-     -0.35156250000000000000f,     -0.32421875000000006000f,
-     -0.28125000000000000000f,     -0.25000000000000000000f,
-     -0.14062500000000000000f,     -0.09375000000000000000f,
-     -0.05078125000000000700f,      0.02343750000000000000f,
-      0.10937500000000000000f,      0.19140625000000000000f,
-      0.25781250000000000000f,      0.31640625000000000000f,
-      0.37890625000000000000f,      0.43750000000000000000f,
-     -0.42578124999999994000f,     -0.41015625000000000000f,
-     -0.35546875000000000000f,     -0.32031250000000000000f,
-     -0.27734375000000000000f,     -0.19921875000000000000f,
-     -0.14843750000000000000f,     -0.09375000000000000000f,
-     -0.03906250000000000000f,      0.00390625000000000000f,
-      0.07812500000000000000f,      0.19140625000000000000f,
-      0.25000000000000000000f,      0.30468750000000000000f,
-      0.35546875000000000000f,      0.41406250000000000000f,
-     -0.43359375000000000000f,     -0.41796875000000000000f,
-     -0.35156250000000000000f,     -0.32031250000000000000f,
-     -0.27343750000000000000f,     -0.23437499999999997000f,
-     -0.19140625000000000000f,     -0.04687500000000000000f,
-      0.00000000000000000000f,      0.04296874999999999300f,
-      0.09765625000000000000f,      0.14453125000000000000f,
-      0.23437499999999997000f,      0.32031250000000000000f,
-      0.39453125000000000000f,      0.44531250000000000000f,
-     -0.43359375000000000000f,     -0.41796875000000000000f,
-     -0.36328124999999994000f,     -0.28125000000000000000f,
-     -0.16406250000000000000f,     -0.11718749999999999000f,
-     -0.07812500000000000000f,     -0.03125000000000000000f,
-      0.01562500000000000000f,      0.06250000000000000000f,
-      0.13281250000000000000f,      0.17968750000000000000f,
-      0.22656250000000000000f,      0.27343750000000000000f,
-      0.33203125000000000000f,      0.38281250000000000000f,
-     -0.43750000000000000000f,     -0.42578124999999994000f,
-     -0.31250000000000000000f,     -0.25390625000000000000f,
-     -0.21875000000000000000f,     -0.17187499999999997000f,
-     -0.12890625000000000000f,     -0.06640625000000000000f,
-     -0.01171875000000000000f,      0.03125000000000000000f,
-      0.07812500000000000000f,      0.12109375000000000000f,
-      0.19140625000000000000f,      0.30859375000000000000f,
-      0.38281250000000000000f,      0.43750000000000000000f,
-     -0.40625000000000006000f,     -0.38281250000000000000f,
-     -0.32812500000000000000f,     -0.28125000000000000000f,
-     -0.23046875000000000000f,     -0.17578125000000000000f,
-     -0.12109375000000000000f,     -0.07031250000000000000f,
-     -0.00390625000000000000f,      0.04687500000000000000f,
-      0.12109375000000000000f,      0.18359375000000000000f,
-      0.25000000000000000000f,      0.31640625000000000000f,
-      0.38281250000000000000f,      0.42968750000000000000f,
-     -0.42968750000000000000f,     -0.41406250000000000000f,
-     -0.35937500000000000000f,     -0.30859375000000000000f,
-     -0.27343750000000000000f,     -0.23046875000000000000f,
-     -0.19140625000000000000f,     -0.15234375000000000000f,
-     -0.00390625000000000000f,      0.04296874999999999300f,
-      0.08593749999999998600f,      0.13671875000000000000f,
-      0.20312500000000003000f,      0.26953125000000000000f,
-      0.34765625000000000000f,      0.42578124999999994000f,
-     -0.44140625000000000000f,     -0.42578124999999994000f,
-     -0.39453125000000000000f,     -0.37109375000000000000f,
-     -0.21875000000000000000f,     -0.17187499999999997000f,
-     -0.11328125000000000000f,     -0.06250000000000000000f,
-     -0.00781250000000000000f,      0.07031250000000000000f,
-      0.12890625000000000000f,      0.18750000000000000000f,
-      0.24609375000000000000f,      0.30468750000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.42578124999999994000f,     -0.41406250000000000000f,
-     -0.36718750000000000000f,     -0.33984375000000000000f,
-     -0.28906250000000000000f,     -0.16015625000000000000f,
-     -0.11328125000000000000f,     -0.05468750000000000000f,
-      0.00390625000000000000f,      0.05078125000000000700f,
-      0.10937500000000000000f,      0.18359375000000000000f,
-      0.26953125000000000000f,      0.32812500000000000000f,
-      0.38671875000000006000f,      0.43359375000000000000f,
-     -0.44921875000000006000f,     -0.42968750000000000000f,
-     -0.39453125000000000000f,     -0.32812500000000000000f,
-     -0.19531250000000000000f,     -0.12500000000000000000f,
-     -0.08593749999999998600f,     -0.04296874999999999300f,
-      0.00390625000000000000f,      0.05078125000000000700f,
-      0.11718749999999999000f,      0.17578125000000000000f,
-      0.22656250000000000000f,      0.28125000000000000000f,
-      0.34765625000000000000f,      0.41796875000000000000f,
-     -0.41406250000000000000f,     -0.39843750000000000000f,
-     -0.34765625000000000000f,     -0.29296875000000000000f,
-     -0.25000000000000000000f,     -0.21484375000000000000f,
-     -0.17187499999999997000f,     -0.13281250000000000000f,
-     -0.05078125000000000700f,      0.06250000000000000000f,
-      0.12500000000000000000f,      0.16796875000000000000f,
-      0.23046875000000000000f,      0.28515625000000000000f,
-      0.33593750000000000000f,      0.39062500000000000000f,
-     -0.43359375000000000000f,     -0.41796875000000000000f,
-     -0.36718750000000000000f,     -0.27343750000000000000f,
-     -0.21484375000000000000f,     -0.17968750000000000000f,
-     -0.12890625000000000000f,     -0.08203125000000000000f,
-     -0.02734375000000000000f,      0.01953125000000000000f,
-      0.07421875000000000000f,      0.12109375000000000000f,
-      0.16796875000000000000f,      0.21484375000000000000f,
-      0.27343750000000000000f,      0.40234375000000000000f,
-     -0.39843750000000000000f,     -0.37890625000000000000f,
-     -0.31250000000000000000f,     -0.27734375000000000000f,
-     -0.23437499999999997000f,     -0.19140625000000000000f,
-     -0.14062500000000000000f,     -0.09375000000000000000f,
-     -0.03125000000000000000f,      0.01562500000000000000f,
-      0.07421875000000000000f,      0.12500000000000000000f,
-      0.18750000000000000000f,      0.24609375000000000000f,
-      0.30859375000000000000f,      0.39062500000000000000f,
-     -0.44140625000000000000f,     -0.42578124999999994000f,
-     -0.35156250000000000000f,     -0.29687500000000000000f,
-     -0.25781250000000000000f,     -0.20703125000000000000f,
-     -0.16015625000000000000f,     -0.11328125000000000000f,
-     -0.06250000000000000000f,     -0.02734375000000000000f,
-      0.01953125000000000000f,      0.05859374999999999300f,
-      0.16406250000000000000f,      0.26953125000000000000f,
-      0.34765625000000000000f,      0.42187500000000000000f,
-     -0.42187500000000000000f,     -0.41015625000000000000f,
-     -0.36328124999999994000f,     -0.33203125000000000000f,
-     -0.29687500000000000000f,     -0.24218750000000000000f,
-     -0.08984375000000000000f,     -0.03125000000000000000f,
-      0.01562500000000000000f,      0.07031250000000000000f,
-      0.12890625000000000000f,      0.17578125000000000000f,
-      0.23437499999999997000f,      0.28906250000000000000f,
-      0.35156250000000000000f,      0.41015625000000000000f,
-     -0.44531250000000000000f,     -0.42968750000000000000f,
-     -0.34765625000000000000f,     -0.23828125000000000000f,
-     -0.20312500000000003000f,     -0.16406250000000000000f,
-     -0.11718749999999999000f,     -0.07031250000000000000f,
-     -0.01562500000000000000f,      0.05078125000000000700f,
-      0.10156250000000001000f,      0.15234375000000000000f,
-      0.20703125000000000000f,      0.26171875000000000000f,
-      0.31640625000000000000f,      0.37500000000000000000f,
-     -0.38671875000000006000f,     -0.37109375000000000000f,
-     -0.33593750000000000000f,     -0.30078125000000000000f,
-     -0.26953125000000000000f,     -0.23437499999999997000f,
-     -0.12500000000000000000f,     -0.05859374999999999300f,
-     -0.00781250000000000000f,      0.05859374999999999300f,
-      0.13671875000000000000f,      0.18359375000000000000f,
-      0.25000000000000000000f,      0.31250000000000000000f,
-      0.37500000000000000000f,      0.42968750000000000000f,
-     -0.44921875000000006000f,     -0.41015625000000000000f,
-     -0.31250000000000000000f,     -0.23828125000000000000f,
-     -0.16796875000000000000f,     -0.10546875000000000000f,
-     -0.05468750000000000000f,     -0.00390625000000000000f,
-      0.05078125000000000700f,      0.10156250000000001000f,
-      0.15625000000000000000f,      0.20703125000000000000f,
-      0.26171875000000000000f,      0.31250000000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.39062500000000000000f,     -0.35546875000000000000f,
-     -0.28125000000000000000f,     -0.23046875000000000000f,
-     -0.18750000000000000000f,     -0.14843750000000000000f,
-     -0.09765625000000000000f,     -0.05078125000000000700f,
-      0.00390625000000000000f,      0.05859374999999999300f,
-      0.10937500000000000000f,      0.15234375000000000000f,
-      0.22656250000000000000f,      0.29296875000000000000f,
-      0.35546875000000000000f,      0.41015625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.01953125000000000000f,     -0.01953125000000000000f,
-     -0.02734375000000000000f,     -0.03125000000000000000f,
-     -0.01953125000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.02343750000000000000f,
-     -0.03125000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.02343750000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.03515625000000000000f,      0.02734375000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,     -0.02343750000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,     -0.03125000000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.01953125000000000000f,     -0.02734375000000000000f,
-     -0.03515625000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,      0.03515625000000000000f,
-      0.02734375000000000000f,      0.02343750000000000000f,
-      0.01953125000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.03125000000000000000f,      0.03125000000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.02343750000000000000f,
-      0.02343750000000000000f,      0.02343750000000000000f,
-      0.02734375000000000000f,      0.02343750000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.01562500000000000000f,
-     -0.02734375000000000000f,     -0.03906250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,     -0.01953125000000000000f,
-      0.03125000000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-     -0.02343750000000000000f,     -0.03906250000000000000f,
-     -0.03906250000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.03125000000000000000f,     -0.03515625000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-      0.03906250000000000000f,      0.03515625000000000000f,
-      0.02734375000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-      0.03515625000000000000f,      0.02734375000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.02343750000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,     -0.01562500000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,      0.01953125000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.02734375000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.02343750000000000000f,     -0.02734375000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.02734375000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.01953125000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01562500000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.02343750000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,     -0.02343750000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,      0.01953125000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01562500000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.01562500000000000000f,
-      0.00781250000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.01171875000000000000f,      0.01562500000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.01171875000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f
-};
-
-const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB0_16_Stage_info_FLP[ NLSF_MSVQ_CB0_16_STAGES ] =
-{
-        {  64, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 *   0 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[   0 ] },
-        {  16, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 *  64 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[  64 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 *  80 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[  80 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 *  88 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[  88 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 *  96 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[  96 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 104 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 104 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 112 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 112 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 120 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 120 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 128 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 128 ] },
-        {  16, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 136 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 136 ] }
-};
-
-const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_16_FLP =
-{
-        NLSF_MSVQ_CB0_16_STAGES,
-        SKP_Silk_NLSF_CB0_16_Stage_info_FLP,
-        SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min,
-        SKP_Silk_NLSF_MSVQ_CB0_16_CDF,
-        SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx
-};
-
--- a/src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c
+++ /dev/null
@@ -1,520 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/**********************************************/
-/* This file has been automatically generated */
-/*                                            */
-/* ROM usage:  3.56 kB                        */
-/**********************************************/
-
-#include "SKP_Silk_tables_FLP.h"
-#include "SKP_Silk_tables_NLSF_CB1_10.h"
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10_rates[ NLSF_MSVQ_CB1_10_VECTORS ] =
-{
-      1.62500000000000000000f,      3.18750000000000000000f,
-      3.43750000000000000000f,      4.00000000000000000000f,
-      4.75000000000000000000f,      4.81250000000000000000f,
-      5.00000000000000000000f,      5.31250000000000000000f,
-      5.43750000000000000000f,      5.62500000000000000000f,
-      5.68750000000000000000f,      5.75000000000000000000f,
-      5.75000000000000000000f,      6.12500000000000000000f,
-      6.18750000000000000000f,      6.31250000000000000000f,
-      6.37500000000000000000f,      6.43750000000000000000f,
-      6.43750000000000000000f,      6.50000000000000000000f,
-      6.56250000000000000000f,      6.75000000000000000000f,
-      6.93750000000000000000f,      7.06250000000000000000f,
-      7.06250000000000000000f,      7.06250000000000000000f,
-      7.06250000000000000000f,      7.06250000000000000000f,
-      7.06250000000000000000f,      7.06250000000000000000f,
-      7.06250000000000000000f,      7.06250000000000000000f,
-      0.93750000000000000000f,      2.87500000000000000000f,
-      3.68750000000000000000f,      4.00000000000000000000f,
-      4.25000000000000000000f,      4.25000000000000000000f,
-      4.25000000000000000000f,      4.37500000000000000000f,
-      1.12500000000000000000f,      2.62500000000000000000f,
-      3.50000000000000000000f,      3.93750000000000000000f,
-      4.00000000000000000000f,      4.18750000000000000000f,
-      4.25000000000000000000f,      4.25000000000000000000f,
-      1.06250000000000000000f,      3.18750000000000000000f,
-      3.62500000000000000000f,      3.75000000000000000000f,
-      3.87500000000000000000f,      3.93750000000000000000f,
-      3.93750000000000000000f,      4.25000000000000000000f,
-      2.18750000000000000000f,      2.56250000000000000000f,
-      2.75000000000000000000f,      2.87500000000000000000f,
-      2.93750000000000000000f,      3.56250000000000000000f,
-      4.06250000000000000000f,      4.31250000000000000000f,
-      1.31250000000000000000f,      2.75000000000000000000f,
-      2.93750000000000000000f,      3.62500000000000000000f,
-      3.93750000000000000000f,      4.00000000000000000000f,
-      4.12500000000000000000f,      4.12500000000000000000f,
-      1.68750000000000000000f,      2.50000000000000000000f,
-      3.25000000000000000000f,      3.37500000000000000000f,
-      3.37500000000000000000f,      3.43750000000000000000f,
-      3.56250000000000000000f,      4.31250000000000000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min[ 10 + 1 ] =
-{
-      0.00894165039062500000f,
-      0.00097656250000000000f,
-      0.00686645507812500000f,
-      0.00854492187500000000f,
-      0.00466918945312500000f,
-      0.00070190429687500000f,
-      0.00039672851562500005f,
-      0.00042724609375000000f,
-      0.00027465820312500000f,
-      0.00009155273437500000f,
-      0.02099609375000000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * NLSF_MSVQ_CB1_10_VECTORS ] =
-{
-     -0.44140625000000000000f,     -0.35937500000000000000f,
-     -0.26562500000000000000f,     -0.16796875000000000000f,
-     -0.07812500000000000000f,      0.01171875000000000000f,
-      0.10937500000000000000f,      0.20312500000000003000f,
-      0.30468750000000000000f,      0.39062500000000000000f,
-     -0.44531250000000000000f,     -0.39453125000000000000f,
-     -0.29296875000000000000f,     -0.20703125000000000000f,
-     -0.11718749999999999000f,     -0.02734375000000000000f,
-      0.07812500000000000000f,      0.17578125000000000000f,
-      0.28125000000000000000f,      0.37500000000000000000f,
-     -0.38281250000000000000f,     -0.31640625000000000000f,
-     -0.22656250000000000000f,     -0.12890625000000000000f,
-     -0.03906250000000000000f,      0.03906250000000000000f,
-      0.13671875000000000000f,      0.22656250000000000000f,
-      0.32031250000000000000f,      0.40234375000000000000f,
-     -0.42968750000000000000f,     -0.38671875000000006000f,
-     -0.31250000000000000000f,     -0.23828125000000000000f,
-     -0.14843750000000000000f,     -0.05859374999999999300f,
-      0.04687500000000000000f,      0.14843750000000000000f,
-      0.25781250000000000000f,      0.34765625000000000000f,
-     -0.44921875000000006000f,     -0.42187500000000000000f,
-     -0.30078125000000000000f,     -0.19140625000000000000f,
-     -0.08203125000000000000f,      0.01562500000000000000f,
-      0.11328125000000000000f,      0.20703125000000000000f,
-      0.30859375000000000000f,      0.39843750000000000000f,
-     -0.39453125000000000000f,     -0.31640625000000000000f,
-     -0.21484375000000000000f,     -0.11328125000000000000f,
-     -0.02734375000000000000f,      0.08984375000000000000f,
-      0.18359375000000000000f,      0.27734375000000000000f,
-      0.36328124999999994000f,      0.42968750000000000000f,
-     -0.39062500000000000000f,     -0.32421875000000006000f,
-     -0.25390625000000000000f,     -0.17187499999999997000f,
-     -0.09765625000000000000f,     -0.02734375000000000000f,
-      0.07421875000000000000f,      0.17578125000000000000f,
-      0.28125000000000000000f,      0.37500000000000000000f,
-     -0.42968750000000000000f,     -0.39062500000000000000f,
-     -0.33203125000000000000f,     -0.17578125000000000000f,
-     -0.09765625000000000000f,     -0.03125000000000000000f,
-      0.08593749999999998600f,      0.15234375000000000000f,
-      0.30468750000000000000f,      0.37890625000000000000f,
-     -0.44921875000000006000f,     -0.41796875000000000000f,
-     -0.34765625000000000000f,     -0.26953125000000000000f,
-     -0.14062500000000000000f,     -0.03515625000000000000f,
-      0.07812500000000000000f,      0.17578125000000000000f,
-      0.28125000000000000000f,      0.38671875000000006000f,
-     -0.44140625000000000000f,     -0.38671875000000006000f,
-     -0.26953125000000000000f,     -0.14843750000000000000f,
-     -0.04687500000000000000f,      0.06250000000000000000f,
-      0.17187499999999997000f,      0.26562500000000000000f,
-      0.35937500000000000000f,      0.42578124999999994000f,
-     -0.42578124999999994000f,     -0.38281250000000000000f,
-     -0.32812500000000000000f,     -0.23437499999999997000f,
-     -0.07421875000000000000f,     -0.01171875000000000000f,
-      0.07031250000000000000f,      0.16796875000000000000f,
-      0.23828125000000000000f,      0.38281250000000000000f,
-     -0.38671875000000006000f,     -0.30078125000000000000f,
-     -0.17968750000000000000f,     -0.06640625000000000000f,
-      0.03906250000000000000f,      0.13671875000000000000f,
-      0.21484375000000000000f,      0.28906250000000000000f,
-      0.35937500000000000000f,      0.41406250000000000000f,
-     -0.41015625000000000000f,     -0.35546875000000000000f,
-     -0.27343750000000000000f,     -0.16406250000000000000f,
-     -0.00390625000000000000f,      0.06640625000000000000f,
-      0.13671875000000000000f,      0.22656250000000000000f,
-      0.29296875000000000000f,      0.38671875000000006000f,
-     -0.35156250000000000000f,     -0.30078125000000000000f,
-     -0.20703125000000000000f,     -0.14843750000000000000f,
-     -0.08203125000000000000f,      0.00000000000000000000f,
-      0.10937500000000000000f,      0.19140625000000000000f,
-      0.29687500000000000000f,      0.37890625000000000000f,
-     -0.42968750000000000000f,     -0.39453125000000000000f,
-     -0.31250000000000000000f,     -0.11328125000000000000f,
-     -0.03125000000000000000f,      0.02343750000000000000f,
-      0.11718749999999999000f,      0.18750000000000000000f,
-      0.32031250000000000000f,      0.38671875000000006000f,
-     -0.42968750000000000000f,     -0.35937500000000000000f,
-     -0.21484375000000000000f,     -0.07421875000000000000f,
-      0.01562500000000000000f,      0.09765625000000000000f,
-      0.16796875000000000000f,      0.24218750000000000000f,
-      0.32812500000000000000f,      0.39453125000000000000f,
-     -0.39453125000000000000f,     -0.34374999999999994000f,
-     -0.28515625000000000000f,     -0.22656250000000000000f,
-     -0.17578125000000000000f,     -0.10156250000000001000f,
-      0.08203125000000000000f,      0.17968750000000000000f,
-      0.27734375000000000000f,      0.38281250000000000000f,
-     -0.32421875000000006000f,     -0.26171875000000000000f,
-     -0.15625000000000000000f,     -0.08593749999999998600f,
-     -0.00781250000000000000f,      0.07421875000000000000f,
-      0.16015625000000000000f,      0.24609375000000000000f,
-      0.33203125000000000000f,      0.40234375000000000000f,
-     -0.43750000000000000000f,     -0.40234375000000000000f,
-     -0.34765625000000000000f,     -0.24218750000000000000f,
-     -0.03125000000000000000f,      0.05859374999999999300f,
-      0.12890625000000000000f,      0.21875000000000000000f,
-      0.28906250000000000000f,      0.37890625000000000000f,
-     -0.45703125000000000000f,     -0.28515625000000000000f,
-     -0.21875000000000000000f,     -0.12890625000000000000f,
-     -0.05078125000000000700f,      0.04296874999999999300f,
-      0.13281250000000000000f,      0.22265625000000000000f,
-      0.31250000000000000000f,      0.39453125000000000000f,
-     -0.42968750000000000000f,     -0.39062500000000000000f,
-     -0.32812500000000000000f,     -0.28125000000000000000f,
-     -0.23046875000000000000f,     -0.05859374999999999300f,
-      0.08203125000000000000f,      0.17578125000000000000f,
-      0.29687500000000000000f,      0.37500000000000000000f,
-     -0.40234375000000000000f,     -0.35156250000000000000f,
-     -0.28125000000000000000f,     -0.23046875000000000000f,
-     -0.15625000000000000000f,      0.00390625000000000000f,
-      0.12500000000000000000f,      0.21875000000000000000f,
-      0.32031250000000000000f,      0.38281250000000000000f,
-     -0.41796875000000000000f,     -0.37890625000000000000f,
-     -0.30859375000000000000f,     -0.21093750000000000000f,
-     -0.14453125000000000000f,     -0.08203125000000000000f,
-     -0.01562500000000000000f,      0.08593749999999998600f,
-      0.27734375000000000000f,      0.36718750000000000000f,
-     -0.37890625000000000000f,     -0.26171875000000000000f,
-     -0.10546875000000000000f,     -0.00781250000000000000f,
-      0.11328125000000000000f,      0.17187499999999997000f,
-      0.22656250000000000000f,      0.27734375000000000000f,
-      0.32031250000000000000f,      0.38281250000000000000f,
-     -0.34765625000000000000f,     -0.28906250000000000000f,
-     -0.21484375000000000000f,     -0.17578125000000000000f,
-     -0.11718749999999999000f,     -0.07031250000000000000f,
-     -0.00781250000000000000f,      0.08984375000000000000f,
-      0.25390625000000000000f,      0.37890625000000000000f,
-     -0.41406250000000000000f,     -0.32031250000000000000f,
-     -0.21875000000000000000f,     -0.12109375000000000000f,
-     -0.01953125000000000000f,      0.13281250000000000000f,
-      0.23046875000000000000f,      0.25390625000000000000f,
-      0.26562500000000000000f,      0.30468750000000000000f,
-     -0.41796875000000000000f,     -0.32031250000000000000f,
-     -0.22265625000000000000f,     -0.12109375000000000000f,
-      0.07812500000000000000f,      0.12109375000000000000f,
-      0.13281250000000000000f,      0.13671875000000000000f,
-      0.26562500000000000000f,      0.40234375000000000000f,
-     -0.42578124999999994000f,     -0.32421875000000006000f,
-     -0.21875000000000000000f,     -0.12500000000000000000f,
-     -0.02343750000000000000f,      0.07031250000000000000f,
-      0.19140625000000000000f,      0.32031250000000000000f,
-      0.42578124999999994000f,      0.45312500000000000000f,
-     -0.40234375000000000000f,     -0.32031250000000000000f,
-     -0.19531250000000000000f,     -0.06640625000000000000f,
-     -0.02343750000000000000f,      0.00781250000000000000f,
-      0.07421875000000000000f,      0.21875000000000000000f,
-      0.32421875000000006000f,      0.41015625000000000000f,
-     -0.41406250000000000000f,     -0.32031250000000000000f,
-     -0.21093750000000000000f,     -0.11718749999999999000f,
-     -0.00390625000000000000f,      0.12500000000000000000f,
-      0.16015625000000000000f,      0.19140625000000000000f,
-      0.20312500000000003000f,      0.38281250000000000000f,
-     -0.38281250000000000000f,     -0.25781250000000000000f,
-     -0.14062500000000000000f,      0.00000000000000000000f,
-      0.01953125000000000000f,      0.04687500000000000000f,
-      0.05468750000000000000f,      0.10156250000000001000f,
-      0.25000000000000000000f,      0.37890625000000000000f,
-     -0.41015625000000000000f,     -0.31250000000000000000f,
-     -0.20703125000000000000f,     -0.11328125000000000000f,
-      0.00781250000000000000f,      0.11718749999999999000f,
-      0.29687500000000000000f,      0.35156250000000000000f,
-      0.36718750000000000000f,      0.37500000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01953125000000000000f,
-      0.02734375000000000000f,      0.02343750000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-      0.03125000000000000000f,      0.03515625000000000000f,
-      0.01953125000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.02734375000000000000f,     -0.04296874999999999300f,
-     -0.04296874999999999300f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.02343750000000000000f,     -0.01171875000000000000f,
-      0.00781250000000000000f,     -0.01562500000000000000f,
-      0.03906250000000000000f,      0.01953125000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.01953125000000000000f,     -0.02734375000000000000f,
-      0.04296874999999999300f,      0.02734375000000000000f,
-      0.01562500000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.02734375000000000000f,      0.03906250000000000000f,
-      0.01171875000000000000f,     -0.00390625000000000000f,
-     -0.02343750000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.01953125000000000000f,
-     -0.04296874999999999300f,     -0.03906250000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.01953125000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.01953125000000000000f,
-      0.01562500000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.03515625000000000000f,
-     -0.01953125000000000000f,     -0.00390625000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.02343750000000000000f,
-      0.02734375000000000000f,      0.02343750000000000000f,
-     -0.00781250000000000000f,     -0.01953125000000000000f,
-     -0.03515625000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.01171875000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.02343750000000000000f,     -0.03515625000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-      0.01562500000000000000f,     -0.01171875000000000000f,
-      0.03515625000000000000f,      0.01171875000000000000f,
-     -0.01171875000000000000f,      0.01562500000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-     -0.02343750000000000000f,      0.04296874999999999300f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.01953125000000000000f,      0.02343750000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.02343750000000000000f,     -0.03125000000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.03125000000000000000f,      0.00390625000000000000f,
-     -0.01953125000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.03125000000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.03906250000000000000f,
-      0.00390625000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-     -0.02343750000000000000f,      0.02343750000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.01562500000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.01562500000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01562500000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.01953125000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.02734375000000000000f,      0.02343750000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.01562500000000000000f,
-     -0.01562500000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.01562500000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.01953125000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.01953125000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.01953125000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.01171875000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01562500000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-     -0.01562500000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.01562500000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f
-};
-
-const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB1_10_Stage_info_FLP[ NLSF_MSVQ_CB1_10_STAGES ] =
-{
-        {  32, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *   0 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[   0 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  32 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  32 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  40 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  40 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  48 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  48 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  56 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  56 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  64 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  64 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 *  72 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[  72 ] }
-};
-
-const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB1_10_FLP =
-{
-        NLSF_MSVQ_CB1_10_STAGES,
-        SKP_Silk_NLSF_CB1_10_Stage_info_FLP,
-        SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min,
-        SKP_Silk_NLSF_MSVQ_CB1_10_CDF,
-        SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx
-};
-
--- a/src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c
+++ /dev/null
@@ -1,973 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/**********************************************/
-/* This file has been automatically generated */
-/*                                            */
-/* ROM usage:  7.14 kB                        */
-/**********************************************/
-
-#include "SKP_Silk_tables_FLP.h"
-#include "SKP_Silk_tables_NLSF_CB1_16.h"
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16_rates[ NLSF_MSVQ_CB1_16_VECTORS ] =
-{
-      1.93750000000000000000f,      3.25000000000000000000f,
-      3.81250000000000000000f,      4.31250000000000000000f,
-      4.56250000000000000000f,      4.75000000000000000000f,
-      5.06250000000000000000f,      5.06250000000000000000f,
-      5.18750000000000000000f,      5.25000000000000000000f,
-      5.31250000000000000000f,      5.37500000000000000000f,
-      5.37500000000000000000f,      5.50000000000000000000f,
-      5.50000000000000000000f,      5.62500000000000000000f,
-      5.87500000000000000000f,      5.87500000000000000000f,
-      5.93750000000000000000f,      6.06250000000000000000f,
-      6.12500000000000000000f,      6.25000000000000000000f,
-      6.37500000000000000000f,      6.68750000000000000000f,
-      6.68750000000000000000f,      7.00000000000000000000f,
-      7.00000000000000000000f,      7.00000000000000000000f,
-      7.00000000000000000000f,      7.00000000000000000000f,
-      7.00000000000000000000f,      7.00000000000000000000f,
-      1.25000000000000000000f,      2.62500000000000000000f,
-      2.75000000000000000000f,      3.87500000000000000000f,
-      4.00000000000000000000f,      4.25000000000000000000f,
-      4.62500000000000000000f,      4.62500000000000000000f,
-      1.06250000000000000000f,      2.87500000000000000000f,
-      3.68750000000000000000f,      3.75000000000000000000f,
-      3.87500000000000000000f,      3.87500000000000000000f,
-      4.31250000000000000000f,      4.37500000000000000000f,
-      0.75000000000000000000f,      3.75000000000000000000f,
-      3.93750000000000000000f,      4.06250000000000000000f,
-      4.18750000000000000000f,      4.31250000000000000000f,
-      4.31250000000000000000f,      4.43750000000000000000f,
-      0.62500000000000000000f,      3.87500000000000000000f,
-      3.93750000000000000000f,      4.00000000000000000000f,
-      4.25000000000000000000f,      4.62500000000000000000f,
-      4.75000000000000000000f,      5.00000000000000000000f,
-      0.56250000000000000000f,      4.06250000000000000000f,
-      4.31250000000000000000f,      4.37500000000000000000f,
-      4.43750000000000000000f,      4.56250000000000000000f,
-      4.56250000000000000000f,      4.68750000000000000000f,
-      0.68750000000000000000f,      3.81250000000000000000f,
-      3.87500000000000000000f,      4.18750000000000000000f,
-      4.25000000000000000000f,      4.37500000000000000000f,
-      4.43750000000000000000f,      4.50000000000000000000f,
-      1.06250000000000000000f,      3.06250000000000000000f,
-      3.56250000000000000000f,      3.62500000000000000000f,
-      3.68750000000000000000f,      4.12500000000000000000f,
-      4.18750000000000000000f,      4.68750000000000000000f,
-      1.18750000000000000000f,      2.56250000000000000000f,
-      3.00000000000000000000f,      3.75000000000000000000f,
-      4.31250000000000000000f,      4.31250000000000000000f,
-      4.37500000000000000000f,      4.37500000000000000000f,
-      1.87500000000000000000f,      2.00000000000000000000f,
-      2.93750000000000000000f,      3.25000000000000000000f,
-      3.50000000000000000000f,      4.12500000000000000000f,
-      4.37500000000000000000f,      4.50000000000000000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min[ 16 + 1 ] =
-{
-      0.00335693359375000000f,
-      0.00085449218750000000f,
-      0.00372314453125000000f,
-      0.00207519531250000000f,
-      0.00228881835937500000f,
-      0.00216674804687500000f,
-      0.00195312500000000000f,
-      0.00238037109375000000f,
-      0.00253295898437500040f,
-      0.00234985351562500000f,
-      0.00247192382812500000f,
-      0.00231933593750000000f,
-      0.00256347656250000000f,
-      0.00222778320312500000f,
-      0.00210571289062500000f,
-      0.00064086914062500000f,
-      0.02374267578125000000f
-};
-
-const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * NLSF_MSVQ_CB1_16_VECTORS ] =
-{
-     -0.46093750000000000000f,     -0.41015625000000000000f,
-     -0.35156250000000000000f,     -0.28906250000000000000f,
-     -0.22656250000000000000f,     -0.17187499999999997000f,
-     -0.11328125000000000000f,     -0.05078125000000000700f,
-      0.01171875000000000000f,      0.07031250000000000000f,
-      0.12890625000000000000f,      0.19140625000000000000f,
-      0.25000000000000000000f,      0.30859375000000000000f,
-      0.37109375000000000000f,      0.42578124999999994000f,
-     -0.46093750000000000000f,     -0.42968750000000000000f,
-     -0.37109375000000000000f,     -0.31640625000000000000f,
-     -0.25781250000000000000f,     -0.20312500000000003000f,
-     -0.14453125000000000000f,     -0.08203125000000000000f,
-     -0.01562500000000000000f,      0.04687500000000000000f,
-      0.10546875000000000000f,      0.16796875000000000000f,
-      0.23437499999999997000f,      0.30078125000000000000f,
-      0.36328124999999994000f,      0.41796875000000000000f,
-     -0.46874999999999994000f,     -0.44531250000000000000f,
-     -0.36718750000000000000f,     -0.30468750000000000000f,
-     -0.23437499999999997000f,     -0.17578125000000000000f,
-     -0.11328125000000000000f,     -0.05078125000000000700f,
-      0.01171875000000000000f,      0.07421875000000000000f,
-      0.13281250000000000000f,      0.19140625000000000000f,
-      0.25390625000000000000f,      0.31250000000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.47656250000000000000f,     -0.45703125000000000000f,
-     -0.40234375000000000000f,     -0.34374999999999994000f,
-     -0.26953125000000000000f,     -0.20312500000000003000f,
-     -0.14453125000000000000f,     -0.07421875000000000000f,
-     -0.00781250000000000000f,      0.05859374999999999300f,
-      0.12109375000000000000f,      0.18359375000000000000f,
-      0.24609375000000000000f,      0.30859375000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.46484375000000000000f,     -0.43359375000000000000f,
-     -0.37109375000000000000f,     -0.31640625000000000000f,
-     -0.26562500000000000000f,     -0.20703125000000000000f,
-     -0.14062500000000000000f,     -0.08593749999999998600f,
-     -0.01953125000000000000f,      0.03515625000000000000f,
-      0.10546875000000000000f,      0.15625000000000000000f,
-      0.21875000000000000000f,      0.27343750000000000000f,
-      0.33203125000000000000f,      0.37500000000000000000f,
-     -0.45703125000000000000f,     -0.41406250000000000000f,
-     -0.35156250000000000000f,     -0.29687500000000000000f,
-     -0.24218750000000000000f,     -0.19140625000000000000f,
-     -0.12109375000000000000f,     -0.05859374999999999300f,
-     -0.00781250000000000000f,      0.03906250000000000000f,
-      0.10156250000000001000f,      0.15234375000000000000f,
-      0.19921875000000000000f,      0.25000000000000000000f,
-      0.31250000000000000000f,      0.35156250000000000000f,
-     -0.44140625000000000000f,     -0.39843750000000000000f,
-     -0.32812500000000000000f,     -0.26953125000000000000f,
-     -0.21093750000000000000f,     -0.16406250000000000000f,
-     -0.10546875000000000000f,     -0.05859374999999999300f,
-     -0.00390625000000000000f,      0.05078125000000000700f,
-      0.10937500000000000000f,      0.16406250000000000000f,
-      0.22656250000000000000f,      0.28515625000000000000f,
-      0.35156250000000000000f,      0.41406250000000000000f,
-     -0.44921875000000006000f,     -0.40625000000000006000f,
-     -0.35156250000000000000f,     -0.29687500000000000000f,
-     -0.24609375000000000000f,     -0.19531250000000000000f,
-     -0.13671875000000000000f,     -0.08203125000000000000f,
-     -0.03125000000000000000f,      0.02734375000000000000f,
-      0.08593749999999998600f,      0.14453125000000000000f,
-      0.20703125000000000000f,      0.27343750000000000000f,
-      0.34374999999999994000f,      0.41796875000000000000f,
-     -0.42578124999999994000f,     -0.38281250000000000000f,
-     -0.32031250000000000000f,     -0.25781250000000000000f,
-     -0.19140625000000000000f,     -0.13671875000000000000f,
-     -0.07031250000000000000f,     -0.00781250000000000000f,
-      0.05468750000000000000f,      0.11718749999999999000f,
-      0.17578125000000000000f,      0.22656250000000000000f,
-      0.28515625000000000000f,      0.33593750000000000000f,
-      0.39062500000000000000f,      0.44140625000000000000f,
-     -0.41406250000000000000f,     -0.37500000000000000000f,
-     -0.32031250000000000000f,     -0.26562500000000000000f,
-     -0.20703125000000000000f,     -0.15625000000000000000f,
-     -0.09765625000000000000f,     -0.03906250000000000000f,
-      0.01953125000000000000f,      0.07421875000000000000f,
-      0.13281250000000000000f,      0.19140625000000000000f,
-      0.25390625000000000000f,      0.31250000000000000000f,
-      0.37500000000000000000f,      0.42968750000000000000f,
-     -0.46874999999999994000f,     -0.44140625000000000000f,
-     -0.38671875000000006000f,     -0.33593750000000000000f,
-     -0.28125000000000000000f,     -0.23046875000000000000f,
-     -0.19531250000000000000f,     -0.14062500000000000000f,
-     -0.02734375000000000000f,      0.03906250000000000000f,
-      0.10546875000000000000f,      0.17578125000000000000f,
-      0.23828125000000000000f,      0.30468750000000000000f,
-      0.36718750000000000000f,      0.42578124999999994000f,
-     -0.45703125000000000000f,     -0.42578124999999994000f,
-     -0.37500000000000000000f,     -0.32812500000000000000f,
-     -0.28125000000000000000f,     -0.22656250000000000000f,
-     -0.18359375000000000000f,     -0.12500000000000000000f,
-     -0.07421875000000000000f,     -0.00781250000000000000f,
-      0.08984375000000000000f,      0.15625000000000000000f,
-      0.22265625000000000000f,      0.29296875000000000000f,
-      0.35937500000000000000f,      0.42578124999999994000f,
-     -0.46484375000000000000f,     -0.43750000000000000000f,
-     -0.38671875000000006000f,     -0.33984375000000000000f,
-     -0.30468750000000000000f,     -0.25781250000000000000f,
-     -0.16406250000000000000f,     -0.07812500000000000000f,
-     -0.02343750000000000000f,      0.04296874999999999300f,
-      0.10937500000000000000f,      0.17187499999999997000f,
-      0.23437499999999997000f,      0.30468750000000000000f,
-      0.36718750000000000000f,      0.42968750000000000000f,
-     -0.42968750000000000000f,     -0.37890625000000000000f,
-     -0.30859375000000000000f,     -0.24218750000000000000f,
-     -0.17187499999999997000f,     -0.10156250000000001000f,
-     -0.03125000000000000000f,      0.03125000000000000000f,
-      0.08984375000000000000f,      0.14062500000000000000f,
-      0.19140625000000000000f,      0.23437499999999997000f,
-      0.28125000000000000000f,      0.32812500000000000000f,
-      0.37890625000000000000f,      0.43359375000000000000f,
-     -0.42578124999999994000f,     -0.36718750000000000000f,
-     -0.28515625000000000000f,     -0.21484375000000000000f,
-     -0.14453125000000000000f,     -0.08593749999999998600f,
-     -0.03125000000000000000f,      0.00781250000000000000f,
-      0.05078125000000000700f,      0.09375000000000000000f,
-      0.14453125000000000000f,      0.19531250000000000000f,
-      0.25390625000000000000f,      0.30859375000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.44531250000000000000f,     -0.39453125000000000000f,
-     -0.32421875000000006000f,     -0.26171875000000000000f,
-     -0.18750000000000000000f,     -0.12109375000000000000f,
-     -0.05859374999999999300f,     -0.00390625000000000000f,
-      0.03906250000000000000f,      0.08203125000000000000f,
-      0.13281250000000000000f,      0.19140625000000000000f,
-      0.25390625000000000000f,      0.31250000000000000000f,
-      0.37500000000000000000f,      0.43359375000000000000f,
-     -0.46093750000000000000f,     -0.43750000000000000000f,
-     -0.39062500000000000000f,     -0.35937500000000000000f,
-     -0.31250000000000000000f,     -0.19140625000000000000f,
-     -0.13281250000000000000f,     -0.07421875000000000000f,
-     -0.02734375000000000000f,      0.03125000000000000000f,
-      0.10156250000000001000f,      0.16796875000000000000f,
-      0.23437499999999997000f,      0.30468750000000000000f,
-      0.36718750000000000000f,      0.42968750000000000000f,
-     -0.46093750000000000000f,     -0.43750000000000000000f,
-     -0.39062500000000000000f,     -0.30468750000000000000f,
-     -0.23828125000000000000f,     -0.19921875000000000000f,
-     -0.14843750000000000000f,     -0.10156250000000001000f,
-     -0.02343750000000000000f,      0.02343750000000000000f,
-      0.07421875000000000000f,      0.12890625000000000000f,
-      0.20312500000000003000f,      0.28515625000000000000f,
-      0.36718750000000000000f,      0.42968750000000000000f,
-     -0.45703125000000000000f,     -0.42968750000000000000f,
-     -0.36718750000000000000f,     -0.30859375000000000000f,
-     -0.26171875000000000000f,     -0.21093750000000000000f,
-     -0.16406250000000000000f,     -0.10546875000000000000f,
-     -0.06250000000000000000f,     -0.02343750000000000000f,
-      0.03125000000000000000f,      0.13671875000000000000f,
-      0.22265625000000000000f,      0.29296875000000000000f,
-      0.35937500000000000000f,      0.42578124999999994000f,
-     -0.44140625000000000000f,     -0.35937500000000000000f,
-     -0.27734375000000000000f,     -0.22265625000000000000f,
-     -0.17578125000000000000f,     -0.13281250000000000000f,
-     -0.08593749999999998600f,     -0.03906250000000000000f,
-      0.01562500000000000000f,      0.06640625000000000000f,
-      0.12500000000000000000f,      0.17968750000000000000f,
-      0.24218750000000000000f,      0.30078125000000000000f,
-      0.36328124999999994000f,      0.41796875000000000000f,
-     -0.46874999999999994000f,     -0.42968750000000000000f,
-     -0.35156250000000000000f,     -0.27734375000000000000f,
-     -0.21093750000000000000f,     -0.14453125000000000000f,
-     -0.06640625000000000000f,     -0.00390625000000000000f,
-      0.06250000000000000000f,      0.12109375000000000000f,
-      0.17187499999999997000f,      0.21875000000000000000f,
-      0.27343750000000000000f,      0.32031250000000000000f,
-      0.37890625000000000000f,      0.43359375000000000000f,
-     -0.42968750000000000000f,     -0.39453125000000000000f,
-     -0.34374999999999994000f,     -0.31250000000000000000f,
-     -0.26953125000000000000f,     -0.19531250000000000000f,
-     -0.11718749999999999000f,     -0.05078125000000000700f,
-      0.00781250000000000000f,      0.06640625000000000000f,
-      0.12500000000000000000f,      0.18750000000000000000f,
-      0.25000000000000000000f,      0.31250000000000000000f,
-      0.37890625000000000000f,      0.43359375000000000000f,
-     -0.46093750000000000000f,     -0.43750000000000000000f,
-     -0.39453125000000000000f,     -0.33593750000000000000f,
-     -0.21484375000000000000f,     -0.16015625000000000000f,
-     -0.11328125000000000000f,     -0.06250000000000000000f,
-     -0.01562500000000000000f,      0.03906250000000000000f,
-      0.11718749999999999000f,      0.16796875000000000000f,
-      0.21875000000000000000f,      0.28125000000000000000f,
-      0.35156250000000000000f,      0.41796875000000000000f,
-     -0.43750000000000000000f,     -0.40234375000000000000f,
-     -0.34374999999999994000f,     -0.28906250000000000000f,
-     -0.23828125000000000000f,     -0.19140625000000000000f,
-     -0.14062500000000000000f,     -0.09375000000000000000f,
-     -0.03906250000000000000f,      0.01562500000000000000f,
-      0.06640625000000000000f,      0.11328125000000000000f,
-      0.16796875000000000000f,      0.22265625000000000000f,
-      0.28906250000000000000f,      0.39843750000000000000f,
-     -0.46093750000000000000f,     -0.41796875000000000000f,
-     -0.32812500000000000000f,     -0.26953125000000000000f,
-     -0.20312500000000003000f,     -0.13671875000000000000f,
-     -0.06640625000000000000f,     -0.01953125000000000000f,
-      0.03515625000000000000f,      0.07812500000000000000f,
-      0.13281250000000000000f,      0.17578125000000000000f,
-      0.23046875000000000000f,      0.26953125000000000000f,
-      0.32812500000000000000f,      0.36328124999999994000f,
-     -0.41406250000000000000f,     -0.37109375000000000000f,
-     -0.30468750000000000000f,     -0.24609375000000000000f,
-     -0.18750000000000000000f,     -0.14062500000000000000f,
-     -0.09375000000000000000f,     -0.05078125000000000700f,
-     -0.00390625000000000000f,      0.03515625000000000000f,
-      0.08203125000000000000f,      0.12500000000000000000f,
-      0.17968750000000000000f,      0.23437499999999997000f,
-      0.29687500000000000000f,      0.35937500000000000000f,
-     -0.45312500000000000000f,     -0.39453125000000000000f,
-     -0.33203125000000000000f,     -0.26953125000000000000f,
-     -0.21093750000000000000f,     -0.14453125000000000000f,
-     -0.08203125000000000000f,     -0.02343750000000000000f,
-      0.04296874999999999300f,      0.09375000000000000000f,
-      0.15234375000000000000f,      0.20703125000000000000f,
-      0.29687500000000000000f,      0.36328124999999994000f,
-      0.40625000000000006000f,      0.43750000000000000000f,
-     -0.44531250000000000000f,     -0.40625000000000006000f,
-     -0.33984375000000000000f,     -0.28906250000000000000f,
-     -0.23828125000000000000f,     -0.19531250000000000000f,
-     -0.15625000000000000000f,     -0.11718749999999999000f,
-     -0.07421875000000000000f,     -0.03906250000000000000f,
-      0.01562500000000000000f,      0.05468750000000000000f,
-      0.14062500000000000000f,      0.26953125000000000000f,
-      0.34765625000000000000f,      0.42578124999999994000f,
-     -0.43750000000000000000f,     -0.38281250000000000000f,
-     -0.33203125000000000000f,     -0.28125000000000000000f,
-     -0.21093750000000000000f,     -0.13671875000000000000f,
-     -0.08984375000000000000f,     -0.04296874999999999300f,
-      0.01171875000000000000f,      0.07812500000000000000f,
-      0.14843750000000000000f,      0.21875000000000000000f,
-      0.26953125000000000000f,      0.31640625000000000000f,
-      0.35156250000000000000f,      0.42187500000000000000f,
-     -0.45312500000000000000f,     -0.39453125000000000000f,
-     -0.32812500000000000000f,     -0.27343750000000000000f,
-     -0.21484375000000000000f,     -0.15625000000000000000f,
-     -0.09765625000000000000f,     -0.03125000000000000000f,
-      0.04296874999999999300f,      0.11718749999999999000f,
-      0.16015625000000000000f,      0.19140625000000000000f,
-      0.24218750000000000000f,      0.32421875000000006000f,
-      0.41015625000000000000f,      0.45703125000000000000f,
-     -0.44921875000000006000f,     -0.38281250000000000000f,
-     -0.32031250000000000000f,     -0.23828125000000000000f,
-     -0.18750000000000000000f,     -0.15625000000000000000f,
-     -0.11328125000000000000f,     -0.05468750000000000000f,
-      0.02343750000000000000f,      0.08593749999999998600f,
-      0.15234375000000000000f,      0.20703125000000000000f,
-      0.26562500000000000000f,      0.32031250000000000000f,
-      0.37500000000000000000f,      0.42968750000000000000f,
-     -0.44140625000000000000f,     -0.37500000000000000000f,
-     -0.29687500000000000000f,     -0.26562500000000000000f,
-     -0.23046875000000000000f,     -0.17187499999999997000f,
-     -0.08203125000000000000f,     -0.03125000000000000000f,
-      0.01171875000000000000f,      0.05859374999999999300f,
-      0.12890625000000000000f,      0.19140625000000000000f,
-      0.25390625000000000000f,      0.31250000000000000000f,
-      0.37109375000000000000f,      0.42968750000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.02343750000000000000f,
-     -0.02343750000000000000f,     -0.01953125000000000000f,
-     -0.01562500000000000000f,     -0.01562500000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-     -0.01562500000000000000f,     -0.01953125000000000000f,
-     -0.01953125000000000000f,     -0.01562500000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.03515625000000000000f,      0.03125000000000000000f,
-      0.01953125000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,     -0.03125000000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.03125000000000000000f,
-      0.03515625000000000000f,      0.03125000000000000000f,
-      0.01953125000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.01562500000000000000f,      0.01953125000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.01953125000000000000f,
-     -0.03125000000000000000f,     -0.03125000000000000000f,
-     -0.02343750000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00781250000000000000f,
-      0.01953125000000000000f,      0.01953125000000000000f,
-      0.01953125000000000000f,      0.03125000000000000000f,
-      0.03515625000000000000f,      0.02734375000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.02343750000000000000f,     -0.02734375000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.01562500000000000000f,      0.02734375000000000000f,
-      0.01562500000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.01953125000000000000f,
-     -0.02734375000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.02734375000000000000f,     -0.02343750000000000000f,
-     -0.01953125000000000000f,     -0.01171875000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01562500000000000000f,
-      0.01953125000000000000f,      0.01562500000000000000f,
-      0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.02343750000000000000f,     -0.02734375000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.02343750000000000000f,     -0.03515625000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01953125000000000000f,     -0.02734375000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.01562500000000000000f,     -0.01171875000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,     -0.02343750000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.01953125000000000000f,
-     -0.02734375000000000000f,     -0.01953125000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,     -0.02734375000000000000f,
-      0.01953125000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.01171875000000000000f,
-     -0.02734375000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.01562500000000000000f,      0.02343750000000000000f,
-      0.02343750000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,     -0.01562500000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,     -0.01562500000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.01171875000000000000f,
-      0.01562500000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01953125000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-     -0.01562500000000000000f,      0.00390625000000000000f,
-      0.01562500000000000000f,      0.01562500000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01953125000000000000f,      0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.01953125000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01562500000000000000f,
-     -0.02734375000000000000f,      0.01953125000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.01171875000000000000f,     -0.01171875000000000000f,
-      0.02343750000000000000f,      0.01953125000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.01562500000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-      0.01562500000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.01562500000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.01171875000000000000f,
-     -0.00781250000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.01953125000000000000f,
-      0.01562500000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00781250000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.01953125000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,     -0.00781250000000000000f,
-     -0.01562500000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.01953125000000000000f,
-      0.01171875000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.01562500000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.01562500000000000000f,      0.00781250000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00781250000000000000f,
-     -0.00781250000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00781250000000000000f,
-     -0.01171875000000000000f,      0.00781250000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-     -0.01562500000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.01171875000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.01171875000000000000f,
-      0.00781250000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01171875000000000000f,     -0.01562500000000000000f,
-      0.01953125000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.01171875000000000000f,
-      0.01171875000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00781250000000000000f,     -0.00781250000000000000f,
-      0.00781250000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,      0.01562500000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.01953125000000000000f,      0.01171875000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00781250000000000000f,     -0.01171875000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.01562500000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.01562500000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00781250000000000000f,     -0.01562500000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00781250000000000000f,      0.01171875000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00390625000000000000f,     -0.00781250000000000000f,
-      0.00000000000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.01171875000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-     -0.00781250000000000000f,      0.01171875000000000000f,
-     -0.00390625000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00390625000000000000f,      0.00781250000000000000f,
-     -0.01562500000000000000f,     -0.00390625000000000000f,
-     -0.00781250000000000000f,     -0.00390625000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-     -0.00390625000000000000f,      0.00390625000000000000f,
-      0.00000000000000000000f,      0.00390625000000000000f,
-      0.00390625000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f,
-      0.00000000000000000000f,      0.00000000000000000000f
-};
-
-const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB1_16_Stage_info_FLP[ NLSF_MSVQ_CB1_16_STAGES ] =
-{
-        {  32, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *   0 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[   0 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  32 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  32 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  40 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  40 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  48 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  48 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  56 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  56 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  64 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  64 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  72 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  72 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  80 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  80 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  88 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  88 ] },
-        {   8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 *  96 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[  96 ] }
-};
-
-const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB1_16_FLP =
-{
-        NLSF_MSVQ_CB1_16_STAGES,
-        SKP_Silk_NLSF_CB1_16_Stage_info_FLP,
-        SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min,
-        SKP_Silk_NLSF_MSVQ_CB1_16_CDF,
-        SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx
-};
-
--- a/src_FLP/SKP_Silk_tables_other_FLP.c
+++ /dev/null
@@ -1,35 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_structs_FLP.h"
-#include "SKP_Silk_tables_FLP.h"
-
-const SKP_float SKP_Silk_HarmShapeFIR_FLP[ HARM_SHAPE_FIR_TAPS ] = { 16384.0f / 65536.0f, 32767.0f / 65536.0f, 16384.0f / 65536.0f };
-
-const SKP_float SKP_Silk_Quantization_Offsets[ 2 ][ 2 ] = {
-    { OFFSET_VL_Q10 / 1024.0f, OFFSET_VH_Q10 / 1024.0f }, { OFFSET_UVL_Q10 / 1024.0f, OFFSET_UVH_Q10 / 1024.0f }
-};
--- a/src_FLP/SKP_Silk_wrappers_FLP.c
+++ b/src_FLP/SKP_Silk_wrappers_FLP.c
@@ -76,7 +76,7 @@
 /* LSF stabilizer, for a single input data vector */
 void SKP_Silk_NLSF_stabilize_FLP(
           SKP_float                 *pNLSF,             /* I/O  (Un)stable NLSF vector [ LPC_order ]    */
-    const SKP_float                 *pNDelta_min,       /* I    Normalized delta min vector[LPC_order+1]*/
+    const SKP_int                   *pNDelta_min_Q15,   /* I    Normalized delta min vector[LPC_order+1]*/
     const SKP_int                   LPC_order           /* I    LPC order                               */
 )
 {
@@ -84,10 +84,10 @@
     SKP_int   NLSF_Q15[ MAX_LPC_ORDER ], ndelta_min_Q15[ MAX_LPC_ORDER + 1 ];
 
     for( i = 0; i < LPC_order; i++ ) {
-        NLSF_Q15[       i ] = ( SKP_int )SKP_float2int( pNLSF[       i ] * 32768.0f );
-        ndelta_min_Q15[ i ] = ( SKP_int )SKP_float2int( pNDelta_min[ i ] * 32768.0f );
+        NLSF_Q15[       i ] = ( SKP_int )SKP_float2int( pNLSF[ i ] * 32768.0f );
+        ndelta_min_Q15[ i ] = ( SKP_int )SKP_float2int( pNDelta_min_Q15[ i ] );
     }
-    ndelta_min_Q15[ LPC_order ] = ( SKP_int )SKP_float2int( pNDelta_min[ LPC_order ] * 32768.0f );
+    ndelta_min_Q15[ LPC_order ] = ( SKP_int )SKP_float2int( pNDelta_min_Q15[ LPC_order ] );
 
     /* NLSF stabilizer, for a single input data vector */
     SKP_Silk_NLSF_stabilize( NLSF_Q15, ndelta_min_Q15, LPC_order );
@@ -241,5 +241,36 @@
                 x_16, q, psEncCtrl->sCmn.NLSFInterpCoef_Q2, PredCoef_Q12[ 0 ], LTPCoef_Q14, AR2_Q13, 
                 HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, Lambda_Q10, LTP_scale_Q14 );
         }
+    }
+}
+
+/***********************************************/
+/* Floating-point Silk LTP quantiation wrapper */
+/***********************************************/
+void SKP_Silk_quant_LTP_gains_FLP(
+          SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ],              /* I/O  (Un-)quantized LTP gains                */
+          SKP_int   cbk_index[ MAX_NB_SUBFR ],                  /* O    Codebook index                          */
+          SKP_int   *periodicity_index,                         /* O    Periodicity index                       */
+    const SKP_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ],  /* I    Error weights                           */
+    const SKP_int   mu_Q10,                                     /* I    Mu value (R/D tradeoff)     */
+    const SKP_int   lowComplexity,                              /* I    Flag for low complexity                 */
+    const SKP_int   nb_subfr                                    /* I    number of subframes                     */
+)
+{
+    SKP_int   i;
+    SKP_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ];
+    SKP_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ];
+
+    for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER; i++ ) {
+        B_Q14[ i ] = (SKP_int16)SKP_float2int( B[ i ] * 16384.0f );
+    }
+    for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER; i++ ) {
+        W_Q18[ i ] = (SKP_int32)SKP_float2int( W[ i ] * 262144.0f );
+    }
+
+    SKP_Silk_quant_LTP_gains( B_Q14, cbk_index, periodicity_index, W_Q18, mu_Q10, lowComplexity, nb_subfr );
+
+    for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER; i++ ) {
+        B[ i ] = ( (SKP_float)B_Q14[ i ] ) / 16384.0f;
     }
 }
--- a/src_FLP/Silk_FLP.vcproj
+++ /dev/null
@@ -1,328 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="Silk_FLP"
-	ProjectGUID="{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"
-	RootNamespace="Silk"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_common;../src_SigProc_FLP;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_FLP_Win32_debug.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_common;../src_SigProc_FLP;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
-				GeneratePreprocessedFile="0"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_FLP_Win32_mt.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_apply_sine_window_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_control_codec_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_corrMatrix_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_encode_frame_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_LPC_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_LTP_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_pitch_lags_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_find_pred_coefs_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_HP_variable_cutoff_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_init_encoder_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_analysis_filter_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LTP_analysis_filter_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LTP_scale_ctrl_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_MSVQ_decode_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_MSVQ_encode_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_rate_distortion_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_sum_error_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_noise_shape_analysis_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_prefilter_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_process_gains_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_process_NLSFs_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_quant_LTP_gains_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_regularize_correlations_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_residual_energy_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_solve_LS_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_10_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_16_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_10_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_16_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_other_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_VQ_nearest_neighbor_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_warped_autocorrelation_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_wrappers_FLP.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_assembler_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_define_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_main_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_perceptual_parameters_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_structs_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_FLP.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/src_FLP/src_FLP.vcxproj
@@ -1,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9C4961D2-5DDB-40C7-9BE8-CA918DC4E782}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>src_FLP</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FLP;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FLP;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_assembler_FLP.h" />
+    <ClInclude Include="SKP_Silk_main_FLP.h" />
+    <ClInclude Include="SKP_Silk_structs_FLP.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_apply_sine_window_FLP.c" />
+    <ClCompile Include="SKP_Silk_control_codec_FLP.c" />
+    <ClCompile Include="SKP_Silk_corrMatrix_FLP.c" />
+    <ClCompile Include="SKP_Silk_encode_frame_FLP.c" />
+    <ClCompile Include="SKP_Silk_find_LPC_FLP.c" />
+    <ClCompile Include="SKP_Silk_find_LTP_FLP.c" />
+    <ClCompile Include="SKP_Silk_find_pitch_lags_FLP.c" />
+    <ClCompile Include="SKP_Silk_find_pred_coefs_FLP.c" />
+    <ClCompile Include="SKP_Silk_HP_variable_cutoff_FLP.c" />
+    <ClCompile Include="SKP_Silk_init_encoder_FLP.c" />
+    <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c" />
+    <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c" />
+    <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c" />
+    <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c" />
+    <ClCompile Include="SKP_Silk_prefilter_FLP.c" />
+    <ClCompile Include="SKP_Silk_process_gains_FLP.c" />
+    <ClCompile Include="SKP_Silk_process_NLSFs_FLP.c" />
+    <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c" />
+    <ClCompile Include="SKP_Silk_residual_energy_FLP.c" />
+    <ClCompile Include="SKP_Silk_solve_LS_FLP.c" />
+    <ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c" />
+    <ClCompile Include="SKP_Silk_wrappers_FLP.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/src_FLP/src_FLP.vcxproj.filters
@@ -1,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_assembler_FLP.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_main_FLP.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_structs_FLP.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_apply_sine_window_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_control_codec_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_corrMatrix_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_encode_frame_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_LPC_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_LTP_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_pitch_lags_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_find_pred_coefs_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_HP_variable_cutoff_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_init_encoder_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_prefilter_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_process_gains_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_process_NLSFs_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_residual_energy_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_solve_LS_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_wrappers_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/src_SigProc_FIX/SKP_Silk_NLSF2A.c
+++ b/src_SigProc_FIX/SKP_Silk_NLSF2A.c
@@ -72,7 +72,7 @@
     SKP_int32 a_int32[SKP_Silk_MAX_ORDER_LPC];
     SKP_int32 maxabs, absval, idx=0, sc_Q16; 
 
-    SKP_assert(LSF_COS_TAB_SZ_FIX == 128);
+    SKP_assert( LSF_COS_TAB_SZ_FIX == 128 );
 
     /* convert LSFs to 2*cos(LSF(i)), using piecewise linear curve from table */
     for( k = 0; k < d; k++ ) {
--- a/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c
+++ b/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c
@@ -45,10 +45,10 @@
     const SKP_int     L                    /* I:    Number of NLSF parameters in the input vector                           */
 )
 {
-    SKP_int        center_freq_Q15, diff_Q15, min_center_Q15, max_center_Q15;
-    SKP_int32    min_diff_Q15;
-    SKP_int        loops;
-    SKP_int        i, I=0, k;
+    SKP_int   center_freq_Q15, diff_Q15, min_center_Q15, max_center_Q15;
+    SKP_int32 min_diff_Q15;
+    SKP_int   loops;
+    SKP_int   i, I=0, k;
 
     /* This is necessary to ensure an output within range of a SKP_int16 */
     SKP_assert( NDeltaMin_Q15[L] >= 1 );
--- a/src_SigProc_FIX/SKP_Silk_biquad.c
+++ b/src_SigProc_FIX/SKP_Silk_biquad.c
@@ -48,7 +48,7 @@
 )
 {
     SKP_int   k, in16;
-    SKP_int32 A0_neg, A1_neg, S0, S1, out32, tmp32;
+    SKP_int32 A0_neg, A1_neg, S0, S1, out32;
 
     S0 = S[ 0 ];
     S1 = S[ 1 ];
@@ -64,8 +64,7 @@
 
         S1 = SKP_LSHIFT( SKP_SMULWB( out32, A1_neg ), 3 );
         S1 = SKP_SMLABB( S1, in16, B[ 2 ] );
-        tmp32    = SKP_RSHIFT_ROUND( out32, 13 ) + 1;
-        out[ k ] = (SKP_int16)SKP_SAT16( tmp32 );
+        out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( out32, 13 ) );
     }
     S[ 0 ] = S0;
     S[ 1 ] = S1;
--- a/src_SigProc_FIX/SKP_Silk_biquad_alt.c
+++ b/src_SigProc_FIX/SKP_Silk_biquad_alt.c
@@ -39,7 +39,7 @@
     const SKP_int16      *in,            /* I:    Input signal                   */
     const SKP_int32      *B_Q28,         /* I:    MA coefficients [3]            */
     const SKP_int32      *A_Q28,         /* I:    AR coefficients [2]            */
-    SKP_int32            *S,             /* I/O: State vector [2]                */
+    SKP_int32            *S,             /* I/O:  State vector [2]               */
     SKP_int16            *out,           /* O:    Output signal                  */
     const SKP_int32      len             /* I:    Signal length (must be even)   */
 )
@@ -59,15 +59,15 @@
         inval = in[ k ];
         out32_Q14 = SKP_LSHIFT( SKP_SMLAWB( S[ 0 ], B_Q28[ 0 ], inval ), 2 );
 
-        S[ 0 ] = S[1] + SKP_RSHIFT( SKP_SMULWB( out32_Q14, A0_L_Q28 ), 14 );
+        S[ 0 ] = S[1] + SKP_RSHIFT_ROUND( SKP_SMULWB( out32_Q14, A0_L_Q28 ), 14 );
         S[ 0 ] = SKP_SMLAWB( S[ 0 ], out32_Q14, A0_U_Q28 );
         S[ 0 ] = SKP_SMLAWB( S[ 0 ], B_Q28[ 1 ], inval);
 
-        S[ 1 ] = SKP_RSHIFT( SKP_SMULWB( out32_Q14, A1_L_Q28 ), 14 );
+        S[ 1 ] = SKP_RSHIFT_ROUND( SKP_SMULWB( out32_Q14, A1_L_Q28 ), 14 );
         S[ 1 ] = SKP_SMLAWB( S[ 1 ], out32_Q14, A1_U_Q28 );
         S[ 1 ] = SKP_SMLAWB( S[ 1 ], B_Q28[ 2 ], inval );
 
         /* Scale back to Q0 and saturate */
-        out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT( out32_Q14, 14 ) + 2 );
+        out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT( out32_Q14 + (1<<14) - 1, 14 ) );
     }
 }
--- a/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h
+++ b/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h
@@ -47,7 +47,7 @@
 #define PE_MAX_FRAME_LENGTH_ST_2     (PE_MAX_FRAME_LENGTH >> 1)
 #define PE_MAX_SF_FRAME_LENGTH       (PE_SUB_FRAME * PE_MAX_FS_KHZ)
 
-#define PE_MAX_LAG_MS                18            /* 18 ms -> 56 Hz */
+#define PE_MAX_LAG_MS                18           /* 18 ms -> 56 Hz */
 #define PE_MIN_LAG_MS                2            /* 2 ms -> 500 Hz */
 #define PE_MAX_LAG                   (PE_MAX_LAG_MS * PE_MAX_FS_KHZ)
 #define PE_MIN_LAG                   (PE_MIN_LAG_MS * PE_MAX_FS_KHZ)
@@ -71,11 +71,14 @@
 #define PE_NB_CBKS_STAGE3_10MS       12
 #define PE_NB_CBKS_STAGE2_10MS       3
 
+#define PE_SHORTLAG_BIAS             0.2f    /* for logarithmic weighting    */
+#define PE_PREVLAG_BIAS              0.2f    /* for logarithmic weighting    */
+#define PE_FLATCONTOUR_BIAS          0.05f
+
 extern const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ];
 extern const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ];
 extern const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ];
 extern const SKP_int8 SKP_Silk_nb_cbk_searchs_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ];
-extern const SKP_int8 SKP_Silk_cbk_offsets_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ];
 
 /* Tables added for 10 ms frames */
 extern const SKP_int8 SKP_Silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ 3 ];
--- a/src_SigProc_FIX/SKP_Silk_debug.c
+++ b/src_SigProc_FIX/SKP_Silk_debug.c
@@ -167,3 +167,9 @@
 #endif
 
 #endif /* SKP_TIC_TOC */
+
+#if SKP_DEBUG
+FILE *SKP_debug_store_fp[ SKP_NUM_STORES_MAX ];
+int SKP_debug_store_count = 0;
+#endif /* SKP_DEBUG */
+
--- a/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c
+++ b/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c
@@ -98,8 +98,8 @@
     SKP_int   sf_length, sf_length_8kHz, sf_length_4kHz;
     SKP_int   min_lag, min_lag_8kHz, min_lag_4kHz;
     SKP_int   max_lag, max_lag_8kHz, max_lag_4kHz;
-    SKP_int32 contour_bias, diff, lz, lshift;
-    SKP_int   cbk_offset, nb_cbk_search, cbk_size;
+    SKP_int32 contour_bias_Q20, diff, lz, lshift;
+    SKP_int   nb_cbk_search, cbk_size;
     SKP_int32 delta_lag_log2_sqr_Q7, lag_log2_Q7, prevLag_log2_Q7, prev_lag_bias_Q15, corr_thres_Q15;
     const SKP_int8 *Lag_CB_ptr;
     /* Check for valid sampling frequency */
@@ -122,9 +122,9 @@
     min_lag           = PE_MIN_LAG_MS * Fs_kHz;
     min_lag_4kHz      = PE_MIN_LAG_MS * 4;
     min_lag_8kHz      = PE_MIN_LAG_MS * 8;
-    max_lag           = PE_MAX_LAG_MS * Fs_kHz;
+    max_lag           = PE_MAX_LAG_MS * Fs_kHz - 1;
     max_lag_4kHz      = PE_MAX_LAG_MS * 4;
-    max_lag_8kHz      = PE_MAX_LAG_MS * 8;
+    max_lag_8kHz      = PE_MAX_LAG_MS * 8 - 1;
 
     SKP_memset( C, 0, sizeof( SKP_int16 ) * nb_subfr * ( ( PE_MAX_LAG >> 1 ) + 5) );
     
@@ -391,7 +391,7 @@
             nb_cbk_search = PE_NB_CBKS_STAGE2;
         }
         corr_thres_Q15 = SKP_RSHIFT( SKP_SMULBB( search_thres2_Q15, search_thres2_Q15 ), 13 );
-    }else{
+    } else {
         cbk_size       = PE_NB_CBKS_STAGE2_10MS;
         Lag_CB_ptr     = &SKP_Silk_CB_lags_stage2_10_ms[ 0 ][ 0 ];
         nb_cbk_search  = PE_NB_CBKS_STAGE2_10MS;
@@ -420,16 +420,16 @@
         /* Bias towards shorter lags */
         lag_log2_Q7 = SKP_Silk_lin2log( (SKP_int32)d ); /* Q7 */
         SKP_assert( lag_log2_Q7 == SKP_SAT16( lag_log2_Q7 ) );
-        SKP_assert( nb_subfr * PE_SHORTLAG_BIAS_Q15 == SKP_SAT16( nb_subfr * PE_SHORTLAG_BIAS_Q15 ) );
-        CCmax_new_b = CCmax_new - SKP_RSHIFT( SKP_SMULBB( nb_subfr * PE_SHORTLAG_BIAS_Q15, lag_log2_Q7 ), 7 ); /* Q15 */
+        SKP_assert( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ) == SKP_SAT16( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ) ) );
+        CCmax_new_b = CCmax_new - SKP_RSHIFT( SKP_SMULBB( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ), lag_log2_Q7 ), 7 ); /* Q15 */
 
         /* Bias towards previous lag */
-        SKP_assert( nb_subfr * PE_PREVLAG_BIAS_Q15 == SKP_SAT16( nb_subfr * PE_PREVLAG_BIAS_Q15 ) );
+        SKP_assert( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ) == SKP_SAT16( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ) ) );
         if( prevLag > 0 ) {
             delta_lag_log2_sqr_Q7 = lag_log2_Q7 - prevLag_log2_Q7;
             SKP_assert( delta_lag_log2_sqr_Q7 == SKP_SAT16( delta_lag_log2_sqr_Q7 ) );
             delta_lag_log2_sqr_Q7 = SKP_RSHIFT( SKP_SMULBB( delta_lag_log2_sqr_Q7, delta_lag_log2_sqr_Q7 ), 7 );
-            prev_lag_bias_Q15 = SKP_RSHIFT( SKP_SMULBB( nb_subfr * PE_PREVLAG_BIAS_Q15, ( *LTPCorr_Q15 ) ), 15 ); /* Q15 */
+            prev_lag_bias_Q15 = SKP_RSHIFT( SKP_SMULBB( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ), *LTPCorr_Q15 ), 15 ); /* Q15 */
             prev_lag_bias_Q15 = SKP_DIV32( SKP_MUL( prev_lag_bias_Q15, delta_lag_log2_sqr_Q7 ), delta_lag_log2_sqr_Q7 + ( 1 << 6 ) );
             CCmax_new_b -= prev_lag_bias_Q15; /* Q15 */
         }
@@ -505,22 +505,20 @@
 
         lag_counter = 0;
         SKP_assert( lag == SKP_SAT16( lag ) );
-        contour_bias = SKP_DIV32_16( PE_FLATCONTOUR_BIAS_Q20, lag );
+        contour_bias_Q20 = SKP_DIV32_16( SKP_FIX_CONST( PE_FLATCONTOUR_BIAS, 20 ), lag );
 
         /* Setup cbk parameters acording to complexity setting and frame length */
         if( nb_subfr == PE_MAX_NB_SUBFR ) {
-            nb_cbk_search   = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
+            nb_cbk_search   = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
             cbk_size        = PE_NB_CBKS_STAGE3_MAX;
-            cbk_offset      = (SKP_int)SKP_Silk_cbk_offsets_stage3[ complexity ];
             Lag_CB_ptr      = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
         } else {
             nb_cbk_search   = PE_NB_CBKS_STAGE3_10MS;
             cbk_size        = PE_NB_CBKS_STAGE3_10MS;
-            cbk_offset      = 0;
             Lag_CB_ptr      = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
         }
         for( d = start_lag; d <= end_lag; d++ ) {
-            for( j = cbk_offset; j < ( cbk_offset + nb_cbk_search ); j++ ) {
+            for( j = 0; j < nb_cbk_search; j++ ) {
                 cross_corr = 0;
                 energy     = 0;
                 for( k = 0; k < nb_subfr; k++ ) {
@@ -544,9 +542,7 @@
                         CCmax_new = SKP_LSHIFT( CCmax_new, 3 );
                     }
                     /* Reduce depending on flatness of contour */
-                    diff = j - SKP_RSHIFT( cbk_size, 1 );
-                    diff = SKP_MUL( diff, diff );
-                    diff = SKP_int16_MAX - SKP_RSHIFT( SKP_MUL( contour_bias, diff ), 5 ); /* Q20 -> Q15 */
+                    diff = SKP_int16_MAX - SKP_RSHIFT( SKP_MUL( contour_bias_Q20, j ), 5 ); /* Q20 -> Q15 */
                     SKP_assert( diff == SKP_SAT16( diff ) );
                     CCmax_new = SKP_LSHIFT( SKP_SMULWB( CCmax_new, diff ), 1 );
                 } else {
@@ -554,7 +550,7 @@
                 }
 
                 if( CCmax_new > CCmax                                               && 
-                   ( d + (SKP_int)SKP_Silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag  
+                   ( d + SKP_Silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag  
                    ) {
                     CCmax   = CCmax_new;
                     lag_new = d;
@@ -600,7 +596,7 @@
     const SKP_int16 *target_ptr, *basis_ptr;
     SKP_int32 cross_corr;
     SKP_int   i, j, k, lag_counter, lag_low, lag_high;
-    SKP_int   cbk_offset, nb_cbk_search, delta, idx, cbk_size;
+    SKP_int   nb_cbk_search, delta, idx, cbk_size;
     SKP_int32 scratch_mem[ SCRATCH_SIZE ];
     const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr;
 
@@ -610,14 +606,12 @@
     if( nb_subfr == PE_MAX_NB_SUBFR ){
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
-        cbk_offset    = SKP_Silk_cbk_offsets_stage3[ complexity ];
-        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
+        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
         cbk_size      = PE_NB_CBKS_STAGE3_MAX;
     } else {
         SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
-        cbk_offset    = 0;
         nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
         cbk_size      = PE_NB_CBKS_STAGE3_10MS;
     }
@@ -638,7 +632,7 @@
         }
 
         delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
-        for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { 
+        for( i = 0; i < nb_cbk_search; i++ ) { 
             /* Fill out the 3 dim array that stores the correlations for */
             /* each code_book vector for each start lag */
             idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
@@ -668,7 +662,7 @@
     const SKP_int16 *target_ptr, *basis_ptr;
     SKP_int32 energy;
     SKP_int   k, i, j, lag_counter;
-    SKP_int   cbk_offset, nb_cbk_search, delta, idx, cbk_size, lag_diff;
+    SKP_int   nb_cbk_search, delta, idx, cbk_size, lag_diff;
     SKP_int32 scratch_mem[ SCRATCH_SIZE ];
     const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr;
 
@@ -678,14 +672,12 @@
     if( nb_subfr == PE_MAX_NB_SUBFR ){
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
-        cbk_offset    = SKP_Silk_cbk_offsets_stage3[ complexity ];
-        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
+        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
         cbk_size      = PE_NB_CBKS_STAGE3_MAX;
     } else {
         SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
-        cbk_offset    = 0;
         nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
         cbk_size      = PE_NB_CBKS_STAGE3_10MS;
     }
@@ -715,7 +707,7 @@
         }
 
         delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
-        for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { 
+        for( i = 0; i < nb_cbk_search; i++ ) { 
             /* Fill out the 3 dim array that stores the correlations for    */
             /* each code_book vector for each start lag                     */
             idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
--- a/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h
+++ b/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h
@@ -29,15 +29,61 @@
 #define SKP_SILK_PE_DEFINES_H
 
 #include "SKP_Silk_SigProc_FIX.h"
-#include "SKP_Silk_common_pitch_est_defines.h"
 
 /************************************************************/
 /* Definitions For Fix pitch estimator                      */
 /************************************************************/
 
-#define PE_SHORTLAG_BIAS_Q15         6554    /* 0.2f. for logarithmic weighting    */
-#define PE_PREVLAG_BIAS_Q15          6554    /* Prev lag bias    */
-#define PE_FLATCONTOUR_BIAS_Q20      52429   /* 0.05f */
+#define PE_MAX_FS_KHZ                24 /* Maximum sampling frequency used */
+
+#define PE_MAX_NB_SUBFR              4
+#define PE_SUBFR_LENGTH_MS           5   /* 5 ms  */
+
+#define PE_LTP_MEM_LENGTH_MS         (4 * PE_SUBFR_LENGTH_MS) 
+
+#define PE_MAX_FRAME_LENGTH_MS       (PE_LTP_MEM_LENGTH_MS + PE_MAX_NB_SUBFR * PE_SUBFR_LENGTH_MS)
+#define PE_MAX_FRAME_LENGTH          (PE_MAX_FRAME_LENGTH_MS * PE_MAX_FS_KHZ)
+#define PE_MAX_FRAME_LENGTH_ST_1     (PE_MAX_FRAME_LENGTH >> 2)
+#define PE_MAX_FRAME_LENGTH_ST_2     (PE_MAX_FRAME_LENGTH >> 1)
+#define PE_MAX_SF_FRAME_LENGTH       (PE_SUB_FRAME * PE_MAX_FS_KHZ)
+
+#define PE_MAX_LAG_MS                18           /* 18 ms -> 56 Hz */
+#define PE_MIN_LAG_MS                2            /* 2 ms -> 500 Hz */
+#define PE_MAX_LAG                   (PE_MAX_LAG_MS * PE_MAX_FS_KHZ)
+#define PE_MIN_LAG                   (PE_MIN_LAG_MS * PE_MAX_FS_KHZ)
+
+#define PE_D_SRCH_LENGTH             24
+
+#define PE_MAX_DECIMATE_STATE_LENGTH 7
+
+#define PE_NB_STAGE3_LAGS            5
+
+#define PE_NB_CBKS_STAGE2            3
+#define PE_NB_CBKS_STAGE2_EXT        11
+
+#define PE_CB_mn2                    1
+#define PE_CB_mx2                    2
+
+#define PE_NB_CBKS_STAGE3_MAX        34
+#define PE_NB_CBKS_STAGE3_MID        24
+#define PE_NB_CBKS_STAGE3_MIN        16
+
+#define PE_NB_CBKS_STAGE3_10MS       12
+#define PE_NB_CBKS_STAGE2_10MS       3
+
+#define PE_SHORTLAG_BIAS             0.2f    /* for logarithmic weighting    */
+#define PE_PREVLAG_BIAS              0.2f    /* for logarithmic weighting    */
+#define PE_FLATCONTOUR_BIAS          0.05f
+
+extern const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ];
+extern const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ];
+extern const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ];
+extern const SKP_int8 SKP_Silk_nb_cbk_searchs_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ];
+
+/* Tables added for 10 ms frames */
+extern const SKP_int8 SKP_Silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ 3 ];
+extern const SKP_int8 SKP_Silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 12 ];
+extern const SKP_int8 SKP_Silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ];
 
 #endif
 
--- a/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c
+++ b/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c
@@ -36,8 +36,8 @@
 
 const SKP_int8 SKP_Silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ PE_NB_CBKS_STAGE3_10MS ] = 
 {
-    {-3,-2,-2,-1,-1, 0, 0, 1, 1, 2, 2, 3},
-    { 3, 3, 2, 2, 1, 1, 0, 0,-1,-1,-2,-2}
+    { 0, 0, 1,-1, 1,-1, 2,-2, 2,-2, 3,-3},
+    { 0, 1, 0, 1,-1, 2,-1, 2,-2, 3,-2, 3}
 };
 
 const SKP_int8 SKP_Silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ] = 
@@ -46,10 +46,6 @@
     {-2, 7}
 };
 
-/********************************************************/
-/* Auto Generated File from generate_pitch_est_tables.m */
-/********************************************************/
-
 const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ] =
 {
     {0, 2,-1,-1,-1, 0, 0, 1, 1, 0, 1},
@@ -60,27 +56,27 @@
 
 const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ] =
 {
-    {-9,-7,-6,-5,-5,-4,-4,-3,-3,-2,-2,-2,-1,-1,-1, 0, 0, 0, 1, 1, 0, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 5, 6, 8},
-    {-3,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0,-1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 3},
-    { 3, 3, 2, 2, 2, 2, 1, 2, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,-1, 0, 0,-1,-1,-1,-1,-1,-2,-2,-2},
-    { 9, 8, 6, 5, 6, 5, 4, 4, 3, 3, 2, 2, 2, 1, 0, 1, 1, 0, 0, 0,-1,-1,-1,-2,-2,-2,-3,-3,-4,-4,-5,-5,-6,-7}
- };
+    {0, 0, 1,-1, 0, 1,-1, 0,-1, 1,-2, 2,-2,-2, 2,-3, 2, 3,-3,-4, 3,-4, 4, 4,-5, 5,-6,-5, 6,-7, 6, 5, 8,-9},
+    {0, 0, 1, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0, 0, 1,-1, 0, 1,-1,-1, 1,-1, 2, 1,-1, 2,-2,-2, 2,-2, 2, 2, 3,-3},
+    {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1,-1, 1, 0, 0, 2, 1,-1, 2,-1,-1, 2,-1, 2, 2,-1, 3,-2,-2,-2, 3},
+    {0, 1, 0, 0, 1, 0, 1,-1, 2,-1, 2,-1, 2, 3,-2, 3,-2,-2, 4, 4,-3, 5,-3,-4, 6,-4, 6, 5,-5, 8,-6,-5,-7, 9}
+};
 
 const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ] =
 {
     /* Lags to search for low number of stage3 cbks */
     {
-        {-2,6},
-        {-1,5},
-        {-1,5},
-        {-2,7}
+        {-5,8},
+        {-1,6},
+        {-1,6},
+        {-4,10}
     },
     /* Lags to search for middle number of stage3 cbks */
     {
-        {-4,8},
+        {-6,10},
+        {-2,6},
         {-1,6},
-        {-1,6},
-        {-4,9}
+        {-5,10}
     },
     /* Lags to search for max number of stage3 cbks */
     {
@@ -97,11 +93,3 @@
     PE_NB_CBKS_STAGE3_MID,
     PE_NB_CBKS_STAGE3_MAX
 };
-
-const SKP_int8 SKP_Silk_cbk_offsets_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] = 
-{
-    ((PE_NB_CBKS_STAGE3_MAX - PE_NB_CBKS_STAGE3_MIN) >> 1),
-    ((PE_NB_CBKS_STAGE3_MAX - PE_NB_CBKS_STAGE3_MID) >> 1),
-    0
-};
-
--- a/src_SigProc_FIX/SigProc_FIX.vcproj
+++ /dev/null
@@ -1,408 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="SigProc_FIX"
-	ProjectGUID="{2769AFC5-8FC2-42E8-803C-528ACBA89C74}"
-	RootNamespace="Silk"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../interface"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_SigProcFLP_Win32_debug.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../interface"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
-				GeneratePreprocessedFile="0"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_SigProcFLP_Win32_mt.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_A2NLSF.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_allpass_int.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_ana_filt_bank_1.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_apply_sine_window.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_array_maxabs.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_autocorr.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_biquad.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_biquad_alt.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_burg_modified.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_bwexpander.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_bwexpander_32.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_pitch.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_inner_prod_aligned.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_k2a.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_k2a_Q16.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_lin2log.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_log2lin.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_lowpass_int.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_lowpass_short.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_inv_pred_gain.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_stabilize.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_synthesis_filter.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_synthesis_order16.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LSF_cos_table.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_MA.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF2A.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_stabilize.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_weights_laroia.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_pitch_analysis_core.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_pitch_est_tables.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_down2.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_down2_3.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_down3.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_AR2.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_ARMA4.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_copy.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_down4.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_down_FIR.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_IIR_FIR.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_up2_HQ.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_private_up4.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_rom.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_up2.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_scale_copy_vector16.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_scale_vector.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_schur.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_schur64.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_sigm_Q15.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_sort.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_sum_sqr_shift.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_common_pitch_est_defines.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_Inlines.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_macros.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_pitch_est_defines.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resample_rom.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_rom.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_resampler_structs.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_SigProc_FIX.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/src_SigProc_FIX/src_SigProc_FIX.vcxproj
@@ -1,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{950F7176-3D29-4CBF-8C40-58B918EAEBB2}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>src_SigProc_FIX</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_pitch_est_defines.h" />
+    <ClInclude Include="SKP_Silk_Inlines.h" />
+    <ClInclude Include="SKP_Silk_MacroCount.h" />
+    <ClInclude Include="SKP_Silk_MacroDebug.h" />
+    <ClInclude Include="SKP_Silk_macros.h" />
+    <ClInclude Include="SKP_Silk_resampler_private.h" />
+    <ClInclude Include="SKP_Silk_resampler_rom.h" />
+    <ClInclude Include="SKP_Silk_resampler_structs.h" />
+    <ClInclude Include="SKP_Silk_SigProc_FIX.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_A2NLSF.c" />
+    <ClCompile Include="SKP_Silk_allpass_int.c" />
+    <ClCompile Include="SKP_Silk_ana_filt_bank_1.c" />
+    <ClCompile Include="SKP_Silk_apply_sine_window.c" />
+    <ClCompile Include="SKP_Silk_array_maxabs.c" />
+    <ClCompile Include="SKP_Silk_autocorr.c" />
+    <ClCompile Include="SKP_Silk_biquad.c" />
+    <ClCompile Include="SKP_Silk_biquad_alt.c" />
+    <ClCompile Include="SKP_Silk_burg_modified.c" />
+    <ClCompile Include="SKP_Silk_bwexpander.c" />
+    <ClCompile Include="SKP_Silk_bwexpander_32.c" />
+    <ClCompile Include="SKP_Silk_debug.c" />
+    <ClCompile Include="SKP_Silk_decode_pitch.c" />
+    <ClCompile Include="SKP_Silk_inner_prod_aligned.c" />
+    <ClCompile Include="SKP_Silk_k2a.c" />
+    <ClCompile Include="SKP_Silk_k2a_Q16.c" />
+    <ClCompile Include="SKP_Silk_lin2log.c" />
+    <ClCompile Include="SKP_Silk_log2lin.c" />
+    <ClCompile Include="SKP_Silk_lowpass_int.c" />
+    <ClCompile Include="SKP_Silk_lowpass_short.c" />
+    <ClCompile Include="SKP_Silk_LPC_inv_pred_gain.c" />
+    <ClCompile Include="SKP_Silk_LPC_stabilize.c" />
+    <ClCompile Include="SKP_Silk_LPC_synthesis_filter.c" />
+    <ClCompile Include="SKP_Silk_LPC_synthesis_order16.c" />
+    <ClCompile Include="SKP_Silk_LSF_cos_table.c" />
+    <ClCompile Include="SKP_Silk_MA.c" />
+    <ClCompile Include="SKP_Silk_NLSF2A.c" />
+    <ClCompile Include="SKP_Silk_NLSF_stabilize.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia.c" />
+    <ClCompile Include="SKP_Silk_pitch_analysis_core.c" />
+    <ClCompile Include="SKP_Silk_pitch_est_tables.c" />
+    <ClCompile Include="SKP_Silk_resampler.c" />
+    <ClCompile Include="SKP_Silk_resampler_down2.c" />
+    <ClCompile Include="SKP_Silk_resampler_down2_3.c" />
+    <ClCompile Include="SKP_Silk_resampler_down3.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_AR2.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_ARMA4.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_copy.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_down4.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_down_FIR.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_IIR_FIR.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_up2_HQ.c" />
+    <ClCompile Include="SKP_Silk_resampler_private_up4.c" />
+    <ClCompile Include="SKP_Silk_resampler_rom.c" />
+    <ClCompile Include="SKP_Silk_resampler_up2.c" />
+    <ClCompile Include="SKP_Silk_scale_copy_vector16.c" />
+    <ClCompile Include="SKP_Silk_scale_vector.c" />
+    <ClCompile Include="SKP_Silk_schur.c" />
+    <ClCompile Include="SKP_Silk_schur64.c" />
+    <ClCompile Include="SKP_Silk_sigm_Q15.c" />
+    <ClCompile Include="SKP_Silk_sort.c" />
+    <ClCompile Include="SKP_Silk_sum_sqr_shift.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters
@@ -1,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_Inlines.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_MacroCount.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_MacroDebug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_macros.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_resampler_private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_resampler_rom.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_resampler_structs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_SigProc_FIX.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_pitch_est_defines.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_A2NLSF.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_allpass_int.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_ana_filt_bank_1.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_apply_sine_window.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_array_maxabs.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_autocorr.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_biquad.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_biquad_alt.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_burg_modified.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_bwexpander.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_bwexpander_32.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_pitch.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_inner_prod_aligned.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_k2a.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_k2a_Q16.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_lin2log.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_log2lin.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_lowpass_int.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_lowpass_short.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_inv_pred_gain.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_stabilize.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_synthesis_filter.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_synthesis_order16.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LSF_cos_table.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_MA.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_stabilize.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF2A.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_pitch_analysis_core.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_pitch_est_tables.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_down2.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_down2_3.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_down3.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_AR2.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_ARMA4.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_copy.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_down_FIR.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_down4.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_IIR_FIR.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_up2_HQ.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_private_up4.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_rom.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_resampler_up2.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_scale_copy_vector16.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_scale_vector.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_schur.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_schur64.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_sigm_Q15.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_sort.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_sum_sqr_shift.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_debug.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c
+++ b/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c
@@ -59,7 +59,7 @@
 
     /* allpass filters */
     SKP_Silk_allpass_int_FLP( scratch,       S + 0, A21cst_FLP[ 0 ], scratch + 2 * len, len );
-    SKP_Silk_allpass_int_FLP( scratch + len, S + 1, A20cst_FLP[ 0 ], scratch,         len );
+    SKP_Silk_allpass_int_FLP( scratch + len, S + 1, A20cst_FLP[ 0 ], scratch,           len );
 
     /* add two allpass outputs */
     for ( k = 0; k < len; k++ ) {
--- a/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c
+++ b/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c
@@ -32,8 +32,7 @@
 ******************************************************************************/
 #include "SKP_Silk_SigProc_FLP.h"
 #include "SKP_Silk_SigProc_FIX.h"
-#include "SKP_Silk_pitch_est_defines_FLP.h"
-#include "SKP_Silk_common_pitch_est_defines.h"
+#include "SKP_Silk_pitch_est_defines.h"
 
 #define SCRATCH_SIZE    22
 
@@ -70,7 +69,7 @@
 //%             CORE PITCH ANALYSIS FUNCTION                %
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unvoiced                       */
-    const SKP_float *signal,            /* I signal of length PE_FRAME_LENGTH_MS*Fs_kHz              */
+    const SKP_float *signal,            /* I signal of length PE_FRAME_LENGTH_MS*Fs_kHz                     */
     SKP_int         *pitch_out,         /* O 4 pitch lag values                                             */
     SKP_int         *lagIndex,          /* O lag Index                                                      */
     SKP_int         *contourIndex,      /* O pitch contour Index                                            */
@@ -98,11 +97,11 @@
     SKP_int   length_d_srch, length_d_comp;
     SKP_float Cmax, CCmax, CCmax_b, CCmax_new_b, CCmax_new;
     SKP_int   CBimax, CBimax_new, lag, start_lag, end_lag, lag_new;
-    SKP_int   cbk_offset, cbk_size;
+    SKP_int   cbk_size;
     SKP_float lag_log2, prevLag_log2, delta_lag_log2_sqr;
     SKP_float energies_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ];
     SKP_float cross_corr_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ];
-    SKP_int   diff, lag_counter;
+    SKP_int   lag_counter;
     SKP_int   frame_length, frame_length_8kHz, frame_length_4kHz;
     SKP_int   sf_length, sf_length_8kHz, sf_length_4kHz;
     SKP_int   min_lag, min_lag_8kHz, min_lag_4kHz;
@@ -130,9 +129,9 @@
     min_lag           = PE_MIN_LAG_MS * Fs_kHz;
     min_lag_4kHz      = PE_MIN_LAG_MS * 4;
     min_lag_8kHz      = PE_MIN_LAG_MS * 8;
-    max_lag           = PE_MAX_LAG_MS * Fs_kHz;
+    max_lag           = PE_MAX_LAG_MS * Fs_kHz - 1;
     max_lag_4kHz      = PE_MAX_LAG_MS * 4;
-    max_lag_8kHz      = PE_MAX_LAG_MS * 8;
+    max_lag_8kHz      = PE_MAX_LAG_MS * 8 - 1;
 
     SKP_memset(C, 0, sizeof(SKP_float) * nb_subfr * ((PE_MAX_LAG >> 1) + 5));
     
@@ -402,13 +401,13 @@
 
         /* Bias towards shorter lags */
         lag_log2 = SKP_P_log2((SKP_float)d);
-        CCmax_new_b -= PE_FLP_SHORTLAG_BIAS * nb_subfr * lag_log2;
+        CCmax_new_b -= PE_SHORTLAG_BIAS * nb_subfr * lag_log2;
 
         /* Bias towards previous lag */
         if ( prevLag > 0 ) {
             delta_lag_log2_sqr = lag_log2 - prevLag_log2;
             delta_lag_log2_sqr *= delta_lag_log2_sqr;
-            CCmax_new_b -= PE_FLP_PREVLAG_BIAS * nb_subfr * (*LTPCorr) * delta_lag_log2_sqr / (delta_lag_log2_sqr + 0.5f);
+            CCmax_new_b -= PE_PREVLAG_BIAS * nb_subfr * (*LTPCorr) * delta_lag_log2_sqr / (delta_lag_log2_sqr + 0.5f);
         }
 
         if ( CCmax_new_b > CCmax_b                                      && /* Find maximum biased correlation                  */
@@ -460,23 +459,21 @@
 
         lag_counter = 0;
         SKP_assert( lag == SKP_SAT16( lag ) );
-        contour_bias = PE_FLP_FLATCONTOUR_BIAS / lag;
+        contour_bias = PE_FLATCONTOUR_BIAS / lag;
 
         /* Setup cbk parameters acording to complexity setting and frame length */
         if( nb_subfr == PE_MAX_NB_SUBFR ) {
-            nb_cbk_search   = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
-            cbk_size        = PE_NB_CBKS_STAGE3_MAX;
-            cbk_offset      = (SKP_int)SKP_Silk_cbk_offsets_stage3[ complexity ];
-            Lag_CB_ptr      = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
+            nb_cbk_search = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
+            cbk_size      = PE_NB_CBKS_STAGE3_MAX;
+            Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
         } else {
-            nb_cbk_search   = PE_NB_CBKS_STAGE3_10MS;
-            cbk_size    = PE_NB_CBKS_STAGE3_10MS;
-            cbk_offset = 0;
-            Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
+            nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
+            cbk_size      = PE_NB_CBKS_STAGE3_10MS;
+            Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
         }
 
         for( d = start_lag; d <= end_lag; d++ ) {
-            for( j = cbk_offset; j < ( cbk_offset + nb_cbk_search ); j++ ) {
+            for( j = 0; j < nb_cbk_search; j++ ) {
                 cross_corr = 0.0;
                 energy = eps;
                 for( k = 0; k < nb_subfr; k++ ) {
@@ -486,8 +483,7 @@
                 if( cross_corr > 0.0 ) {
                     CCmax_new = (SKP_float)(cross_corr * cross_corr / energy);
                     /* Reduce depending on flatness of contour */
-                    diff = j - SKP_RSHIFT( cbk_size, 1 );
-                    CCmax_new *= ( 1.0f - contour_bias * diff * diff );
+                    CCmax_new *= 1.0f - contour_bias * j;
                 } else {
                     CCmax_new = 0.0f;               
                 }
@@ -547,7 +543,7 @@
 {
     const SKP_float *target_ptr, *basis_ptr;
     SKP_int   i, j, k, lag_counter, lag_low, lag_high;
-    SKP_int   cbk_offset, nb_cbk_search, delta, idx, cbk_size;
+    SKP_int   nb_cbk_search, delta, idx, cbk_size;
     SKP_float scratch_mem[ SCRATCH_SIZE ];
     const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr;
 
@@ -557,14 +553,12 @@
     if( nb_subfr == PE_MAX_NB_SUBFR ){
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
-        cbk_offset    = SKP_Silk_cbk_offsets_stage3[ complexity ];
-        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
+        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
         cbk_size      = PE_NB_CBKS_STAGE3_MAX;
     } else {
         SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
-        cbk_offset    = 0;
         nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
         cbk_size      = PE_NB_CBKS_STAGE3_10MS;
     }
@@ -584,7 +578,7 @@
         }
 
         delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
-        for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { 
+        for( i = 0; i < nb_cbk_search; i++ ) { 
             /* Fill out the 3 dim array that stores the correlations for */
             /* each code_book vector for each start lag */
             idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
@@ -614,7 +608,7 @@
     const SKP_float *target_ptr, *basis_ptr;
     double    energy;
     SKP_int   k, i, j, lag_counter;
-    SKP_int   cbk_offset, nb_cbk_search, delta, idx, cbk_size, lag_diff;
+    SKP_int   nb_cbk_search, delta, idx, cbk_size, lag_diff;
     SKP_float scratch_mem[ SCRATCH_SIZE ];
     const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr;
 
@@ -624,14 +618,12 @@
     if( nb_subfr == PE_MAX_NB_SUBFR ){
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ];
-        cbk_offset    = SKP_Silk_cbk_offsets_stage3[ complexity ];
-        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[   complexity ];
+        nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ];
         cbk_size      = PE_NB_CBKS_STAGE3_MAX;
     } else {
         SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1);
         Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ];
         Lag_CB_ptr    = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ];
-        cbk_offset    = 0;
         nb_cbk_search = PE_NB_CBKS_STAGE3_10MS;
         cbk_size      = PE_NB_CBKS_STAGE3_10MS;
     }
@@ -662,7 +654,7 @@
         }
 
         delta = matrix_ptr( Lag_range_ptr, k, 0, 2 );
-        for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { 
+        for( i = 0; i < nb_cbk_search; i++ ) { 
             /* Fill out the 3 dim array that stores the correlations for    */
             /* each code_book vector for each start lag                     */
             idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta;
--- a/src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h
+++ /dev/null
@@ -1,42 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SIGPROCFLP_PE_DEFINES_H
-#define SIGPROCFLP_PE_DEFINES_H
-
-#include "SKP_Silk_common_pitch_est_defines.h"
-
-/************************************************************/
-/* Definitions For FLP pitch estimator                      */
-/************************************************************/
-
-#define PE_FLP_SHORTLAG_BIAS             0.2f    /* for logarithmic weighting    */
-#define PE_FLP_PREVLAG_BIAS              0.2f    /* for logarithmic weighting    */
-#define PE_FLP_FLATCONTOUR_BIAS          0.05f
-
-#endif
-
--- a/src_SigProc_FLP/SigProc_FLP.vcproj
+++ /dev/null
@@ -1,248 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="SigProc_FLP"
-	ProjectGUID="{793D0EC2-8554-4674-9A97-F25DE5DBE926}"
-	RootNamespace="Silk"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_SigProcFIX_Win32_debug.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
-				GeneratePreprocessedFile="0"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_SigProcFIX_Win32_mt.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_allpass_int_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_autocorrelation_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_burg_modified_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_bwexpander_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decimate2_coarse_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decimate2_coarsest_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_energy_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_inner_product_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_k2a_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_levinsondurbin_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LPC_inv_pred_gain_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_VQ_weights_laroia_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_pitch_analysis_core_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_scale_copy_vector_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_scale_vector_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_schur_FLP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_sort_FLP.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_pitch_est_defines_FLP.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_SigProc_FLP.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/src_SigProc_FLP/src_SigProc_FLP.vcxproj
@@ -1,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{06D10292-A23C-4C5E-9C0F-28737769206F}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>src_SigProc_FLP</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_SigProc_FLP.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_allpass_int_FLP.c" />
+    <ClCompile Include="SKP_Silk_autocorrelation_FLP.c" />
+    <ClCompile Include="SKP_Silk_burg_modified_FLP.c" />
+    <ClCompile Include="SKP_Silk_bwexpander_FLP.c" />
+    <ClCompile Include="SKP_Silk_decimate2_coarsest_FLP.c" />
+    <ClCompile Include="SKP_Silk_decimate2_coarse_FLP.c" />
+    <ClCompile Include="SKP_Silk_energy_FLP.c" />
+    <ClCompile Include="SKP_Silk_inner_product_FLP.c" />
+    <ClCompile Include="SKP_Silk_k2a_FLP.c" />
+    <ClCompile Include="SKP_Silk_levinsondurbin_FLP.c" />
+    <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c" />
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c" />
+    <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c" />
+    <ClCompile Include="SKP_Silk_scale_copy_vector_FLP.c" />
+    <ClCompile Include="SKP_Silk_scale_vector_FLP.c" />
+    <ClCompile Include="SKP_Silk_schur_FLP.c" />
+    <ClCompile Include="SKP_Silk_sort_FLP.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters
@@ -1,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_SigProc_FLP.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_allpass_int_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_autocorrelation_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_burg_modified_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_bwexpander_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decimate2_coarse_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decimate2_coarsest_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_energy_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_inner_product_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_k2a_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_levinsondurbin_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_scale_copy_vector_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_scale_vector_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_schur_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_sort_FLP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/src_common/SKP_Silk_NSQ_del_dec.c
+++ b/src_common/SKP_Silk_NSQ_del_dec.c
@@ -294,8 +294,8 @@
     SKP_memmove( NSQ->sLTP_shp_Q10, &NSQ->sLTP_shp_Q10[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( SKP_int32 ) );
 
 #ifdef SAVE_ALL_INTERNAL_DATA
-    DEBUG_STORE_DATA( sLTP_Q16, &sLTP_Q16[ psEncC->frame_length ], psEncC->frame_length * sizeof( SKP_int32 ) );
-    DEBUG_STORE_DATA( xq.dat, NSQ->xq,                             psEncC->frame_length * sizeof( SKP_int16 ) );
+    DEBUG_STORE_DATA( sLTP_Q16.dat, &sLTP_Q16[ psEncC->frame_length ], psEncC->frame_length * sizeof( SKP_int32 ) );
+    DEBUG_STORE_DATA( xq.dat,       NSQ->xq,                           psEncC->frame_length * sizeof( SKP_int16 ) );
 #endif
 }
 
@@ -526,7 +526,7 @@
         Winner_ind = 0;
         for( k = 1; k < nStatesDelayedDecision; k++ ) {
             if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) {
-                RDmin_Q10   = psSampleState[ k ][ 0 ].RD_Q10;
+                RDmin_Q10  = psSampleState[ k ][ 0 ].RD_Q10;
                 Winner_ind = k;
             }
         }
--- /dev/null
+++ b/src_common/SKP_Silk_VQ_WMat_EC.c
@@ -1,0 +1,107 @@
+/***********************************************************************
+Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
+Redistribution and use in source and binary forms, with or without 
+modification, (subject to the limitations in the disclaimer below) 
+are permitted provided that the following conditions are met:
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright 
+notice, this list of conditions and the following disclaimer in the 
+documentation and/or other materials provided with the distribution.
+- Neither the name of Skype Limited, nor the names of specific 
+contributors, may be used to endorse or promote products derived from 
+this software without specific prior written permission.
+NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
+BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+***********************************************************************/
+
+#include "SKP_Silk_main.h"
+
+/* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */
+void SKP_Silk_VQ_WMat_EC(
+    SKP_int                         *ind,               /* O    index of best codebook vector               */
+    SKP_int32                       *rate_dist_Q14,     /* O    best weighted quantization error + mu * rate*/
+    const SKP_int16                 *in_Q14,            /* I    input vector to be quantized                */
+    const SKP_int32                 *W_Q18,             /* I    weighting matrix                            */
+    const SKP_int8                  *cb_Q7,             /* I    codebook                                    */
+    const SKP_int8                  *cl_Q4,             /* I    code length for each codebook vector        */
+    const SKP_int                   mu_Q10,             /* I    tradeoff between weighted error and rate    */
+    SKP_int                         L                   /* I    number of vectors in codebook               */
+)
+{
+    SKP_int   k;
+    const SKP_int8 *cb_row_Q7;
+    SKP_int16 diff_Q14[ 5 ];
+    SKP_int32 sum1_Q14, sum2_Q16;
+
+    /* Loop over codebook */
+    *rate_dist_Q14 = SKP_int32_MAX;
+    cb_row_Q7 = cb_Q7;
+    for( k = 0; k < L; k++ ) {
+        diff_Q14[ 0 ] = in_Q14[ 0 ] - SKP_LSHIFT( cb_row_Q7[ 0 ], 7 );
+        diff_Q14[ 1 ] = in_Q14[ 1 ] - SKP_LSHIFT( cb_row_Q7[ 1 ], 7 );
+        diff_Q14[ 2 ] = in_Q14[ 2 ] - SKP_LSHIFT( cb_row_Q7[ 2 ], 7 );
+        diff_Q14[ 3 ] = in_Q14[ 3 ] - SKP_LSHIFT( cb_row_Q7[ 3 ], 7 );
+        diff_Q14[ 4 ] = in_Q14[ 4 ] - SKP_LSHIFT( cb_row_Q7[ 4 ], 7 );
+
+        /* Weighted rate */
+        sum1_Q14 = SKP_SMULBB( mu_Q10, cl_Q4[ k ] );
+
+        SKP_assert( sum1_Q14 >= 0 );
+
+        /* first row of W_Q18 */
+        sum2_Q16 = SKP_SMULWB(           W_Q18[  1 ], diff_Q14[ 1 ] );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  2 ], diff_Q14[ 2 ] );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  3 ], diff_Q14[ 3 ] );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  4 ], diff_Q14[ 4 ] );
+        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  0 ], diff_Q14[ 0 ] );
+        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 0 ] );
+
+        /* second row of W_Q18 */
+        sum2_Q16 = SKP_SMULWB(           W_Q18[  7 ], diff_Q14[ 2 ] ); 
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  8 ], diff_Q14[ 3 ] );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  9 ], diff_Q14[ 4 ] );
+        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[  6 ], diff_Q14[ 1 ] );
+        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 1 ] );
+
+        /* third row of W_Q18 */
+        sum2_Q16 = SKP_SMULWB(           W_Q18[ 13 ], diff_Q14[ 3 ] ); 
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] );
+        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] );
+        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 2 ] );
+
+        /* fourth row of W_Q18 */
+        sum2_Q16 = SKP_SMULWB(           W_Q18[ 19 ], diff_Q14[ 4 ] ); 
+        sum2_Q16 = SKP_LSHIFT( sum2_Q16, 1 );
+        sum2_Q16 = SKP_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] );
+        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 3 ] );
+
+        /* last row of W_Q18 */
+        sum2_Q16 = SKP_SMULWB(           W_Q18[ 24 ], diff_Q14[ 4 ] ); 
+        sum1_Q14 = SKP_SMLAWB( sum1_Q14, sum2_Q16,    diff_Q14[ 4 ] );
+
+        SKP_assert( sum1_Q14 >= 0 );
+
+        /* find best */
+        if( sum1_Q14 < *rate_dist_Q14 ) {
+            *rate_dist_Q14 = sum1_Q14;
+            *ind = k;
+        }
+
+        /* Go to next cbk vector */
+        cb_row_Q7 += LTP_ORDER;
+    }
+}
--- a/src_common/SKP_Silk_code_signs.c
+++ b/src_common/SKP_Silk_code_signs.c
@@ -43,17 +43,17 @@
     const SKP_int               RateLevelIndex      /* I    Rate level index                            */
 )
 {
-    SKP_int i;
-    SKP_int inData;
-    SKP_uint16 prob;
+    SKP_int   i, inData;
+    SKP_uint8 icdf[ 2 ];
 
     i = SKP_SMULBB( N_RATE_LEVELS - 1, SKP_LSHIFT( sigtype, 1 ) + QuantOffsetType ) + RateLevelIndex;
-    prob = 65536 - SKP_Silk_sign_CDF[ i ];
+    icdf[ 0 ] = SKP_Silk_sign_iCDF[ i ];
+    icdf[ 1 ] = 0;
     
     for( i = 0; i < length; i++ ) {
         if( q[ i ] != 0 ) {
             inData = SKP_enc_map( q[ i ] ); /* - = 0, + = 1 */
-            ec_enc_bit_prob( psRangeEnc, inData, prob );
+            ec_enc_icdf( psRangeEnc, inData, icdf, 8 );
         }
     }
 }
@@ -68,18 +68,16 @@
     const SKP_int                   RateLevelIndex      /* I    Rate Level Index                            */
 )
 {
-    SKP_int i;
-    SKP_int data;
-    SKP_uint16 cdf[ 3 ];
+    SKP_int   i, data;
+    SKP_uint8 icdf[ 2 ];
 
     i = SKP_SMULBB( N_RATE_LEVELS - 1, SKP_LSHIFT( sigtype, 1 ) + QuantOffsetType ) + RateLevelIndex;
-    cdf[ 0 ] = 0;
-    cdf[ 1 ] = SKP_Silk_sign_CDF[ i ];
-    cdf[ 2 ] = 65535;
+    icdf[ 0 ] = SKP_Silk_sign_iCDF[ i ];
+    icdf[ 1 ] = 0;
     
     for( i = 0; i < length; i++ ) {
         if( q[ i ] > 0 ) {
-            SKP_Silk_range_decoder( &data, psRangeDec, cdf, 1 );
+            data = ec_dec_icdf( psRangeDec, icdf, 8 );
             /* attach sign */
             /* implementation with shift, subtraction, multiplication */
             q[ i ] *= SKP_dec_map( data );
--- a/src_common/SKP_Silk_control_audio_bandwidth.c
+++ b/src_common/SKP_Silk_control_audio_bandwidth.c
@@ -99,22 +99,23 @@
                     ( psEncC->fs_kHz == 12 ) && ( psEncC->maxInternal_fs_kHz >= 16 ) ||
                     ( psEncC->fs_kHz ==  8 ) && ( psEncC->maxInternal_fs_kHz >= 12 ) ) 
 #if SWITCH_TRANSITION_FILTERING
-                    && ( psEncC->sLP.transition_frame_no == 0 ) ) { /* No transition phase running, ready to switch */
-                        psEncC->sLP.mode = 1; /* Switch up */
+                    && ( psEncC->sLP.transition_frame_no == 0 ) )  /* No transition phase running, ready to switch */
+                {
+                    psEncC->sLP.mode = 1; /* Switch up */
 #else
-                    ) {
+                ) {
 #endif
-                        psEncC->bitrateDiff = 0;
+                    psEncC->bitrateDiff = 0;
 
-                        /* Switch to a higher sample frequency */
-                        if( psEncC->fs_kHz == 8 ) {
-                            fs_kHz = 12;
-                        } else if( psEncC->fs_kHz == 12 ) {
-                            fs_kHz = 16;
-                        } else {
-                            SKP_assert( psEncC->fs_kHz == 16 );
-                            fs_kHz = 24;
-                        }
+                    /* Switch to a higher sample frequency */
+                    if( psEncC->fs_kHz == 8 ) {
+                        fs_kHz = 12;
+                    } else if( psEncC->fs_kHz == 12 ) {
+                        fs_kHz = 16;
+                    } else {
+                        SKP_assert( psEncC->fs_kHz == 16 );
+                        fs_kHz = 24;
+                    }
                 }
             }
         }
@@ -132,6 +133,10 @@
         }
 #endif
     }
+
+#ifdef FORCE_INTERNAL_FS_KHZ
+    fs_kHz = FORCE_INTERNAL_FS_KHZ;
+#endif
 
     return fs_kHz;
 }
--- a/src_common/SKP_Silk_dec_API.c
+++ b/src_common/SKP_Silk_dec_API.c
@@ -64,7 +64,7 @@
     ec_dec                              *psRangeDec,    /* I/O  Compressor data structure                       */
     const SKP_int                       nBytesIn,       /* I:   Number of input bytes                           */
     SKP_int16                           *samplesOut,    /* O:   Decoded output speech vector                    */
-    SKP_int32                           *nSamplesOut    /* I/O: Number of samples (vector/decoded)              */
+    SKP_int32                           *nSamplesOut    /* O:   Number of samples decoded                       */
 )
 {
     SKP_int ret = SKP_SILK_NO_ERROR, used_bytes, prev_fs_kHz;
@@ -170,7 +170,7 @@
     psDec->prev_API_sampleRate = decControl->API_sampleRate;
 
     /* Copy all parameters that are needed out of internal structure to the control stucture */
-    decControl->frameSize                 = ( SKP_int )psDec->frame_length;
+    decControl->frameSize                 = ( SKP_int )*nSamplesOut;
     decControl->framesPerPayload          = ( SKP_int )psDec->nFramesInPacket;
     decControl->inBandFECOffset           = ( SKP_int )psDec->inband_FEC_offset;
     decControl->moreInternalDecoderFrames = ( SKP_int )psDec->moreInternalDecoderFrames;
--- a/src_common/SKP_Silk_decode_core.c
+++ b/src_common/SKP_Silk_decode_core.c
@@ -37,7 +37,7 @@
     const SKP_int               q[ MAX_FRAME_LENGTH ]               /* I    Pulse signal                */
 )
 {
-    SKP_int   i, k, lag = 0, start_idx, sLTP_buf_idx, NLSF_interpolation_flag, sigtype, LTP_scale_Q14;
+    SKP_int   i, j, k, lag = 0, start_idx, sLTP_buf_idx, NLSF_interpolation_flag, sigtype;
     SKP_int16 *A_Q12, *B_Q14, *pxq, A_Q12_tmp[ MAX_LPC_ORDER ];
     SKP_int16 sLTP[ MAX_FRAME_LENGTH ];
     SKP_int32 LTP_pred_Q14, LPC_pred_Q10, Gain_Q16, inv_gain_Q16, inv_gain_Q32, gain_adj_Q16, rand_seed, offset_Q10, dither;
@@ -44,7 +44,6 @@
     SKP_int32 *pred_lag_ptr, *pexc_Q10, *pres_Q10;
     SKP_int32 vec_Q10[ MAX_SUB_FRAME_LENGTH ];
     SKP_int32 FiltState[ MAX_LPC_ORDER ];
-    SKP_int   j;
 
     SKP_assert( psDec->prev_inv_gain_Q16 != 0 );
     
@@ -57,7 +56,7 @@
     }
 
 #ifdef SAVE_ALL_INTERNAL_DATA
-    DEBUG_STORE_DATA( q_dec.dat, q, psDec->frame_length * sizeof( SKP_int ) );
+    //DEBUG_STORE_DATA( q_dec.dat, q, psDec->frame_length * sizeof( SKP_int ) );
 #endif
 
     /* Decode excitation */
@@ -91,7 +90,6 @@
         SKP_memcpy( A_Q12_tmp, A_Q12, psDec->LPC_order * sizeof( SKP_int16 ) ); 
         B_Q14         = &psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER ];
         Gain_Q16      = psDecCtrl->Gains_Q16[ k ];
-        LTP_scale_Q14 = psDecCtrl->LTP_scale_Q14;
         sigtype       = psDecCtrl->sigtype;
 
         inv_gain_Q16 = SKP_INVERSE32_varQ( SKP_max( Gain_Q16, 1 ), 32 );
@@ -112,7 +110,6 @@
         
             sigtype = SIG_TYPE_VOICED;
             psDecCtrl->pitchL[ k ] = psDec->lagPrev;
-            LTP_scale_Q14 = ( SKP_int )1 << 14;
         }
 
         if( sigtype == SIG_TYPE_VOICED ) {
@@ -225,7 +222,7 @@
     SKP_memcpy( xq, &psDec->outBuf[ psDec->ltp_mem_length ], psDec->frame_length * sizeof( SKP_int16 ) );
 
 #ifdef SAVE_ALL_INTERNAL_DATA
-    DEBUG_STORE_DATA( LTP_buf_Q16.dat, &psDec->sLTP_Q16[psDec->frame_length], psDec->frame_length * sizeof( SKP_int32 ));
-    DEBUG_STORE_DATA( xq_dec.dat, xq, psDec->frame_length * sizeof( SKP_int16 ) );
+    //DEBUG_STORE_DATA( LTP_buf_Q16.dat, &psDec->sLTP_Q16[psDec->frame_length], psDec->frame_length * sizeof( SKP_int32 ));
+    //DEBUG_STORE_DATA( xq_dec.dat, xq, psDec->frame_length * sizeof( SKP_int16 ) );
 #endif
 }
--- a/src_common/SKP_Silk_decode_frame.c
+++ b/src_common/SKP_Silk_decode_frame.c
@@ -142,7 +142,7 @@
     /************************************************/
     /* Comfort noise generation / estimation        */
     /************************************************/
-    SKP_Silk_CNG( psDec, &sDecCtrl, pOut , L );
+    SKP_Silk_CNG( psDec, &sDecCtrl, pOut, L );
 
     /********************************************/
     /* HP filter output                            */
@@ -150,7 +150,7 @@
     SKP_assert( ( ( psDec->fs_kHz == 12 ) && ( L % 3 ) == 0 ) || 
                 ( ( psDec->fs_kHz != 12 ) && ( L % 2 ) == 0 ) );
 TIC(HP_out)
-    SKP_Silk_biquad( pOut, psDec->HP_B, psDec->HP_A, psDec->HPState, pOut, L );
+    SKP_Silk_biquad_alt( pOut, psDec->HP_B, psDec->HP_A, psDec->HPState, pOut, L );
 TOC(HP_out)
 
     /********************************************/
--- a/src_common/SKP_Silk_decode_indices.c
+++ b/src_common/SKP_Silk_decode_indices.c
@@ -34,7 +34,7 @@
 )
 {
     SKP_int   i, k, Ix, FrameIndex;
-    SKP_int   sigtype, QuantOffsetType, seed_int, nBytesUsed;
+    SKP_int   sigtype, QuantOffsetType, nBytesUsed;
     SKP_int   decode_absolute_lagIndex, delta_lagIndex, prev_lagIndex = 0;
     const SKP_Silk_NLSF_CB_struct *psNLSF_CB = NULL;
 
@@ -42,18 +42,17 @@
         /*******************/
         /* Decode VAD flag */
         /*******************/
-        SKP_Silk_range_decoder( &psDec->vadFlagBuf[ FrameIndex ], psRangeDec, SKP_Silk_vadflag_CDF, SKP_Silk_vadflag_offset );
+        psDec->vadFlagBuf[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_vadflag_iCDF, 8 );
 
         /*******************************************/
         /* Decode signal type and quantizer offset */
         /*******************************************/
         if( FrameIndex == 0 ) {
-            /* first frame in packet: independent coding */
-            SKP_Silk_range_decoder( &Ix, psRangeDec, SKP_Silk_type_offset_CDF, SKP_Silk_type_offset_CDF_offset );
+            /* first frame in packet: independent coding, in two stages: MSB bits followed by 3 LSBs */
+            Ix = ec_dec_icdf( psRangeDec, SKP_Silk_type_offset_iCDF, 8 );
         } else {
             /* condidtional coding */
-            SKP_Silk_range_decoder( &Ix, psRangeDec, SKP_Silk_type_offset_joint_CDF[ psDec->typeOffsetPrev ], 
-                    SKP_Silk_type_offset_CDF_offset );
+            Ix = ec_dec_icdf( psRangeDec, SKP_Silk_type_offset_joint_iCDF[ psDec->typeOffsetPrev ], 8 );
         }
         sigtype               = SKP_RSHIFT( Ix, 1 );
         QuantOffsetType       = Ix & 1;
@@ -65,15 +64,17 @@
         /* first subframe */    
         if( FrameIndex == 0 ) {
             /* first frame in packet: independent coding */
-            SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ 0 ], psRangeDec, SKP_Silk_gain_CDF[ sigtype ], SKP_Silk_gain_CDF_offset );
+            psDec->GainsIndices[ FrameIndex ][ 0 ] = SKP_LSHIFT( ec_dec_icdf( psRangeDec, SKP_Silk_gain_iCDF[ sigtype ], 8 ), 3 );
+            //psDec->GainsIndices[ FrameIndex ][ 0 ] += ec_dec_bits( psRangeDec, 3 );           /* doesn't work somehow */
+            psDec->GainsIndices[ FrameIndex ][ 0 ] += ec_dec_icdf( psRangeDec, SKP_Silk_uniform8_iCDF, 8 );
         } else {
             /* condidtional coding */
-            SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ 0 ], psRangeDec, SKP_Silk_delta_gain_CDF, SKP_Silk_delta_gain_CDF_offset );
+            psDec->GainsIndices[ FrameIndex ][ 0 ] = ec_dec_icdf( psRangeDec, SKP_Silk_delta_gain_iCDF, 8 );
         }
 
         /* remaining subframes */
         for( i = 1; i < psDec->nb_subfr; i++ ) {
-            SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ i ], psRangeDec, SKP_Silk_delta_gain_CDF, SKP_Silk_delta_gain_CDF_offset );
+            psDec->GainsIndices[ FrameIndex ][ i ] = ec_dec_icdf( psRangeDec, SKP_Silk_delta_gain_iCDF, 8 );
         }
         
         /**********************/
@@ -83,16 +84,15 @@
         /* Set pointer to LSF VQ CB for the current signal type */
         psNLSF_CB = psDec->psNLSF_CB[ sigtype ];
 
-        /* Arithmetically decode NLSF path */
+        /* Range decoding of the NLSF path */
         for( i = 0; i < psNLSF_CB->nStages; i++ ) {
-            SKP_Silk_range_decoder( &psDec->NLSFIndices[ FrameIndex ][ i ], psRangeDec, psNLSF_CB->StartPtr[ i ], psNLSF_CB->MiddleIx[ i ] );
+            psDec->NLSFIndices[ FrameIndex ][ i ] = ec_dec_icdf( psRangeDec, psNLSF_CB->StartPtr[ i ], 8 );
         }
         
         /***********************************/
         /* Decode LSF interpolation factor */
         /***********************************/
-        SKP_Silk_range_decoder( &psDec->NLSFInterpCoef_Q2[ FrameIndex ], psRangeDec, SKP_Silk_NLSF_interpolation_factor_CDF, 
-            SKP_Silk_NLSF_interpolation_factor_offset );
+        psDec->NLSFInterpCoef_Q2[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_NLSF_interpolation_factor_iCDF, 8 );
         
         if( sigtype == SIG_TYPE_VOICED ) {
             /*********************/
@@ -102,9 +102,9 @@
             decode_absolute_lagIndex = 1;
             if( FrameIndex > 0 && psDec->sigtype[ FrameIndex - 1 ] == SIG_TYPE_VOICED ) {
                 /* Decode Delta index */
-                SKP_Silk_range_decoder( &delta_lagIndex, psRangeDec, SKP_Silk_pitch_delta_CDF,  SKP_Silk_pitch_delta_CDF_offset );
-                if( delta_lagIndex < ( MAX_DELTA_LAG << 1 ) + 1 ) {
-                    delta_lagIndex = delta_lagIndex - MAX_DELTA_LAG;
+                delta_lagIndex = ec_dec_icdf( psRangeDec, SKP_Silk_pitch_delta_iCDF, 8 );
+                if( delta_lagIndex > 0 ) {
+                    delta_lagIndex = delta_lagIndex - 9;
                     psDec->lagIndex[ FrameIndex ] = prev_lagIndex + delta_lagIndex;
                     decode_absolute_lagIndex = 0;
                 }
@@ -111,49 +111,34 @@
             }
             if( decode_absolute_lagIndex ) {
                 /* Absolute decoding */
-                if( psDec->fs_kHz == 8 ) {
-                    SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_NB_CDF,  SKP_Silk_pitch_lag_NB_CDF_offset );
-                } else if( psDec->fs_kHz == 12 ) {
-                    SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_MB_CDF,  SKP_Silk_pitch_lag_MB_CDF_offset );
-                } else if( psDec->fs_kHz == 16 ) {
-                    SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_WB_CDF,  SKP_Silk_pitch_lag_WB_CDF_offset );
-                } else {
-                    SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_SWB_CDF, SKP_Silk_pitch_lag_SWB_CDF_offset );
-                }
+                psDec->lagIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_pitch_lag_iCDF, 8 ) * SKP_RSHIFT( psDec->fs_kHz, 1 );
+                psDec->lagIndex[ FrameIndex ] += ec_dec_icdf( psRangeDec, psDec->pitch_lag_low_bits_iCDF, 8 );
             }
             prev_lagIndex = psDec->lagIndex[ FrameIndex ];
 
             /* Get countour index */
-            if( psDec->fs_kHz == 8 ) {
-                /* Less codevectors used in 8 khz mode */
-                SKP_Silk_range_decoder( &psDec->contourIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_contour_NB_CDF, SKP_Silk_pitch_contour_NB_CDF_offset );
-            } else {
-                /* Joint for 12, 16, and 24 khz */
-                SKP_Silk_range_decoder( &psDec->contourIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_contour_CDF, SKP_Silk_pitch_contour_CDF_offset );
-            }
+            psDec->contourIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, psDec->pitch_contour_iCDF, 8 );
             
             /********************/
             /* Decode LTP gains */
             /********************/
             /* Decode PERIndex value */
-            SKP_Silk_range_decoder( &psDec->PERIndex[ FrameIndex ], psRangeDec, SKP_Silk_LTP_per_index_CDF, SKP_Silk_LTP_per_index_CDF_offset );
-            
+            psDec->PERIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTP_per_index_iCDF, 8 );
+
             for( k = 0; k < psDec->nb_subfr; k++ ) {
-                SKP_Silk_range_decoder( &psDec->LTPIndex[ FrameIndex ][ k ], psRangeDec, SKP_Silk_LTP_gain_CDF_ptrs[ psDec->PERIndex[ FrameIndex ] ], 
-                    SKP_Silk_LTP_gain_CDF_offsets[ psDec->PERIndex[ FrameIndex ] ] );
+                psDec->LTPIndex[ FrameIndex ][ k ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTP_gain_iCDF_ptrs[ psDec->PERIndex[ FrameIndex ] ], 8 );
             }
 
             /**********************/
             /* Decode LTP scaling */
             /**********************/
-            SKP_Silk_range_decoder( &psDec->LTP_scaleIndex[ FrameIndex ], psRangeDec, SKP_Silk_LTPscale_CDF, SKP_Silk_LTPscale_offset );
+            psDec->LTP_scaleIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTPscale_iCDF, 8 );
         }
 
         /***************/
         /* Decode seed */
         /***************/
-        SKP_Silk_range_decoder( &seed_int, psRangeDec, SKP_Silk_Seed_CDF, SKP_Silk_Seed_offset );
-        psDec->Seed[ FrameIndex ] = ( SKP_int32 )seed_int;
+        psDec->Seed[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_Seed_iCDF, 8 );
 
         psDec->sigtype[ FrameIndex ]         = sigtype;
         psDec->QuantOffsetType[ FrameIndex ] = QuantOffsetType;
@@ -162,7 +147,7 @@
     /**************************************/
     /* Decode Frame termination indicator */
     /**************************************/
-    SKP_Silk_range_decoder( &psDec->FrameTermination, psRangeDec, SKP_Silk_FrameTermination_CDF, SKP_Silk_FrameTermination_offset );
+    psDec->FrameTermination = ec_dec_icdf( psRangeDec, SKP_Silk_FrameTermination_iCDF, 8 );
 
     /****************************************/
     /* get number of bytes used so far      */
--- a/src_common/SKP_Silk_decode_parameters.c
+++ b/src_common/SKP_Silk_decode_parameters.c
@@ -38,7 +38,7 @@
 {
     SKP_int   i, k, Ix, nBytesUsed;
     SKP_int   pNLSF_Q15[ MAX_LPC_ORDER ], pNLSF0_Q15[ MAX_LPC_ORDER ];
-    const SKP_int16 *cbk_ptr_Q14;
+    const SKP_int8 *cbk_ptr_Q7;
     const SKP_Silk_NLSF_CB_struct *psNLSF_CB = NULL;
     
     psDecCtrl->sigtype            = psDec->sigtype[ psDec->nFramesDecoded ];
@@ -108,12 +108,12 @@
         psDecCtrl->PERIndex = psDec->PERIndex[ psDec->nFramesDecoded ];
 
         /* Decode Codebook Index */
-        cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ psDecCtrl->PERIndex ]; /* set pointer to start of codebook */
+        cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[ psDecCtrl->PERIndex ]; /* set pointer to start of codebook */
 
         for( k = 0; k < psDec->nb_subfr; k++ ) {
             Ix = psDec->LTPIndex[ psDec->nFramesDecoded ][ k ];
             for( i = 0; i < LTP_ORDER; i++ ) {
-                psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER + i ] = cbk_ptr_Q14[ Ix * LTP_ORDER + i ];
+                psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER + i ] = SKP_LSHIFT( cbk_ptr_Q7[ Ix * LTP_ORDER + i ], 7 );
             }
         }
 
--- a/src_common/SKP_Silk_decode_pulses.c
+++ b/src_common/SKP_Silk_decode_pulses.c
@@ -37,7 +37,7 @@
     const SKP_int                   frame_length        /* I    Frame length (preliminary)                  */
 )
 {
-    SKP_int   i, j, k, iter, abs_q, nLS, bit;
+    SKP_int   i, j, k, iter, abs_q, nLS;
     SKP_int   sum_pulses[ MAX_NB_SHELL_BLOCKS ], nLshifts[ MAX_NB_SHELL_BLOCKS ];
     SKP_int   *pulses_ptr;
     const SKP_uint16 *cdf_ptr;
@@ -93,8 +93,7 @@
                 abs_q = pulses_ptr[ k ];
                 for( j = 0; j < nLS; j++ ) {
                     abs_q = SKP_LSHIFT( abs_q, 1 ); 
-                    SKP_Silk_range_decoder( &bit, psRangeDec, SKP_Silk_lsb_CDF, 1 );
-                    abs_q += bit;
+                    abs_q += ec_dec_icdf( psRangeDec, SKP_Silk_lsb_iCDF, 8 );
                 }
                 pulses_ptr[ k ] = abs_q;
             }
--- a/src_common/SKP_Silk_decoder_set_fs.c
+++ b/src_common/SKP_Silk_decoder_set_fs.c
@@ -43,10 +43,26 @@
             psDec->LPC_order = MIN_LPC_ORDER;
             psDec->psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_10;
             psDec->psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_10;
+            if( psDec->nb_subfr == MAX_NB_SUBFR ){
+                psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; 
+            } else if( psDec->nb_subfr == MAX_NB_SUBFR / 2 ){
+                psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         } else {
             psDec->LPC_order = MAX_LPC_ORDER;
             psDec->psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_16;
             psDec->psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_16;
+            if( psDec->nb_subfr == MAX_NB_SUBFR ){
+                psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; 
+            } else if( psDec->nb_subfr == MAX_NB_SUBFR / 2 ){
+                psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF;
+            } else {
+                /* Unsupported number of frames */
+                SKP_assert( 0 );
+            }
         }
         /* Reset part of the decoder state */
         SKP_memset( psDec->sLPC_Q14,     0, MAX_LPC_ORDER      * sizeof( SKP_int32 ) );
@@ -61,15 +77,19 @@
         if( fs_kHz == 24 ) {
             psDec->HP_A = SKP_Silk_Dec_A_HP_24;
             psDec->HP_B = SKP_Silk_Dec_B_HP_24;
+            psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF;
         } else if( fs_kHz == 16 ) {
             psDec->HP_A = SKP_Silk_Dec_A_HP_16;
             psDec->HP_B = SKP_Silk_Dec_B_HP_16;
+            psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF;
         } else if( fs_kHz == 12 ) {
             psDec->HP_A = SKP_Silk_Dec_A_HP_12;
             psDec->HP_B = SKP_Silk_Dec_B_HP_12;
+            psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF;
         } else if( fs_kHz == 8 ) {
             psDec->HP_A = SKP_Silk_Dec_A_HP_8;
             psDec->HP_B = SKP_Silk_Dec_B_HP_8;
+            psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF;
         } else {
             /* unsupported sampling rate */
             SKP_assert( 0 );
--- a/src_common/SKP_Silk_define.h
+++ b/src_common/SKP_Silk_define.h
@@ -46,20 +46,17 @@
 #    define FIXED_POINT                         0
 #endif
 
-/* MAX DELTA LAG used for multiframe packets */
-#define MAX_DELTA_LAG                           10
-
 /* Limits on bitrate */
 #define MIN_TARGET_RATE_BPS                     5000
-#define MAX_TARGET_RATE_BPS                     100000
+#define MAX_TARGET_RATE_BPS                     SKP_uint16_MAX
 
 /* Transition bitrates between modes */
-#define SWB2WB_BITRATE_BPS                      25000
-#define WB2SWB_BITRATE_BPS                      30000
-#define WB2MB_BITRATE_BPS                       14000
-#define MB2WB_BITRATE_BPS                       18000
-#define MB2NB_BITRATE_BPS                       10000
-#define NB2MB_BITRATE_BPS                       14000
+#define SWB2WB_BITRATE_BPS                      24000
+#define WB2SWB_BITRATE_BPS                      28000
+#define WB2MB_BITRATE_BPS                       12000
+#define MB2WB_BITRATE_BPS                       16000
+#define MB2NB_BITRATE_BPS                        9000
+#define NB2MB_BITRATE_BPS                       12000
 
 /* Integration/hysteresis threshold for lowering internal sample frequency */
 /* 30000000 -> 6 sec if bitrate is 5000 bps below limit; 3 sec if bitrate is 10000 bps below limit */
@@ -135,10 +132,6 @@
 #define FIND_PITCH_LPC_WIN_MS_2_SF              ( 10 + (LA_PITCH_MS << 1) )
 #define FIND_PITCH_LPC_WIN_MAX                  ( FIND_PITCH_LPC_WIN_MS * MAX_FS_KHZ )
 
-#define PITCH_EST_COMPLEXITY_HC_MODE            SKP_Silk_PE_MAX_COMPLEX
-#define PITCH_EST_COMPLEXITY_MC_MODE            SKP_Silk_PE_MID_COMPLEX
-#define PITCH_EST_COMPLEXITY_LC_MODE            SKP_Silk_PE_MIN_COMPLEX
-
 /* Milliseconds of lookahead for noise shape analysis */
 #define LA_SHAPE_MS                             5
 #define LA_SHAPE_MAX                            ( LA_SHAPE_MS * MAX_FS_KHZ )
@@ -150,13 +143,13 @@
 #define MAX_ARITHM_BYTES                        1024
 
 /* dB level of lowest gain quantization level */
-#define MIN_QGAIN_DB                            6
+#define MIN_QGAIN_DB                            2
 /* dB level of highest gain quantization level */
-#define MAX_QGAIN_DB                            86
+#define MAX_QGAIN_DB                            88
 /* Number of gain quantization levels */
 #define N_LEVELS_QGAIN                          64
 /* Max increase in gain quantization index */
-#define MAX_DELTA_GAIN_QUANT                    40
+#define MAX_DELTA_GAIN_QUANT                    38
 /* Max decrease in gain quantization index */
 #define MIN_DELTA_GAIN_QUANT                    -4
 
@@ -164,7 +157,7 @@
 #define OFFSET_VL_Q10                           32
 #define OFFSET_VH_Q10                           100
 #define OFFSET_UVL_Q10                          100
-#define OFFSET_UVH_Q10                          256
+#define OFFSET_UVH_Q10                          240
 
 /* Maximum numbers of iterations used to stabilize a LPC vector */
 #define MAX_LPC_STABILIZE_ITERATIONS            20
--- a/src_common/SKP_Silk_encode_parameters.c
+++ b/src_common/SKP_Silk_encode_parameters.c
@@ -48,7 +48,7 @@
     /*********************************************/
     /* Encode VAD flag                           */
     /*********************************************/
-    ec_enc_bit_prob( psRangeEnc, psEncC->vadFlag, 65536 - SKP_Silk_vadflag_CDF[ 1 ] );
+    ec_enc_icdf( psRangeEnc, psEncC->vadFlag, SKP_Silk_vadflag_iCDF, 8 );
 
     /*******************************************/
     /* Encode signal type and quantizer offset */
@@ -56,12 +56,10 @@
     typeOffset = 2 * psEncCtrlC->sigtype + psEncCtrlC->QuantOffsetType;
     if( psEncC->nFramesInPayloadBuf == 0 ) {
         /* first frame in packet: independent coding */
-        ec_encode_bin( psRangeEnc, SKP_Silk_type_offset_CDF[ typeOffset ], 
-            SKP_Silk_type_offset_CDF[ typeOffset + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, typeOffset, SKP_Silk_type_offset_iCDF, 8 );
     } else {
         /* condidtional coding */
-        ec_encode_bin( psRangeEnc, SKP_Silk_type_offset_joint_CDF[ psEncC->typeOffsetPrev ][ typeOffset ], 
-            SKP_Silk_type_offset_joint_CDF[ psEncC->typeOffsetPrev ][ typeOffset + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, typeOffset, SKP_Silk_type_offset_joint_iCDF[ psEncC->typeOffsetPrev ], 8 );
     }
     psEncC->typeOffsetPrev = typeOffset;
 
@@ -73,19 +71,18 @@
 #endif
     /* first subframe */
     if( psEncC->nFramesInPayloadBuf == 0 ) {
-        /* first frame in packet: independent coding */
-        ec_encode_bin( psRangeEnc, SKP_Silk_gain_CDF[ psEncCtrlC->sigtype ][ psEncCtrlC->GainsIndices[ 0 ] ], 
-            SKP_Silk_gain_CDF[ psEncCtrlC->sigtype ][ psEncCtrlC->GainsIndices[ 0 ] + 1 ], 16 );
+        /* first frame in packet: independent coding, in two stages: MSB bits followed by 3 LSBs */
+        ec_enc_icdf( psRangeEnc, SKP_RSHIFT( psEncCtrlC->GainsIndices[ 0 ], 3 ), SKP_Silk_gain_iCDF[ psEncCtrlC->sigtype ], 8 );
+        //ec_enc_bits( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ] & 7, 3 );          /* doesn't work somehow */
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ] & 7, SKP_Silk_uniform8_iCDF, 8 );
     } else {
         /* condidtional coding */
-        ec_encode_bin( psRangeEnc, SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ 0 ] ], 
-            SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ 0 ] + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ], SKP_Silk_delta_gain_iCDF, 8 );
     }
 
     /* remaining subframes */
     for( i = 1; i < psEncC->nb_subfr; i++ ) {
-        ec_encode_bin( psRangeEnc, SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ i ] ], 
-            SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ i ] + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ i ], SKP_Silk_delta_gain_iCDF, 8 );
     }
 
 #ifdef SAVE_ALL_INTERNAL_DATA
@@ -103,16 +100,15 @@
     /* Range encoding of the NLSF path */
     psNLSF_CB = psEncC->psNLSF_CB[ psEncCtrlC->sigtype ];
     for( i = 0; i < psNLSF_CB->nStages; i++ ) {
-        ec_encode_bin( psRangeEnc, psNLSF_CB->StartPtr[ i ][ psEncCtrlC->NLSFIndices[ i ] ], 
-            psNLSF_CB->StartPtr[ i ][ psEncCtrlC->NLSFIndices[ i ] + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->NLSFIndices[ i ], psNLSF_CB->StartPtr[ i ], 8 );
     }
 
     /* Encode NLSF interpolation factor */
     SKP_assert( psEncC->useInterpolatedNLSFs == 1 || psEncCtrlC->NLSFInterpCoef_Q2 == ( 1 << 2 ) );
-    ec_encode_bin( psRangeEnc, SKP_Silk_NLSF_interpolation_factor_CDF[ psEncCtrlC->NLSFInterpCoef_Q2 ], 
-        SKP_Silk_NLSF_interpolation_factor_CDF[ psEncCtrlC->NLSFInterpCoef_Q2 + 1 ], 16 );
+    ec_enc_icdf( psRangeEnc, psEncCtrlC->NLSFInterpCoef_Q2, SKP_Silk_NLSF_interpolation_factor_iCDF, 8 );
 
 #ifdef SAVE_ALL_INTERNAL_DATA
+    DEBUG_STORE_DATA( lsf_interpol.dat, &psEncCtrlC->NLSFInterpCoef_Q2, sizeof(int) );
     nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );
     nBytes_after -= nBytes_before; // bytes just added
     DEBUG_STORE_DATA( nBytes_LSF.dat, &nBytes_after, sizeof( SKP_int ) );
@@ -130,32 +126,24 @@
         if( psEncC->nFramesInPayloadBuf > 0 && psEncC->prev_sigtype == SIG_TYPE_VOICED ) {
             /* Delta Encoding */
             delta_lagIndex = psEncCtrlC->lagIndex - psEncC->prev_lagIndex;
-            if( delta_lagIndex > MAX_DELTA_LAG ) {
-                delta_lagIndex = ( MAX_DELTA_LAG << 1 ) + 1;
-            } else if ( delta_lagIndex < -MAX_DELTA_LAG ) {
-                delta_lagIndex = ( MAX_DELTA_LAG << 1 ) + 1;
+            if( delta_lagIndex < -8 || delta_lagIndex > 11 ) {
+                delta_lagIndex = 0;
             } else {
-                delta_lagIndex = delta_lagIndex + MAX_DELTA_LAG;
+                delta_lagIndex = delta_lagIndex + 9;
                 encode_absolute_lagIndex = 0; /* Only use delta */
             }
-            ec_encode_bin( psRangeEnc, SKP_Silk_pitch_delta_CDF[ delta_lagIndex ], 
-                SKP_Silk_pitch_delta_CDF[ delta_lagIndex + 1 ], 16 );
+            SKP_assert( delta_lagIndex < 21 );
+            ec_enc_icdf( psRangeEnc, delta_lagIndex, SKP_Silk_pitch_delta_iCDF, 8 );
         }
         if( encode_absolute_lagIndex ) {
             /* Absolute encoding */
-            if( psEncC->fs_kHz == 8 ) {
-                ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_NB_CDF[ psEncCtrlC->lagIndex ], 
-                    SKP_Silk_pitch_lag_NB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 );
-            } else if( psEncC->fs_kHz == 12 ) {
-                ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_MB_CDF[ psEncCtrlC->lagIndex ], 
-                    SKP_Silk_pitch_lag_MB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 );
-            } else if( psEncC->fs_kHz == 16 ) {
-                ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_WB_CDF[ psEncCtrlC->lagIndex ], 
-                    SKP_Silk_pitch_lag_WB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 );
-            } else {
-                ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_SWB_CDF[ psEncCtrlC->lagIndex ], 
-                    SKP_Silk_pitch_lag_SWB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 );
-            }
+            SKP_int32 pitch_high_bits, pitch_low_bits;
+            pitch_high_bits = SKP_DIV32_16( psEncCtrlC->lagIndex, SKP_RSHIFT( psEncC->fs_kHz, 1 ) );
+            pitch_low_bits = psEncCtrlC->lagIndex - SKP_SMULBB( pitch_high_bits, SKP_RSHIFT( psEncC->fs_kHz, 1 ) );
+            SKP_assert( pitch_low_bits < psEncC->fs_kHz / 2 );
+            SKP_assert( pitch_high_bits < 32 );
+            ec_enc_icdf( psRangeEnc, pitch_high_bits, SKP_Silk_pitch_lag_iCDF, 8 );
+            ec_enc_icdf( psRangeEnc, pitch_low_bits, psEncC->pitch_lag_low_bits_iCDF, 8 );
         }
         psEncC->prev_lagIndex = psEncCtrlC->lagIndex;
 
@@ -167,16 +155,12 @@
 #ifdef SAVE_ALL_INTERNAL_DATA
         nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );
 #endif
-        /* countour index */
-        if( psEncC->fs_kHz == 8 ) {
-            /* Less codevectors used in 8 khz mode */
-            ec_encode_bin( psRangeEnc, SKP_Silk_pitch_contour_NB_CDF[ psEncCtrlC->contourIndex ], 
-                SKP_Silk_pitch_contour_NB_CDF[ psEncCtrlC->contourIndex + 1 ], 16 );
-        } else {
-            /* Joint for 12, 16, 24 khz */
-            ec_encode_bin( psRangeEnc, SKP_Silk_pitch_contour_CDF[ psEncCtrlC->contourIndex ], 
-                SKP_Silk_pitch_contour_CDF[ psEncCtrlC->contourIndex + 1 ], 16 );
-        }
+        /* Countour index */
+        SKP_assert( ( psEncCtrlC->contourIndex < 34 && psEncC->fs_kHz  > 8 && psEncC->nb_subfr == 4 ) ||
+                    ( psEncCtrlC->contourIndex < 11 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 4 ) ||
+                    ( psEncCtrlC->contourIndex < 12 && psEncC->fs_kHz  > 8 && psEncC->nb_subfr == 2 ) ||
+                    ( psEncCtrlC->contourIndex <  3 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 2 ) );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->contourIndex, psEncC->pitch_contour_iCDF, 8 );
 #ifdef SAVE_ALL_INTERNAL_DATA
         nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );
         nBytes_contourIndex = nBytes_after - nBytes_before; // bytes just added
@@ -190,20 +174,17 @@
 #endif
 
         /* PERIndex value */
-        ec_encode_bin( psRangeEnc, SKP_Silk_LTP_per_index_CDF[ psEncCtrlC->PERIndex ], 
-            SKP_Silk_LTP_per_index_CDF[ psEncCtrlC->PERIndex + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->PERIndex, SKP_Silk_LTP_per_index_iCDF, 8 );
 
         /* Codebook Indices */
         for( k = 0; k < psEncC->nb_subfr; k++ ) {
-            ec_encode_bin( psRangeEnc, SKP_Silk_LTP_gain_CDF_ptrs[ psEncCtrlC->PERIndex ][ psEncCtrlC->LTPIndex[ k ] ], 
-                SKP_Silk_LTP_gain_CDF_ptrs[ psEncCtrlC->PERIndex ][ psEncCtrlC->LTPIndex[ k ] + 1 ], 16 );
+            ec_enc_icdf( psRangeEnc, psEncCtrlC->LTPIndex[ k ], SKP_Silk_LTP_gain_iCDF_ptrs[ psEncCtrlC->PERIndex ], 8 );
         }
 
         /**********************/
         /* Encode LTP scaling */
         /**********************/
-        ec_encode_bin( psRangeEnc, SKP_Silk_LTPscale_CDF[ psEncCtrlC->LTP_scaleIndex ], 
-            SKP_Silk_LTPscale_CDF[ psEncCtrlC->LTP_scaleIndex + 1 ], 16 );
+        ec_enc_icdf( psRangeEnc, psEncCtrlC->LTP_scaleIndex, SKP_Silk_LTPscale_iCDF, 8 );
 #ifdef SAVE_ALL_INTERNAL_DATA
         nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 );
         nBytes_LTP = nBytes_after - nBytes_before; // bytes just added
@@ -228,6 +209,5 @@
     /***************/
     /* Encode seed */
     /***************/
-    ec_encode_bin( psRangeEnc, SKP_Silk_Seed_CDF[ psEncCtrlC->Seed ], 
-        SKP_Silk_Seed_CDF[ psEncCtrlC->Seed + 1 ], 16 );
+    ec_enc_icdf( psRangeEnc, psEncCtrlC->Seed, SKP_Silk_Seed_iCDF, 8 );
 }
--- a/src_common/SKP_Silk_encode_pulses.c
+++ b/src_common/SKP_Silk_encode_pulses.c
@@ -207,10 +207,10 @@
                 abs_q = (SKP_int8)SKP_abs( pulses_ptr[ k ] );
                 for( j = nLS; j > 0; j-- ) {
                     bit = SKP_RSHIFT( abs_q, j ) & 1;
-                    ec_enc_bit_prob( psRangeEnc, bit, 65536 - SKP_Silk_lsb_CDF[ 1 ] );
+                    ec_enc_icdf( psRangeEnc, bit, SKP_Silk_lsb_iCDF, 8 );
                 }
                 bit = abs_q & 1;
-                ec_enc_bit_prob( psRangeEnc, bit, 65536 - SKP_Silk_lsb_CDF[ 1 ] );
+                ec_enc_icdf( psRangeEnc, bit, SKP_Silk_lsb_iCDF, 8 );
             }
         }
     }
--- a/src_common/SKP_Silk_gain_quant.c
+++ b/src_common/SKP_Silk_gain_quant.c
@@ -27,9 +27,9 @@
 
 #include "SKP_Silk_main.h"
 
-#define OFFSET          ( ( MIN_QGAIN_DB * 128 ) / 6 + 16 * 128 )
-#define SCALE_Q16       ( ( 65536 * ( N_LEVELS_QGAIN - 1 ) ) / ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) )
-#define INV_SCALE_Q16   ( ( 65536 * ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) / ( N_LEVELS_QGAIN - 1 ) )
+#define OFFSET                  ( ( MIN_QGAIN_DB * 128 ) / 6 + 16 * 128 )
+#define SCALE_Q16               ( ( 65536 * ( N_LEVELS_QGAIN - 1 ) ) / ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) )
+#define INV_SCALE_Q16           ( ( 65536 * ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) / ( N_LEVELS_QGAIN - 1 ) )
 
 /* Gain scalar quantization with hysteresis, uniform on log scale */
 void SKP_Silk_gains_quant(
@@ -40,7 +40,7 @@
     const SKP_int                   nb_subfr                    /* I    number of subframes                     */
 )
 {
-    SKP_int k;
+    SKP_int k, double_step_size_threshold;
 
     for( k = 0; k < nb_subfr; k++ ) {
         /* Add half of previous quantization error, convert to log scale, scale, floor() */
@@ -50,18 +50,32 @@
         if( ind[ k ] < *prev_ind ) {
             ind[ k ]++;
         }
+        ind[ k ] = SKP_max_int( ind[ k ], 0 );
 
         /* Compute delta indices and limit */
         if( k == 0 && conditional == 0 ) {
             /* Full index */
-            ind[ k ] = SKP_LIMIT_int( ind[ k ], 0, N_LEVELS_QGAIN - 1 );
-            ind[ k ] = SKP_max_int( ind[ k ], *prev_ind + MIN_DELTA_GAIN_QUANT );
+            ind[ k ] = SKP_LIMIT_int( ind[ k ], *prev_ind + MIN_DELTA_GAIN_QUANT, N_LEVELS_QGAIN - 1 );
             *prev_ind = ind[ k ];
         } else {
             /* Delta index */
-            ind[ k ] = SKP_LIMIT_int( ind[ k ] - *prev_ind, MIN_DELTA_GAIN_QUANT, MAX_DELTA_GAIN_QUANT );
+            ind[ k ] = ind[ k ] - *prev_ind;
+
+            /* Double the quantization step size is doubled for large gain increases, so that the max gain level can be reached */
+            double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind;
+            if( ind[ k ] > double_step_size_threshold ) {
+                ind[ k ] = double_step_size_threshold + SKP_RSHIFT( ind[ k ] - double_step_size_threshold + 1, 1 );
+            }
+
+            ind[ k ] = SKP_LIMIT_int( ind[ k ], MIN_DELTA_GAIN_QUANT, MAX_DELTA_GAIN_QUANT );
+
             /* Accumulate deltas */
-            *prev_ind += ind[ k ];
+            if( ind[ k ] > double_step_size_threshold ) {
+                *prev_ind += SKP_LSHIFT( ind[ k ], 1 ) - double_step_size_threshold;
+            } else {
+                *prev_ind += ind[ k ];
+            }
+
             /* Shift to make non-negative */
             ind[ k ] -= MIN_DELTA_GAIN_QUANT;
         }
@@ -80,7 +94,7 @@
     const SKP_int                   nb_subfr                    /* I    number of subframes                     */
 )
 {
-    SKP_int   k;
+    SKP_int   k, ind_tmp, double_step_size_threshold;
 
     for( k = 0; k < nb_subfr; k++ ) {
         if( k == 0 && conditional == 0 ) {
@@ -87,7 +101,15 @@
             *prev_ind = ind[ k ];
         } else {
             /* Delta index */
-            *prev_ind += ind[ k ] + MIN_DELTA_GAIN_QUANT;
+            ind_tmp = ind[ k ] + MIN_DELTA_GAIN_QUANT;
+
+            /* Accumulate deltas */
+            double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind;
+            if( ind[ k ] > double_step_size_threshold ) {
+                *prev_ind += SKP_LSHIFT( ind_tmp, 1 ) - double_step_size_threshold;
+            } else {
+                *prev_ind += ind_tmp;
+            }
         }
 
         /* Convert to linear scale and scale */
--- a/src_common/SKP_Silk_main.h
+++ b/src_common/SKP_Silk_main.h
@@ -43,6 +43,12 @@
 #include "entdec.h"
 
 
+/* Uncomment the next line to store intermadiate data to files */
+//#define SAVE_ALL_INTERNAL_DATA      1
+/* Uncomment the next line to force a fixed internal sampling rate (independent of what bitrate is used */
+//#define FORCE_INTERNAL_FS_KHZ       16
+
+
 /* Encodes signs of excitation */
 void SKP_Silk_encode_signs(
     ec_enc                      *psRangeEnc,        /* I/O  Compressor data structure                   */
@@ -138,6 +144,29 @@
     const SKP_int               x1[ MAX_LPC_ORDER ],    /* I    second vector                           */
     const SKP_int               ifact_Q2,               /* I    interp. factor, weight on 2nd vector    */
     const SKP_int               d                       /* I    number of parameters                    */
+);
+
+/* LTP tap quantizer */
+void SKP_Silk_quant_LTP_gains(
+    SKP_int16           B_Q14[ MAX_NB_SUBFR * LTP_ORDER ],              /* I/O  (un)quantized LTP gains     */
+    SKP_int             cbk_index[ MAX_NB_SUBFR ],                      /* O    Codebook Index              */
+    SKP_int             *periodicity_index,                             /* O    Periodicity Index           */
+    const SKP_int32     W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ],      /* I    Error Weights in Q18        */
+    SKP_int             mu_Q10,                                         /* I    Mu value (R/D tradeoff)     */
+    SKP_int             lowComplexity,                                  /* I    Flag for low complexity     */
+    const SKP_int       nb_subfr                                        /* I    number of subframes         */
+);
+
+/* Entropy constrained matrix-weighted VQ, for a single input data vector */
+void SKP_Silk_VQ_WMat_EC(
+    SKP_int                         *ind,               /* O    index of best codebook vector               */
+    SKP_int32                       *rate_dist_Q14,     /* O    best weighted quantization error + mu * rate*/
+    const SKP_int16                 *in_Q14,            /* I    input vector to be quantized                */
+    const SKP_int32                 *W_Q18,             /* I    weighting matrix                            */
+    const SKP_int8                  *cb_Q7,             /* I    codebook                                    */
+    const SKP_int8                  *cl_Q4,             /* I    code length for each codebook vector        */
+    const SKP_int                   mu_Q10,             /* I    tradeoff between weighted error and rate    */
+    SKP_int                         L                   /* I    number of vectors in codebook               */
 );
 
 /***********************************/
--- a/src_common/SKP_Silk_perceptual_parameters.h
+++ /dev/null
@@ -1,115 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_PERCEPTUAL_PARAMETERS_H
-#define SKP_SILK_PERCEPTUAL_PARAMETERS_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* reduction in coding SNR during low speech activity */
-#define BG_SNR_DECR_dB                              4.0f
-
-/* factor for reducing quantization noise during voiced speech */
-#define HARM_SNR_INCR_dB                            2.0f
-
-/* factor for reducing quantization noise for unvoiced sparse signals */
-#define SPARSE_SNR_INCR_dB                          2.0f
-
-/* threshold for sparseness measure above which to use lower quantization offset during unvoiced */
-#define SPARSENESS_THRESHOLD_QNT_OFFSET             0.75f
-
-
-/* noise shaping filter chirp factor */
-#define BANDWIDTH_EXPANSION                         0.95f
-
-/* difference between chirp factors for analysis and synthesis noise shaping filters at low bitrates */
-#define LOW_RATE_BANDWIDTH_EXPANSION_DELTA          0.01f
-
-/* factor to reduce all bandwdith expansion coefficients for super wideband, relative to wideband */
-#define SWB_BANDWIDTH_EXPANSION_REDUCTION           1.0f
-
-/* gain reduction for fricatives */
-#define DE_ESSER_COEF_SWB_dB                        2.0f
-#define DE_ESSER_COEF_WB_dB                         1.0f
-
-/* extra harmonic boosting (signal shaping) at low bitrates */
-#define LOW_RATE_HARMONIC_BOOST                     0.1f
-
-/* extra harmonic boosting (signal shaping) for noisy input signals */
-#define LOW_INPUT_QUALITY_HARMONIC_BOOST            0.1f
-
-/* harmonic noise shaping */
-#define HARMONIC_SHAPING                            0.3f
-
-/* extra harmonic noise shaping for high bitrates or noisy input */
-#define HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING   0.2f
-
-
-/* parameter for shaping noise towards higher frequencies */
-#define HP_NOISE_COEF                               0.3f
-
-/* parameter for shaping noise extra towards higher frequencies during voiced speech */
-#define HARM_HP_NOISE_COEF                          0.4f
-
-/* parameter for applying a high-pass tilt to the input signal */
-#define INPUT_TILT                                  0.04f
-
-/* parameter for extra high-pass tilt to the input signal at high rates */
-#define HIGH_RATE_INPUT_TILT                        0.04f
-
-/* parameter for reducing noise at the very low frequencies */
-#define LOW_FREQ_SHAPING                            3.0f
-
-/* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */
-#define LOW_QUALITY_LOW_FREQ_SHAPING_DECR           0.5f
-
-/* fraction added to first autocorrelation value */
-#define SHAPE_WHITE_NOISE_FRACTION                  3.8147e-5f
-
-/* fraction of first autocorrelation value added to residual energy value; limits prediction gain */
-#define SHAPE_MIN_ENERGY_RATIO                      1.526e-5f       // 1.526e-5 = 1/65536
-
-/* noise floor to put a low limit on the quantization step size */
-#define NOISE_FLOOR_dB                              4.0f
-
-/* noise floor relative to active speech gain level */
-#define RELATIVE_MIN_GAIN_dB                        -50.0f
-
-/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */
-#define GAIN_SMOOTHING_COEF                         1e-3f
-
-/* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */
-#define SUBFR_SMTH_COEF                             0.4f
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/src_common/SKP_Silk_pulses_to_bytes.c
+++ b/src_common/SKP_Silk_pulses_to_bytes.c
@@ -46,6 +46,7 @@
     SKP_int i, j, iter;
     SKP_int8 *q_ptr;
     SKP_int32 sum_abs_val, nBytes, acc_nBytes;
+
     /* Take the absolute value of the pulses */
     iter = psEncC->frame_length / SHELL_CODEC_FRAME_LENGTH;
     
@@ -77,5 +78,5 @@
     acc_nBytes = SKP_RSHIFT_ROUND( acc_nBytes, 15 );                                    // Q0
     acc_nBytes = SKP_SAT16( acc_nBytes ); // just to be sure                            // Q0
     
-    return(( SKP_int )acc_nBytes);
+    return (SKP_int)acc_nBytes;
 }
--- /dev/null
+++ b/src_common/SKP_Silk_quant_LTP_gains.c
@@ -1,0 +1,107 @@
+/***********************************************************************
+Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
+Redistribution and use in source and binary forms, with or without 
+modification, (subject to the limitations in the disclaimer below) 
+are permitted provided that the following conditions are met:
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright 
+notice, this list of conditions and the following disclaimer in the 
+documentation and/or other materials provided with the distribution.
+- Neither the name of Skype Limited, nor the names of specific 
+contributors, may be used to endorse or promote products derived from 
+this software without specific prior written permission.
+NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
+BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+***********************************************************************/
+
+#include "SKP_Silk_main.h"
+
+void SKP_Silk_quant_LTP_gains(
+    SKP_int16           B_Q14[ MAX_NB_SUBFR * LTP_ORDER ],              /* I/O  (un)quantized LTP gains     */
+    SKP_int             cbk_index[ MAX_NB_SUBFR ],                      /* O    Codebook Index              */
+    SKP_int             *periodicity_index,                             /* O    Periodicity Index           */
+    const SKP_int32     W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ],      /* I    Error Weights in Q18        */
+    SKP_int             mu_Q10,                                         /* I    Mu value (R/D tradeoff)     */
+    SKP_int             lowComplexity,                                  /* I    Flag for low complexity     */
+    const SKP_int       nb_subfr                                        /* I    number of subframes         */
+)
+{
+    SKP_int             j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size;
+    const SKP_int8      *cl_ptr_Q4;
+    const SKP_int8      *cbk_ptr_Q7;
+    const SKP_int16     *b_Q14_ptr;
+    const SKP_int32     *W_Q18_ptr;
+    SKP_int32           rate_dist_Q14_subfr, rate_dist_Q14, min_rate_dist_Q14;
+
+
+TIC(quant_LTP)
+
+    /***************************************************/
+    /* iterate over different codebooks with different */
+    /* rates/distortions, and choose best */
+    /***************************************************/
+    min_rate_dist_Q14 = SKP_int32_MAX;
+    for( k = 0; k < 3; k++ ) {
+        cl_ptr_Q4  = SKP_Silk_LTP_gain_BITS_Q4_ptrs[ k ];
+        cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[        k ];
+        cbk_size   = SKP_Silk_LTP_vq_sizes[          k ];
+
+        /* Setup pointer to first subframe */
+        W_Q18_ptr = W_Q18;
+        b_Q14_ptr = B_Q14;
+
+        rate_dist_Q14 = 0;
+        for( j = 0; j < nb_subfr; j++ ) {
+
+            SKP_Silk_VQ_WMat_EC(
+                &temp_idx[ j ],         /* O    index of best codebook vector                           */
+                &rate_dist_Q14_subfr,   /* O    best weighted quantization error + mu * rate            */
+                b_Q14_ptr,              /* I    input vector to be quantized                            */
+                W_Q18_ptr,              /* I    weighting matrix                                        */
+                cbk_ptr_Q7,             /* I    codebook                                                */
+                cl_ptr_Q4,              /* I    code length for each codebook vector                    */
+                mu_Q10,                 /* I    tradeoff between weighted error and rate                */
+                cbk_size                /* I    number of vectors in codebook                           */
+            );
+
+            rate_dist_Q14 = SKP_ADD_POS_SAT32( rate_dist_Q14, rate_dist_Q14_subfr );
+
+            b_Q14_ptr += LTP_ORDER;
+            W_Q18_ptr += LTP_ORDER * LTP_ORDER;
+        }
+
+        /* Avoid never finding a codebook */
+        rate_dist_Q14 = SKP_min( SKP_int32_MAX - 1, rate_dist_Q14 );
+
+        if( rate_dist_Q14 < min_rate_dist_Q14 ) {
+            min_rate_dist_Q14 = rate_dist_Q14;
+            SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) );
+            *periodicity_index = k;
+        }
+
+        /* Break early in low-complexity mode if rate distortion is below threshold */
+        if( lowComplexity && ( rate_dist_Q14 < SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) {
+            break;
+        }
+    }
+
+    cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[ *periodicity_index ];
+    for( j = 0; j < nb_subfr; j++ ) {
+        for( k = 0; k < LTP_ORDER; k++ ) { 
+            B_Q14[ j * LTP_ORDER + k ] = SKP_LSHIFT( cbk_ptr_Q7[ cbk_index[ j ] * LTP_ORDER + k ], 7 );
+        }
+    }
+TOC(quant_LTP)
+}
+
--- a/src_common/SKP_Silk_setup_complexity.h
+++ b/src_common/SKP_Silk_setup_complexity.h
@@ -44,8 +44,8 @@
     if( Complexity == 0 || LOW_COMPLEXITY_ONLY ) {
         /* Low complexity */
         psEncC->Complexity                      = 0;
-        psEncC->pitchEstimationComplexity       = PITCH_EST_COMPLEXITY_LC_MODE;
-        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE, 16 );
+        psEncC->pitchEstimationComplexity       = SKP_Silk_PE_MIN_COMPLEX;
+        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_LOW_COMPL_MODE, 16 );
         psEncC->pitchEstimationLPCOrder         = 6;
         psEncC->shapingLPCOrder                 = 8;
         psEncC->la_shape                        = 3 * psEncC->fs_kHz;
@@ -57,8 +57,8 @@
     } else if( Complexity == 1 ) {
         /* Medium complexity */
         psEncC->Complexity                      = 1;
-        psEncC->pitchEstimationComplexity       = PITCH_EST_COMPLEXITY_MC_MODE;
-        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE, 16 );
+        psEncC->pitchEstimationComplexity       = SKP_Silk_PE_MID_COMPLEX;
+        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_MID_COMPL_MODE, 16 );
         psEncC->pitchEstimationLPCOrder         = 12;
         psEncC->shapingLPCOrder                 = 12;
         psEncC->la_shape                        = 5 * psEncC->fs_kHz;
@@ -70,8 +70,8 @@
     } else if( Complexity == 2 ) {
         /* High complexity */
         psEncC->Complexity                      = 2;
-        psEncC->pitchEstimationComplexity       = PITCH_EST_COMPLEXITY_HC_MODE;
-        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE, 16 );
+        psEncC->pitchEstimationComplexity       = SKP_Silk_PE_MAX_COMPLEX;
+        psEncC->pitchEstimationThreshold_Q16    = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_HI_COMPL_MODE, 16 );
         psEncC->pitchEstimationLPCOrder         = 16;
         psEncC->shapingLPCOrder                 = 16;
         psEncC->la_shape                        = 5 * psEncC->fs_kHz;
--- a/src_common/SKP_Silk_structs.h
+++ b/src_common/SKP_Silk_structs.h
@@ -130,9 +130,8 @@
     const SKP_int               *NDeltaMin_Q15;
 
     /* Fields for arithmetic (de)coding */
-    const SKP_uint16            *CDF;
-    const SKP_uint16 * const    *StartPtr;
-    const SKP_int               *MiddleIx;
+    const SKP_uint8             *CDF;
+    const SKP_uint8 * const     *StartPtr;
 } SKP_Silk_NLSF_CB_struct;
 
 /********************************/
@@ -180,11 +179,14 @@
     SKP_int                         pitchEstimationLPCOrder;        /* Whitening filter order for pitch estimator                           */
     SKP_int32                       pitchEstimationThreshold_Q16;   /* Threshold for pitch estimator                                        */
     SKP_int                         LTPQuantLowComplexity;          /* Flag for low complexity LTP quantization                             */
+    SKP_int                         mu_LTP_Q10;                     /* Rate-distortion tradeoff in LTP quantization                         */
     SKP_int                         NLSF_MSVQ_Survivors;            /* Number of survivors in NLSF MSVQ                                     */
     SKP_int                         first_frame_after_reset;        /* Flag for deactivating NLSF interp. and fluc. reduction after resets  */
     SKP_int                         controlled_since_last_payload;  /* Flag for ensuring codec_control only runs once per packet            */
 	SKP_int                         warping_Q16;                    /* Warping parameter for warped noise shaping                           */
     SKP_int                         useCBR;                         /* Flag to enable constant bitrate                                      */
+    const SKP_uint8                 *pitch_lag_low_bits_iCDF;       /* Pointer to iCDF table for low bits of pitch lag index                */
+    const SKP_uint8                 *pitch_contour_iCDF;            /* Pointer to iCDF table for pitch contour index                        */
 
     /* Input/output buffering */
     SKP_int16                       inputBuf[ MAX_FRAME_LENGTH ];   /* buffer containin input signal                                        */
@@ -294,8 +296,8 @@
     SKP_int         LastGainIndex_EnhLayer;                     /* Previous gain index                                                  */
     SKP_int         typeOffsetPrev;                             /* Previous signal type and quantization offset                         */
     SKP_int32       HPState[ DEC_HP_ORDER ];                    /* HP filter state                                                      */
-    const SKP_int16 *HP_A;                                      /* HP filter AR coefficients                                            */
-    const SKP_int16 *HP_B;                                      /* HP filter MA coefficients                                            */
+    const SKP_int32 *HP_A;                                      /* HP filter AR coefficients                                            */
+    const SKP_int32 *HP_B;                                      /* HP filter MA coefficients                                            */
     SKP_int         fs_kHz;                                     /* Sampling frequency in kHz                                            */
     SKP_int32       prev_API_sampleRate;                        /* Previous API sample frequency (Hz)                                   */
     SKP_int         nb_subfr;                                   /* Number of 5 ms subframes in a frame                                  */
@@ -305,6 +307,8 @@
     SKP_int         LPC_order;                                  /* LPC order                                                            */
     SKP_int         prevNLSF_Q15[ MAX_LPC_ORDER ];              /* Used to interpolate LSFs                                             */
     SKP_int         first_frame_after_reset;                    /* Flag for deactivating NLSF interp. and fluc. reduction after resets  */
+    const SKP_uint8 *pitch_lag_low_bits_iCDF;                   /* Pointer to iCDF table for low bits of pitch lag index                */
+    const SKP_uint8 *pitch_contour_iCDF;                        /* Pointer to iCDF table for pitch contour index                        */
 
     /* For buffering payload in case of more frames per packet */
     SKP_int         nBytesLeft;
--- a/src_common/SKP_Silk_tables.h
+++ b/src_common/SKP_Silk_tables.h
@@ -40,31 +40,16 @@
 #endif
 
 /* entropy coding tables */
-extern const SKP_uint16 SKP_Silk_type_offset_CDF[ 5 ];                                              /*   5 */
-extern const SKP_uint16 SKP_Silk_type_offset_joint_CDF[ 4 ][ 5 ];                                   /*  20 */
-extern const SKP_int    SKP_Silk_type_offset_CDF_offset;
+extern const SKP_uint8  SKP_Silk_gain_iCDF[ 2 ][ N_LEVELS_QGAIN / 8 ];                               /* 16 */
+extern const SKP_uint8  SKP_Silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ]; /* 43 */
 
-extern const SKP_uint16 SKP_Silk_gain_CDF[ 2 ][ N_LEVELS_QGAIN + 1 ];                               /* 130 */
-extern const SKP_int    SKP_Silk_gain_CDF_offset;
-extern const SKP_uint16 SKP_Silk_delta_gain_CDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 2 ]; /*  46 */
-extern const SKP_int    SKP_Silk_delta_gain_CDF_offset;
+extern const SKP_uint8  SKP_Silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ];  /* 32 */
+extern const SKP_uint8  SKP_Silk_pitch_delta_iCDF[21];                                              /*  21 */
+extern const SKP_uint8  SKP_Silk_pitch_contour_iCDF[34];                                            /*  34 */
+extern const SKP_uint8  SKP_Silk_pitch_contour_NB_iCDF[ 11 ];                                       /*  11 */
+extern const SKP_uint8 SKP_Silk_pitch_contour_10_ms_iCDF[12];                                       /*  12 */
+extern const SKP_uint8 SKP_Silk_pitch_contour_10_ms_NB_iCDF[3];                                     /*   3 */
 
-extern const SKP_uint16 SKP_Silk_pitch_lag_NB_CDF[ 8 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ];   /* 130 */
-extern const SKP_int    SKP_Silk_pitch_lag_NB_CDF_offset;
-extern const SKP_uint16 SKP_Silk_pitch_lag_MB_CDF[ 12 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ];  /* 194 */
-extern const SKP_int    SKP_Silk_pitch_lag_MB_CDF_offset;
-extern const SKP_uint16 SKP_Silk_pitch_lag_WB_CDF[ 16 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ];  /* 258 */
-extern const SKP_int    SKP_Silk_pitch_lag_WB_CDF_offset;
-extern const SKP_uint16 SKP_Silk_pitch_lag_SWB_CDF[ 24 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ]; /* 386 */
-extern const SKP_int    SKP_Silk_pitch_lag_SWB_CDF_offset;
-
-extern const SKP_uint16 SKP_Silk_pitch_contour_CDF[ 35 ];                                           /*  35 */
-extern const SKP_int    SKP_Silk_pitch_contour_CDF_offset;
-extern const SKP_uint16 SKP_Silk_pitch_contour_NB_CDF[ 12 ];                                        /*  12 */
-extern const SKP_int    SKP_Silk_pitch_contour_NB_CDF_offset;
-extern const SKP_uint16 SKP_Silk_pitch_delta_CDF[23];                                               /* 23 */
-extern const SKP_int    SKP_Silk_pitch_delta_CDF_offset;
-
 extern const SKP_uint16 SKP_Silk_pulses_per_block_CDF[ N_RATE_LEVELS ][ MAX_PULSES + 3 ];           /* 210 */
 extern const SKP_int    SKP_Silk_pulses_per_block_CDF_offset;
 extern const SKP_int16  SKP_Silk_pulses_per_block_BITS_Q6[ N_RATE_LEVELS - 1 ][ MAX_PULSES + 2 ];   /* 180 */
@@ -81,72 +66,62 @@
 extern const SKP_uint16 SKP_Silk_shell_code_table3[ 207 ];                                          /* 207 */
 extern const SKP_uint16 SKP_Silk_shell_code_table_offsets[ 19 ];                                    /*  19 */
 
-extern const SKP_uint16 SKP_Silk_lsb_CDF[ 3 ];                                                      /*   3 */
+extern const SKP_uint8  SKP_Silk_lsb_iCDF[ 2 ];                                                     /*   2 */
 
-extern const SKP_uint16 SKP_Silk_sign_CDF[ 36 ];                                                    /*  36 */
+extern const SKP_uint8  SKP_Silk_sign_iCDF[ 36 ];                                                   /*  36 */
 
-extern const SKP_uint16 SKP_Silk_LTP_per_index_CDF[ 4 ];                                            /*   4 */
-extern const SKP_int    SKP_Silk_LTP_per_index_CDF_offset;
-extern const SKP_int16  * const SKP_Silk_LTP_gain_BITS_Q6_ptrs[ NB_LTP_CBKS ];                      /*   3 */
-extern const SKP_uint16 * const SKP_Silk_LTP_gain_CDF_ptrs[ NB_LTP_CBKS ];                          /*   3 */
-extern const SKP_int    SKP_Silk_LTP_gain_CDF_offsets[ NB_LTP_CBKS ];                               /*   3 */
-extern const SKP_int32  SKP_Silk_LTP_gain_middle_avg_RD_Q14;
-extern const SKP_uint16 SKP_Silk_LTPscale_CDF[ 4 ];                                                 /*   4 */
-extern const SKP_int    SKP_Silk_LTPscale_offset;
+extern const SKP_uint8  SKP_Silk_uniform4_iCDF[   4 ];                                              /*   4 */
+extern const SKP_uint8  SKP_Silk_uniform6_iCDF[   6 ];                                              /*   6 */
+extern const SKP_uint8  SKP_Silk_uniform8_iCDF[   8 ];                                              /*   8 */
+extern const SKP_uint8  SKP_Silk_uniform12_iCDF[ 12 ];                                              /*  12 */
 
-/* Tables for LTPScale */
+extern const SKP_uint8  SKP_Silk_LTP_per_index_iCDF[ 3 ];                                           /*   3 */
+extern const SKP_uint8  * const SKP_Silk_LTP_gain_iCDF_ptrs[ NB_LTP_CBKS ];                         /*   3 */
+extern const SKP_int8   * const SKP_Silk_LTP_gain_BITS_Q4_ptrs[ NB_LTP_CBKS ];                      /*   3 */
+extern const SKP_int16  SKP_Silk_LTP_gain_middle_avg_RD_Q14;
+extern const SKP_int8   * const SKP_Silk_LTP_vq_ptrs_Q7[ NB_LTP_CBKS ];                             /* 168 */
+extern const SKP_int8   SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ];                                       /*   3 */
+
+extern const SKP_uint8  SKP_Silk_LTPscale_iCDF[ 3 ];                                                /*   4 */
 extern const SKP_int16  SKP_Silk_LTPScales_table_Q14[ 3 ];
 
-extern const SKP_uint16 SKP_Silk_vadflag_CDF[ 3 ];                                                  /*   3 */
-extern const SKP_int    SKP_Silk_vadflag_offset;
+extern const SKP_uint8  SKP_Silk_vadflag_iCDF[ 2 ];                                                 /*   2 */
 
-extern const SKP_uint16 SKP_Silk_NLSF_interpolation_factor_CDF[ 6 ];
-extern const SKP_int    SKP_Silk_NLSF_interpolation_factor_offset;
+extern const SKP_uint8 SKP_Silk_type_offset_iCDF[4];                                                /*   4 */
+extern const SKP_uint8 SKP_Silk_type_offset_joint_iCDF[4][4];                                       /*  16 */
 
+extern const SKP_uint8  SKP_Silk_NLSF_interpolation_factor_iCDF[ 5 ];                               /*   5 */
+
 /* NLSF codebooks */
 extern const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_16, SKP_Silk_NLSF_CB1_16;
 extern const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_10, SKP_Silk_NLSF_CB1_10;
 
-/* quantization tables */
-extern const SKP_int16 * const SKP_Silk_LTP_vq_ptrs_Q14[ NB_LTP_CBKS ];                             /* 168 */
-extern const SKP_int    SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ];                                       /*   3 */
-
 /* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */
-extern const SKP_int32  TargetRate_table_NB[  TARGET_RATE_TAB_SZ ];
-extern const SKP_int32  TargetRate_table_MB[  TARGET_RATE_TAB_SZ ];
-extern const SKP_int32  TargetRate_table_WB[  TARGET_RATE_TAB_SZ ];
-extern const SKP_int32  TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ];
-extern const SKP_int32  SNR_table_Q1[         TARGET_RATE_TAB_SZ ];
+extern const SKP_uint16  TargetRate_table_NB[  TARGET_RATE_TAB_SZ ];
+extern const SKP_uint16  TargetRate_table_MB[  TARGET_RATE_TAB_SZ ];
+extern const SKP_uint16  TargetRate_table_WB[  TARGET_RATE_TAB_SZ ];
+extern const SKP_uint16  TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ];
+extern const SKP_uint16  SNR_table_Q1[         TARGET_RATE_TAB_SZ ];
 
-extern const SKP_int32  SNR_table_one_bit_per_sample_Q7[ 4 ];
-
 /* Filter coeficicnts for HP filter: 4. Order filter implementad as two biquad filters  */
 extern const SKP_int16  SKP_Silk_SWB_detect_B_HP_Q13[ NB_SOS ][ 3 ];
 extern const SKP_int16  SKP_Silk_SWB_detect_A_HP_Q13[ NB_SOS ][ 2 ];
 
-/* Decoder high-pass filter coefficients for 24 kHz sampling */
-extern const SKP_int16  SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ];                                       /*   2 */
-extern const SKP_int16  SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ];                                   /*   3 */
+/* Decoder high-pass filter coefficients */
+extern const SKP_int32  SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ];                                       /*   2 */
+extern const SKP_int32  SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ];                                   /*   3 */
+extern const SKP_int32  SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ];                                       /*   2 */
+extern const SKP_int32  SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ];                                   /*   3 */
+extern const SKP_int32  SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ];                                       /*   2 */
+extern const SKP_int32  SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ];                                   /*   3 */
+extern const SKP_int32  SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ];                                        /*   2 */
+extern const SKP_int32  SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ];                                    /*   3 */
 
-/* Decoder high-pass filter coefficients for 16 kHz sampling */
-extern const SKP_int16  SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ];                                       /*   2 */
-extern const SKP_int16  SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ];                                   /*   3 */
-
-/* Decoder high-pass filter coefficients for 12 kHz sampling */
-extern const SKP_int16  SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ];                                       /*   2 */
-extern const SKP_int16  SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ];                                   /*   3 */
-
-/* Decoder high-pass filter coefficients for 8 kHz sampling */
-extern const SKP_int16  SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ];                                        /*   2 */
-extern const SKP_int16  SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ];                                    /*   3 */
-
 /* Table for frame termination indication */
-extern const SKP_uint16 SKP_Silk_FrameTermination_CDF[ 3 ];
-extern const SKP_int    SKP_Silk_FrameTermination_offset;
+extern const SKP_uint8  SKP_Silk_FrameTermination_iCDF[ 2 ];
 
 /* Table for random seed */
-extern const SKP_uint16 SKP_Silk_Seed_CDF[ 5 ];
-extern const SKP_int    SKP_Silk_Seed_offset;
+extern const SKP_uint8  SKP_Silk_Seed_iCDF[ 4 ];
 
 /* Quantization offsets */
 extern const SKP_int16  SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ];
--- a/src_common/SKP_Silk_tables_LTP.c
+++ b/src_common/SKP_Silk_tables_LTP.c
@@ -27,298 +27,242 @@
 
 #include "SKP_Silk_tables.h"
 
-const SKP_uint16 SKP_Silk_LTP_per_index_CDF[ 4 ] = {
-         0,  20992,  40788,  65535
+const SKP_uint8 SKP_Silk_LTP_per_index_iCDF[3] = {
+	   188,    111,      0
 };
 
-const SKP_int SKP_Silk_LTP_per_index_CDF_offset = 1;
-
-
-const SKP_uint16 SKP_Silk_LTP_gain_CDF_0[ 11 ] = {
-         0,  49380,  54463,  56494,  58437,  60101,  61683,  62985,
-     64066,  64823,  65535
+const SKP_uint8 SKP_Silk_LTP_gain_iCDF_0[8] = {
+	    83,     65,     48,     34,     24,     15,      7,      0
 };
 
-const SKP_uint16 SKP_Silk_LTP_gain_CDF_1[ 21 ] = {
-         0,  25290,  30654,  35710,  40386,  42937,  45250,  47459,
-     49411,  51348,  52974,  54517,  55976,  57423,  58865,  60285,
-     61667,  62895,  63827,  64724,  65535
+const SKP_uint8 SKP_Silk_LTP_gain_iCDF_1[16] = {
+	   211,    186,    163,    144,    129,    115,    102,     89,
+	    77,     65,     53,     42,     31,     19,      9,      0
 };
 
-const SKP_uint16 SKP_Silk_LTP_gain_CDF_2[ 41 ] = {
-         0,   4958,   9439,  13581,  17638,  21651,  25015,  28025,
-     30287,  32406,  34330,  36240,  38130,  39790,  41281,  42764,
-     44229,  45676,  47081,  48431,  49675,  50849,  51932,  52966,
-     53957,  54936,  55869,  56789,  57708,  58504,  59285,  60043,
-     60796,  61542,  62218,  62871,  63483,  64076,  64583,  65062,
-     65535
+const SKP_uint8 SKP_Silk_LTP_gain_iCDF_2[32] = {
+	   241,    227,    214,    202,    191,    180,    170,    160,
+	   149,    139,    129,    120,    110,    101,     92,     84,
+	    76,     69,     61,     54,     47,     40,     35,     30,
+	    26,     21,     17,     13,     10,      6,      3,      0
 };
 
-const SKP_int SKP_Silk_LTP_gain_CDF_offsets[ 3 ] = {
-         1,     3,     10
-};
+const SKP_int16 SKP_Silk_LTP_gain_middle_avg_RD_Q14 = 14008;
 
-const SKP_int32 SKP_Silk_LTP_gain_middle_avg_RD_Q14 = 11010;
-
-const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_0[ 10 ] = {
-        26,    236,    321,    325,    339,    344,    362,    379,
-       412,    418
+const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_0[8] = {
+	     9,     61,     63,     66,     76,     77,     81,     83
 };
 
-const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_1[ 20 ] = {
-        88,    231,    237,    244,    300,    309,    313,    324,
-       325,    341,    346,    351,    352,    352,    354,    356,
-       367,    393,    396,    406
+const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_1[16] = {
+	    40,     54,     56,     60,     65,     68,     68,     68,
+	    71,     71,     72,     72,     72,     72,     76,     76
 };
 
-const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_2[ 40 ] = {
-       238,    248,    255,    257,    258,    274,    284,    311,
-       317,    326,    326,    327,    339,    349,    350,    351,
-       352,    355,    358,    366,    371,    379,    383,    387,
-       388,    393,    394,    394,    407,    409,    412,    412,
-       413,    422,    426,    432,    434,    449,    454,    455
+const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_2[32] = {
+	    65,     67,     69,     70,     73,     74,     74,     74,
+	    74,     75,     75,     76,     76,     76,     78,     80,
+	    80,     81,     82,     82,     82,     86,     90,     91,
+	    92,     95,     95,     96,     99,    100,    102,    102
 };
 
-const SKP_uint16 * const SKP_Silk_LTP_gain_CDF_ptrs[ NB_LTP_CBKS ] = {
-    SKP_Silk_LTP_gain_CDF_0,
-    SKP_Silk_LTP_gain_CDF_1,
-    SKP_Silk_LTP_gain_CDF_2
+const SKP_uint8 * const SKP_Silk_LTP_gain_iCDF_ptrs[NB_LTP_CBKS] = {
+    SKP_Silk_LTP_gain_iCDF_0,
+    SKP_Silk_LTP_gain_iCDF_1,
+    SKP_Silk_LTP_gain_iCDF_2
 };
 
-const SKP_int16 * const SKP_Silk_LTP_gain_BITS_Q6_ptrs[ NB_LTP_CBKS ] = {
-    SKP_Silk_LTP_gain_BITS_Q6_0,
-    SKP_Silk_LTP_gain_BITS_Q6_1,
-    SKP_Silk_LTP_gain_BITS_Q6_2
+const SKP_int8 * const SKP_Silk_LTP_gain_BITS_Q4_ptrs[NB_LTP_CBKS] = {
+    SKP_Silk_LTP_gain_BITS_Q4_0,
+    SKP_Silk_LTP_gain_BITS_Q4_1,
+    SKP_Silk_LTP_gain_BITS_Q4_2
 };
 
-const SKP_int16 SKP_Silk_LTP_gain_vq_0_Q14[ 10 ][ 5 ] = 
+const SKP_int8 SKP_Silk_LTP_gain_vq_0[8][5] = 
 {
 {
-       594,    984,   2840,   1021,    669
+	     6,      9,     28,      9,      8
 },
 {
-        10,     35,    304,     -1,     23
+	     0,      0,      2,      0,      0
 },
 {
-      -694,   1923,   4603,   2975,   2335
+	    -4,     32,     55,      5,     -1
 },
 {
-      2437,   3176,   3778,   1940,    481
+	    -6,      6,     51,     34,      1
 },
 {
-       214,    -46,   7870,   4406,   -521
+	    27,      8,     43,     26,    -20
 },
 {
-      -896,   4818,   8501,   1623,   -887
+	     2,      5,     11,      5,      3
 },
 {
-      -696,   3178,   6480,   -302,   1081
+	   -23,      8,     35,      4,     22
 },
 {
-       517,    599,   1002,    567,    560
-},
-{
-     -2075,   -834,   4712,   -340,    896
-},
-{
-      1435,   -644,   3993,   -612,  -2063
+	    22,     18,     26,     -6,    -14
 }
 };
 
-const SKP_int16 SKP_Silk_LTP_gain_vq_1_Q14[ 20 ][ 5 ] = 
+const SKP_int8 SKP_Silk_LTP_gain_vq_1[16][5] = 
 {
 {
-      1655,   2918,   5001,   3010,   1775
+	    10,     22,     39,     23,     17
 },
 {
-       113,    198,    856,    176,    178
+	     5,     29,     56,     38,     -8
 },
 {
-      -843,   2479,   7858,   5371,    574
+	    20,     40,     54,      4,     -5
 },
 {
-        59,   5356,   7648,   2850,   -315
+	     0,      1,      7,      0,      1
 },
 {
-      3840,   4851,   6527,   1583,  -1233
+	   -20,     12,     67,     46,      9
 },
 {
-      1620,   1760,   2330,   1876,   2045
+	    -9,     51,     75,     12,    -12
 },
 {
-      -545,   1854,  11792,   1547,   -307
+	     6,    -11,     84,     41,    -14
 },
 {
-      -604,    689,   5369,   5074,   4265
+	    -8,     15,     96,      5,      3
 },
 {
-       521,  -1331,   9829,   6209,  -1211
+	    41,      5,     32,      4,     10
 },
 {
-     -1315,   6747,   9929,  -1410,    546
+	   -13,     50,     73,    -18,     18
 },
 {
-       117,   -144,   2810,   1649,   5240
+	     7,    -14,     56,     47,     10
 },
 {
-      5392,   3476,   2425,    -38,    633
+	    -3,     -2,     73,      8,     10
 },
 {
-        14,   -449,   5274,   3547,   -171
+	   -11,     30,     42,     -7,     14
 },
 {
-       -98,    395,   9114,   1676,    844
+	   -23,     42,     57,     15,     21
 },
 {
-      -908,   3843,   8861,   -957,   1474
+	    -1,      0,     21,     23,     38
 },
 {
-       396,   6747,   5379,   -329,   1269
-},
-{
-      -335,   2830,   4281,    270,    -54
-},
-{
-      1502,   5609,   8958,   6045,   2059
-},
-{
-      -370,    479,   5267,   5726,   1174
-},
-{
-      5237,  -1144,   6510,    455,    512
+	    -1,     -6,     37,     20,     -3
 }
 };
 
-const SKP_int16 SKP_Silk_LTP_gain_vq_2_Q14[ 40 ][ 5 ] = 
+const SKP_int8 SKP_Silk_LTP_gain_vq_2[32][5] = 
 {
 {
-      -278,    415,   9345,   7106,   -431
+	    -6,     59,     68,      3,      0
 },
 {
-     -1006,   3863,   9524,   4724,   -871
+	    -6,     36,     72,     29,     -6
 },
 {
-      -954,   4624,  11722,    973,   -300
+	    -3,      1,     93,     24,      6
 },
 {
-      -117,   7066,   8331,   1959,   -901
+	    -4,     16,     52,     39,     19
 },
 {
-       593,   3412,   6070,   4914,   1567
+	     0,    -11,     80,     52,      1
 },
 {
-        54,    -51,  12618,   4228,   -844
+	     3,      4,     19,      3,      6
 },
 {
-      3157,   4822,   5229,   2313,    717
+	    -3,     35,     98,      5,    -13
 },
 {
-      -244,   1161,  14198,    779,     69
+	    -9,     16,     75,     60,    -15
 },
 {
-     -1218,   5603,  12894,  -2301,   1001
+	     9,    -21,     84,     71,    -17
 },
 {
-      -132,   3960,   9526,    577,   1806
+	    11,    -20,    106,     44,    -13
 },
 {
-     -1633,   8815,  10484,  -2452,    895
+	     3,      9,     98,     33,    -23
 },
 {
-       235,    450,   1243,    667,    437
+	    22,     -4,     65,     51,    -15
 },
 {
-       959,  -2630,  10897,   8772,  -1852
+	    -6,     11,    109,      7,      2
 },
 {
-      2420,   2046,   8893,   4427,  -1569
+	    21,     38,     41,     22,      4
 },
 {
-        23,   7091,   8356,  -1285,   1508
+	   -19,     72,     83,    -22,     13
 },
 {
-     -1133,    835,   7662,   6043,   2800
+	     1,     24,     77,     -5,     17
 },
 {
-       439,    391,  11016,   2253,   1362
+	     4,    -12,    121,     19,     -6
 },
 {
-     -1020,   2876,  13436,   4015,  -3020
+	    -6,     25,    115,    -17,      7
 },
 {
-      1060,  -2690,  13512,   5565,  -1394
+	    27,     11,     84,     12,    -27
 },
 {
-     -1420,   8007,  11421,   -152,  -1672
+	   -13,     49,    105,    -24,      8
 },
 {
-      -893,   2895,  15434,  -1490,    159
+	   -21,     43,     91,     -4,     15
 },
 {
-     -1054,    428,  12208,   8538,  -3344
+	     7,     49,     88,    -25,     -4
 },
 {
-      1772,  -1304,   7593,   6185,    561
+	     0,      5,    128,     -5,     -4
 },
 {
-       525,  -1207,   6659,  11151,  -1170
+	    -9,     67,     95,     -4,    -23
 },
 {
-       439,   2667,   4743,   2359,   5515
+	     6,    -10,     45,     93,     -9
 },
 {
-      2951,   7432,   7909,   -230,  -1564
+	    -8,     95,     43,    -11,      6
 },
 {
-       -72,   2140,   5477,   1391,   1580
+	    17,    -19,    101,     77,    -42
 },
 {
-       476,  -1312,  15912,   2174,  -1027
+	    35,     74,     19,     -7,      1
 },
 {
-      5737,    441,   2493,   2043,   2757
+	     3,     12,    128,     27,    -39
 },
 {
-       228,    -43,   1803,   6663,   7064
+	     1,     -2,     14,     80,     31
 },
 {
-      4596,   9182,   1917,   -200,    203
+	    86,     10,     12,     -3,      3
 },
 {
-      -704,  12039,   5451,  -1188,    542
-},
-{
-      1782,  -1040,  10078,   7513,  -2767
-},
-{
-     -2626,   7747,   9019,     62,   1710
-},
-{
-       235,   -233,   2954,  10921,   1947
-},
-{
-     10854,   2814,   1232,   -111,    222
-},
-{
-      2267,   2778,  12325,    156,  -1658
-},
-{
-     -2950,   8095,  16330,    268,  -3626
-},
-{
-        67,   2083,   7950,    -80,  -2432
-},
-{
-       518,    -66,   1718,    415,  11435
+	     5,     -3,     14,      7,     85
 }
 };
 
-const SKP_int16 * const SKP_Silk_LTP_vq_ptrs_Q14[ NB_LTP_CBKS ] = {
-    &SKP_Silk_LTP_gain_vq_0_Q14[ 0 ][ 0 ],
-    &SKP_Silk_LTP_gain_vq_1_Q14[ 0 ][ 0 ],
-    &SKP_Silk_LTP_gain_vq_2_Q14[ 0 ][ 0 ]
+const SKP_int8 * const SKP_Silk_LTP_vq_ptrs_Q7[NB_LTP_CBKS] = {
+    (SKP_int8 *)&SKP_Silk_LTP_gain_vq_0[0][0],
+    (SKP_int8 *)&SKP_Silk_LTP_gain_vq_1[0][0],
+    (SKP_int8 *)&SKP_Silk_LTP_gain_vq_2[0][0]
 };
  
-const SKP_int SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ] = {
-    10, 20, 40 
+const SKP_int8 SKP_Silk_LTP_vq_sizes[NB_LTP_CBKS] = {
+    8, 16, 32 
 };
--- /dev/null
+++ b/src_common/SKP_Silk_tables_NLSF_CB.h
@@ -1,0 +1,63 @@
+/***********************************************************************
+Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
+Redistribution and use in source and binary forms, with or without 
+modification, (subject to the limitations in the disclaimer below) 
+are permitted provided that the following conditions are met:
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright 
+notice, this list of conditions and the following disclaimer in the 
+documentation and/or other materials provided with the distribution.
+- Neither the name of Skype Limited, nor the names of specific 
+contributors, may be used to endorse or promote products derived from 
+this software without specific prior written permission.
+NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
+BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+***********************************************************************/
+
+#ifndef SKP_SILK_TABLES_NLSF_CB
+#define SKP_SILK_TABLES_NLSF_CB
+
+#include "SKP_Silk_define.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define NLSF_MSVQ_CB0_10_STAGES       7
+#define NLSF_MSVQ_CB0_10_VECTORS      128
+#define NLSF_MSVQ_CB1_10_STAGES       7
+#define NLSF_MSVQ_CB1_10_VECTORS      80
+#define NLSF_MSVQ_CB0_16_STAGES       10
+#define NLSF_MSVQ_CB0_16_VECTORS      152
+#define NLSF_MSVQ_CB1_16_STAGES       10
+#define NLSF_MSVQ_CB1_16_VECTORS      104
+
+/* NLSF codebook entropy coding tables */
+extern const SKP_uint8         SKP_Silk_NLSF_MSVQ_CB0_10_CDF[            NLSF_MSVQ_CB0_10_VECTORS ];
+extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[  NLSF_MSVQ_CB0_10_STAGES  ];
+extern const SKP_uint8         SKP_Silk_NLSF_MSVQ_CB1_10_CDF[            NLSF_MSVQ_CB1_10_VECTORS ];
+extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[  NLSF_MSVQ_CB1_10_STAGES  ];
+extern const SKP_uint8         SKP_Silk_NLSF_MSVQ_CB0_16_CDF[            NLSF_MSVQ_CB0_16_VECTORS ];
+extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[  NLSF_MSVQ_CB0_16_STAGES  ];
+extern const SKP_uint8         SKP_Silk_NLSF_MSVQ_CB1_16_CDF[            NLSF_MSVQ_CB1_16_VECTORS ];
+extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[  NLSF_MSVQ_CB1_16_STAGES  ];
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
--- a/src_common/SKP_Silk_tables_NLSF_CB0_10.c
+++ b/src_common/SKP_Silk_tables_NLSF_CB0_10.c
@@ -28,899 +28,881 @@
 /**********************************************/
 /* This file has been automatically generated */
 /*                                            */
-/* ROM usage:  0.31 + 1.43 kB                 */
+/* ROM usage:  0.16 + 1.43 kB                 */
 /**********************************************/
 
 #include "SKP_Silk_structs.h"
 #include "SKP_Silk_tables.h"
-#include "SKP_Silk_tables_NLSF_CB0_10.h"
+#include "SKP_Silk_tables_NLSF_CB.h"
 
-const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS + NLSF_MSVQ_CB0_10_STAGES ] =
+const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS ] =
 {
+          244,
+          236,
+          228,
+          220,
+          213,
+          207,
+          201,
+          195,
+          190,
+          184,
+          179,
+          173,
+          168,
+          163,
+          158,
+          153,
+          148,
+          143,
+          139,
+          134,
+          129,
+          125,
+          120,
+          116,
+          112,
+          107,
+          103,
+           99,
+           95,
+           91,
+           88,
+           84,
+           80,
+           77,
+           73,
+           69,
+           66,
+           62,
+           59,
+           55,
+           52,
+           48,
+           45,
+           42,
+           39,
+           36,
+           32,
+           29,
+           27,
+           24,
+           21,
+           18,
+           16,
+           13,
+           11,
+            9,
+            7,
+            6,
+            5,
+            4,
+            3,
+            2,
+            1,
             0,
-         2433,
-         4865,
-         7096,
-         8971,
-        10549,
-        12126,
-        13636,
-        15147,
-        16657,
-        18104,
-        19550,
-        20996,
-        22381,
-        23766,
-        25093,
-        26419,
-        27745,
-        29016,
-        30232,
-        31448,
-        32664,
-        33780,
-        34895,
-        36010,
-        37078,
-        38146,
-        39169,
-        40192,
-        41215,
-        42194,
-        43173,
-        44153,
-        45091,
-        46028,
-        46966,
-        47904,
-        48842,
-        49740,
-        50638,
-        51498,
-        52358,
-        53218,
-        54042,
-        54865,
-        55689,
-        56478,
-        57266,
-        58055,
-        58810,
-        59565,
-        60321,
-        61044,
-        61652,
-        62260,
-        62868,
-        63337,
-        63683,
-        64001,
-        64257,
-        64512,
-        64768,
-        65024,
-        65279,
-        65535,
+          235,
+          216,
+          198,
+          180,
+          162,
+          145,
+          129,
+          112,
+           96,
+           80,
+           65,
+           50,
+           36,
+           22,
+           10,
             0,
-         5110,
-        10220,
-        15114,
-        19800,
-        24097,
-        28394,
-        32691,
-        36988,
-        41285,
-        45225,
-        48999,
-        52612,
-        56226,
-        59839,
-        62749,
-        65535,
+          222,
+          189,
+          155,
+          123,
+           92,
+           62,
+           31,
             0,
-         8964,
-        17928,
-        26148,
-        34368,
-        42588,
-        50459,
-        57997,
-        65535,
+          221,
+          187,
+          154,
+          122,
+           91,
+           60,
+           29,
             0,
-        10142,
-        19048,
-        27576,
-        36104,
-        44271,
-        52091,
-        58959,
-        65535,
+          220,
+          186,
+          154,
+          122,
+           90,
+           60,
+           29,
             0,
-         8874,
-        17371,
-        25869,
-        34366,
-        42158,
-        49951,
-        57743,
-        65535,
+          223,
+          189,
+          156,
+          124,
+           92,
+           60,
+           29,
             0,
-         8970,
-        17560,
-        25786,
-        34012,
-        42238,
-        50115,
-        57992,
-        65535,
-            0,
-         4875,
-         9750,
-        14418,
-        19086,
-        23754,
-        28422,
-        32892,
-        37173,
-        41272,
-        45371,
-        49297,
-        52896,
-        56496,
-        59797,
-        63098,
-        65535
+          236,
+          219,
+          201,
+          184,
+          168,
+          151,
+          134,
+          117,
+          101,
+           85,
+           69,
+           53,
+           38,
+           24,
+           11,
+            0
 };
 
-const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ] =
+const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ] =
 {
      &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[   0 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  65 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  82 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  91 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 100 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 109 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 118 ]
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  64 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  80 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  88 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[  96 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 104 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 112 ]
 };
 
-const SKP_int SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx[ NLSF_MSVQ_CB0_10_STAGES ] =
-{
-      22,
-       8,
-       5,
-       5,
-       5,
-       5,
-       8
-};
-
 const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_10_rates_Q4[ NLSF_MSVQ_CB0_10_VECTORS ] =
 {
-               76,               76,
-               78,               82,
-               86,               86,
-               87,               87,
+               71,               79,
+               80,               81,
+               84,               85,
                87,               88,
                88,               88,
                89,               89,
                90,               90,
-               90,               91,
+               91,               91,
                92,               92,
-               92,               94,
+               92,               92,
+               93,               93,
                94,               94,
-               95,               95,
+               94,               95,
                96,               96,
                96,               97,
-               97,               97,
+               97,               98,
                98,               98,
                98,               98,
-               98,               99,
+               99,               99,
+               99,               99,
                99,              100,
-              100,              100,
-              101,              101,
-              101,              102,
+              100,              101,
               102,              102,
-              103,              103,
-              103,              104,
-              108,              108,
-              108,              114,
-              121,              123,
+              102,              103,
+              104,              104,
+              105,              105,
+              105,              108,
+              111,              111,
+              114,              123,
               128,              128,
               128,              128,
               128,              128,
-               59,               59,
-               60,               61,
+               58,               60,
+               61,               61,
+               62,               63,
                63,               63,
-               63,               63,
-               63,               65,
-               66,               67,
-               67,               67,
-               72,               73,
-               46,               46,
-               48,               48,
-               48,               49,
-               50,               50,
-               43,               46,
+               64,               64,
+               65,               66,
+               67,               68,
+               69,               76,
                47,               47,
-               48,               49,
-               52,               53,
-               46,               47,
-               47,               47,
+               47,               48,
                49,               49,
                49,               49,
                46,               47,
+               47,               48,
+               49,               49,
+               49,               50,
+               45,               47,
                48,               48,
                48,               49,
                49,               50,
-               60,               60,
-               61,               61,
-               61,               61,
+               47,               47,
+               47,               48,
+               48,               48,
+               49,               50,
+               59,               62,
                62,               63,
+               63,               63,
+               63,               63,
                64,               64,
-               65,               67,
-               67,               69,
-               69,               76
+               64,               64,
+               65,               68,
+               68,               73
 };
 
 const SKP_int SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min_Q15[ 10 + 1 ] =
 {
-              553,
-                5,
+              550,
+                3,
                22,
-               19,
+               18,
                 3,
                 3,
-              180,
+              181,
               162,
-              306,
-              171,
-              991
+              310,
+              172,
+              982
 };
 
 const SKP_int8 SKP_Silk_NLSF_MSVQ_CB0_10_Q8[ 10 * NLSF_MSVQ_CB0_10_VECTORS ] =
 {
-             -108,              -90,
-              -71,              -49,
-              -24,               -5,
-               21,               48,
-               75,               99,
-             -108,              -99,
-              -76,              -57,
-              -39,               -7,
-               20,               50,
-               76,               98,
-             -105,              -97,
-              -83,              -49,
-              -19,               -7,
-               27,               47,
-               67,              102,
-              -97,              -90,
-              -75,              -49,
-               -6,                6,
-               27,               55,
-               73,               95,
-              -95,              -89,
-              -72,              -40,
-              -28,              -11,
-               21,               37,
-               70,               86,
-             -103,              -97,
-              -82,              -48,
-                8,               21,
-               36,               56,
-               74,              101,
-             -103,              -96,
-              -81,              -33,
-              -19,               -3,
-               28,               41,
-               86,              102,
-             -111,             -102,
-              -85,              -62,
-              -38,              -21,
-               11,               41,
-               66,               95,
-              -88,              -82,
-              -63,              -28,
-              -10,                1,
-               35,               53,
-               73,              103,
-             -101,              -96,
-              -67,              -17,
-               -4,               10,
-               30,               45,
-               86,              103,
-              -94,              -87,
-              -70,              -55,
-              -44,              -25,
-               37,               55,
-               73,              104,
+             -109,              -96,
+              -74,              -56,
+              -35,              -11,
+               17,               45,
+               74,              100,
               -98,              -92,
-              -71,              -37,
-              -23,              -10,
-               37,               54,
-               73,              104,
-             -114,             -108,
-              -79,              -49,
-              -20,                2,
-               29,               54,
-               80,              103,
-             -107,              -99,
-              -86,              -60,
-               -7,               11,
-               27,               49,
-               67,               95,
-             -100,              -94,
               -76,              -40,
-               -5,                6,
-               26,               43,
-               62,              102,
-              -88,              -79,
-              -64,              -44,
-              -28,              -15,
-               26,               43,
-               64,              104,
-             -103,              -98,
-              -71,              -26,
-              -14,                4,
-               23,               43,
-               72,               87,
-             -110,             -103,
-              -83,              -58,
-              -27,               -5,
-               16,               35,
-               58,               92,
-             -103,              -94,
-              -79,              -62,
+              -10,                0,
+               28,               47,
+               65,              103,
+             -107,              -92,
+              -69,              -48,
+              -16,                4,
+               29,               49,
+               77,              101,
+             -104,              -94,
+              -81,              -60,
+              -24,              -10,
+               13,               49,
+               67,               94,
+             -104,              -97,
+              -81,              -51,
+                2,               18,
+               33,               53,
+               70,              101,
+             -104,              -96,
+              -82,              -54,
+              -10,                3,
+               26,               51,
+               70,               89,
+             -109,              -99,
+              -84,              -53,
+              -33,              -18,
+               22,               36,
+               77,               96,
+              -92,              -86,
+              -70,              -37,
+              -25,              -10,
+               24,               40,
+               79,               95,
+             -102,              -95,
+              -78,              -47,
+              -32,              -17,
+               34,               52,
+               71,              105,
+             -113,             -106,
+              -85,              -60,
+              -34,              -15,
+               15,               40,
+               63,               93,
+              -99,              -94,
+              -64,              -18,
+               -6,               10,
+               32,               47,
+               88,              104,
+             -115,             -108,
+              -79,              -48,
+              -21,                0,
+               28,               55,
+               77,              101,
+              -94,              -88,
+              -69,              -32,
+                5,               16,
+               37,               57,
+               75,              103,
+             -110,             -101,
+              -87,              -58,
+              -12,                1,
+               19,               38,
+               65,              101,
+             -103,              -96,
+              -80,              -40,
+              -26,              -11,
+                8,               26,
+               78,               93,
+             -104,              -98,
+              -83,              -35,
               -21,               -7,
-               12,               52,
-               69,               88,
-             -107,              -98,
-              -84,              -44,
-              -29,              -12,
-                9,               28,
-               73,               90,
-              -99,              -93,
-              -68,              -32,
-              -19,               -5,
-               12,               28,
-               86,              104,
-             -100,              -91,
-              -75,              -55,
-              -40,              -26,
-               20,               40,
-               58,              101,
-             -100,              -94,
-              -73,              -60,
-              -49,               -1,
-               18,               36,
-               83,               96,
-             -106,              -97,
-              -69,              -47,
-              -25,               11,
-               31,               46,
-               65,               89,
-              -93,              -87,
-              -69,              -46,
-              -32,              -18,
-               -2,               14,
-               74,              103,
-              -93,              -87,
-              -65,              -29,
-                6,               18,
-               38,               57,
-               74,              102,
-              -92,              -85,
-              -66,              -54,
-              -43,               -4,
-               32,               45,
+               30,               43,
                88,              104,
-             -108,              -99,
-              -85,              -50,
-              -35,              -19,
-               29,               41,
-               84,              102,
-              -97,              -90,
-              -73,              -57,
-              -48,              -24,
-               21,               35,
-               79,               94,
-              -84,              -76,
-              -57,              -40,
-              -29,              -11,
-               41,               60,
-               80,              104,
-             -100,              -94,
-              -75,              -64,
-              -51,                2,
-               20,               45,
-               68,               85,
-             -100,              -94,
-              -62,              -41,
-              -30,               13,
-               31,               52,
+             -105,             -100,
+              -78,              -21,
+               -7,                6,
+               28,               45,
+               77,               92,
+             -102,              -95,
+              -71,              -34,
+              -21,               -1,
+               22,               41,
+               66,               83,
+              -98,              -91,
+              -71,              -60,
+              -49,               -4,
+               20,               36,
                85,              101,
-              -95,              -86,
-              -70,              -52,
-              -38,              -23,
-               18,               64,
-               83,              101,
-             -114,             -108,
-              -94,              -69,
-              -31,               -5,
-               24,               46,
-               72,               99,
-             -100,              -95,
-              -54,              -38,
-              -26,              -10,
-                3,               51,
-               75,               89,
-             -104,              -98,
-              -73,              -31,
-               18,               31,
-               46,               65,
-               82,              105,
-              -90,              -84,
-              -62,              -51,
-              -38,                3,
-               25,               44,
-               72,               86,
+              -86,              -80,
+              -61,              -28,
+              -10,                1,
+               35,               54,
+               74,              103,
+             -107,             -100,
+              -81,              -45,
+              -35,                2,
+               25,               45,
+               83,               99,
+             -103,              -97,
+              -73,              -33,
+               17,               30,
+               45,               64,
+               81,              105,
+              -86,              -79,
+              -59,              -41,
+              -29,              -14,
+               41,               59,
+               78,              105,
+              -87,              -76,
+              -62,              -45,
+              -23,              -10,
+               20,               44,
+               63,               96,
+             -108,              -99,
+              -73,              -53,
+              -28,                7,
+               27,               42,
+               60,               94,
+              -95,              -87,
+              -72,              -54,
+              -40,              -26,
+               24,               42,
+               60,              102,
+              -96,              -89,
+              -73,              -59,
+              -49,              -25,
+               31,               45,
+               80,               96,
+             -100,              -94,
+              -77,              -67,
+              -56,              -14,
+               41,               59,
+               85,              104,
+              -96,              -91,
+              -65,              -30,
+              -18,               -4,
+               14,               28,
+               82,              105,
+             -102,              -95,
+              -59,              -41,
+              -29,               10,
+               31,               52,
+               83,               99,
+             -103,              -97,
+              -78,              -66,
+              -54,                1,
+               22,               42,
+               70,               87,
+             -109,             -101,
+              -86,              -70,
+              -57,              -17,
+               19,               41,
+               75,               98,
+              -87,              -80,
+              -67,              -51,
+               -7,                6,
+               26,               54,
+               74,               94,
+             -101,              -91,
+              -76,              -52,
+              -27,              -14,
+                8,               27,
+               54,               96,
+              -99,              -93,
+              -65,              -51,
+              -39,              -23,
+              -10,               48,
+               79,               95,
+             -100,              -95,
+              -54,              -37,
+              -25,               -9,
+                5,               51,
+               74,               89,
+             -113,             -107,
+              -93,              -70,
+              -27,                1,
+               23,               46,
+               72,               96,
+              -96,              -86,
+              -67,              -40,
+              -22,              -10,
+               21,               62,
+               80,              100,
+              -93,              -87,
+              -65,              -49,
+              -37,              -10,
+               11,               30,
+               67,               82,
+             -106,              -97,
+              -83,              -64,
+              -51,              -33,
+               20,               52,
+               72,              100,
+              -93,              -87,
+              -65,              -55,
+              -41,                6,
+               27,               46,
+               70,               84,
              -109,             -103,
-              -83,              -29,
-                2,               11,
-               38,               53,
-               84,              101,
-              -86,              -75,
-              -61,              -46,
-              -17,               -4,
-               18,               52,
-               69,               91,
-             -109,             -100,
-              -83,              -54,
-              -10,                1,
-               19,               35,
-               81,              100,
-             -101,              -95,
-              -78,              -68,
-              -58,              -16,
-               39,               56,
-               85,              103,
-              -87,              -80,
-              -58,              -41,
-              -29,               -7,
-               14,               30,
-               86,              104,
+              -86,              -37,
+                1,               11,
+               34,               50,
+               84,              100,
              -105,              -99,
               -61,               -7,
-                6,               21,
-               44,               61,
-               87,              102,
-              -86,              -80,
-              -48,              -30,
-              -18,                5,
-               25,               43,
-               82,               97,
-              -98,              -92,
-              -66,              -49,
-              -36,              -13,
-                0,               35,
-               59,               79,
-              -98,              -93,
-              -66,              -52,
-              -40,              -24,
-              -12,               46,
-               81,               98,
-             -107,              -95,
-              -64,              -39,
-              -14,               14,
-               42,               65,
-               88,              106,
-             -104,              -96,
-              -82,              -65,
-              -54,              -35,
-               21,               51,
-               72,               99,
-              -94,              -87,
-              -74,              -59,
-              -21,              -10,
-               14,               35,
-               58,               96,
-             -108,             -100,
-              -86,              -71,
-              -59,              -16,
-               20,               41,
-               74,               97,
+                6,               20,
+               43,               61,
+               86,              101,
+              -96,              -88,
+              -73,              -54,
+              -40,              -25,
+               18,               64,
+               82,              100,
+              -90,              -83,
+              -67,              -56,
+              -45,              -18,
+               47,               67,
+               85,              106,
              -103,              -95,
               -80,              -57,
               -45,              -24,
-               -6,               19,
-               66,               89,
-              -99,              -93,
-              -74,              -65,
-              -50,               20,
-               40,               57,
-               85,               98,
-             -102,              -96,
-              -41,              -21,
+               -4,               19,
+               70,               92,
+              -93,              -87,
+              -69,              -47,
+              -34,              -20,
+               -5,               12,
+               75,              106,
+              -87,              -81,
+              -59,              -42,
+              -28,               -8,
+               10,               30,
+               86,              104,
+             -107,             -100,
+              -85,              -60,
+               -8,               28,
+               42,               61,
+               80,               98,
+              -88,              -81,
+              -62,              -51,
+              -37,                9,
+               37,               52,
+               88,              103,
+              -99,              -94,
+              -74,              -66,
+              -51,               19,
+               41,               57,
+               86,              101,
+             -103,              -96,
+              -76,              -52,
+              -39,              -18,
+               -1,               34,
+               56,               79,
+             -104,              -98,
+              -44,              -21,
               -11,                9,
-               25,               59,
-               83,               98,
-              -94,              -87,
-              -71,              -59,
-              -47,               -8,
-               50,               68,
-               86,              105,
-             -108,             -101,
-              -84,              -59,
-              -11,               29,
-               44,               61,
-               82,               99,
-              -98,              -94,
-              -82,              -73,
-              -26,                6,
-               30,               53,
-               79,               98,
-              -85,              -71,
-              -37,              -12,
-                3,               22,
-               41,               61,
-               85,              100,
-              -85,              -79,
-              -66,              -55,
-              -19,               17,
-               33,               56,
-               83,               97,
-              -72,              -66,
-              -60,              -57,
-              -50,                4,
-               26,               52,
-               79,              103,
-              -95,              -74,
-              -31,              -18,
-              -11,               -6,
-                9,               52,
-               77,              100,
-              -78,              -75,
+               25,               55,
+               80,               95,
+              -84,              -76,
+              -43,              -28,
+              -15,                8,
+               28,               47,
+               79,               95,
+             -106,              -95,
+              -63,              -39,
+              -12,               19,
+               45,               68,
+               90,              107,
+              -83,              -79,
+              -61,              -49,
+              -41,              -22,
+               26,               40,
+               81,              105,
+              -98,              -93,
+              -81,              -73,
+              -27,                8,
+               28,               58,
+               78,               95,
+              -85,              -72,
+              -35,              -11,
+                4,               22,
+               40,               61,
+               83,               99,
+              -74,              -70,
+              -62,              -37,
+              -30,              -17,
+               19,               57,
+               75,               97,
+              -95,              -75,
+              -31,              -22,
+              -16,              -11,
+                5,               56,
+               80,              100,
+              -82,              -79,
+              -75,              -72,
+              -23,              -16,
+               24,               49,
+               78,              105,
+              -74,              -70,
+              -61,              -50,
+              -44,                6,
+               29,               50,
+               76,               99,
+              -76,              -73,
               -68,              -51,
-              -43,              -38,
-               12,               45,
-               74,              100,
-              -99,              -68,
-              -40,              -33,
-              -24,              -16,
-               23,               58,
-               79,               97,
-              -99,              -48,
-              -42,              -40,
-              -36,              -19,
-               26,               52,
-               80,              105,
-              -73,              -69,
-              -62,              -43,
-              -31,              -25,
-               21,               48,
-               76,              101,
-                8,                7,
-                5,                2,
-                1,               -1,
-                1,                0,
-                0,               -1,
-                0,               -1,
-               -1,                0,
-               -2,               -4,
-               -8,              -11,
-               -2,               -4,
-                3,                2,
-               -2,               -6,
-               -4,               -7,
-               -2,               -2,
-               -6,                5,
-                0,               -1,
-                2,                8,
-                5,                3,
-                2,               -2,
-                8,                5,
-                0,               -1,
+              -46,              -40,
+               14,               46,
+               75,              101,
+              -99,              -51,
+              -42,              -39,
+              -34,              -25,
+               27,               53,
+               79,              103,
+                2,                0,
+                4,               10,
+                6,                5,
+                3,                1,
+                3,                0,
                 0,                0,
-               -2,               -4,
-               -1,               -2,
-               -9,              -13,
-               -1,               -1,
-               -4,               -1,
-                9,                4,
-                0,               -3,
+               -3,               -6,
+               -8,              -10,
+                1,               -2,
+               -5,                2,
+               -2,               -3,
+               -3,               -5,
                -9,                4,
-                0,               -1,
-               -2,                1,
-               -2,               -4,
-               11,                7,
-                4,                3,
-                0,               -1,
-               -3,              -11,
-                4,                3,
-                1,                5,
-                1,               -2,
-                1,                0,
-               12,                8,
-                5,                3,
-               -1,                2,
-               -1,               -4,
-               -5,               -6,
-              -13,                5,
-                3,                1,
-                0,                0,
-                1,                0,
-               -1,               -2,
-               -5,               -5,
-              -10,                8,
-                2,                0,
-                3,               -1,
-                1,                0,
+               -2,               -2,
+                0,               -4,
+                2,                1,
+                1,                1,
+               -1,               -1,
+               -2,               -5,
+               -8,              -13,
+               -1,               -1,
+               -4,               -5,
+                9,                6,
+                5,                2,
+               -2,               -1,
+               -1,               -1,
+               -2,               -2,
+               -3,               -7,
+              -13,                4,
                 0,               -3,
-               -5,               -2,
-               -5,               -8,
+                1,                1,
+               -1,               -1,
+               -3,               -6,
                10,                5,
-                1,                0,
+                7,                4,
+                8,                8,
+                6,                1,
                 1,               -2,
-               -3,               -5,
-               -9,               12,
-                6,                2,
+               -2,                1,
+                0,               -2,
+                1,                1,
+                1,                2,
+                3,               -1,
+               -3,               -8,
+              -13,                6,
+                1,                0,
                 3,                2,
-                5,               -1,
-               -1,               12,
-                8,                4,
                 0,               -1,
-               -5,               -7,
-                6,                3,
-               -2,               -3,
-                3,                1,
-               -2,                4,
-               -8,                7,
-                2,                1,
-                2,               -1,
-               -2,                0,
-               -2,                0,
-               -3,               -3,
-               -3,                5,
-                4,                2,
-                2,                0,
-               -2,               -4,
-                1,                1,
-               -1,               -3,
-               -3,               -7,
-                6,                2,
+               -6,              -12,
+                9,                4,
+               -5,               -5,
+              -10,                5,
                 3,                2,
-               -1,               -1,
-                2,                0,
-                0,                6,
-                3,                6,
+               -1,               -2,
+                3,               -1,
+                1,                1,
                 6,                3,
-                4,                5,
-                2,                2,
-                5,                2,
-                1,                2,
+                4,                2,
+               -2,               13,
+                7,                3,
+                1,               -1,
                 0,                1,
-                3,                3,
-                2,               -2,
-               -2,                1,
-                0,               -4,
-               -4,               -7,
+               -3,               13,
+                8,                5,
+                3,               -1,
+                0,               -1,
+               -5,              -14,
+                3,               -1,
                 0,                0,
+                2,                4,
+               -5,               -6,
+                4,                4,
+               -2,               -2,
+                4,                0,
+               -2,                4,
+               -7,                8,
                 4,                2,
                 0,               -2,
-               -2,               -7,
-               -1,                6,
-               -4,               -4,
-               -5,               -5,
-               -4,                0,
-               -1,               -2,
-               -2,                2,
+               -1,                0,
+               -3,                0,
+                0,                0,
+               -2,                4,
+                4,                4,
+                3,                0,
+                3,                5,
+                0,                0,
+               -1,               -1,
+               -3,               -4,
+               -4,               -9,
+                1,                0,
                -1,               -1,
-                0,                0,
+               -2,                4,
+                2,                0,
+               -4,               -1,
+               -6,               -4,
+                4,                4,
+                2,                1,
                -1,               -3,
-              -10,                3,
-                0,               -3,
-                0,                0,
-                0,                2,
-                0,               -1,
-               -1,               -2,
-               -7,                3,
-                0,                1,
+                5,                2,
                -1,                0,
-               -1,                2,
-                3,                2,
-               -2,               -6,
-               -1,               -1,
-               -2,               -1,
                -4,               -4,
-               -1,               -4,
-                3,               -1,
-                0,                0,
-               -3,               -5,
-                5,                1,
-                1,               -1,
+               -6,               -2,
+               -2,               -2,
+                5,                2,
+                0,                1,
                 2,                2,
-                1,                1,
-                1,                5,
-                2,                1,
-                2,               -1,
-                4,                1,
-               -2,               -2,
-               -3,                2,
-                0,                0,
-               -2,                5,
+                0,               -6,
+                3,                5,
+                1,                1,
+               -2,               -4,
+               -1,               -2,
+               10,                3,
                 1,                2,
-               -2,               -2,
-                7,               -1,
+               -1,               -1,
+                1,               -1,
                 0,                0,
+                0,               -3,
+               -5,               -1,
+               -5,                7,
+                4,                2,
+                1,                1,
+                1,                0,
+                0,               -4,
                 0,                0,
-               -1,               -2,
-                3,                4,
-                2,               -1,
-               -2,                0,
-               -3,                2,
-                2,                1,
-                0,                0,
-                0,               -1,
-               -2,                0,
-                5,                0,
-               -1,                1,
+               -3,                5,
                -2,               -2,
-                2,                1,
-                0,                3,
-                0,               -3,
+               -2,               -1,
+                1,                1,
+               -2,               -4,
+               -5,                2,
+               -1,               -1,
+                3,                3,
+                3,                2,
+                4,                3,
+               -1,               -3,
+                0,                0,
+                0,               -2,
+               -3,               -4,
                 1,               -1,
-               -1,                0,
-                2,                1,
-                3,                1,
-                0,                3,
+               -1,               -6,
+                3,                3,
                 1,                2,
-                2,                2,
-                0,                2,
                 1,                0,
-               -2,               -3,
-               -1,               -2,
-                1,                0,
-                2,                0,
+               -4,               -2,
+                1,               -2,
                -3,               -3,
-               -2,                2,
-                0,                1,
-                1,                0,
-               -5,                3,
-                0,                1,
-                0,                0,
                 2,                1,
                 1,                0,
-               -1,               -5,
-                0,                2,
-               -2,                0,
-                0,                1,
-               -2,               -2,
-               -2,               -1,
-                1,               -3,
-                0,                0,
-               -2,               -3,
-               -3,                3,
-                0,                0,
-               -2,               -1,
-                0,                0,
-               -1,                0,
+                0,               -1,
+                6,                2,
+                2,                3,
+                2,               -3,
+               -4,                4,
                 2,                1,
-                2,                0,
-                0,                3,
-                2,                0,
-                0,                2,
+                3,                1,
+                0,                0,
+               -6,               -1,
+                1,                1,
+                1,                4,
+                1,                1,
                 1,               -1,
+                2,               -1,
+               -2,               -2,
+               -5,                1,
                -2,               -1,
-               -2,                2,
-               -2,                0,
+                2,                2,
+                1,                1,
+                2,                3,
                 0,               -1,
+               -4,                1,
+                2,                0,
+               -1,                0,
                 0,               -2,
-                1,                3,
+                4,                4,
+                0,               -2,
+               -5,                3,
+                0,                0,
                 0,               -1,
-                0,                1,
-               -2,               -1,
-                2,                1,
-               -1,                0,
-                1,               -3,
-               -1,                0,
-                0,                1,
-                1,                0,
-                1,                0,
                 0,                0,
-                1,                1,
-                2,               -3,
+                1,                0,
                -1,               -2,
+               -1,               -1,
+                3,                1,
                -1,               -2,
-                0,               -1,
+                0,               -3,
+                0,               -2,
+                0,               -3,
+               -3,                2,
+                2,               -1,
+                0,                2,
                 2,                1,
-                1,                2,
                -2,                1,
+                1,               -1,
+                1,               -3,
+                3,                2,
+                0,               -2,
+               -1,                4,
                 0,                0,
+               -1,                2,
+                1,                2,
+                1,                0,
+               -1,               -2,
+                3,                0,
+                1,                1,
+                0,                1,
+                0,                2,
                 3,                1,
-               -2,               -2,
-                0,                0,
-                0,                0,
+                1,                0,
+                0,               -2,
+                1,               -1,
                 0,               -1,
-                0,                0,
-                0,                3,
+               -1,                0,
+               -1,               -2,
                -3,                0,
-               -1,                1,
-                3,               -2,
-                0,               -1,
+                3,                1,
                -1,               -1,
+               -2,                2,
                -1,                0,
-                0,               -1,
-               -2,                1,
-                2,                1,
-                2,                0,
-               -1,                0,
-               -1,                0,
-                0,               -1,
+                2,               -2,
                -1,               -1,
-               -1,                0,
-                5,                1,
                 1,                0,
+                2,                2,
                 0,                0,
+                2,                2,
+               -1,                3,
+               -2,               -1,
+                1,               -2,
                -1,                0,
-                1,               -4,
+                0,                2,
                -1,                0,
-                0,               -1,
-               -1,                0,
                 0,                0,
+               -1,                0,
+                0,                4,
+               -1,                1,
+                2,               -1,
+                1,                2,
                -1,               -1,
-               -1,                5,
+               -2,               -1,
+               -1,               -1,
+               -1,               -1,
+               -2,                1,
+                0,               -2,
                 1,                0,
-               -2,               -1,
-               -1,               -2,
-               -1,                0,
-                0,               -3,
-                0,                1,
-                1,                2,
                 1,               -2,
-                2,                0,
-                0,                0,
-                0,                3,
-               -1,               -1,
-                1,                1,
+               -1,                0,
+                1,                3,
                 1,                0,
                 1,                0,
-               -1,               -2,
+               -1,                1,
+                1,                1,
+               -1,                3,
+               -2,                2,
+                0,                0,
+                0,                0,
+                0,                0,
+               -1,               -1,
                 0,                1,
+                1,               -3,
+                0,                0,
+               -1,                1,
+                0,               -1,
                 1,                0,
-               -3,               -1,
-                1,                0,
-               -3,               -1,
+                0,                1,
+               -1,               -3,
+               -1,                2,
+               -2,               -2,
+                0,                1,
+                1,                2,
+               -1,                1,
+                0,                1,
+                0,                0,
+               -1,                0,
+                0,                0,
+                3,                0,
+                3,                1,
+                0,                0,
+               -1,                0,
                 0,               -1,
-                1,                1,
+               -1,                1,
+                2,               -4,
                 1,               -1,
-                0,               -1,
-                2,                1,
+                2,               -3,
+                1,                0,
+                0,                1,
                 1,                1,
+                1,                0,
                 0,                2,
+                2,                0,
                -2,                1,
-                0,                0,
-               -1,                1,
-               -1,                2,
-               -2,                1,
                -1,                0,
-                0,                0,
-                2,                1,
+                0,               -1,
+               -3,               -2,
                -1,                0,
-               -2,                0,
+               -1,                0,
+                0,                0,
+                1,                1,
+                0,                0,
+               -1,                1,
                 1,                2,
+               -3,               -1,
+               -1,                0,
+                1,                1,
+               -3,                0,
                 1,                0,
+                0,                0,
                 0,               -2,
-                1,                0,
-               -2,                0,
-                1,                1,
-                1,               -1,
-                2,               -2,
                 2,                0,
-                1,               -1,
+                0,               -1,
+                2,               -1,
+                0,               -1,
+                2,               -1,
                 0,                1,
-                0,                1
+               -2,                2,
+               -1,                0,
+                0,               -1,
+                2,                1,
+               -1,                1,
+                0,               -1,
+                1,               -1,
+                0,               -1
 };
 
 const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB0_10_Stage_info[ NLSF_MSVQ_CB0_10_STAGES ] =
@@ -940,7 +922,6 @@
         SKP_Silk_NLSF_CB0_10_Stage_info,
         SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min_Q15,
         SKP_Silk_NLSF_MSVQ_CB0_10_CDF,
-        SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx
+        SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr
 };
 
--- a/src_common/SKP_Silk_tables_NLSF_CB0_10.h
+++ /dev/null
@@ -1,51 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_TABLES_NLSF_CB0_10_H
-#define SKP_SILK_TABLES_NLSF_CB0_10_H
-
-#include "SKP_Silk_define.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define NLSF_MSVQ_CB0_10_STAGES       7
-#define NLSF_MSVQ_CB0_10_VECTORS      128
-
-/* NLSF codebook entropy coding tables */
-extern const SKP_uint16         SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS + NLSF_MSVQ_CB0_10_STAGES ];
-extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[                  NLSF_MSVQ_CB0_10_STAGES ];
-extern const SKP_int            SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx[                 NLSF_MSVQ_CB0_10_STAGES ];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
--- a/src_common/SKP_Silk_tables_NLSF_CB0_16.c
+++ b/src_common/SKP_Silk_tables_NLSF_CB0_16.c
@@ -28,918 +28,894 @@
 /**********************************************/
 /* This file has been automatically generated */
 /*                                            */
-/* ROM usage:  0.38 + 2.62 kB                 */
+/* ROM usage:  0.19 + 2.62 kB                 */
 /**********************************************/
 
 #include "SKP_Silk_structs.h"
 #include "SKP_Silk_tables.h"
-#include "SKP_Silk_tables_NLSF_CB0_16.h"
+#include "SKP_Silk_tables_NLSF_CB.h"
 
-const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS + NLSF_MSVQ_CB0_16_STAGES ] =
+const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS ] =
 {
+          246,
+          237,
+          228,
+          221,
+          214,
+          207,
+          200,
+          194,
+          188,
+          182,
+          177,
+          173,
+          168,
+          163,
+          158,
+          154,
+          149,
+          145,
+          140,
+          136,
+          131,
+          127,
+          123,
+          119,
+          115,
+          110,
+          106,
+          102,
+           99,
+           95,
+           91,
+           87,
+           84,
+           80,
+           76,
+           73,
+           69,
+           66,
+           62,
+           59,
+           56,
+           52,
+           49,
+           46,
+           43,
+           40,
+           36,
+           33,
+           31,
+           28,
+           25,
+           22,
+           20,
+           17,
+           15,
+           13,
+           10,
+            8,
+            6,
+            5,
+            3,
+            2,
+            1,
             0,
-         2661,
-         5102,
-         7439,
-         9404,
-        11130,
-        12855,
-        14508,
-        15959,
-        17349,
-        18738,
-        20128,
-        21458,
-        22679,
-        23847,
-        25016,
-        26184,
-        27303,
-        28422,
-        29541,
-        30660,
-        31731,
-        32803,
-        33874,
-        34901,
-        35927,
-        36953,
-        37979,
-        38961,
-        39944,
-        40885,
-        41826,
-        42767,
-        43708,
-        44609,
-        45510,
-        46411,
-        47274,
-        48136,
-        48999,
-        49862,
-        50725,
-        51551,
-        52377,
-        53204,
-        53995,
-        54786,
-        55544,
-        56269,
-        56995,
-        57690,
-        58355,
-        58992,
-        59629,
-        60266,
-        60904,
-        61514,
-        62124,
-        62708,
-        63292,
-        63828,
-        64364,
-        64834,
-        65230,
-        65535,
+          235,
+          215,
+          197,
+          180,
+          163,
+          146,
+          130,
+          114,
+           98,
+           82,
+           66,
+           51,
+           37,
+           23,
+           11,
             0,
-         5542,
-        10849,
-        16156,
-        21023,
-        25683,
-        29957,
-        33876,
-        37795,
-        41547,
-        45300,
-        48894,
-        52487,
-        55928,
-        59224,
-        62379,
-        65535,
+          216,
+          181,
+          149,
+          118,
+           87,
+           58,
+           28,
             0,
-        10647,
-        19220,
-        27793,
-        36003,
-        44213,
-        51422,
-        58631,
-        65535,
+          218,
+          183,
+          148,
+          117,
+           86,
+           56,
+           28,
             0,
-         8897,
-        17795,
-        26315,
-        34835,
-        42993,
-        51152,
-        58965,
-        65535,
+          220,
+          185,
+          151,
+          118,
+           85,
+           53,
+           26,
             0,
-         9726,
-        19453,
-        27632,
-        35811,
-        43643,
-        51475,
-        58657,
-        65535,
+          220,
+          185,
+          152,
+          120,
+           88,
+           56,
+           28,
             0,
-         9306,
-        18611,
-        27522,
-        36433,
-        44258,
-        52084,
-        58955,
-        65535,
+          221,
+          187,
+          154,
+          120,
+           90,
+           59,
+           28,
             0,
-         9344,
-        17912,
-        26481,
-        35049,
-        43254,
-        51111,
-        58635,
-        65535,
+          221,
+          186,
+          152,
+          118,
+           85,
+           51,
+           23,
             0,
-         8946,
-        17891,
-        26837,
-        35403,
-        43606,
-        51128,
-        58332,
-        65535,
+          221,
+          187,
+          152,
+          117,
+           87,
+           56,
+           27,
             0,
-         8919,
-        17460,
-        25638,
-        33817,
-        41996,
-        50174,
-        58353,
-        65535,
-            0,
-         4876,
-         9752,
-        14421,
-        18893,
-        23175,
-        27456,
-        31738,
-        35839,
-        39939,
-        43865,
-        47792,
-        51552,
-        55312,
-        59072,
-        62373,
-        65535
+          237,
+          218,
+          199,
+          182,
+          164,
+          147,
+          130,
+          115,
+           99,
+           83,
+           67,
+           51,
+           37,
+           24,
+           12,
+            0
 };
 
-const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ] =
+const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ] =
 {
      &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[   0 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  65 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  82 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  91 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 100 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 109 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 118 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 127 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 136 ],
-     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 145 ]
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  64 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  80 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  88 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[  96 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 104 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 112 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 120 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 128 ],
+     &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 136 ]
 };
 
-const SKP_int SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx[ NLSF_MSVQ_CB0_16_STAGES ] =
-{
-      23,
-       8,
-       5,
-       5,
-       5,
-       5,
-       5,
-       5,
-       5,
-       8
-};
-
 const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_16_rates_Q4[ NLSF_MSVQ_CB0_16_VECTORS ] =
 {
-               74,               76,
-               77,               81,
-               84,               84,
-               85,               88,
-               89,               89,
-               89,               90,
+               75,               77,
+               77,               83,
+               83,               83,
+               84,               85,
+               88,               89,
+               91,               92,
+               92,               92,
                92,               93,
                93,               93,
+               93,               94,
                94,               94,
-               94,               94,
                95,               95,
-               95,               96,
+               95,               95,
                96,               96,
-               96,               97,
+               97,               97,
                97,               98,
                98,               98,
                98,               99,
-               99,               99,
+               99,              100,
               100,              100,
-              100,              100,
               100,              101,
               101,              101,
+              101,              101,
               102,              102,
-              103,              104,
               104,              105,
-              106,              107,
+              105,              105,
               107,              107,
-              107,              108,
+              108,              108,
               108,              109,
-              109,              111,
-              111,              114,
-              118,              124,
-               57,               58,
-               58,               60,
-               61,               63,
+              111,              121,
+              121,              124,
+              128,              128,
+               58,               58,
+               62,               62,
+               63,               63,
+               63,               64,
+               64,               64,
                65,               65,
-               66,               66,
-               67,               67,
-               68,               69,
-               70,               70,
-               42,               47,
-               47,               48,
-               48,               51,
-               51,               52,
-               46,               46,
+               66,               68,
+               71,               72,
+               43,               46,
+               48,               49,
+               49,               50,
+               50,               51,
+               44,               46,
+               46,               49,
+               49,               50,
+               51,               51,
+               45,               46,
                47,               47,
+               47,               48,
+               52,               53,
+               45,               46,
+               47,               48,
                48,               48,
-               49,               53,
-               44,               44,
-               48,               48,
+               51,               51,
+               46,               47,
+               47,               47,
                49,               49,
-               51,               52,
-               45,               45,
+               49,               51,
                46,               46,
-               49,               49,
-               52,               53,
-               45,               47,
                47,               47,
-               48,               49,
-               50,               52,
+               47,               47,
+               51,               56,
                46,               46,
-               46,               47,
-               48,               50,
-               51,               51,
-               46,               47,
-               48,               48,
-               48,               48,
-               48,               51,
+               46,               46,
+               49,               49,
+               50,               52,
                60,               60,
-               61,               62,
-               63,               63,
+               60,               62,
+               62,               62,
                63,               64,
+               64,               64,
                64,               65,
-               65,               66,
-               66,               66,
-               69,               70
+               66,               69,
+               70,               71
 };
 
 const SKP_int SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min_Q15[ 16 + 1 ] =
 {
-              236,
-                4,
-               75,
+              290,
                 3,
+               54,
                 3,
-                5,
-              115,
-               95,
+                3,
+                3,
               113,
-              138,
-              176,
-              169,
-              249,
-              256,
-              271,
-              263,
-              630
+               90,
+              103,
+              132,
+              172,
+              154,
+              245,
+              248,
+              262,
+              253,
+              618
 };
 
 const SKP_int8 SKP_Silk_NLSF_MSVQ_CB0_16_Q8[ 16 * NLSF_MSVQ_CB0_16_VECTORS ] =
 {
-             -117,             -106,              -94,              -81,
-              -65,              -52,              -37,              -22,
-               -5,               11,               27,               42,
-               59,               75,               91,              106,
-             -120,             -116,             -100,              -84,
-              -67,              -49,              -32,              -16,
-                0,               15,               30,               46,
-               62,               77,               94,              109,
-             -121,             -116,             -102,              -85,
-              -71,              -58,              -39,              -24,
-               -5,               10,               29,               45,
-               61,               77,               92,              107,
-             -120,             -116,              -94,              -83,
-              -69,              -57,              -46,              -25,
-               -7,               10,               27,               42,
-               58,               75,               91,              107,
+             -119,             -115,              -98,              -85,
+              -67,              -51,              -37,              -20,
+               -3,               13,               30,               46,
+               62,               78,               93,              108,
+             -116,             -102,              -91,              -78,
+              -63,              -51,              -37,              -21,
+               -4,               10,               28,               42,
+               58,               74,               92,              107,
+             -115,             -109,              -95,              -76,
+              -65,              -47,              -32,              -15,
+                1,               17,               32,               46,
+               61,               76,               92,              106,
+             -115,             -107,              -98,              -83,
+              -71,              -60,              -45,              -26,
+               -9,                4,               24,               38,
+               52,               69,               86,              103,
              -114,             -109,              -94,              -79,
-              -66,              -52,              -35,              -18,
-               -4,                9,               26,               40,
-               53,               65,               81,               92,
-             -114,             -108,              -96,              -74,
-              -62,              -50,              -34,              -18,
-                0,               18,               33,               47,
-               61,               77,               94,              107,
-             -116,             -109,              -99,              -84,
-              -71,              -60,              -44,              -30,
-               -9,                5,               18,               33,
-               52,               70,               88,              106,
-             -119,             -114,              -99,              -89,
-              -71,              -60,              -50,              -37,
-               -4,               12,               28,               46,
-               60,               77,               91,              106,
-             -113,             -109,              -87,              -78,
-              -67,              -52,              -40,              -19,
-               -8,               12,               29,               43,
-               58,               75,               94,              113,
-             -119,             -114,              -88,              -77,
-              -63,              -49,              -36,              -23,
-                1,               17,               33,               51,
-               68,               81,               97,              109,
-             -119,             -114,             -101,              -88,
-              -71,              -57,              -42,              -16,
-               -1,               11,               24,               38,
-               54,               69,               90,              110,
-             -116,             -103,              -86,              -73,
+              -67,              -53,              -37,              -20,
+               -6,                8,               24,               39,
+               52,               65,               81,               93,
+             -118,             -111,             -101,              -83,
+              -69,              -58,              -37,              -26,
+               -4,                9,               24,               43,
+               61,               77,               95,              110,
+             -116,             -107,              -87,              -75,
               -57,              -43,              -27,              -13,
-                2,               16,               31,               45,
-               61,               76,               92,              108,
-             -116,             -112,             -100,              -77,
-              -68,              -51,              -41,              -22,
-              -11,                0,               16,               37,
-               56,               72,               88,              104,
-             -118,             -113,              -96,              -84,
-              -69,              -55,              -42,              -30,
-              -12,               17,               33,               51,
-               70,               83,               98,              110,
-             -109,             -104,              -92,              -80,
-              -67,              -56,              -41,              -28,
-              -13,                0,               14,               28,
-               43,               60,               85,              104,
-             -112,             -107,              -95,              -82,
-              -71,              -57,              -45,              -26,
-              -11,                1,               27,               41,
-               53,               66,               84,              104,
-             -115,             -111,              -99,              -92,
-              -63,              -52,              -39,              -24,
-              -13,                5,               27,               42,
-               60,               78,               93,              109,
-             -112,             -108,              -96,              -89,
-              -77,              -51,              -41,              -22,
-              -11,               13,               31,               44,
-               57,               72,               87,              105,
-             -111,             -107,              -95,              -87,
-              -77,              -49,              -38,              -24,
-              -10,                0,               15,               30,
-               54,               75,               93,              107,
-             -107,             -103,              -93,              -74,
-              -52,              -44,              -31,              -16,
-               -3,               10,               33,               45,
-               58,               71,               85,               98,
-             -115,             -111,              -98,              -72,
-              -60,              -49,              -35,              -24,
-                1,               11,               25,               38,
-               56,               81,               98,              112,
-             -116,             -112,             -102,              -70,
-              -59,              -49,              -36,              -25,
-               -7,                5,               17,               30,
-               48,               66,               87,              103,
+                2,               18,               32,               48,
+               63,               78,               93,              109,
+             -116,             -112,              -99,              -75,
+              -66,              -51,              -40,              -22,
+              -10,                3,               18,               37,
+               55,               72,               89,              105,
+             -107,             -103,              -94,              -77,
+              -51,              -43,              -32,              -16,
+               -3,                8,               31,               44,
+               57,               70,               86,              100,
+             -115,             -109,              -99,              -89,
+              -81,              -60,              -37,              -26,
+               -6,                6,               22,               37,
+               56,               75,               93,              108,
+             -114,             -111,              -83,              -74,
+              -64,              -53,              -39,              -23,
+              -12,                5,               28,               44,
+               59,               76,               94,              111,
+             -114,             -109,              -99,              -81,
+              -71,              -59,              -47,              -33,
+              -16,               -3,               17,               36,
+               56,               73,               92,              108,
+             -114,             -110,              -98,              -69,
+              -57,              -48,              -34,              -23,
+               -6,                7,               20,               35,
+               64,               81,               97,              110,
+             -112,             -109,              -94,              -86,
+              -77,              -52,              -43,              -23,
+              -13,               -2,               13,               36,
+               58,               77,               91,              105,
+             -111,             -106,              -95,              -78,
+              -67,              -56,              -40,              -28,
+              -11,                2,               15,               29,
+               43,               57,               85,              105,
+             -109,             -107,              -90,              -84,
+              -70,              -53,              -41,              -22,
+              -12,               15,               30,               43,
+               57,               72,               91,              111,
              -113,             -109,              -94,              -86,
-              -75,              -64,              -52,              -24,
-              -14,                6,               23,               43,
-               61,               77,               92,              108,
-             -118,             -112,             -100,              -90,
-              -65,              -53,              -39,              -22,
-                6,               18,               32,               49,
-               67,               81,               97,              109,
-             -116,             -109,              -99,              -80,
-              -69,              -55,              -41,              -27,
-              -11,                3,               23,               40,
-               61,               80,              101,              113,
-             -110,             -106,              -92,              -84,
-              -73,              -42,              -31,              -17,
-               -1,               10,               26,               37,
-               51,               76,               99,              113,
-             -116,             -110,              -93,              -75,
-              -57,              -41,              -21,               -6,
-               10,               25,               40,               54,
-               68,               82,               96,              110,
-             -116,             -111,             -100,              -92,
-              -81,              -46,              -32,              -19,
-               -5,                7,               25,               42,
-               58,               74,               92,              107,
-             -112,             -109,              -86,              -78,
-              -68,              -56,              -45,              -22,
-              -13,               -1,               13,               32,
-               58,               78,               91,              107,
-             -108,             -104,              -89,              -76,
-              -66,              -52,              -38,              -26,
-               -7,                4,               18,               30,
-               43,               74,               98,              112,
-             -114,             -110,              -82,              -72,
-              -61,              -50,              -37,              -20,
-              -11,                1,               17,               46,
-               62,               78,               93,              112,
-             -112,             -108,              -99,              -77,
-              -66,              -58,              -33,              -22,
-              -11,               13,               25,               35,
-               47,               64,               87,              108,
-             -113,             -109,              -96,              -70,
-              -59,              -49,              -35,              -24,
-               -6,                7,               19,               34,
-               65,               79,               94,              106,
-             -115,             -111,              -96,              -85,
-              -72,              -59,              -47,              -33,
-              -20,               -8,                8,               35,
-               56,               74,               92,              110,
-             -111,             -108,              -92,              -65,
-              -54,              -45,              -31,              -20,
-               -2,               11,               23,               34,
-               47,               63,               96,              114,
-             -113,             -108,              -98,              -87,
-              -79,              -68,              -32,              -19,
-               -5,               12,               25,               41,
-               60,               77,               96,              109,
-             -115,             -109,              -96,              -82,
-              -58,              -48,              -34,              -17,
-               -4,                9,               36,               50,
-               65,               79,               97,              109,
-             -115,             -110,             -100,              -88,
-              -56,              -45,              -34,              -21,
-               -7,                7,               24,               37,
-               50,               64,               86,              107,
-             -104,              -98,              -88,              -77,
-              -60,              -51,              -37,              -18,
-               -3,                8,               25,               40,
-               53,               68,               91,              107,
-             -118,             -113,              -97,              -85,
-              -74,              -62,              -51,              -40,
-              -25,                4,               24,               40,
-               57,               75,               92,              109,
-             -107,             -103,              -92,              -83,
-              -74,              -62,              -28,              -18,
-               -4,                9,               22,               34,
-               50,               67,               87,              107,
-             -116,             -112,              -75,              -67,
-              -56,              -45,              -31,              -16,
-               -5,               10,               30,               45,
-               63,               79,               96,              111,
-             -106,             -102,              -88,              -77,
-              -68,              -52,              -38,              -25,
-               -4,                7,               23,               36,
-               66,               84,               98,              111,
-             -103,              -99,              -87,              -76,
-              -66,              -56,              -29,              -13,
-                0,               14,               31,               42,
-               57,               71,               85,               96,
-             -114,             -111,              -91,              -58,
-              -47,              -38,              -26,              -14,
-                3,               13,               26,               40,
-               62,               80,               96,              110,
-             -114,             -110,              -90,              -83,
-              -72,              -64,              -36,              -24,
-              -13,                6,               28,               49,
-               66,               81,               97,              112,
-             -109,             -105,              -91,              -82,
-              -71,              -51,              -38,              -24,
-              -10,                1,               20,               49,
-               64,               78,               91,              106,
-             -111,             -107,              -90,              -82,
-              -70,              -60,              -49,              -12,
-                0,               11,               25,               37,
-               60,               82,              101,              114,
-             -111,             -107,              -93,              -72,
-              -42,              -30,              -20,               -8,
-                4,               16,               34,               46,
-               58,               70,               85,               98,
-             -112,             -109,              -80,              -65,
-              -56,              -44,              -33,              -17,
-               -3,                8,               20,               31,
-               49,               79,               98,              112,
-             -104,              -98,              -84,              -72,
-              -59,              -45,              -31,              -18,
-               -1,               12,               31,               47,
-               64,               81,               98,              110,
-             -110,             -106,              -92,              -79,
-              -70,              -59,              -49,              -39,
-               -1,               11,               22,               35,
-               52,               69,               89,              109,
-             -113,             -109,             -101,              -95,
-              -56,              -44,              -29,              -16,
-               -2,               18,               33,               48,
-               63,               78,               95,              110,
-             -109,             -106,              -94,              -87,
-              -74,              -41,              -29,              -14,
-                1,               13,               28,               47,
-               69,               84,               99,              111,
-             -115,             -110,             -101,              -84,
-              -50,              -32,              -22,              -11,
-                1,               13,               30,               45,
-               58,               72,               89,              107,
-             -106,             -102,              -89,              -75,
-              -64,              -55,              -44,              -34,
-              -13,               16,               32,               43,
-               59,               73,               86,              100,
-             -111,             -107,              -94,              -70,
-              -55,              -46,              -33,              -21,
-               -7,                5,               19,               31,
-               43,               55,               70,              103,
-             -102,              -97,              -80,              -71,
-              -60,              -49,              -36,              -24,
-               -8,                4,               19,               32,
-               48,               63,               79,              100,
-             -113,             -109,              -90,              -76,
-              -66,              -53,              -41,              -29,
-              -16,               -7,                5,               15,
-               42,               69,               89,              108,
-             -108,             -105,              -93,              -85,
-              -76,              -62,              -23,               -8,
-                4,               18,               33,               45,
-               60,               74,               90,              105,
-             -114,             -110,              -89,              -61,
-              -52,              -42,              -30,              -18,
-               -4,               13,               26,               39,
-               53,               67,               81,               96,
-              -99,              -95,              -86,              -77,
-              -69,              -60,              -32,              -15,
-               -2,               15,               35,               47,
-               64,               80,               96,              110,
-             -115,             -105,              -80,              -61,
-              -43,              -27,              -14,               -1,
-               13,               26,               40,               53,
-               67,               80,               95,              110,
-             -100,              -91,              -72,              -59,
-              -48,              -38,              -25,              -13,
-                1,               15,               28,               39,
-               58,               75,               91,              105,
-                0,                0,                0,               -1,
-               -2,               -2,               -2,               -4,
-               -5,               -5,               -7,               -8,
-               -5,               -2,                0,                1,
-               -1,               -1,               -3,               -6,
-               -8,               -2,               -1,               -2,
-                1,                2,                3,                4,
-                3,                3,                2,                1,
-               -3,               -3,               -6,                4,
-                2,                1,               -1,               -2,
-                0,                0,               -1,                1,
+              -75,              -65,              -53,              -27,
+              -16,                6,               22,               42,
+               60,               77,               92,              109,
+             -110,             -106,              -93,              -73,
+              -64,              -52,              -39,              -27,
+               -6,                6,               20,               32,
+               48,               79,               98,              112,
+             -115,             -110,              -94,              -74,
+              -61,              -48,              -36,              -24,
+                4,               15,               31,               45,
+               63,               81,               99,              112,
+             -115,             -110,             -102,              -77,
+              -54,              -47,              -32,              -20,
+               -7,               12,               26,               37,
+               50,               65,               88,              107,
+             -113,             -109,              -97,              -88,
+              -78,              -50,              -39,              -21,
+               -7,                9,               32,               46,
+               58,               71,               85,              102,
+             -104,              -99,              -89,              -76,
+              -67,              -58,              -33,              -23,
+               -7,                8,               22,               37,
+               61,               78,               94,              107,
+             -113,             -109,              -86,              -77,
+              -67,              -56,              -43,              -24,
+              -15,               -2,               12,               43,
+               61,               77,               91,              109,
+             -109,             -106,              -93,              -66,
+              -60,              -48,              -34,              -23,
+               -2,               10,               23,               35,
+               47,               63,               92,              113,
+             -116,             -112,             -100,              -92,
+              -82,              -50,              -38,              -21,
+              -10,                5,               25,               43,
+               60,               77,               94,              108,
+             -109,             -104,              -92,              -84,
+              -75,              -50,              -37,              -25,
+               -7,                4,               18,               31,
+               45,               69,               92,              106,
+             -105,             -101,              -89,              -71,
+              -61,              -52,              -28,              -14,
+               -1,               14,               33,               44,
+               58,               71,               86,               99,
+             -113,             -109,              -99,              -94,
+              -59,              -48,              -36,              -21,
+              -10,                5,               20,               37,
+               56,               75,               91,              108,
+             -110,             -106,              -88,              -77,
+              -68,              -45,              -34,              -17,
+               -2,               10,               25,               36,
+               48,               76,               97,              113,
+             -115,             -112,              -98,              -64,
+              -54,              -45,              -33,              -21,
+               -5,                9,               21,               35,
+               50,               67,               85,               99,
+             -117,             -111,              -97,              -78,
+              -60,              -46,              -25,               -9,
+                7,               24,               40,               53,
+               68,               83,               97,              110,
+             -110,             -106,              -91,              -82,
+              -72,              -58,              -44,              -30,
+              -17,               -5,                8,               20,
+               51,               72,               92,              109,
+             -112,             -108,              -96,              -89,
+              -78,              -40,              -29,              -16,
+               -1,               10,               27,               40,
+               54,               73,               94,              109,
+             -110,             -107,              -90,              -81,
+              -71,              -62,              -50,              -14,
+               -2,               11,               25,               37,
+               58,               81,              100,              114,
+             -113,             -109,              -87,              -60,
+              -51,              -41,              -29,              -17,
+                0,               11,               23,               34,
+               49,               78,               97,              111,
+             -116,             -111,             -102,              -86,
+              -51,              -37,              -28,              -16,
+               -2,               10,               27,               41,
+               55,               68,               86,              106,
+             -112,             -108,              -96,              -89,
+              -74,              -48,              -38,              -16,
+               -3,                9,               22,               37,
+               65,               84,              100,              112,
+             -111,             -107,              -95,              -77,
+              -43,              -29,              -19,               -8,
+                4,               16,               35,               48,
+               60,               74,               90,              104,
+             -113,             -108,              -95,              -86,
+              -60,              -50,              -35,              -21,
+              -10,                3,               32,               50,
+               63,               77,               93,              109,
+             -114,             -111,              -78,              -68,
+              -59,              -48,              -37,              -19,
+               -9,                3,               15,               29,
+               52,               74,               92,              110,
+             -102,              -98,              -85,              -74,
+              -63,              -52,              -35,              -23,
+               -9,                6,               21,               33,
+               48,               62,               77,              100,
+             -115,             -112,              -74,              -64,
+              -54,              -42,              -29,              -15,
+               -4,               10,               28,               44,
+               61,               78,               94,              110,
+             -113,             -110,              -92,              -86,
+              -74,              -66,              -36,              -24,
+              -10,                9,               29,               49,
+               65,               80,               96,              111,
+             -115,             -111,              -95,              -60,
+              -48,              -39,              -25,              -14,
+                1,               13,               27,               44,
+               63,               79,               96,              109,
+             -109,             -105,              -95,              -82,
+              -74,              -65,              -30,              -19,
+               -7,               12,               25,               36,
+               48,               63,               87,              108,
+             -108,             -104,              -92,              -79,
+              -71,              -60,              -51,              -40,
+               -2,               10,               23,               38,
+               56,               73,               92,              109,
+             -107,             -105,              -86,              -81,
+              -72,              -46,              -34,              -21,
+               -2,                9,               27,               45,
+               66,               83,               97,              111,
+             -112,             -107,              -97,              -85,
+              -75,              -66,              -40,              -11,
+                2,               14,               31,               43,
+               56,               73,               91,              106,
+             -113,             -109,              -95,              -71,
+              -61,              -51,              -39,              -29,
+              -14,               -3,                8,               19,
+               44,               69,               90,              106,
+             -116,             -112,             -103,              -97,
+              -61,              -47,              -33,              -19,
+               -3,               17,               33,               46,
+               60,               76,               93,              109,
+             -110,             -106,              -94,              -71,
+              -55,              -47,              -34,              -20,
+               -7,                5,               20,               32,
+               43,               54,               68,              103,
+             -106,             -102,              -89,              -73,
+              -63,              -55,              -43,              -34,
+              -13,               17,               33,               44,
+               58,               71,               85,               99,
+             -100,              -95,              -81,              -68,
+              -55,              -45,              -30,              -17,
+               -2,               13,               33,               47,
+               65,               80,               97,              110,
+             -104,             -100,              -89,              -79,
+              -74,              -62,              -23,              -11,
+                2,               16,               31,               42,
+               57,               71,               86,              101,
+             -111,             -107,              -90,              -61,
+              -42,              -35,              -23,              -11,
+                2,               17,               32,               43,
+               56,               67,               80,               96,
+             -107,             -103,              -96,              -91,
+              -58,              -41,              -29,              -14,
+                0,               14,               29,               45,
+               61,               78,               96,              111,
+             -110,             -106,              -96,              -88,
+              -80,              -67,              -27,              -15,
+               -2,               13,               25,               38,
+               61,               77,               95,              108,
+             -105,             -103,              -79,              -75,
+              -67,              -52,              -40,              -22,
+               -6,                6,               22,               38,
+               53,               70,               90,              109,
+             -113,             -106,              -84,              -65,
+              -48,              -31,              -14,                0,
+               15,               28,               42,               55,
+               68,               81,               96,              110,
+             -101,              -92,              -71,              -59,
+              -48,              -39,              -26,              -16,
+               -1,               12,               25,               38,
+               55,               72,               89,              104,
+              -97,              -92,              -82,              -74,
+              -68,              -56,              -28,              -10,
+                3,               16,               33,               46,
+               61,               78,               96,              108,
+             -106,             -103,              -93,              -88,
+              -83,              -50,              -23,              -11,
+                3,               20,               32,               47,
+               64,               78,               94,              109,
+              -97,              -94,              -85,              -78,
+              -73,              -66,              -32,              -14,
+                1,               16,               35,               49,
+               61,               77,               96,              111,
+              -97,              -94,              -89,              -81,
+              -63,              -58,              -42,              -15,
+                2,               13,               31,               49,
+               64,               77,               94,              109,
+               -3,               -2,               -5,               -8,
                 0,                1,                0,                0,
-               -2,               -2,                9,                7,
-                4,                3,                1,                1,
-                0,                0,               -2,               -1,
-               -2,               -2,                0,               -1,
-               -2,               -2,               -1,               -2,
-               -2,                1,                0,                0,
-               -1,               -2,               -3,               -1,
-               -3,               -2,               -5,               -6,
-               -1,               -1,               -4,               -8,
-                3,                2,                1,                3,
-                1,                1,               -1,                1,
-                2,                3,                3,                1,
-                0,                0,               -2,               -4,
-               -5,               -7,               -9,                4,
-                2,                0,                1,                0,
-               -2,               -1,                0,                0,
-               -3,               -3,               -1,                9,
-                7,                6,                5,                4,
-                3,                3,                4,                4,
-                3,                3,                2,                1,
-                8,                8,                6,                3,
-                2,                0,                2,               -1,
-                0,                1,                1,                0,
-               -1,                0,                1,                0,
-                2,                2,                3,                1,
-                1,                1,                0,                6,
-                6,                6,                7,                6,
-                4,                3,                2,                0,
-                1,                1,                0,               -1,
-               -3,               -4,               -7,              -10,
-                0,                0,               -1,                2,
-                3,                2,                3,                2,
-               -1,                0,               -1,               -2,
-               -4,               -5,                8,                5,
-                3,                3,                1,               -1,
-               -3,               -3,               -1,                0,
-                2,                2,                2,                2,
-                1,                1,                0,                0,
-                0,                0,               -2,               -3,
-               -6,              -10,              -10,               -1,
-                1,                1,                1,               -1,
-               -1,               -2,               -3,               -5,
-               -8,               -9,                4,                3,
-                1,                1,                0,                1,
-                0,                0,               -2,               -3,
-               10,                9,                7,                4,
-                2,                2,                1,                0,
-               -1,               -3,               -3,               -2,
-                2,                2,                2,                1,
-                0,                1,                1,                0,
-               -1,                0,               -2,               -4,
-                9,                7,                4,                1,
-               -1,               -1,               -2,               -2,
-               -3,               -3,               -3,               -1,
-               -2,               -4,               -3,               -2,
-                0,               -1,                0,                1,
-                0,                0,                3,                4,
-                3,                2,                1,                1,
-                0,               -2,               -3,               -5,
-               -6,               -2,               -1,                0,
-               -2,               -2,               -4,               -4,
-                4,                2,                1,                1,
+               -1,               -1,                0,                0,
                 0,                0,                0,                0,
-                0,                1,                0,                0,
-                1,                1,                0,               -2,
-               -4,                5,                4,                3,
-                4,                1,                0,                0,
-                0,               -1,                0,                0,
-                3,                3,                2,                1,
-                0,               -1,               -1,                0,
-               -1,               -3,                0,                3,
-                3,                3,                3,                3,
-                0,                0,                1,                0,
-                0,               -3,               -3,               -5,
-               -7,                5,                3,                1,
-                0,                0,                0,                0,
-                1,                1,                1,                2,
-                1,                0,                1,                2,
-                1,                0,                3,                3,
-                1,               -2,               -6,               -7,
                -1,               -1,                1,                1,
-                0,               -1,               -1,               -1,
-                7,                5,                3,                2,
-                3,                2,                3,                2,
-               -2,               -2,               -2,                0,
-               -1,                0,               -2,                5,
-                2,                2,                2,                0,
-                0,                0,               -1,               -1,
-                0,                0,               -1,               -2,
-               -3,               -5,                4,                1,
-                1,                1,               -2,               -1,
-                0,                2,                1,                0,
-                2,                2,                0,               -3,
-                3,                2,                1,                1,
-               -1,               -1,               -1,               -2,
-               -1,                0,               -2,               -2,
-               -1,               -1,                1,                3,
-                2,                2,                0,               -1,
-               -2,               -2,               -4,               -2,
-                2,                2,                2,                1,
-               -1,               -1,               -1,               -2,
-               -2,               -1,               -2,               -2,
-               -3,               -4,                4,                3,
-                2,                2,               -1,                0,
-                1,                1,                1,                0,
-               -1,               -1,               -3,               -6,
-                4,                2,                0,               -1,
+                0,                1,               -1,               -2,
+               -4,               -5,               -6,               -8,
+               -8,               -6,               -5,               -2,
+               -3,               -4,               -6,                5,
+                2,                2,                3,                2,
+                2,                1,                1,                0,
+               -1,                0,                0,                1,
+               -1,               -1,                2,                3,
+                3,                3,                2,                3,
+                2,                1,                2,                1,
+               -1,               -4,               -8,              -11,
+               -2,               -2,                3,                4,
+                3,                4,                3,                5,
+                4,                5,                6,                7,
+                6,                5,                4,                3,
+               -2,               -2,               -1,               -1,
+               -4,               -5,               -8,                4,
+                1,                0,                2,                2,
+                1,                0,                0,                1,
+                3,                3,                2,                0,
+               -3,                0,                0,               -2,
+                4,                3,                3,                5,
+                6,                5,                3,                1,
+                2,                2,                0,               -4,
+                7,                7,                5,                6,
+                4,                3,                2,                2,
+                1,                1,                0,                0,
+                1,                1,                0,               -2,
+               -4,               -7,                1,               -2,
+               -4,                3,                1,               -2,
+               -3,               -2,                0,                1,
+                1,                0,               -1,                2,
+               -1,               -3,               -6,               -9,
+                2,                0,               -1,               -1,
+               -2,               -2,               -3,               -1,
+                0,                0,                0,               -1,
+               -2,               -2,               -2,               -4,
+               -6,               -9,               -8,                2,
+                2,                2,                2,                2,
+                7,                8,                4,                1,
+                2,                1,                0,               -1,
+               -1,               -3,               -2,               -2,
+               -4,               -3,               -2,               -1,
+                1,                1,                3,                3,
+                0,                2,                0,                0,
+                1,               -2,               -4,               -6,
+                8,                7,                4,                2,
+               -1,                0,               -1,               -4,
+               -4,               -5,                8,                6,
+                4,                2,                1,                0,
+                0,                0,                0,                0,
                -1,               -1,               -1,               -1,
-                0,                0,                3,                3,
-                2,                2,                3,                1,
-               -1,                4,                3,                3,
-                1,                0,               -1,                1,
-                1,                1,                1,                1,
-                0,                0,               -1,                0,
-               -1,               -2,               -1,               -1,
-               -4,               -6,                4,                2,
-                0,               -1,               -4,                3,
-                2,                0,                1,               -1,
-                0,                1,                0,               -2,
-               -2,               -1,               -1,               -1,
-               -1,               -1,               -1,               -2,
-               -3,                3,                0,                0,
-               -1,               -1,               -1,               -2,
-               -1,               -1,                0,                1,
-                1,                0,                1,                0,
-               -1,               -2,               -4,                4,
-                2,                0,                0,               -1,
-                1,                1,                1,                1,
-                1,                1,                0,               -2,
-               -2,               -3,                2,                0,
-                0,                2,                2,                1,
-                0,               -3,               -2,                1,
-                0,                0,               -1,                0,
-                1,                2,                1,                0,
-                2,                1,                3,                4,
-                3,                1,                1,               -1,
-               -2,               -2,                4,                1,
-                1,                0,                1,               -1,
-               -2,               -1,                0,               -1,
+               -2,               -3,               -4,               -7,
+              -10,                4,                5,                3,
+                4,                4,                3,                1,
+                1,                1,                2,                2,
+                2,                2,                0,                0,
+                0,               -1,               -1,               -3,
+               -6,               -7,                7,                5,
+                1,                1,                0,               -1,
+               -1,               -2,               -2,               -1,
+               -3,               -3,               -5,               -5,
+               -5,               -2,               -1,               -1,
+               -1,               -1,                6,                6,
+                4,                3,                2,                2,
+                1,                1,               -1,               -1,
+               -1,               -1,               -1,                0,
+                4,                4,                1,                0,
+               -1,               -2,               -1,                0,
+                0,               -1,                1,                2,
+                2,                4,                4,                2,
+               -1,               -1,               -3,               -3,
+                5,                2,                0,               -1,
+               -3,                3,                2,                0,
+                1,                1,                0,                0,
+               -3,               -3,               -5,                1,
+               -1,               -2,                0,                0,
+                0,                0,               -2,                0,
+                3,                3,                3,                2,
+                1,                0,                0,               -2,
+               -3,                7,                6,                4,
+                3,                2,                0,                0,
                 0,               -1,                0,                0,
+                0,               -1,                0,               -1,
+               -2,               -3,               -4,               -2,
+               -3,               -5,                5,                5,
+                2,                0,               -1,               -1,
+               -1,               -1,                0,               -1,
+               -2,               -2,               -1,               -2,
+                6,                5,                2,                1,
+               -1,               -3,               -2,               -2,
+               -2,               -1,               -3,               -4,
+               -4,               -1,                0,                0,
                 1,                1,                1,                0,
+                1,                1,                0,               -1,
+               -1,               -1,               -2,                0,
+                0,                0,               -1,               -1,
+                0,               -1,               -3,               -3,
+               -4,               -5,                0,                0,
                 1,                1,                0,                0,
-                0,                0,                1,               -2,
-               -4,                5,                4,                2,
+                0,               -1,               -2,                4,
+                3,                3,                4,                2,
+                2,                2,                1,               -1,
                 1,                2,                0,                0,
-                1,                0,                0,               -3,
-               -1,               -2,               -5,                3,
-                3,                0,               -1,               -2,
-               -1,               -1,                0,               -1,
-               -1,                0,                0,               -1,
-                2,                2,                0,               -1,
-               -3,               -2,               -1,               -2,
-                0,                0,                1,                2,
-                0,               -1,               -3,                1,
-               -1,               -2,                2,                1,
+                0,                0,               -1,               -3,
+               -5,               -5,                2,               -1,
+               -1,                1,                0,               -1,
+                2,                2,                1,                1,
+                1,                0,                1,                1,
+                1,                1,                0,                0,
+               -1,               -5,               -7,                1,
+                0,                0,                1,                3,
+                3,                3,                3,                1,
+                2,                1,                0,               -3,
+               -4,                3,                3,                1,
+               -1,               -2,                3,                0,
+                0,               -2,                0,               -2,
+               -2,                0,               -1,                0,
+                2,                2,                4,                3,
+                0,                0,                0,                1,
+                1,                2,                1,                0,
+                0,               -2,               -4,                6,
+                5,                1,               -1,               -3,
+               -1,               -1,               -3,                4,
+                2,                1,                0,               -1,
+                0,               -1,                1,                2,
+                1,                0,               -1,                0,
+                0,                0,                1,                0,
                -1,               -2,               -1,               -1,
+               -4,                4,                2,                1,
+                0,               -1,               -2,               -1,
                 0,                0,                1,                0,
-               -1,                1,               -1,                2,
-                1,                0,               -3,                3,
-                1,                2,                2,                0,
-                0,                0,               -2,                1,
-                0,               -1,                0,                0,
-               -2,                4,                2,                1,
-                3,                1,                1,                0,
+                0,               -2,               -4,                5,
+                2,                0,               -2,               -1,
+               -1,               -1,               -1,                0,
+               -1,               -1,               -2,               -4,
+                1,               -1,                1,                0,
+               -1,               -2,               -1,                0,
+                0,                2,                2,                2,
+                0,                0,                1,                0,
+               -1,               -1,               -2,               -5,
+                4,                1,                0,               -1,
+                0,                2,                2,                2,
+                2,                2,                1,                0,
+                0,                0,                3,                0,
                 0,                0,               -1,               -2,
-                2,                1,                0,               -2,
-               -1,                1,                0,                0,
-               -1,               -1,                2,                2,
-                1,                1,                1,                1,
-                1,                1,                1,                1,
-                2,                0,               -2,               -2,
-                1,               -1,               -4,                2,
-               -1,               -1,               -1,               -1,
-               -1,               -1,                4,                1,
-               -1,               -3,                1,                2,
-                0,                0,                1,                1,
-                1,                1,                0,                0,
-                0,                0,               -1,               -2,
-               -1,               -2,                0,               -4,
-                2,                4,                0,               -2,
-                1,                0,                0,               -1,
-               -1,               -2,               -2,                1,
-               -2,                1,                1,               -1,
-               -2,               -1,               -1,                0,
-                1,                1,                0,                1,
-                0,                2,                1,                0,
-                0,               -2,                1,                0,
-               -2,                0,                1,               -2,
-                0,               -1,                0,                1,
-                0,                0,                1,               -1,
-               -1,                0,               -3,                2,
+                3,                3,                0,               -2,
+                1,                2,                1,                0,
+               -1,                1,                1,                0,
                -1,               -2,                1,                1,
-                0,               -1,                1,                0,
-                1,                1,                0,                0,
-                1,               -1,                2,                1,
-                1,               -1,               -2,                3,
-                0,               -1,                1,                0,
-                0,               -1,                3,                1,
-                1,                1,                0,                1,
-                2,                2,               -1,               -3,
-                0,               -1,               -3,                0,
-                0,               -1,               -1,               -1,
-                2,               -1,                0,                1,
-                0,                2,                1,                1,
-                0,                0,                0,               -1,
-                1,                0,                0,                1,
-                0,                0,               -1,               -3,
-                3,                0,                2,                1,
-               -3,                4,                1,                0,
+               -2,               -5,                2,                2,
+               -3,               -3,                1,                0,
+               -1,                3,                2,                1,
+                1,                0,                0,                0,
+               -1,               -1,               -2,               -2,
+                0,                0,                1,                0,
+                0,                0,               -1,               -1,
+                0,                1,                0,               -2,
+                3,                2,               -2,               -3,
+                0,                1,                0,               -2,
+               -1,                1,                0,                1,
+                0,               -1,               -3,               -3,
+               -1,               -2,               -1,                1,
                 0,                0,                0,                0,
-                0,                0,                0,                0,
+                3,                1,                1,                0,
+               -2,               -2,                1,                1,
+               -1,               -1,               -1,               -3,
+                1,                1,                0,                0,
+                0,               -2,               -2,               -2,
+                0,                0,               -2,                4,
+                1,               -1,                1,                0,
+                0,                0,                2,                0,
+                0,                2,                1,                0,
+               -1,               -2,                2,                0,
+                2,                1,                0,                4,
+                0,                0,               -1,                1,
+               -1,               -3,                3,                0,
+                1,                2,                0,               -1,
+               -1,                0,                1,                0,
+               -1,               -1,                0,                0,
+                0,                0,               -2,                1,
+                0,               -1,                1,               -1,
+               -4,                4,                3,                1,
+               -1,               -1,               -2,                1,
+                0,                1,                0,                2,
+                1,                2,                2,                1,
+                0,               -3,                1,                1,
+                0,                0,                0,               -2,
+                3,                1,               -1,                0,
+                2,                0,               -1,                2,
                 1,                0,                0,                0,
+                0,                0,                2,                2,
+                1,                1,                0,               -2,
+                2,                1,                0,                0,
+               -1,               -1,                0,               -2,
+                0,                0,                0,                0,
+               -3,                3,                1,                0,
+                0,               -1,                1,                1,
+                1,                0,                0,               -1,
+                0,                0,               -1,                0,
                 0,                0,                0,               -1,
+               -3,                3,                1,                1,
+               -2,                1,                1,                1,
+                0,                0,                0,                0,
                 0,               -1,               -1,                0,
-                0,               -2,               -1,                1,
-                0,               -1,               -2,               -1,
-                0,                2,                0,                0,
-                1,               -1,                0,                2,
-                1,                0,               -1,                0,
-               -2,                0,                0,                0,
-               -1,               -1,                0,               -1,
+               -2,               -1,               -1,               -3,
+                3,                0,                2,                1,
+               -1,               -1,               -3,                0,
+                0,               -1,                0,                1,
+                0,                0,                0,                0,
+               -1,                1,               -1,               -3,
+                1,                1,                0,                0,
+               -1,               -1,               -1,                1,
+                2,                0,                1,               -2,
+               -1,                0,               -2,                3,
+                0,                0,                2,                0,
+                0,               -3,                3,                1,
+               -1,               -1,                0,                2,
+                0,                0,               -1,                0,
                 0,               -1,                0,                0,
-               -1,                1,               -1,               -2,
-                0,                2,               -2,                0,
-                1,                0,                0,               -1,
+               -1,                0,               -1,               -1,
+               -1,               -1,               -1,                1,
+               -1,               -2,               -2,                2,
                -2,                2,                0,                0,
-                1,                2,                1,                1,
                 0,                0,               -1,                0,
+                0,                0,                0,                0,
+                0,                0,                0,                0,
+                1,                1,                0,                0,
+                0,               -1,                1,                0,
+                1,               -1,                0,                0,
+                2,                0,               -2,                0,
+                1,                0,                0,               -1,
+               -1,                2,                0,                1,
+                1,                1,                0,               -1,
+               -2,                2,               -1,               -2,
+                1,                0,                0,                2,
+                0,                1,               -1,                1,
+                0,               -1,               -2,                1,
+                1,                1,                2,                0,
+                0,                0,               -1,                0,
+                3,                0,                1,               -1,
+               -1,                2,                0,               -2,
+                0,               -1,               -1,                1,
+                0,               -1,                0,                0,
                 0,                0,                2,                0,
-                0,               -2,                0,               -2,
-                1,                1,                0,                1,
-                0,                1,                1,                1,
-                0,                0,               -2,                1,
-               -1,                1,                1,               -1,
-                1,               -1,                0,               -2,
-                0,               -1,                2,                2,
-               -1,               -1,                1,                1,
-                1,                1,                0,                1,
-                0,                1,                0,                0,
-                0,               -1,                2,               -3,
-                1,                0,                0,                1,
-                2,                0,                0,               -1,
-               -2,               -2,                2,                0,
-                0,                0,                0,                1,
-                0,               -1,                0,                2,
+                0,                0,                2,                1,
+                1,                1,                3,                1,
+               -1,               -2,                2,                0,
+                0,               -1,               -1,                1,
+                1,                0,                1,               -1,
+                0,               -2,                1,               -1,
+               -1,               -1,                1,                0,
+                0,               -1,               -1,                0,
+                0,                0,                0,                2,
+                0,                2,               -1,                1,
+                0,               -1,               -2,                0,
                 0,                1,               -1,               -1,
-                1,                0,               -1,                0,
-               -1,                1,               -1,                0,
-               -1,                0,               -3,                0,
-                0,                0,                0,                1,
-               -1,                0,                0,                0,
-                1,               -1,                0,                0,
-                1,                0,                0,                0,
-                0,               -1,                2,                2,
-                1,                1,                1,                0,
-               -1,                0,                1,                1,
+                1,                0,                0,               -1,
+                0,                0,                1,                0,
+                0,                0,                0,               -2,
                 0,               -1,                0,                0,
-               -2,                0,               -1,                0,
-               -1,                0,                1,                0,
-                0,                1,                2,                1,
-                1,                0,                1,                0,
-               -1,                1,                1,                0,
-               -2,                0,               -1,               -1,
+                0,                1,                1,                1,
                 1,               -1,               -1,               -1,
-                0,                0,                0,               -2,
-                2,                0,               -1,                0,
-               -1,                1,                0,                1,
-                0,                1,                0,               -1,
-                1,                1,                0,                0,
-               -1,               -1,               -1,               -1,
                 1,                0,                0,                0,
-                1,               -1,                0,                0,
-               -2,                1,                1,                0,
-                1,                0,                1,               -1,
+               -1,               -1,                0,               -2,
+               -1,               -1,               -1,               -1,
+               -2,                0,                0,               -1,
+                1,                2,                1,                0,
+                0,                1,                0,                1,
+                1,                1,                0,                0,
+                0,                0,                2,                0,
+                1,                0,                0,                1,
+                0,                0,               -1,                2,
+               -2,               -1,                2,               -1,
                 0,               -1,                0,                0,
-                0,                0,                0,                0,
-               -1,                0,                1,                2,
-               -1,                0,                1,                1,
+                0,               -1,                1,                0,
+                0,                1,                2,                1,
+                0,                1,               -2,                0,
+                0,                0,                0,                1,
+               -1,                0,                0,                0,
+                0,                0,                2,                0,
                 0,               -1,                0,                0,
-                1,                0,                0,               -1,
+                0,                0,                0,                0,
+               -2,                1,                0,                1,
+                0,                0,               -1,                0,
                 1,                1,               -1,                0,
-               -1,                0,                0,                0,
-                0,               -1,                0,                1,
-               -1,                1,               -1,                1,
-                1,                1,                1,                1,
+                0,                0,               -1,                0,
+                1,                0,               -2,                0,
+                0,                0,                1,                0,
+                1,                0,                0,                2,
+               -2,                0,                0,                0,
                 0,                1,                0,                0,
-                0,                2,                0,               -1,
-                0,                0,                1,                1,
-               -2,                1,                0,                1,
-                0,                1,               -2,               -1,
-               -1,                0,               -1,                0,
+                1,               -1,               -2,               -1,
+                0,               -2,                2,                0,
+                0,                0,                0,               -1,
                 0,                0,                0,                0,
-               -2,               -1,                0,               -1,
-                0,               -1,                0,                1,
-                1,                1,               -1,                0,
+                0,                0,                0,               -1,
                 1,               -1,                0,                1,
-                0,               -1,               -1,                0,
+                1,               -3,                0,                0,
                 0,                0,                0,               -1,
-                0,                1,                1,                2,
-               -2,                0,                0,                0,
-                0,                0,                0,                0,
-                0,                0,                0,                0,
-                1,               -1,                2,               -2,
-                0,                0,               -1,               -1,
-                0,                0,                2,               -1,
-                0,                1,               -1,                0,
-                1,               -1,               -1,               -1,
-               -1,                0,                0,                0,
+               -2,               -1,                0,                1,
+                0,                0,               -1,                0,
+                0,                0,                1,                1,
                 0,               -1,                0,                0,
-                1,                2,                1,                1,
-               -1,               -1,                0,                0,
-               -1,                1,                0,                1,
+                0,                1,                1,               -2,
+               -1,                0,               -1,                0,
+                0,                1,               -1,                0,
                 1,                0,                0,                0,
-                0,                0,               -2,                1,
-                0,                0,                1,                1,
-                1,                1,                1,                1,
+                0,                1,               -2,                1,
+               -1,                0,                0,                0,
                 1,                0,               -1,                0,
-                2,                0,                0,                0,
-                2,                0,               -1,                0,
-                0,               -1,                0,               -1,
-                1,                0,               -1,                0,
-               -1,               -1,                0,                0,
-                0,                1,               -2,                0,
-                0,                0,                1,               -1,
-                0,               -1,                0,                1,
-                1,               -2,                0,                0,
-               -1,               -1,               -1,               -1,
-                0,                0,                0,                0,
+                1,                0,                0,                0,
+                2,               -1,                0,                1,
                 0,                0,               -1,               -1,
-                0,                1,                2,               -2,
+                0,                0,                0,                1,
+                1,                0,                0,                0,
+                0,               -2,                0,               -1,
+                1,                2,                1,                0,
                 0,                0,                0,                0,
-                1,                1,                0,                0,
-                0,               -1,                0,                0,
-                0,                0,                0,               -2,
-               -1,                0,                0,               -1,
-                1,               -2,               -1,                0,
-                0,                1,                0,               -1,
+               -1,                0,               -1,                0,
+                0,                1,                0,                2,
+                0,                1,                0,                0,
+                2,                1,                0,                0,
+                0,                0,                3,                0,
+                0,                1,                0,                0,
                 0,                0,                1,                0,
+               -1,                0,                0,                1,
+                1,                3,                0,                0,
+                0,                0,                1,                0,
+               -1,                0,                0,               -1,
+                0,                0,                0,                0,
+                0,               -1,                0,                0,
+                0,                0,                0,                0,
+               -2,                0,               -1,                1,
+                0,               -1,                2,               -2,
+                0,                0,                0,                2,
                -1,                0,                1,                0,
-                1,               -1,                1,                0
+                0,                0,                0,               -1,
+                0,                0,               -1,                0,
+               -2,               -1,                0,               -1,
+                0,                0,                0,                0,
+               -1,                0,                0,               -1,
+                0,                0,                0,                1,
+                0,               -1,                0,                0,
+                0,                1,                1,                1,
+                1,               -1,                1,               -1,
+                0,                0,                0,                0
 };
 
 const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB0_16_Stage_info[ NLSF_MSVQ_CB0_16_STAGES ] =
@@ -962,7 +938,6 @@
         SKP_Silk_NLSF_CB0_16_Stage_info,
         SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min_Q15,
         SKP_Silk_NLSF_MSVQ_CB0_16_CDF,
-        SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx
+        SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr
 };
 
--- a/src_common/SKP_Silk_tables_NLSF_CB0_16.h
+++ /dev/null
@@ -1,51 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_TABLES_NLSF_CB0_16_H
-#define SKP_SILK_TABLES_NLSF_CB0_16_H
-
-#include "SKP_Silk_define.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define NLSF_MSVQ_CB0_16_STAGES       10
-#define NLSF_MSVQ_CB0_16_VECTORS      152
-
-/* NLSF codebook entropy coding tables */
-extern const SKP_uint16         SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS + NLSF_MSVQ_CB0_16_STAGES ];
-extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[                  NLSF_MSVQ_CB0_16_STAGES ];
-extern const SKP_int            SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx[                 NLSF_MSVQ_CB0_16_STAGES ];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
--- a/src_common/SKP_Silk_tables_NLSF_CB1_10.c
+++ b/src_common/SKP_Silk_tables_NLSF_CB1_10.c
@@ -28,587 +28,569 @@
 /**********************************************/
 /* This file has been automatically generated */
 /*                                            */
-/* ROM usage:  0.22 + 0.90 kB                 */
+/* ROM usage:  0.11 + 0.90 kB                 */
 /**********************************************/
 
 #include "SKP_Silk_structs.h"
 #include "SKP_Silk_tables.h"
-#include "SKP_Silk_tables_NLSF_CB1_10.h"
+#include "SKP_Silk_tables_NLSF_CB.h"
 
-const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ NLSF_MSVQ_CB1_10_VECTORS + NLSF_MSVQ_CB1_10_STAGES ] =
+const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ NLSF_MSVQ_CB1_10_VECTORS ] =
 {
+          176,
+          144,
+          119,
+          102,
+           92,
+           85,
+           79,
+           73,
+           68,
+           63,
+           58,
+           53,
+           49,
+           45,
+           41,
+           37,
+           34,
+           30,
+           27,
+           24,
+           22,
+           19,
+           17,
+           15,
+           13,
+           12,
+           10,
+            8,
+            6,
+            4,
+            2,
             0,
-        21247,
-        28440,
-        34489,
-        38585,
-        41021,
-        43353,
-        45401,
-        47050,
-        48562,
-        49890,
-        51162,
-        52379,
-        53597,
-        54536,
-        55435,
-        56260,
-        57049,
-        57805,
-        58562,
-        59286,
-        59979,
-        60588,
-        61122,
-        61613,
-        62103,
-        62593,
-        63084,
-        63574,
-        64064,
-        64554,
-        65045,
-        65535,
+          149,
+           93,
+           71,
+           55,
+           40,
+           26,
+           12,
             0,
-        34067,
-        42961,
-        48025,
-        52103,
-        55532,
-        58961,
-        62391,
-        65535,
+          121,
+          100,
+           80,
+           61,
+           45,
+           29,
+           14,
             0,
-        30146,
-        40804,
-        46615,
-        50906,
-        55016,
-        58624,
-        62080,
-        65535,
+          133,
+          110,
+           88,
+           67,
+           48,
+           30,
+           13,
             0,
-        31530,
-        38758,
-        44096,
-        48990,
-        53478,
-        57776,
-        62074,
-        65535,
+          199,
+          152,
+          111,
+           76,
+           53,
+           32,
+           15,
             0,
-        14400,
-        25503,
-        35253,
-        44194,
-        52756,
-        58308,
-        62234,
-        65535,
+          161,
+          109,
+           88,
+           68,
+           49,
+           30,
+           14,
             0,
-        26248,
-        35939,
-        44449,
-        49733,
-        53988,
-        58062,
-        61799,
-        65535,
-            0,
-        20097,
-        31540,
-        38344,
-        44584,
-        50823,
-        56798,
-        62277,
-        65535
+          211,
+          171,
+          134,
+           98,
+           63,
+           37,
+           11,
+            0
 };
 
-const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[ NLSF_MSVQ_CB1_10_STAGES ] =
+const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[ NLSF_MSVQ_CB1_10_STAGES ] =
 {
      &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[   0 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  33 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  42 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  51 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  60 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  69 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  78 ]
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  32 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  40 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  48 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  56 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  64 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[  72 ]
 };
 
-const SKP_int SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx[ NLSF_MSVQ_CB1_10_STAGES ] =
-{
-       4,
-       2,
-       2,
-       2,
-       4,
-       3,
-       3
-};
-
 const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_10_rates_Q4[ NLSF_MSVQ_CB1_10_VECTORS ] =
 {
-               26,               51,
-               55,               64,
-               76,               77,
-               80,               85,
-               87,               90,
-               91,               92,
-               92,               98,
-               99,              101,
-              102,              103,
-              103,              104,
-              105,              108,
-              111,              113,
+               27,               48,
+               54,               63,
+               74,               84,
+               85,               89,
+               91,               91,
+               91,               91,
+               94,               95,
+               96,               97,
+              100,              101,
+              102,              104,
+              106,              106,
               113,              113,
               113,              113,
               113,              113,
               113,              113,
-               15,               46,
-               59,               64,
-               68,               68,
-               68,               70,
-               18,               42,
-               56,               63,
-               64,               67,
-               68,               68,
-               17,               51,
-               58,               60,
-               62,               63,
-               63,               68,
-               35,               41,
-               44,               46,
-               47,               57,
-               65,               69,
-               21,               44,
-               47,               58,
-               63,               64,
+              113,              113,
+               20,               35,
+               57,               64,
                66,               66,
-               27,               40,
-               52,               54,
-               54,               55,
-               57,               69
+               67,               71,
+               15,               58,
+               58,               61,
+               64,               64,
+               65,               68,
+               17,               55,
+               57,               58,
+               60,               61,
+               63,               68,
+               35,               39,
+               43,               46,
+               56,               58,
+               63,               65,
+               23,               37,
+               57,               59,
+               60,               61,
+               63,               68,
+               40,               43,
+               45,               45,
+               46,               53,
+               53,               73
 };
 
 const SKP_int SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min_Q15[ 10 + 1 ] =
 {
-              293,
-               32,
-              225,
-              280,
+              488,
+               31,
+              249,
+              268,
               153,
-               23,
-               13,
-               14,
+               20,
+               12,
+               15,
                 9,
                 3,
-              688
+              685
 };
 
 const SKP_int8 SKP_Silk_NLSF_MSVQ_CB1_10_Q8[ 10 * NLSF_MSVQ_CB1_10_VECTORS ] =
 {
-             -113,              -92,
-              -68,              -43,
+             -112,              -92,
+              -67,              -43,
               -20,                3,
                28,               52,
                78,              100,
-             -114,             -101,
-              -75,              -53,
+             -113,             -100,
+              -76,              -53,
               -30,               -7,
                20,               45,
-               72,               96,
-              -98,              -81,
-              -58,              -33,
-              -10,               10,
-               35,               58,
-               82,              103,
-             -110,              -99,
+               72,               97,
+              -97,              -81,
+              -58,              -34,
+              -10,               11,
+               37,               59,
+               83,              104,
+             -110,             -100,
               -80,              -61,
               -38,              -15,
                12,               38,
-               66,               89,
-             -115,             -108,
-              -77,              -49,
-              -21,                4,
-               29,               53,
-               79,              102,
-             -101,              -81,
-              -55,              -29,
-               -7,               23,
-               47,               71,
-               93,              110,
-             -100,              -83,
-              -65,              -44,
-              -25,               -7,
-               19,               45,
-               72,               96,
-             -110,             -100,
-              -85,              -45,
-              -25,               -8,
-               22,               39,
-               78,               97,
-             -115,             -107,
-              -89,              -69,
-              -36,               -9,
-               20,               45,
-               72,               99,
-             -113,              -99,
-              -69,              -38,
-              -12,               16,
-               44,               68,
-               92,              109,
+               66,               90,
+             -114,             -107,
+              -81,              -50,
+              -23,                2,
+               28,               51,
+               77,              101,
+              -92,              -80,
+              -59,              -42,
+              -18,                2,
+               26,               50,
+               77,               97,
+             -102,              -83,
+              -56,              -29,
+               -8,               23,
+               48,               73,
+               98,              111,
+              -98,              -78,
+              -48,              -19,
+                7,               32,
+               54,               73,
+               92,              107,
+             -105,              -90,
+              -69,              -42,
+               -4,               20,
+               38,               57,
+               77,               97,
+             -113,             -101,
+              -71,              -40,
+              -14,               11,
+               42,               65,
+               89,              108,
+             -109,              -99,
+              -84,              -61,
+              -17,                0,
+               19,               46,
+               65,               97,
+             -109,             -100,
+              -85,              -49,
+              -25,              -10,
+               21,               35,
+               79,               97,
+             -109,             -101,
+              -81,              -33,
+              -10,                6,
+               28,               46,
+               81,               99,
+             -115,              -84,
+              -58,              -32,
+              -11,               11,
+               36,               61,
+               84,              104,
+             -114,             -106,
+              -88,              -68,
+              -39,               -3,
+               25,               44,
+               66,               97,
+              -79,              -68,
+              -46,              -29,
+               -7,               13,
+               36,               58,
+               82,              101,
+             -106,              -87,
+              -69,              -51,
+              -27,              -11,
+               15,               52,
+               74,               92,
+              -99,              -87,
+              -70,              -55,
+              -40,              -13,
+               31,               52,
+               78,              101,
              -109,              -98,
-              -84,              -60,
-              -19,               -3,
-               18,               43,
-               61,               98,
-              -99,              -77,
-              -46,              -17,
-               10,               35,
-               55,               74,
-               92,              106,
-             -105,              -91,
-              -70,              -42,
-               -1,               17,
-               35,               58,
-               75,               99,
-              -90,              -77,
-              -53,              -38,
-              -21,                0,
-               28,               49,
-               76,               97,
-             -110,             -101,
-              -80,              -29,
-               -8,                6,
-               30,               48,
-               82,               99,
-             -110,              -92,
-              -55,              -19,
-                4,               25,
-               43,               62,
-               84,              101,
-             -101,              -88,
-              -73,              -58,
-              -45,              -26,
-               21,               46,
-               71,               98,
-              -83,              -67,
-              -40,              -22,
+              -83,              -66,
+              -52,              -28,
+               23,               46,
+               74,               99,
+             -111,             -103,
+              -87,              -57,
                -2,               19,
-               41,               63,
-               85,              103,
-             -112,             -103,
-              -89,              -62,
-               -8,               15,
-               33,               56,
-               74,               97,
-             -117,              -73,
-              -56,              -33,
-              -13,               11,
-               34,               57,
-               80,              101,
-             -110,             -100,
-              -84,              -72,
-              -59,              -15,
-               21,               45,
-               76,               96,
-             -103,              -90,
-              -72,              -59,
-              -40,                1,
-               32,               56,
-               82,               98,
-             -107,              -97,
-              -79,              -54,
-              -37,              -21,
-               -4,               22,
-               71,               94,
-              -97,              -67,
-              -27,               -2,
-               29,               44,
-               58,               71,
-               82,               98,
-              -89,              -74,
-              -55,              -45,
-              -30,              -18,
-               -2,               23,
-               65,               97,
-             -106,              -82,
-              -56,              -31,
-               -5,               34,
-               59,               65,
-               68,               78,
+               33,               53,
+               72,               97,
+             -113,              -99,
+              -62,              -21,
+                5,               27,
+               47,               65,
+               86,              103,
+              -99,              -79,
+              -37,              -16,
+                3,               19,
+               37,               62,
+               83,              101,
+              -92,              -79,
+              -57,              -41,
+              -25,              -10,
+                8,               30,
+               68,               96,
+             -104,              -92,
+              -77,              -56,
+              -39,              -23,
+               -7,               21,
+               72,               95,
+              -78,              -65,
+              -34,              -16,
+               10,               30,
+               51,               71,
+               90,              106,
+             -104,              -76,
+              -38,               -5,
+               27,               52,
+               66,               77,
+               89,              101,
+             -106,              -79,
+              -50,              -24,
+               15,               40,
+               43,               35,
+               47,              102,
+             -103,              -71,
+              -40,               -6,
+               22,               22,
+               26,               37,
+               66,               99,
+             -106,              -78,
+              -53,              -30,
+               -3,               40,
+               63,               69,
+               57,               75,
+             -106,              -79,
+              -51,              -33,
+               -1,               17,
+               51,               89,
+              108,              121,
              -107,              -82,
-              -57,              -31,
-               20,               31,
-               34,               35,
-               68,              103,
-             -109,              -83,
-              -56,              -32,
-               -6,               18,
-               49,               82,
-              109,              116,
-             -103,              -82,
-              -50,              -17,
-               -6,                2,
-               19,               56,
-               83,              105,
-             -106,              -82,
-              -54,              -30,
-               -1,               32,
-               41,               49,
-               52,               98,
-              -98,              -66,
-              -36,                0,
-                5,               12,
-               14,               26,
-               64,               97,
-             -105,              -80,
-              -53,              -29,
-                2,               30,
-               76,               90,
-               94,               96,
+              -56,              -37,
+               -7,               17,
+               68,               86,
+               86,               88,
+             -102,              -76,
+              -47,              -13,
+               -3,                3,
+               10,               43,
+               77,              105,
                -2,               -2,
-               -2,                0,
                -1,               -1,
+                0,                0,
                -1,                0,
                 0,                0,
+                2,                4,
+                4,                3,
+                4,                5,
+                4,                3,
                 2,                2,
-                3,                4,
-                3,                5,
-                7,                6,
-                4,                2,
-                8,                9,
-                5,               -2,
+               -1,               -3,
+               -5,                0,
+               -5,               -9,
+               -4,               -1,
+               -4,               -6,
                 1,                1,
+                0,                2,
+               -4,               -6,
+               -2,               -4,
+                9,                5,
+               -3,               -6,
+               -9,              -12,
+                2,                0,
+                0,                2,
+                0,               -1,
+                0,               -1,
+                2,                9,
+                6,                2,
+               -4,               -9,
+               -7,               -3,
+                9,                9,
+                7,                3,
+               -3,               -6,
+               -3,               -5,
+               -8,               -2,
                 1,                0,
-               -2,               -2,
-                1,                1,
-                2,               -2,
-               -7,              -11,
-              -11,                0,
+               -3,               -8,
+              -12,                4,
+                4,                7,
+                7,                0,
                -1,                0,
-                1,                0,
-               -3,               -2,
-               -6,               -3,
-                2,               -4,
-               10,                5,
-               -1,               -3,
-               -5,               -7,
-               11,                7,
-                4,               -1,
-                1,                1,
+                0,                0,
                 0,                1,
-                7,               10,
-                3,               -1,
-               -6,               -2,
-               -3,               -4,
-                0,               -1,
+                0,                1,
+                1,                1,
+                3,                3,
+                2,               -5,
+               -8,               -3,
+               -3,               -1,
+               -1,               -3,
+                3,                3,
+                4,                4,
+                2,               -4,
+               -9,               -1,
                -2,               -2,
-                0,                3,
-                0,               -5,
-              -11,              -10,
-               -1,                1,
-                1,                1,
-                1,                1,
-                1,                1,
+                2,                2,
+                2,                4,
+                5,                5,
+                3,                0,
+               -5,               -7,
+               -1,               -2,
+               -6,               -5,
+               -1,               -6,
+                1,               -1,
+               -6,                5,
+               -5,              -10,
+                4,                2,
+                2,                0,
+                0,                1,
                 1,                0,
                 2,                1,
-               -2,               -4,
-               -5,               -3,
-               -3,               -3,
-               -3,               -3,
-                3,                2,
-                3,                5,
-                4,                0,
-               -3,               -9,
-               -5,               -1,
-                3,                2,
-                2,               -1,
-               -1,               -1,
-               -2,                6,
-                7,                6,
-               -2,               -5,
-               -9,               -4,
+               -1,                3,
+                3,               -1,
+               12,                3,
+                3,                3,
+                0,               -2,
+               -4,               -4,
+               -4,                5,
+               -1,               -9,
+                1,                0,
+               -1,                0,
+               -1,                0,
+                0,                0,
+                1,                0,
+               -1,               -2,
+                0,               -1,
+               -2,               -1,
+               -1,                0,
+                2,                8,
+                4,                4,
+                6,                4,
+                0,               -2,
+               -2,                0,
+                0,               -1,
+               -2,                1,
+                2,                0,
+               -3,               -2,
+                7,                1,
+                1,               -1,
+               -3,                2,
                -1,               -3,
-               -3,                1,
-                2,                2,
-               -6,               -9,
-                6,                3,
-                3,                1,
-                2,                1,
+               -4,                6,
+                0,                1,
+               -3,               -1,
+                5,                0,
+                0,               -2,
+                1,               -2,
+               -2,               -2,
+               -6,               -2,
+                2,                5,
+                0,               -2,
+               10,                5,
+               -1,                1,
+                0,                0,
                -1,               -1,
-                3,                1,
-               -2,                2,
-                4,               -3,
-                9,                3,
-               -3,                4,
+               -1,                7,
+                5,               -2,
+                0,                0,
+                0,               -4,
+               -1,               -3,
+               -2,               -1,
+               -2,               -3,
+                1,               -1,
+               -1,               -2,
+                3,                0,
+                0,                0,
+                1,                1,
+               -2,               -5,
+                1,                1,
+                0,                2,
+                2,                1,
+                1,               -3,
+                1,                2,
+                0,                3,
+                0,               -2,
+                2,                1,
+                2,                3,
                 1,                0,
-               -1,               -4,
-               -6,               11,
-                4,                1,
-                2,               -1,
-               -1,               -1,
+               -1,               -3,
+                0,               -1,
                -1,               -2,
                 0,                0,
+                1,                3,
+                5,                1,
+               -1,                1,
+               -4,                5,
+                0,                2,
+                1,                1,
                 0,                0,
                -1,                0,
-                6,                3,
+                0,               -2,
+               -1,                1,
+                2,                0,
+               -5,                4,
+               -1,                0,
                 1,                0,
-                1,                1,
-                1,               -1,
-                1,                2,
-               -5,                6,
-                3,                2,
-                3,                4,
-                2,                1,
-                0,                1,
+               -2,                1,
+               -6,                4,
+                0,                0,
+               -2,                0,
                 0,               -1,
-               -2,                2,
                 1,               -1,
-               -6,               -8,
-                2,               -1,
-                0,               -1,
-                8,                1,
-               -5,                0,
                -1,               -1,
-                0,                0,
-                0,                0,
+                0,               -3,
                -2,                0,
-               -2,               -8,
-                3,                0,
-                2,                2,
                 1,                1,
-                0,                0,
+               -1,                4,
                 1,                0,
-               -2,               10,
-                1,               -4,
-               -1,               -4,
-               -6,                6,
-                3,                4,
-                4,                1,
-               -1,               -2,
-                0,                1,
-                2,                1,
-                1,                4,
-                1,                1,
-               -1,               -2,
-                0,                4,
-                2,                0,
-               -1,               -2,
-               -1,               -2,
+                0,                2,
+               -1,                2,
+               -3,                0,
+                3,                0,
+                1,                0,
+                1,                4,
+                2,                0,
+                2,                0,
                 1,                0,
-               -1,               -2,
+                0,                1,
+                1,               -1,
+                6,                2,
+                0,                3,
+               -1,               -3,
+                0,               -2,
                -2,                1,
-               -1,               -4,
-                0,               -1,
-               -1,               -4,
-                0,               -1,
-               -2,               -4,
+                1,                0,
+                0,                0,
+               -1,               -1,
+                1,                6,
                -1,                0,
-                3,                3,
-                1,                1,
-               -1,               -3,
-                1,                1,
-                1,                1,
-               -1,               -2,
-                4,                3,
-                2,                0,
-               -1,               -2,
-                5,               -1,
-               -3,                0,
-               -1,                0,
                 0,               -1,
-                0,                0,
-                0,               -2,
-                0,               -1,
-               -7,                6,
-                2,                0,
-               -2,                4,
-               -4,                1,
-               -1,                1,
                 1,                0,
-                1,               -1,
-                1,                2,
-                2,                0,
-                1,                1,
                 0,                1,
-               -1,                1,
-                1,               -4,
-                2,               -1,
                 0,               -1,
-               -1,               -1,
-                0,               -1,
-               -3,               -1,
-               -2,                1,
-                1,               -3,
-               -1,                1,
                 1,                1,
-               -2,                1,
-                0,                1,
-               -5,                1,
-               -2,                1,
-                1,                1,
+                0,               -7,
+               -1,               -3,
+               -4,               -1,
                -2,                0,
                 0,                1,
-               -1,                0,
-                5,               -3,
-                0,               -3,
-                2,                0,
-               -3,               -2,
-               -2,                0,
-                0,               -1,
-                2,                2,
-                1,                0,
-               -4,               -1,
+                0,                1,
                 2,                1,
-               -1,               -3,
-               -5,                1,
-                1,                2,
-               -2,                0,
-                1,                1,
-                2,                2,
-                1,                1,
-                0,               -1,
-               -2,               -1,
+               -3,                0,
                 0,                0,
+                0,               -1,
+                1,               -1,
+               -1,                1,
+                1,               -1,
                 0,                2,
                 0,                0,
-                1,               -1,
                 0,                3,
-               -2,               -1,
                 1,                0,
+                1,                1,
+               -3,                0,
+               -2,                1,
+                1,                0,
                 0,                0,
                 1,                0,
+                3,               -2,
                 0,                0,
-                4,               -1,
-                1,               -3,
-                0,                1,
-                1,                4,
+                1,                0,
+               -1,                0,
                 0,               -1,
+                0,                0,
                -1,                0,
-               -1,               -1,
+               -4,               -1,
                -2,               -3,
-               -1,                0,
-               -1,                0,
                 0,                1,
-               -3,                0,
-               -1,                2,
-               -4,                0,
-                1,                1,
-                1,                1,
                 0,                0,
-               -2,               -1,
+                0,               -1,
+                1,                0,
+                0,                1,
                 0,                0,
-                3,               -2,
-               -1,                1,
-                1,                1,
-                4,               -1,
                -1,                0,
-                1,                0,
+                5,                0,
+                1,               -1,
+                2,               -3,
+                1,               -1,
                 0,                0,
-                0,               -1
+                0,                0,
+                0,                0
 };
 
 const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB1_10_Stage_info[ NLSF_MSVQ_CB1_10_STAGES ] =
@@ -628,7 +610,6 @@
         SKP_Silk_NLSF_CB1_10_Stage_info,
         SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min_Q15,
         SKP_Silk_NLSF_MSVQ_CB1_10_CDF,
-        SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx
+        SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr
 };
 
--- a/src_common/SKP_Silk_tables_NLSF_CB1_16.c
+++ b/src_common/SKP_Silk_tables_NLSF_CB1_16.c
@@ -28,654 +28,630 @@
 /**********************************************/
 /* This file has been automatically generated */
 /*                                            */
-/* ROM usage:  0.29 + 1.80 kB                 */
+/* ROM usage:  0.14 + 1.80 kB                 */
 /**********************************************/
 
 #include "SKP_Silk_structs.h"
 #include "SKP_Silk_tables.h"
-#include "SKP_Silk_tables_NLSF_CB1_16.h"
+#include "SKP_Silk_tables_NLSF_CB.h"
 
-const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS + NLSF_MSVQ_CB1_16_STAGES ] =
+const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS ] =
 {
+          192,
+          162,
+          146,
+          130,
+          116,
+          103,
+           92,
+           83,
+           75,
+           69,
+           63,
+           57,
+           51,
+           46,
+           40,
+           36,
+           32,
+           28,
+           25,
+           23,
+           21,
+           19,
+           17,
+           15,
+           13,
+           12,
+           10,
+            8,
+            6,
+            4,
+            2,
             0,
-        17152,
-        24057,
-        28733,
-        32040,
-        34820,
-        37262,
-        39228,
-        41194,
-        42997,
-        44723,
-        46376,
-        47959,
-        49543,
-        50994,
-        52446,
-        53777,
-        54897,
-        56016,
-        57088,
-        58071,
-        59013,
-        59876,
-        60667,
-        61305,
-        61942,
-        62455,
-        62969,
-        63482,
-        63995,
-        64508,
-        65022,
-        65535,
+          118,
+           91,
+           64,
+           44,
+           32,
+           21,
+           10,
             0,
-        27679,
-        38351,
-        48138,
-        52625,
-        56739,
-        60199,
-        62867,
-        65535,
+          128,
+          104,
+           81,
+           60,
+           41,
+           26,
+           12,
             0,
-        31319,
-        40235,
-        45312,
-        50174,
-        54632,
-        59091,
-        62383,
-        65535,
+          134,
+          103,
+           82,
+           60,
+           42,
+           25,
+           12,
             0,
-        39134,
-        44026,
-        48322,
-        52261,
-        55873,
-        59185,
-        62498,
-        65535,
+          103,
+           83,
+           64,
+           47,
+           32,
+           19,
+            8,
             0,
-        42248,
-        46688,
-        50941,
-        55013,
-        58437,
-        61078,
-        63499,
-        65535,
+           97,
+           77,
+           59,
+           43,
+           29,
+           17,
+            8,
             0,
-        44150,
-        48053,
-        51334,
-        54477,
-        57486,
-        60245,
-        63005,
-        65535,
+           96,
+           75,
+           58,
+           41,
+           29,
+           18,
+            9,
             0,
-        40440,
-        45076,
-        49515,
-        53089,
-        56512,
-        59651,
-        62657,
-        65535,
+          110,
+           82,
+           55,
+           41,
+           28,
+           18,
+            9,
             0,
-        31605,
-        39507,
-        45094,
-        50444,
-        55567,
-        59351,
-        62973,
-        65535,
+          197,
+          143,
+          101,
+           73,
+           50,
+           33,
+           16,
             0,
-        28639,
-        39681,
-        47834,
-        52682,
-        55965,
-        59248,
-        62391,
-        65535,
-            0,
-        17932,
-        34375,
-        42961,
-        49875,
-        55689,
-        59458,
-        62628,
-        65535
+          169,
+          128,
+           99,
+           72,
+           47,
+           30,
+           13,
+            0
 };
 
-const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ] =
+const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ] =
 {
      &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[   0 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  33 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  42 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  51 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  60 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  69 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  78 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  87 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  96 ],
-     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 105 ]
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  32 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  40 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  48 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  56 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  64 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  72 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  80 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  88 ],
+     &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[  96 ]
 };
 
-const SKP_int SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx[ NLSF_MSVQ_CB1_16_STAGES ] =
-{
-       5,
-       2,
-       2,
-       2,
-       2,
-       2,
-       2,
-       2,
-       2,
-       3
-};
-
 const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_16_rates_Q4[ NLSF_MSVQ_CB1_16_VECTORS ] =
 {
-               31,               52,
-               61,               69,
-               73,               76,
-               81,               81,
-               83,               84,
-               85,               86,
-               86,               88,
-               88,               90,
-               94,               94,
-               95,               97,
-               98,              100,
-              102,              107,
-              107,              112,
-              112,              112,
-              112,              112,
-              112,              112,
-               20,               42,
-               44,               62,
-               64,               68,
-               74,               74,
-               17,               46,
-               59,               60,
-               62,               62,
-               69,               70,
-               12,               60,
+               32,               50,
                63,               65,
-               67,               69,
-               69,               71,
-               10,               62,
-               63,               64,
-               68,               74,
-               76,               80,
-                9,               65,
-               69,               70,
+               66,               70,
+               73,               77,
+               81,               85,
+               85,               88,
+               88,               89,
+               89,               93,
+               95,               98,
+              103,              113,
+              113,              113,
+              113,              113,
+              113,              113,
+              113,              113,
+              113,              113,
+              113,              113,
+               14,               52,
+               52,               58,
                71,               73,
-               73,               75,
-               11,               61,
-               62,               67,
-               68,               70,
-               71,               72,
+               73,               74,
+               16,               55,
+               56,               58,
+               60,               65,
+               67,               71,
                17,               49,
-               57,               58,
-               59,               66,
-               67,               75,
-               19,               41,
-               48,               60,
-               69,               69,
-               70,               70,
-               30,               32,
-               47,               52,
-               56,               66,
-               70,               72
+               57,               57,
+               61,               63,
+               69,               70,
+               12,               60,
+               60,               62,
+               66,               70,
+               72,               80,
+               11,               59,
+               61,               64,
+               67,               72,
+               77,               79,
+               11,               58,
+               63,               63,
+               71,               73,
+               77,               78,
+               13,               51,
+               52,               67,
+               69,               76,
+               77,               77,
+               34,               36,
+               42,               51,
+               55,               63,
+               63,               64,
+               25,               42,
+               50,               52,
+               54,               62,
+               63,               69
 };
 
 const SKP_int SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min_Q15[ 16 + 1 ] =
 {
               110,
-               28,
-              122,
-               68,
-               75,
-               71,
-               64,
-               78,
-               83,
-               77,
-               81,
-               76,
-               84,
-               73,
-               69,
-               21,
-              778
+               27,
+              146,
+              128,
+               34,
+               27,
+               32,
+               23,
+               31,
+               25,
+               32,
+               25,
+               23,
+               24,
+               29,
+                4,
+              653
 };
 
 const SKP_int8 SKP_Silk_NLSF_MSVQ_CB1_16_Q8[ 16 * NLSF_MSVQ_CB1_16_VECTORS ] =
 {
-             -118,             -105,              -90,              -74,
-              -58,              -44,              -29,              -13,
-                3,               18,               33,               49,
-               64,               79,               95,              109,
-             -118,             -110,              -95,              -81,
-              -66,              -52,              -37,              -21,
-               -4,               12,               27,               43,
+             -118,             -106,              -90,              -74,
+              -59,              -44,              -28,              -13,
+                2,               18,               33,               48,
+               64,               79,               95,              110,
+             -118,             -108,              -94,              -78,
+              -65,              -51,              -35,              -19,
+               -4,               12,               28,               44,
                60,               77,               93,              107,
-             -120,             -114,              -94,              -78,
-              -60,              -45,              -29,              -13,
-                3,               19,               34,               49,
-               65,               80,               95,              110,
-             -122,             -117,             -103,              -88,
-              -69,              -52,              -37,              -19,
-               -2,               15,               31,               47,
-               63,               79,               95,              110,
+             -118,             -111,             -100,              -88,
+              -74,              -57,              -41,              -27,
+               -9,                9,               26,               42,
+               60,               77,               94,              109,
+             -113,             -100,              -86,              -69,
+              -54,              -39,              -24,               -8,
+                6,               21,               36,               51,
+               66,               82,               97,              111,
+             -119,             -113,              -99,              -85,
+              -67,              -50,              -33,              -17,
+                1,               16,               32,               48,
+               64,               79,               95,              110,
              -119,             -111,              -95,              -81,
-              -68,              -53,              -36,              -22,
-               -5,                9,               27,               40,
-               56,               70,               85,               96,
-             -117,             -106,              -90,              -76,
-              -62,              -49,              -31,              -15,
-               -2,               10,               26,               39,
-               51,               64,               80,               90,
-             -113,             -102,              -84,              -69,
-              -54,              -42,              -27,              -15,
-               -1,               13,               28,               42,
-               58,               73,               90,              106,
-             -115,             -104,              -90,              -76,
-              -63,              -50,              -35,              -21,
-               -8,                7,               22,               37,
-               53,               70,               88,              107,
-             -109,              -98,              -82,              -66,
-              -49,              -35,              -18,               -2,
-               14,               30,               45,               58,
-               73,               86,              100,              113,
-             -106,              -96,              -82,              -68,
-              -53,              -40,              -25,              -10,
-                5,               19,               34,               49,
-               65,               80,               96,              110,
-             -120,             -113,              -99,              -86,
-              -72,              -59,              -50,              -36,
-               -7,               10,               27,               45,
-               61,               78,               94,              109,
-             -117,             -109,              -96,              -84,
-              -72,              -58,              -47,              -32,
-              -19,               -2,               23,               40,
-               57,               75,               92,              109,
-             -119,             -112,              -99,              -87,
-              -78,              -66,              -42,              -20,
-               -6,               11,               28,               44,
-               60,               78,               94,              110,
+              -68,              -53,              -36,              -21,
+               -6,                9,               27,               40,
+               57,               71,               86,               97,
+             -117,             -106,              -90,              -77,
+              -63,              -49,              -30,              -16,
+               -2,               10,               26,               38,
+               51,               64,               81,               90,
+             -114,             -103,              -88,              -71,
+              -57,              -44,              -31,              -19,
+               -3,               11,               26,               40,
+               55,               71,               89,              106,
+             -113,             -101,              -84,              -67,
+              -50,              -34,              -18,               -1,
+               16,               31,               46,               59,
+               71,               84,               99,              113,
+             -117,             -110,              -95,              -81,
+              -70,              -56,              -43,              -27,
+              -16,               -4,               14,               38,
+               58,               75,               92,              109,
              -110,              -97,              -79,              -62,
-              -44,              -26,               -8,                8,
-               23,               36,               49,               60,
-               72,               84,               97,              111,
-             -109,              -94,              -73,              -55,
-              -37,              -22,               -8,                2,
-               13,               24,               37,               50,
-               65,               79,               95,              110,
-             -114,             -101,              -83,              -67,
-              -48,              -31,              -15,               -1,
-               10,               21,               34,               49,
-               65,               80,               96,              111,
-             -118,             -112,             -100,              -92,
-              -80,              -49,              -34,              -19,
-               -7,                8,               26,               43,
-               60,               78,               94,              110,
-             -118,             -112,             -100,              -78,
-              -61,              -51,              -38,              -26,
-               -6,                6,               19,               33,
-               52,               73,               94,              110,
-             -117,             -110,              -94,              -79,
-              -67,              -54,              -42,              -27,
-              -16,               -6,                8,               35,
-               57,               75,               92,              109,
-             -113,              -92,              -71,              -57,
-              -45,              -34,              -22,              -10,
-                4,               17,               32,               46,
-               62,               77,               93,              107,
-             -120,             -110,              -90,              -71,
-              -54,              -37,              -17,               -1,
-               16,               31,               44,               56,
-               70,               82,               97,              111,
-             -110,             -101,              -88,              -80,
-              -69,              -50,              -30,              -13,
-                2,               17,               32,               48,
-               64,               80,               97,              111,
-             -118,             -112,             -101,              -86,
-              -55,              -41,              -29,              -16,
-               -4,               10,               30,               43,
-               56,               72,               90,              107,
-             -112,             -103,              -88,              -74,
-              -61,              -49,              -36,              -24,
-              -10,                4,               17,               29,
-               43,               57,               74,              102,
-             -118,             -107,              -84,              -69,
-              -52,              -35,              -17,               -5,
-                9,               20,               34,               45,
-               59,               69,               84,               93,
-             -106,              -95,              -78,              -63,
-              -48,              -36,              -24,              -13,
-               -1,                9,               21,               32,
-               46,               60,               76,               92,
-             -116,             -101,              -85,              -69,
-              -54,              -37,              -21,               -6,
-               11,               24,               39,               53,
-               76,               93,              104,              112,
-             -114,             -104,              -87,              -74,
-              -61,              -50,              -40,              -30,
-              -19,              -10,                4,               14,
-               36,               69,               89,              109,
-             -112,              -98,              -85,              -72,
-              -54,              -35,              -23,              -11,
-                3,               20,               38,               56,
-               69,               81,               90,              108,
-             -116,             -101,              -84,              -70,
-              -55,              -40,              -25,               -8,
-               11,               30,               41,               49,
-               62,               83,              105,              117,
-             -115,              -98,              -82,              -61,
-              -48,              -40,              -29,              -14,
-                6,               22,               39,               53,
-               68,               82,               96,              110,
-             -113,              -96,              -76,              -68,
-              -59,              -44,              -21,               -8,
-                3,               15,               33,               49,
+              -44,              -26,               -8,                9,
+               24,               38,               50,               62,
+               74,               87,              100,              112,
+             -112,              -96,              -75,              -58,
+              -43,              -29,              -18,               -6,
+                7,               19,               34,               46,
+               61,               76,               92,              107,
+             -110,              -94,              -75,              -57,
+              -38,              -22,               -7,                2,
+               15,               28,               40,               51,
                65,               80,               95,              110,
-               -1,                0,                0,                1,
-                1,                2,                2,                2,
+             -116,             -108,              -96,              -80,
+              -67,              -54,              -40,              -26,
+               -9,                5,               19,               33,
+               48,               66,               88,              108,
+             -118,             -106,              -86,              -68,
+              -48,              -31,              -14,               -1,
+               14,               26,               39,               50,
+               65,               80,               95,              109,
+             -119,             -112,             -102,              -86,
+              -56,              -42,              -29,              -19,
+               -3,               10,               26,               40,
+               56,               72,               90,              107,
+             -117,             -110,              -99,              -88,
+              -78,              -67,              -46,              -20,
+               -5,               10,               27,               43,
+               60,               77,               93,              110,
+             -118,             -108,              -92,              -75,
+              -58,              -44,              -28,               -9,
+               10,               26,               41,               57,
+               70,               81,               95,              108,
+             -118,             -107,              -87,              -71,
+              -51,              -35,              -18,               -6,
+                7,               19,               34,               44,
+               58,               68,               83,               93,
+             -116,              -96,              -75,              -61,
+              -58,              -49,              -29,                2,
+               16,               19,               32,               54,
+               72,               86,               97,              112,
+             -113,             -101,              -84,              -70,
+              -57,              -41,              -42,              -28,
+              -14,               -8,                8,               19,
+               38,               69,               87,              106,
+             -114,             -104,              -90,              -74,
+              -58,              -45,              -31,              -19,
+               -5,                7,               17,               28,
+               40,               52,               67,              102,
+             -109,              -95,              -77,              -62,
+              -51,              -39,              -24,              -12,
+                1,               10,               23,               35,
+               50,               65,               81,               94,
+             -115,              -95,              -81,              -69,
+              -49,              -27,              -21,              -16,
+               -1,               25,               52,               50,
+               51,               79,               98,              113,
+             -115,              -96,              -81,              -67,
+              -50,              -28,               -9,               -2,
+                9,               15,               34,               52,
+               65,               80,               96,              111,
+             -115,              -95,              -77,              -57,
+              -39,              -29,              -32,              -23,
+                2,               17,               34,               49,
+               66,               81,               96,              110,
+             -117,              -97,              -85,              -74,
+              -52,              -36,              -15,                1,
+               33,               39,               39,               36,
+               56,               80,               94,              110,
+             -112,              -96,              -81,              -65,
+              -52,              -39,              -22,               -8,
+                9,               23,               42,               60,
+               87,               99,              100,              100,
+             -114,              -99,              -80,              -67,
+              -52,              -37,              -19,               -3,
+               10,               29,               54,               63,
+               65,               76,              111,              111,
+             -113,              -96,              -79,              -64,
+              -51,              -37,              -22,               -8,
+               11,               25,               41,               60,
+               78,               99,              118,              119,
+             -112,              -95,              -77,              -59,
+              -48,              -39,              -23,               -8,
+               13,               41,               43,               41,
+               48,               78,               98,              112,
+             -117,             -102,              -82,              -66,
+              -50,              -34,              -16,                0,
+               18,               35,               38,               62,
+               74,               95,              101,              111,
+               -1,               -1,                0,                0,
+                1,                1,                1,                1,
                 2,                2,                2,                1,
                 1,                1,                1,                0,
-                0,               -1,               -3,               -6,
-               -6,               -5,               -4,               -4,
-               -3,               -1,                0,                0,
-                0,                0,                1,                1,
-                0,                0,               -1,                0,
-               -1,               -2,               -3,               -3,
-               -4,               -5,               -5,               -4,
-               -3,               -2,               -2,                0,
-                9,                8,                5,                2,
-                1,               -1,               -1,               -2,
-               -1,               -2,               -1,               -2,
-               -2,               -2,               -2,               -2,
-               -5,               -8,                3,                2,
-                2,                0,                0,                0,
-                0,                0,                1,                1,
-                1,                1,                0,                0,
-                0,                0,                2,                8,
-                9,                8,                5,                2,
-               -1,               -2,               -2,               -2,
-               -1,                1,                1,                2,
-               -1,                0,               -1,                0,
-                0,                2,                4,                5,
-                4,                2,               -1,               -5,
-               -8,               -8,               -6,               -2,
-                0,                0,               -2,               -2,
-               -1,               -1,                0,                2,
-                5,                5,                5,                8,
-                9,                7,                6,                3,
-               -1,               -1,               -1,               -1,
-               -1,               -1,               -1,               -1,
-               -1,               -1,               -1,                0,
-               -1,                0,                0,                0,
-                4,                3,                4,                3,
-                3,                3,                3,                3,
-                2,                2,                2,                2,
-                2,                2,                2,                2,
-               -1,               -3,               -6,               -7,
-                0,                0,                4,                3,
-                3,                1,                1,                1,
+                1,                2,                1,               -1,
+               -2,               -2,               -2,               -5,
+               -4,               -3,               -4,               -4,
+               -6,               -4,               -2,                0,
+                0,                0,                2,                7,
+                5,                3,                1,               -2,
+               -5,               -5,               -6,               -4,
+                0,                1,                1,                1,
+                8,                8,                6,                1,
+               -1,               -2,               -2,                0,
+                1,                0,                0,                0,
                 1,                1,                1,                1,
+                1,                1,               -1,               -3,
+               -4,               -7,               -2,                1,
+               -7,               -2,                2,                3,
+                3,                3,                1,                2,
+                1,                0,               -3,               -8,
+              -11,               -1,                0,                3,
+                0,               -2,               -3,               -2,
+               -4,               -2,               -4,               -2,
+                0,                1,                0,               -2,
+               -3,               -1,                0,                1,
+                5,                2,                0,                0,
+               -1,               -5,               -6,               -6,
+               -2,               -5,               -9,               -1,
+                2,               -2,               -4,               -1,
+               -2,               -3,                2,                3,
+                3,               -2,               -1,                0,
+                0,                0,                0,                0,
+               -1,               -1,               -1,               -1,
+               -1,               -1,                0,                0,
+                0,                0,                0,                0,
+               -3,               -7,                1,                3,
+                2,                1,                2,                2,
+                4,                2,                2,                2,
+                2,                1,                1,                2,
+                2,                2,                0,               -2,
+               -3,               -5,               -4,               -5,
+               -1,                0,               -2,               -2,
+               -2,               -1,                1,                0,
+                0,               -2,               -5,               -7,
+                2,                0,                0,                2,
+               -1,                0,                1,                1,
+                2,                3,                3,                3,
+                6,                5,                4,                2,
+                2,                2,               -1,               -1,
+               -2,               -1,               -1,                0,
+               -1,               -3,               -4,               -5,
                -4,                7,                4,                4,
-                3,                3,                2,                2,
-                1,                1,                1,                1,
-                1,                1,                1,                1,
-               -2,               -5,               -7,                5,
-                3,                3,                3,                3,
-                2,                2,                1,                1,
-                1,                0,                0,                0,
-                2,                1,                4,                3,
-                0,               -3,               -7,               -6,
-               -5,               -3,               -2,               -1,
+                2,                3,                4,                5,
+                3,                4,                4,                4,
+                3,                0,                0,                2,
+                0,               -1,                0,                2,
+                5,                4,                3,                3,
+                2,               -1,               -5,               -9,
+               -6,               -1,               -2,               -1,
+                0,               -2,               -3,               -1,
+               -1,                7,                5,                4,
+                4,                4,                1,                1,
+                1,                0,               -3,               -3,
+               -1,                1,                0,                0,
                 0,                0,                0,                0,
-                0,                0,                0,                1,
-                2,                3,                3,                4,
-                3,                4,                5,                4,
-                1,               -3,               -6,               -7,
-                2,                2,                1,               -1,
-               -3,               -2,               -2,               -1,
-                2,               -1,               -6,               -9,
-               -4,               -1,                1,                2,
                 0,                0,                0,                0,
                 0,                0,                0,                0,
+                0,               -1,                1,                4,
+                3,                3,                5,                3,
+                1,                1,                0,                0,
                 0,                0,                0,                0,
+               -3,               -5,               -3,               -4,
+               -1,                0,                0,                0,
+               -1,                0,                0,               -1,
+               -1,                0,               -1,               -2,
+                1,                1,                2,                1,
+                0,               -4,               -4,               -5,
+               -4,                0,                0,                1,
+                0,               -1,                0,                1,
+                0,                0,                0,               -1,
+               -2,               -1,                1,                3,
+                4,                3,                5,                4,
+                2,                0,                0,               -1,
+                6,                4,                3,               -1,
+               -2,               -1,               -1,               -2,
+                0,               -2,                0,                0,
+                0,               -1,                0,                1,
+                0,               -2,                0,               -1,
+               -1,               -1,               -8,                0,
+               -2,               -1,                0,                1,
+               -1,                2,                0,                1,
+                1,                0,               -1,                0,
+               -1,                3,                2,                1,
+                2,               -3,               -7,               -7,
+                0,                0,                1,                0,
+                0,                0,               -1,                0,
                 0,                0,                0,                0,
-                3,                3,                1,               -1,
-               -5,               -7,                1,               -1,
+                0,                0,                0,                0,
+                0,                0,                0,                0,
+                1,                1,                1,               -1,
+               -2,                0,                0,                1,
+               -1,                0,                2,                3,
+                5,                5,                4,                2,
+                1,                1,                2,                0,
+                0,                4,                4,                1,
+               -2,               -5,               -2,               -1,
+                0,               -1,                0,                0,
+                0,               -1,               -3,                2,
+                0,               -2,               -4,               -6,
+                4,                0,                0,                0,
                 0,                1,                0,                0,
-                0,                0,                1,                1,
-               -1,               -1,                1,                1,
-                2,                3,                4,                4,
-                3,                0,               -3,               -5,
-               -4,               -3,               -2,               -1,
-                2,                2,                1,                1,
-                0,               -2,               -2,               -2,
-                1,                3,                3,                0,
-               -4,               -6,               -4,               -1,
-                0,                0,                1,                1,
-                2,                0,               -2,               -5,
-               -7,               -5,               -1,                0,
-                2,                2,                3,                2,
-                0,                0,               -4,               -7,
-                5,                3,               -1,               -2,
-               -1,               -1,               -1,                0,
+               -1,               -1,                7,                0,
+                0,               -1,                0,                1,
+               -1,                0,                0,                0,
+               -2,               -2,               -1,                0,
+               -1,                0,                0,                0,
+                0,                0,                3,                2,
+                0,                1,               -1,               -3,
+               -5,               -3,                0,                1,
+                0,                1,                1,                2,
+                2,               -1,                1,                0,
+                2,                4,                5,                0,
+               -1,               -2,               -5,               -3,
+                1,                1,               -2,               -5,
+                1,               -1,               -5,                1,
+               -1,                1,                0,                0,
+               -2,               -2,               -2,               -2,
+                0,                0,                0,               -1,
+               -1,                0,                0,                0,
                 0,                0,                0,                0,
-                0,               -1,               -1,               -3,
-               -7,                2,                0,                4,
-                3,                3,                2,                1,
-                1,                1,                0,                0,
-                0,                0,                2,                3,
-                1,                0,                0,               -1,
-                2,                2,                4,                6,
-                6,                3,                0,               -2,
-                1,                1,                0,                0,
                 0,                0,                0,                0,
+                1,               -1,                2,                2,
+                0,                0,                0,                1,
+                0,                0,                0,                1,
+                4,                3,                0,                0,
+                0,                0,               -2,               -2,
+                4,                4,               -1,               -3,
                 0,                0,                0,                0,
+                0,               -1,               -1,                0,
+                0,               -2,               -4,                5,
+                1,                0,               -1,                1,
                 0,                0,                0,                0,
-               -4,               -4,                2,                0,
-                2,                2,                2,                1,
-                2,                1,                1,                1,
-                1,                0,                1,                0,
-               -1,               -2,               -4,                3,
-                1,               -2,               -1,               -4,
-                2,                0,               -2,               -1,
-               -1,               -2,               -2,               -1,
-                0,                0,                1,               -2,
-               -1,                3,                4,                0,
-               -3,               -5,               -4,               -1,
-               -1,               -1,                0,                0,
-               -1,               -1,                2,                2,
-                0,               -3,               -4,                1,
-                4,                4,                3,                1,
-                0,                1,                1,                2,
+               -3,               -1,               -2,               -1,
+                0,                0,                0,                1,
+                1,               -3,                6,                0,
+                0,                0,               -4,                0,
                 0,               -1,               -1,               -1,
-               -1,               -2,               -5,                4,
-               -1,               -5,                2,                1,
-               -1,                0,                0,                1,
-                0,               -1,                0,                0,
-                1,                0,                0,               -4,
-               -7,                5,                2,                0,
-                1,                1,                0,                0,
-                1,                1,                0,                1,
-                1,                0,                2,                1,
-                0,                0,               -3,               -3,
-                6,                5,                0,               -3,
+                1,                1,                1,                2,
+                1,                0,               -3,                0,
+                0,               -4,                2,                2,
+               -1,               -1,                5,                2,
+                0,               -1,               -1,                1,
+                1,               -2,               -2,               -2,
+               -6,                5,                2,               -2,
+                1,                0,                0,               -1,
+                0,                1,                2,                1,
+                2,                0,               -1,                2,
+                6,                4,                2,               -2,
+               -2,                0,                1,                1,
+                0,               -1,               -1,                0,
                 0,                0,                0,                0,
-               -1,                0,                0,                0,
                 0,                0,                0,                0,
                 0,                0,                0,                0,
-                1,                1,                1,                0,
-                1,                3,                1,                1,
-                0,                0,                0,                0,
-               -1,               -2,               -3,               -4,
-                1,                0,               -2,                0,
-                4,                0,               -4,                1,
-                0,                1,                0,               -1,
-               -1,                0,                0,                0,
-                0,               -2,                4,                3,
-                1,               -1,               -2,                3,
-               -2,                0,               -2,               -1,
                 0,                1,                1,                0,
-                1,                1,                0,               -1,
-               -1,                2,               -2,               -5,
-                4,                1,                1,                0,
-               -1,               -1,                0,                1,
-                1,                0,               -2,                2,
-                2,                0,                5,                3,
-                2,                1,                1,                0,
-               -2,                1,                3,                0,
-                0,                0,                1,                0,
-                1,                0,               -1,               -1,
-               -1,               -2,                1,                5,
-                3,               -2,               -4,                2,
-               -2,                5,                3,               -2,
-                0,               -1,               -1,               -1,
+                0,                0,                0,               -1,
+                2,                0,                0,               -1,
+               -1,                1,                0,               -5,
+                1,                1,                2,                2,
+                0,                0,               -1,                5,
+                0,                0,               -1,                0,
+                0,                0,                0,                1,
                 0,                1,                0,                0,
-                2,                1,                0,               -1,
-               -1,                0,                0,                0,
+                0,               -3,                3,                0,
+                0,                0,               -1,               -2,
+                0,                2,                4,                4,
+                0,                0,                1,                0,
+                0,                0,                1,               -1,
+                0,               -2,               -3,                5,
+                0,               -1,               -4,               -1,
+                1,                2,                2,                1,
+                3,                0,               -3,               -3,
+               -1,                0,                1,               -3,
+                0,                1,               -1,                1,
+                1,                0,                1,               -1,
+               -4,                5,                0,               -1,
+                1,                1,                2,               -2,
+                0,               -2,                0,                1,
                 1,                1,                0,                0,
                 0,                0,                0,                0,
+               -1,                2,                2,                3,
+               -1,               -5,                1,                2,
+                0,                1,                1,                1,
+                1,                1,                0,                0,
                 0,                0,                0,                0,
-                1,               -1,               -3,               -1,
-               -3,                0,                0,               -1,
-               -2,               -1,                0,                0,
                 0,                0,                0,                0,
-                1,                0,                0,                0,
-               -1,               -2,               -2,               -2,
-                1,                2,                0,               -1,
-               -1,                0,                0,               -4,
-                0,               -1,                4,                2,
-               -3,                0,                1,               -1,
-                0,               -2,               -1,                0,
-                0,                0,               -1,               -1,
-                1,                0,               -1,               -1,
-                1,               -2,                2,                2,
-               -2,                3,                0,               -2,
-               -2,               -1,               -3,                0,
-                0,                0,               -1,               -1,
-               -1,               -2,               -3,                2,
-                3,                0,               -4,                1,
-                2,                1,                0,                0,
-                1,                1,                0,               -2,
-                1,                0,                1,                0,
-               -2,               -1,                3,                0,
-                1,                3,                2,                0,
+                0,               -1,                1,                1,
+               -3,               -2,               -1,                1,
+               -1,                0,               -1,                0,
                 0,                0,                0,                0,
-                0,                1,                0,                0,
-                0,                0,                1,               -1,
-               -3,               -4,                5,                3,
-               -1,               -1,                0,               -1,
-               -1,                0,               -1,               -1,
-               -1,               -1,               -1,               -1,
+                1,               -1,               -2,               -3,
+                0,               -1,                0,                0,
+               -1,                1,               -3,                0,
+                0,                0,                0,                1,
+                1,                0,               -3,               -1,
+               -1,               -1,                2,                0,
+                2,                2,                2,               -2,
                 0,                0,                0,                0,
-               -1,                2,                1,                1,
-                1,                2,                1,                1,
-                1,                1,                0,                1,
-                1,                1,                1,                1,
-                2,                1,                0,                1,
-                2,               -1,                0,               -2,
-               -1,                0,               -1,                0,
-                1,                0,                0,                0,
-                1,                0,                1,               -1,
-                0,                1,               -1,                3,
-                1,                1,                1,                1,
-                0,               -1,               -1,               -1,
-                0,                0,               -1,                1,
-                0,               -3,                3,                1,
-                0,               -2,                2,                1,
-                0,               -1,               -1,                0,
                 0,                0,               -1,               -1,
-               -1,                1,                2,               -2,
-                2,                3,               -1,               -1,
-                1,               -1,                0,                0,
-                1,               -1,               -2,                4,
-                0,                0,               -2,                1,
+                0,               -1,                0,                0,
+                0,               -4,                4,                0,
+                0,                0,               -2,                0,
+                0,               -1,                0,               -1,
                 0,                0,                0,                0,
-                1,                1,                0,                0,
+                1,                1,                2,                0,
+               -5,                1,                3,                1,
+               -2,               -1,                0,               -2,
+               -2,                0,                0,               -1,
+                2,                0,                1,                0,
+                0,               -3,               -1,               -1,
+                0,                1,               -1,               -1,
+                0,               -1,               -2,               -1,
+                1,                2,                1,                0,
+                5,                4,               -2,               -1,
+                0,                0,                0,                0,
+                0,                0,                0,                0,
+                0,                0,               -1,               -1,
+               -2,               -2,               -1,               -1,
+               -3,                2,                0,                0,
+                0,                0,                0,                0,
+                0,                0,                0,                0,
+                0,                0,                0,                1,
+               -1,               -3,                0,                0,
+                0,                0,                0,                0,
+               -1,                0,                0,                1,
                 1,                0,                0,                0,
-                0,                1,                0,                0,
-                0,                0,                1,               -1,
-               -5,                3,                1,                0,
-               -1,               -1,               -1,               -1,
-                0,               -1,                0,                0,
-                0,                1,                1,                1,
-                1,                1,                0,                0,
-                2,                1,                0,                1,
-               -1,               -1,                1,                1,
-                1,                0,               -1,                0,
-               -1,                0,                0,                0,
-                0,               -1,                1,                2,
+                1,                0,                0,                0,
+                0,               -1,                1,                1,
+                2,               -2,               -1,               -1,
                 1,                1,                1,                0,
-               -1,                1,                1,                0,
-               -1,               -1,               -1,               -1,
-                0,                0,                2,               -3,
-                1,               -1,                0,                0,
+                2,                1,                2,                0,
+                0,                1,                0,               -1,
+               -2,                2,                1,                1,
+                1,                0,                0,                0,
+                1,                0,               -3,                2,
+                0,                0,               -2,                0,
+                0,                0,                0,                0,
+                4,                0,                1,                0,
                 1,                0,               -1,                0,
-               -1,               -1,                0,                0,
-                1,                0,                1,                0,
-                0,                4,               -1,               -1,
-               -1,                1,               -1,                0,
-                1,                1,                1,                1,
-                1,                0,               -1,                0,
-                1,                1,                0,                0,
-                1,               -4,                0,                1,
+                0,                0,                0,                0,
+               -1,               -1,                1,                0,
+               -2,                4,                0,                0,
                 0,                0,                1,               -2,
                 0,                0,                0,                0,
-               -1,                0,               -1,                0,
-                1,               -1,                2,               -4,
-                1,                0,               -1,                1,
-               -2,                3,                0,                1,
-               -1,                0,               -1,                0,
-               -1,                0,                0,                1,
-                0,                0,               -1,                0,
-                1,                1,                1,                0,
-               -1,                0,                0,                0,
-               -1,                0,                1,                1,
+                2,                2,                2,                1,
+                0,                0,                0,                1,
+               -1,               -1,                1,               -1,
+                0,                0,               -1,                1,
+                0,               -1,                0,                0,
                 0,                0,                0,                0,
-               -1,                0,                1,                1,
-                1,               -1,               -1,               -1,
-                1,               -1,                0,               -1,
+                0,                0,                0,                1,
+               -2,                0,                1,               -2,
                 0,                0,                0,                0,
-                0,                0,                0,                0,
+                0,                0,                0,                1,
+                1,                2,               -1,               -1,
                 0,                0,                1,                1,
-               -1,                0,               -1,               -1,
-                1,               -1,                0,               -1,
-                1,               -2,                0,               -1,
+               -1,               -1,                0,                1,
+                0,                0,               -1,               -1,
+                0,                0,               -1,                1,
+                3,               -2,                0,                0,
                 0,                0,                0,                0,
-                1,                0,                0,                0,
-                0,                0,                1,                1,
-                1,                2,               -3,               -1,
                 0,                0,                0,                0,
+               -1,                0,               -1,                0,
+                0,                3,                1,                1,
+                1,                1,                0,                1,
+                0,                1,                0,                0,
                 0,                0,                0,                0,
-               -1,                0,                0,                0,
+                0,               -1,                0,                0,
+                1,                3,                0,                1,
+                0,                0,                3,               -1,
                 0,                0,                0,                0,
                 1,                0,                0,                0,
-               -1,                0,               -2,                3,
-               -1,                0,                1,                0,
-                0,                0,                0,                0,
-                0,                0,                0,                0,
-                0,                0,                0,                0,
-                1,                2,               -4,               -1,
-               -2,               -1,                0,                0,
+                0,                0,               -1,               -5,
+                0,               -1,                0,                0,
+                2,               -1,                1,                0,
+                0,                0,                0,               -1,
                -1,                1,                0,                1,
-                1,                0,                0,                0,
-                0,                0,                0,                0
+                0,               -1,               -1,                0
 };
 
 const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB1_16_Stage_info[ NLSF_MSVQ_CB1_16_STAGES ] =
@@ -698,7 +674,6 @@
         SKP_Silk_NLSF_CB1_16_Stage_info,
         SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min_Q15,
         SKP_Silk_NLSF_MSVQ_CB1_16_CDF,
-        SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr,
-        SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx
+        SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr
 };
 
--- a/src_common/SKP_Silk_tables_NLSF_CB1_16.h
+++ /dev/null
@@ -1,51 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifndef SKP_SILK_TABLES_NLSF_CB1_16_H
-#define SKP_SILK_TABLES_NLSF_CB1_16_H
-
-#include "SKP_Silk_define.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define NLSF_MSVQ_CB1_16_STAGES       10
-#define NLSF_MSVQ_CB1_16_VECTORS      104
-
-/* NLSF codebook entropy coding tables */
-extern const SKP_uint16         SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS + NLSF_MSVQ_CB1_16_STAGES ];
-extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[                  NLSF_MSVQ_CB1_16_STAGES ];
-extern const SKP_int            SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx[                 NLSF_MSVQ_CB1_16_STAGES ];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
--- a/src_common/SKP_Silk_tables_gain.c
+++ b/src_common/SKP_Silk_tables_gain.c
@@ -32,45 +32,24 @@
 {
 #endif
 
-const SKP_uint16 SKP_Silk_gain_CDF[ 2 ][ 65 ] = 
+const SKP_uint8 SKP_Silk_gain_iCDF[ 2 ][ N_LEVELS_QGAIN / 8 ] = 
 {
 {
-         0,     18,     45,     94,    181,    320,    519,    777,
-      1093,   1468,   1909,   2417,   2997,   3657,   4404,   5245,
-      6185,   7228,   8384,   9664,  11069,  12596,  14244,  16022,
-     17937,  19979,  22121,  24345,  26646,  29021,  31454,  33927,
-     36438,  38982,  41538,  44068,  46532,  48904,  51160,  53265,
-     55184,  56904,  58422,  59739,  60858,  61793,  62568,  63210,
-     63738,  64165,  64504,  64769,  64976,  65133,  65249,  65330,
-     65386,  65424,  65451,  65471,  65487,  65501,  65513,  65524,
-     65535
+	   255,    251,    219,    143,     53,     10,      1,      0
 },
 {
-         0,    214,    581,   1261,   2376,   3920,   5742,   7632,
-      9449,  11157,  12780,  14352,  15897,  17427,  18949,  20462,
-     21957,  23430,  24889,  26342,  27780,  29191,  30575,  31952,
-     33345,  34763,  36200,  37642,  39083,  40519,  41930,  43291,
-     44602,  45885,  47154,  48402,  49619,  50805,  51959,  53069,
-     54127,  55140,  56128,  57101,  58056,  58979,  59859,  60692,
-     61468,  62177,  62812,  63368,  63845,  64242,  64563,  64818,
-     65023,  65184,  65306,  65391,  65447,  65482,  65505,  65521,
-     65535
+	   242,    199,    146,     94,     48,     15,      2,      0
 }
 };
 
-const SKP_int SKP_Silk_gain_CDF_offset = 32;
-
-
-const SKP_uint16 SKP_Silk_delta_gain_CDF[ 46 ] = {
-         0,   2358,   3856,   7023,  15376,  53058,  59135,  61555,
-     62784,  63498,  63949,  64265,  64478,  64647,  64783,  64894,
-     64986,  65052,  65113,  65169,  65213,  65252,  65284,  65314,
-     65338,  65359,  65377,  65392,  65403,  65415,  65424,  65432,
-     65440,  65448,  65455,  65462,  65470,  65477,  65484,  65491,
-     65499,  65506,  65513,  65521,  65528,  65535
+const SKP_uint8 SKP_Silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ] = {
+	   250,    245,    234,    203,     73,     52,     44,     40,
+	    37,     35,     33,     31,     30,     29,     28,     27,
+	    26,     25,     24,     23,     22,     21,     20,     19,
+	    18,     17,     16,     15,     14,     13,     12,     11,
+	    10,      9,      8,      7,      6,      5,      4,      3,
+	     2,      1,      0
 };
-
-const SKP_int SKP_Silk_delta_gain_CDF_offset = 5;
 
 #ifdef __cplusplus
 }
--- a/src_common/SKP_Silk_tables_other.c
+++ b/src_common/SKP_Silk_tables_other.c
@@ -28,6 +28,7 @@
 #include "SKP_Silk_structs.h"
 #include "SKP_Silk_define.h"
 #include "SKP_Silk_tables.h"
+
 #ifdef __cplusplus
 extern "C"
 {
@@ -34,26 +35,22 @@
 #endif
 
 /* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */
-const SKP_int32 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ] = {
+const SKP_uint16 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ] = {
     0,      8000,   9000,   11000,  13000,  16000,  22000,  MAX_TARGET_RATE_BPS
 };
-const SKP_int32 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ] = {
+const SKP_uint16 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ] = {
     0,      10000,  12000,  14000,  17000,  21000,  28000,  MAX_TARGET_RATE_BPS
 };
-const SKP_int32 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ] = {
+const SKP_uint16 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ] = {
     0,      11000,  14000,  17000,  21000,  26000,  36000,  MAX_TARGET_RATE_BPS
 };
-const SKP_int32 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ] = {
+const SKP_uint16 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ] = {
     0,      13000,  16000,  19000,  25000,  32000,  46000,  MAX_TARGET_RATE_BPS
 };
-const SKP_int32 SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = {
+const SKP_uint16 SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = {
     19,     31,     35,     39,     43,     47,     54,     59
 };
 
-const SKP_int32 SNR_table_one_bit_per_sample_Q7[ 4 ] = {
-    1984,   2240,   2408,   2708
-};
-
 /* Filter coeficicnts for HP filter: 4. Order filter implementad as two biquad filters  */
 const SKP_int16 SKP_Silk_SWB_detect_B_HP_Q13[ NB_SOS ][ 3 ] = {
     //{400, -550, 400}, {400, 130, 400}, {400, 390, 400}
@@ -64,44 +61,56 @@
     //{14880, 6900}, {14400, 7300}, {13700, 7800}
 };
 
-/* Decoder high-pass filter coefficients for 24 kHz sampling, -6 dB @ 44 Hz */
-const SKP_int16 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER     ] = {-16220, 8030};              // second order AR coefs, Q13
-const SKP_int16 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000};        // second order MA coefs, Q13
+/* Decoder high-pass filter coefficients, -6 dB @ 50 Hz, 0.05 dB ripple */
+const SKP_int32 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ]     = {-530479464,  262127223};            /* second order AR coefs, Q28 */
+const SKP_int32 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ] = { 265214231, -530428461, 265214231}; /* second order MA coefs, Q28 */
 
-/* Decoder high-pass filter coefficients for 16 kHz sampling, - 6 dB @ 46 Hz */
-const SKP_int16 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER     ] = {-16127, 7940};              // second order AR coefs, Q13
-const SKP_int16 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000};        // second order MA coefs, Q13
+const SKP_int32 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ]     = {-527234079,  258986528};            /* second order AR coefs, Q28 */
+const SKP_int32 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ] = { 263603618, -527207236, 263603618}; /* second order MA coefs, Q28 */
 
-/* Decoder high-pass filter coefficients for 12 kHz sampling, -6 dB @ 44 Hz */
-const SKP_int16 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER     ] = {-16043, 7859};              // second order AR coefs, Q13
-const SKP_int16 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000};        // second order MA coefs, Q13
+const SKP_int32 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ]     = {-524058488,  255953207};            /* second order AR coefs, Q28 */
+const SKP_int32 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ] = { 261993005, -523986010, 261993005}; /* second order MA coefs, Q28 */
 
-/* Decoder high-pass filter coefficients for 8 kHz sampling, -6 dB @ 43 Hz */
-const SKP_int16 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER     ] = {-15885, 7710};               // second order AR coefs, Q13
-const SKP_int16 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000};         // second order MA coefs, Q13
+const SKP_int32 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER   ]    = {-517610668,  249913410};            /* second order AR coefs, Q28 */
+const SKP_int32 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ]  = { 258905997, -517811995, 258905997}; /* second order MA coefs, Q28 */
 
 /* table for LSB coding */
-const SKP_uint16 SKP_Silk_lsb_CDF[ 3 ] = {0,  40000,  65535};
+const SKP_uint8 SKP_Silk_lsb_iCDF[ 2 ] = { 100, 0 };
 
 /* tables for LTPScale */
-const SKP_uint16 SKP_Silk_LTPscale_CDF[ 4 ] = {0,  32000,  48000,  65535};
-const SKP_int    SKP_Silk_LTPscale_offset   = 2;
+const SKP_uint8 SKP_Silk_LTPscale_iCDF[ 3 ] = { 128, 64, 0 };
 
 /* tables for VAD flag */
-const SKP_uint16 SKP_Silk_vadflag_CDF[ 3 ] = {0,  22000,  65535}; // 66% for speech, 33% for no speech
-const SKP_int    SKP_Silk_vadflag_offset   = 1;
+const SKP_uint8  SKP_Silk_vadflag_iCDF[ 2 ] = { 171,  0 };   /* 66% for speech, 33% for no speech */
 
+/* tables for signal type and offset coding */
+const SKP_uint8 SKP_Silk_type_offset_iCDF[4] = {
+	   123,    116,     94,      0
+};
+const SKP_uint8 SKP_Silk_type_offset_joint_iCDF[4][4] = {
+{
+	   151,     33,      9,      0
+},
+{
+	   248,     50,     25,      0
+},
+{
+	   231,    204,     43,      0
+},
+{
+	   249,    215,    126,      0
+}
+};
+
+
 /* tables for NLSF interpolation factor */
-const SKP_uint16 SKP_Silk_NLSF_interpolation_factor_CDF[ 6 ] = {0,   3706,   8703,  19226,  30926,  65535};
-const SKP_int    SKP_Silk_NLSF_interpolation_factor_offset   = 4;
+const SKP_uint8 SKP_Silk_NLSF_interpolation_factor_iCDF[ 5 ] = { 243, 221, 192, 181, 0 };
 
 /* Table for frame termination indication */
-const SKP_uint16 SKP_Silk_FrameTermination_CDF[ 3 ] = {0, 50000, 65535};
-const SKP_int    SKP_Silk_FrameTermination_offset   = 1;
+const SKP_uint8 SKP_Silk_FrameTermination_iCDF[ 2 ] = { 64, 0 };
 
 /* Table for random seed */
-const SKP_uint16 SKP_Silk_Seed_CDF[ 5 ] = {0, 16384, 32768, 49152, 65535};
-const SKP_int    SKP_Silk_Seed_offset   = 2;
+const SKP_uint8 SKP_Silk_Seed_iCDF[ 4 ] = { 192, 128, 64, 0 };
 
 /* Quantization offsets */
 const SKP_int16  SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ] = {
@@ -110,6 +119,12 @@
 
 /* Table for LTPScale */
 const SKP_int16 SKP_Silk_LTPScales_table_Q14[ 3 ] = { 15565, 11469, 8192 };
+
+/* Uniform entropy tables */
+const SKP_uint8 SKP_Silk_uniform4_iCDF[   4 ] = { 192, 128, 64, 0 };
+const SKP_uint8 SKP_Silk_uniform6_iCDF[   6 ] = { 213, 171, 128, 85, 43, 0 };
+const SKP_uint8 SKP_Silk_uniform8_iCDF[   8 ] = { 224, 192, 160, 128, 96, 64, 32, 0 };
+const SKP_uint8 SKP_Silk_uniform12_iCDF[ 12 ] = { 235, 213, 192, 171, 149, 128, 107, 85, 64, 43, 21, 0 };
 
 #if SWITCH_TRANSITION_FILTERING
 /*  Elliptic/Cauer filters designed with 0.1 dB passband ripple, 
--- a/src_common/SKP_Silk_tables_pitch_lag.c
+++ b/src_common/SKP_Silk_tables_pitch_lag.c
@@ -27,173 +27,39 @@
 
 #include "SKP_Silk_tables.h"
 
-const SKP_uint16 SKP_Silk_pitch_lag_NB_CDF[ 8 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = {
-         0,    194,    395,    608,    841,   1099,   1391,   1724,
-      2105,   2544,   3047,   3624,   4282,   5027,   5865,   6799,
-      7833,   8965,  10193,  11510,  12910,  14379,  15905,  17473,
-     19065,  20664,  22252,  23814,  25335,  26802,  28206,  29541,
-     30803,  31992,  33110,  34163,  35156,  36098,  36997,  37861,
-     38698,  39515,  40319,  41115,  41906,  42696,  43485,  44273,
-     45061,  45847,  46630,  47406,  48175,  48933,  49679,  50411,
-     51126,  51824,  52502,  53161,  53799,  54416,  55011,  55584,
-     56136,  56666,  57174,  57661,  58126,  58570,  58993,  59394,
-     59775,  60134,  60472,  60790,  61087,  61363,  61620,  61856,
-     62075,  62275,  62458,  62625,  62778,  62918,  63045,  63162,
-     63269,  63368,  63459,  63544,  63623,  63698,  63769,  63836,
-     63901,  63963,  64023,  64081,  64138,  64194,  64248,  64301,
-     64354,  64406,  64457,  64508,  64558,  64608,  64657,  64706,
-     64754,  64803,  64851,  64899,  64946,  64994,  65041,  65088,
-     65135,  65181,  65227,  65272,  65317,  65361,  65405,  65449,
-     65492,  65535
+const SKP_uint8 SKP_Silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ] = {
+	   253,    250,    244,    233,    212,    182,    150,    131,
+	   120,    110,     98,     85,     72,     60,     49,     40,
+	    32,     25,     19,     15,     13,     11,      9,      8,
+	     7,      6,      5,      4,      3,      2,      1,      0
 };
 
-const SKP_int SKP_Silk_pitch_lag_NB_CDF_offset = 43;
-
-const SKP_uint16 SKP_Silk_pitch_contour_NB_CDF[ 12 ] = {
-         0,  14445,  18587,  25628,  30013,  34859,  40597,  48426,
-     54460,  59033,  62990,  65535
+const SKP_uint8 SKP_Silk_pitch_delta_iCDF[21] = {
+       210,    208,    206,    203,    199,    193,    183,    168, 
+       142,    104,     74,     52,     37,     27,     20,     14, 
+        10,      6,      4,      2,      0
 };
 
-const SKP_int SKP_Silk_pitch_contour_NB_CDF_offset = 5;
-
-const SKP_uint16 SKP_Silk_pitch_lag_MB_CDF[ 12 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = {
-         0,    132,    266,    402,    542,    686,    838,    997,
-      1167,   1349,   1546,   1760,   1993,   2248,   2528,   2835,
-      3173,   3544,   3951,   4397,   4882,   5411,   5984,   6604,
-      7270,   7984,   8745,   9552,  10405,  11300,  12235,  13206,
-     14209,  15239,  16289,  17355,  18430,  19507,  20579,  21642,
-     22688,  23712,  24710,  25677,  26610,  27507,  28366,  29188,
-     29971,  30717,  31427,  32104,  32751,  33370,  33964,  34537,
-     35091,  35630,  36157,  36675,  37186,  37692,  38195,  38697,
-     39199,  39701,  40206,  40713,  41222,  41733,  42247,  42761,
-     43277,  43793,  44309,  44824,  45336,  45845,  46351,  46851,
-     47347,  47836,  48319,  48795,  49264,  49724,  50177,  50621,
-     51057,  51484,  51902,  52312,  52714,  53106,  53490,  53866,
-     54233,  54592,  54942,  55284,  55618,  55944,  56261,  56571,
-     56873,  57167,  57453,  57731,  58001,  58263,  58516,  58762,
-     58998,  59226,  59446,  59656,  59857,  60050,  60233,  60408,
-     60574,  60732,  60882,  61024,  61159,  61288,  61410,  61526,
-     61636,  61742,  61843,  61940,  62033,  62123,  62210,  62293,
-     62374,  62452,  62528,  62602,  62674,  62744,  62812,  62879,
-     62945,  63009,  63072,  63135,  63196,  63256,  63316,  63375,
-     63434,  63491,  63549,  63605,  63661,  63717,  63772,  63827,
-     63881,  63935,  63988,  64041,  64094,  64147,  64199,  64252,
-     64304,  64356,  64409,  64461,  64513,  64565,  64617,  64669,
-     64721,  64773,  64824,  64875,  64925,  64975,  65024,  65072,
-     65121,  65168,  65215,  65262,  65308,  65354,  65399,  65445,
-     65490,  65535
+const SKP_uint8 SKP_Silk_pitch_contour_iCDF[34] = {
+	   223,    201,    183,    167,    152,    138,    124,    111,
+	    98,     88,     79,     70,     62,     56,     50,     44,
+	    39,     35,     31,     27,     24,     21,     18,     16,
+	    14,     12,     10,      8,      6,      4,      3,      2,
+	     1,      0
 };
 
-const SKP_int SKP_Silk_pitch_lag_MB_CDF_offset = 64;
-
-const SKP_uint16 SKP_Silk_pitch_lag_WB_CDF[ 16 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = {
-         0,    106,    213,    321,    429,    539,    651,    766,
-       884,   1005,   1132,   1264,   1403,   1549,   1705,   1870,
-      2047,   2236,   2439,   2658,   2893,   3147,   3420,   3714,
-      4030,   4370,   4736,   5127,   5546,   5993,   6470,   6978,
-      7516,   8086,   8687,   9320,   9985,  10680,  11405,  12158,
-     12938,  13744,  14572,  15420,  16286,  17166,  18057,  18955,
-     19857,  20759,  21657,  22547,  23427,  24293,  25141,  25969,
-     26774,  27555,  28310,  29037,  29736,  30406,  31048,  31662,
-     32248,  32808,  33343,  33855,  34345,  34815,  35268,  35704,
-     36127,  36537,  36938,  37330,  37715,  38095,  38471,  38844,
-     39216,  39588,  39959,  40332,  40707,  41084,  41463,  41844,
-     42229,  42615,  43005,  43397,  43791,  44186,  44583,  44982,
-     45381,  45780,  46179,  46578,  46975,  47371,  47765,  48156,
-     48545,  48930,  49312,  49690,  50064,  50433,  50798,  51158,
-     51513,  51862,  52206,  52544,  52877,  53204,  53526,  53842,
-     54152,  54457,  54756,  55050,  55338,  55621,  55898,  56170,
-     56436,  56697,  56953,  57204,  57449,  57689,  57924,  58154,
-     58378,  58598,  58812,  59022,  59226,  59426,  59620,  59810,
-     59994,  60173,  60348,  60517,  60681,  60840,  60993,  61141,
-     61284,  61421,  61553,  61679,  61800,  61916,  62026,  62131,
-     62231,  62326,  62417,  62503,  62585,  62663,  62737,  62807,
-     62874,  62938,  62999,  63057,  63113,  63166,  63217,  63266,
-     63314,  63359,  63404,  63446,  63488,  63528,  63567,  63605,
-     63642,  63678,  63713,  63748,  63781,  63815,  63847,  63879,
-     63911,  63942,  63973,  64003,  64033,  64063,  64092,  64121,
-     64150,  64179,  64207,  64235,  64263,  64291,  64319,  64347,
-     64374,  64401,  64428,  64455,  64481,  64508,  64534,  64560,
-     64585,  64610,  64635,  64660,  64685,  64710,  64734,  64758,
-     64782,  64807,  64831,  64855,  64878,  64902,  64926,  64950,
-     64974,  64998,  65022,  65045,  65069,  65093,  65116,  65139,
-     65163,  65186,  65209,  65231,  65254,  65276,  65299,  65321,
-     65343,  65364,  65386,  65408,  65429,  65450,  65471,  65493,
-     65514,  65535
+const SKP_uint8 SKP_Silk_pitch_contour_NB_iCDF[11] = {
+	   188,    176,    155,    138,    119,     97,     67,     43,
+	    26,     10,      0
 };
 
-const SKP_int SKP_Silk_pitch_lag_WB_CDF_offset = 86;
-
-
-const SKP_uint16 SKP_Silk_pitch_lag_SWB_CDF[ 24 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = {
-         0,    253,    505,    757,   1008,   1258,   1507,   1755,
-      2003,   2249,   2494,   2738,   2982,   3225,   3469,   3713,
-      3957,   4202,   4449,   4698,   4949,   5203,   5460,   5720,
-      5983,   6251,   6522,   6798,   7077,   7361,   7650,   7942,
-      8238,   8539,   8843,   9150,   9461,   9775,  10092,  10411,
-     10733,  11057,  11383,  11710,  12039,  12370,  12701,  13034,
-     13368,  13703,  14040,  14377,  14716,  15056,  15398,  15742,
-     16087,  16435,  16785,  17137,  17492,  17850,  18212,  18577,
-     18946,  19318,  19695,  20075,  20460,  20849,  21243,  21640,
-     22041,  22447,  22856,  23269,  23684,  24103,  24524,  24947,
-     25372,  25798,  26225,  26652,  27079,  27504,  27929,  28352,
-     28773,  29191,  29606,  30018,  30427,  30831,  31231,  31627,
-     32018,  32404,  32786,  33163,  33535,  33902,  34264,  34621,
-     34973,  35320,  35663,  36000,  36333,  36662,  36985,  37304,
-     37619,  37929,  38234,  38535,  38831,  39122,  39409,  39692,
-     39970,  40244,  40513,  40778,  41039,  41295,  41548,  41796,
-     42041,  42282,  42520,  42754,  42985,  43213,  43438,  43660,
-     43880,  44097,  44312,  44525,  44736,  44945,  45153,  45359,
-     45565,  45769,  45972,  46175,  46377,  46578,  46780,  46981,
-     47182,  47383,  47585,  47787,  47989,  48192,  48395,  48599,
-     48804,  49009,  49215,  49422,  49630,  49839,  50049,  50259,
-     50470,  50682,  50894,  51107,  51320,  51533,  51747,  51961,
-     52175,  52388,  52601,  52813,  53025,  53236,  53446,  53655,
-     53863,  54069,  54274,  54477,  54679,  54879,  55078,  55274,
-     55469,  55662,  55853,  56042,  56230,  56415,  56598,  56779,
-     56959,  57136,  57311,  57484,  57654,  57823,  57989,  58152,
-     58314,  58473,  58629,  58783,  58935,  59084,  59230,  59373,
-     59514,  59652,  59787,  59919,  60048,  60174,  60297,  60417,
-     60533,  60647,  60757,  60865,  60969,  61070,  61167,  61262,
-     61353,  61442,  61527,  61609,  61689,  61765,  61839,  61910,
-     61979,  62045,  62109,  62170,  62230,  62287,  62343,  62396,
-     62448,  62498,  62547,  62594,  62640,  62685,  62728,  62770,
-     62811,  62852,  62891,  62929,  62967,  63004,  63040,  63075,
-     63110,  63145,  63178,  63212,  63244,  63277,  63308,  63340,
-     63371,  63402,  63432,  63462,  63491,  63521,  63550,  63578,
-     63607,  63635,  63663,  63690,  63718,  63744,  63771,  63798,
-     63824,  63850,  63875,  63900,  63925,  63950,  63975,  63999,
-     64023,  64046,  64069,  64092,  64115,  64138,  64160,  64182,
-     64204,  64225,  64247,  64268,  64289,  64310,  64330,  64351,
-     64371,  64391,  64411,  64431,  64450,  64470,  64489,  64508,
-     64527,  64545,  64564,  64582,  64600,  64617,  64635,  64652,
-     64669,  64686,  64702,  64719,  64735,  64750,  64766,  64782,
-     64797,  64812,  64827,  64842,  64857,  64872,  64886,  64901,
-     64915,  64930,  64944,  64959,  64974,  64988,  65003,  65018,
-     65033,  65048,  65063,  65078,  65094,  65109,  65125,  65141,
-     65157,  65172,  65188,  65204,  65220,  65236,  65252,  65268,
-     65283,  65299,  65314,  65330,  65345,  65360,  65375,  65390,
-     65405,  65419,  65434,  65449,  65463,  65477,  65492,  65506,
-     65521,  65535
+const SKP_uint8 SKP_Silk_pitch_contour_10_ms_iCDF[12] = {
+	   165,    119,     80,     61,     47,     35,     27,     20,
+	    14,      9,      4,      0
 };
 
-const SKP_int SKP_Silk_pitch_lag_SWB_CDF_offset = 128;
-
-
-const SKP_uint16 SKP_Silk_pitch_contour_CDF[ 35 ] = {
-         0,    372,    843,   1315,   1836,   2644,   3576,   4719,
-      6088,   7621,   9396,  11509,  14245,  17618,  20777,  24294,
-     27992,  33116,  40100,  44329,  47558,  50679,  53130,  55557,
-     57510,  59022,  60285,  61345,  62316,  63140,  63762,  64321,
-     64729,  65099,  65535
+const SKP_uint8 SKP_Silk_pitch_contour_10_ms_NB_iCDF[3] = {
+	   113,     63,      0
 };
 
-const SKP_int SKP_Silk_pitch_contour_CDF_offset = 17;
 
-const SKP_uint16 SKP_Silk_pitch_delta_CDF[23] = {
-         0,    343,    740,   1249,   1889,   2733,   3861,   5396,
-      7552,  10890,  16053,  24152,  30220,  34680,  37973,  40405,
-     42243,  43708,  44823,  45773,  46462,  47055,  65535
-};
-
-const SKP_int SKP_Silk_pitch_delta_CDF_offset = 11;
--- a/src_common/SKP_Silk_tables_sign.c
+++ b/src_common/SKP_Silk_tables_sign.c
@@ -27,8 +27,9 @@
 
 #include "SKP_Silk_tables.h"
 
-const SKP_uint16 SKP_Silk_sign_CDF[ 36 ] = 
+const SKP_uint8 SKP_Silk_sign_iCDF[ 36 ] = 
 {
+    /*
          37840,  36944,  36251,  35304,
          34715,  35503,  34529,  34296,
          34016,  47659,  44945,  42503,
@@ -38,5 +39,15 @@
          38252,  37795,  36637,  59159,
          55630,  51806,  48073,  45036,
          48416,  43857,  42678,  41146,
+         */
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
+    128, 128, 128, 128,
 };
 
--- a/src_common/SKP_Silk_tables_type_offset.c
+++ /dev/null
@@ -1,52 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#include "SKP_Silk_tables.h"
-
-const SKP_uint16 SKP_Silk_type_offset_CDF[ 5 ] = {
-         0,  37522,  41030,  44212,  65535
-};
-
-const SKP_int SKP_Silk_type_offset_CDF_offset = 2;
-
-
-const SKP_uint16 SKP_Silk_type_offset_joint_CDF[ 4 ][ 5 ] = 
-{
-{
-         0,  57686,  61230,  62358,  65535
-},
-{
-         0,  18346,  40067,  43659,  65535
-},
-{
-         0,  22694,  24279,  35507,  65535
-},
-{
-         0,   6067,   7215,  13010,  65535
-}
-};
-
--- a/src_common/SKP_Silk_tuning_parameters.h
+++ b/src_common/SKP_Silk_tuning_parameters.h
@@ -44,9 +44,9 @@
 #define FIND_PITCH_BANDWITH_EXPANSION                   0.99f
 
 /* Threshold used by pitch estimator for early escape */
-#define FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE        0.7f
-#define FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE        0.75f
-#define FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE        0.8f
+#define FIND_PITCH_CORRELATION_THRESHOLD_HI_COMPL_MODE  0.7f
+#define FIND_PITCH_CORRELATION_THRESHOLD_MID_COMPL_MODE 0.75f
+#define FIND_PITCH_CORRELATION_THRESHOLD_LOW_COMPL_MODE 0.8f
 
 /*********************/
 /* Linear prediction */
@@ -147,19 +147,10 @@
 #define HIGH_RATE_INPUT_TILT                            0.1f
 
 /* parameter for reducing noise at the very low frequencies */
-#define LOW_FREQ_SHAPING                                3.0f
+#define LOW_FREQ_SHAPING                                4.0f
 
 /* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */
 #define LOW_QUALITY_LOW_FREQ_SHAPING_DECR               0.5f
-
-/* noise floor to put a lower limit on the quantization step size */
-#define NOISE_FLOOR_dB                                  4.0f
-
-/* noise floor relative to active speech gain level */
-#define RELATIVE_MIN_GAIN_dB                            -50.0f
-
-/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */
-#define GAIN_SMOOTHING_COEF                             1e-3f
 
 /* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */
 #define SUBFR_SMTH_COEF                                 0.4f
--- a/src_common/Silk_CommonFLP.vcproj
+++ /dev/null
@@ -1,364 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="Silk_Common"
-	ProjectGUID="{0E29E502-AB22-4147-93A1-AC91528ED758}"
-	RootNamespace="Silk"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX;../src_SigProc_FLP;../src_FLP"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_CommonFLP_Win32_debug.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="0"
-				FavorSizeOrSpeed="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX;../src_SigProc_FLP;../src_FLP"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
-				GeneratePreprocessedFile="0"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="SKP_Silk_CommonFLP_Win32_mt.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_CNG.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_code_signs.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_create_init_destroy.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_dec_SDK_API.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_core.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_frame.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_indices.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_parameters.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decode_pulses.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_decoder_set_fs.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_detect_SWB_input.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_enc_API.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_encode_parameters.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_encode_pulses.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_gain_quant.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_interpolate.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LBRR_reset.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_LP_variable_cutoff.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF2A_stable.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NLSF_MSVQ_decode.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NSQ.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_NSQ_del_dec.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_PLC.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_pulses_to_bytes.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_range_coder.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_shell_coder.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_gain.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_LTP.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_10.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_16.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_10.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_16.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_other.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_pitch_lag.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_pulses_per_block.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_sign.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_type_offset.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_VAD.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\SKP_Silk_define.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_main.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_perceptual_parameters.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_PLC.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_structs.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_10.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB0_16.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_10.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_Silk_tables_NLSF_CB1_16.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/src_common/src_common.vcxproj
@@ -1,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C303D2FC-FF97-49B8-9DDD-467B4C9A0B16}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>src_common</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface/;../src_SigProc_FIX;../src_SigProc_FLP;../src_FIX;../src_FLP;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>../interface/;../src_SigProc_FIX;../src_SigProc_FLP;../src_FIX;../src_FLP;../../celt/libcelt</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_define.h" />
+    <ClInclude Include="SKP_Silk_main.h" />
+    <ClInclude Include="SKP_Silk_PLC.h" />
+    <ClInclude Include="SKP_Silk_setup_complexity.h" />
+    <ClInclude Include="SKP_Silk_structs.h" />
+    <ClInclude Include="SKP_Silk_tables.h" />
+    <ClInclude Include="SKP_Silk_tables_NLSF_CB.h" />
+    <ClInclude Include="SKP_Silk_tuning_parameters.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_CNG.c" />
+    <ClCompile Include="SKP_Silk_code_signs.c" />
+    <ClCompile Include="SKP_Silk_control_audio_bandwidth.c" />
+    <ClCompile Include="SKP_Silk_create_init_destroy.c" />
+    <ClCompile Include="SKP_Silk_decoder_set_fs.c" />
+    <ClCompile Include="SKP_Silk_decode_core.c" />
+    <ClCompile Include="SKP_Silk_decode_frame.c" />
+    <ClCompile Include="SKP_Silk_decode_indices.c" />
+    <ClCompile Include="SKP_Silk_decode_parameters.c" />
+    <ClCompile Include="SKP_Silk_decode_pulses.c" />
+    <ClCompile Include="SKP_Silk_dec_API.c" />
+    <ClCompile Include="SKP_Silk_detect_SWB_input.c" />
+    <ClCompile Include="SKP_Silk_encode_parameters.c" />
+    <ClCompile Include="SKP_Silk_encode_pulses.c" />
+    <ClCompile Include="SKP_Silk_enc_API.c" />
+    <ClCompile Include="SKP_Silk_gain_quant.c" />
+    <ClCompile Include="SKP_Silk_interpolate.c" />
+    <ClCompile Include="SKP_Silk_LBRR_reset.c" />
+    <ClCompile Include="SKP_Silk_LP_variable_cutoff.c" />
+    <ClCompile Include="SKP_Silk_NLSF2A_stable.c" />
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode.c" />
+    <ClCompile Include="SKP_Silk_NSQ.c" />
+    <ClCompile Include="SKP_Silk_NSQ_del_dec.c" />
+    <ClCompile Include="SKP_Silk_PLC.c" />
+    <ClCompile Include="SKP_Silk_pulses_to_bytes.c" />
+    <ClCompile Include="SKP_Silk_quant_LTP_gains.c" />
+    <ClCompile Include="SKP_Silk_range_coder.c" />
+    <ClCompile Include="SKP_Silk_shell_coder.c" />
+    <ClCompile Include="SKP_Silk_tables_gain.c" />
+    <ClCompile Include="SKP_Silk_tables_LTP.c" />
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB0_10.c" />
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB0_16.c" />
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB1_10.c" />
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB1_16.c" />
+    <ClCompile Include="SKP_Silk_tables_other.c" />
+    <ClCompile Include="SKP_Silk_tables_pitch_lag.c" />
+    <ClCompile Include="SKP_Silk_tables_pulses_per_block.c" />
+    <ClCompile Include="SKP_Silk_tables_sign.c" />
+    <ClCompile Include="SKP_Silk_VAD.c" />
+    <ClCompile Include="SKP_Silk_VQ_WMat_EC.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/src_common/src_common.vcxproj.filters
@@ -1,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SKP_Silk_define.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_main.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_PLC.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_structs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_tables.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_tuning_parameters.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_setup_complexity.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="SKP_Silk_tables_NLSF_CB.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="SKP_Silk_CNG.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_code_signs.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_create_init_destroy.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_core.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_frame.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_indices.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_parameters.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decode_pulses.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_decoder_set_fs.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_detect_SWB_input.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_enc_API.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_encode_parameters.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_encode_pulses.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_gain_quant.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_interpolate.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LBRR_reset.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_LP_variable_cutoff.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NLSF2A_stable.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NSQ.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_NSQ_del_dec.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_PLC.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_pulses_to_bytes.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_range_coder.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_shell_coder.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_gain.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_LTP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB0_10.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB0_16.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB1_10.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_NLSF_CB1_16.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_other.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_pitch_lag.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_pulses_per_block.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_tables_sign.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_VAD.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_dec_API.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_control_audio_bandwidth.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_quant_LTP_gains.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SKP_Silk_VQ_WMat_EC.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/test/Dec_SDK.vcproj
+++ /dev/null
@@ -1,221 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="Dec"
-	ProjectGUID="{82685D7F-0589-42BD-877C-31A952D53A8E}"
-	RootNamespace="Test"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)_Dec"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;COMPILE_SDK"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\Decoder_debug.exe"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				IgnoreAllDefaultLibraries="false"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)_Dec"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;COMPILE_SDK"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/fixed:no"
-				OutputFile="$(OutDir)\Decoder.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="false"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\Decoder.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_debug.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="interface"
-			>
-			<File
-				RelativePath="..\interface\SKP_Silk_control.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_errors.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_SDK_API.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_typedef.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/test/Enc_SDK.vcproj
+++ /dev/null
@@ -1,221 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="Enc"
-	ProjectGUID="{6D97A8EF-5724-4D85-8BF4-C583714BBA78}"
-	RootNamespace="Enc"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)\Enc"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\Encoder_debug.exe"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				IgnoreAllDefaultLibraries="false"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)_Enc"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/fixed:no"
-				OutputFile="$(OutDir)\Encoder.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="false"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\Encoder.c"
-				>
-			</File>
-			<File
-				RelativePath=".\SKP_debug.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="interface"
-			>
-			<File
-				RelativePath="..\interface\SKP_Silk_control.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_errors.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_SDK_API.h"
-				>
-			</File>
-			<File
-				RelativePath="..\interface\SKP_Silk_typedef.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- a/test/SKP_debug.c
+++ /dev/null
@@ -1,169 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2010, Skype Limited. All rights reserved. 
-Redistribution and use in source and binary forms, with or without 
-modification, (subject to the limitations in the disclaimer below) 
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright 
-notice, this list of conditions and the following disclaimer in the 
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific 
-contributors, may be used to endorse or promote products derived from 
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED 
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-/*                                                                      *
- * SKP_debug.c                                                          *
- *                                                                      *
- * This contains code to help debugging                                 *
- *                                                                      *
- * Copyright 2009 (c), Skype Limited                                    *
- * Date: 090629                                                         *
- *                                                                      */
-
-#include "SKP_debug.h"
-#include "../src_SigProc_FIX/SKP_Silk_SigProc_FIX.h"
-
-#ifdef _WIN32
-
-#if (defined(_WIN32) || defined(_WINCE)) 
-#include <windows.h>    /* timer */
-#else   // Linux or Mac
-#include <sys/time.h>
-#endif
-
-unsigned long GetHighResolutionTime() /* O: time in usec*/
-{
-    /* Returns a time counter in microsec   */
-    /* the resolution is platform dependent */
-    /* but is typically 1.62 us resolution  */
-    LARGE_INTEGER lpPerformanceCount;
-    LARGE_INTEGER lpFrequency;
-    QueryPerformanceCounter(&lpPerformanceCount);
-    QueryPerformanceFrequency(&lpFrequency);
-    return (unsigned long)((1000000*(lpPerformanceCount.QuadPart)) / lpFrequency.QuadPart);
-}
-#else   // Linux or Mac
-unsigned long GetHighResolutionTime() /* O: time in usec*/
-{
-    struct timeval tv;
-    gettimeofday(&tv, 0);
-    return((tv.tv_sec*1000000)+(tv.tv_usec));
-}
-#endif
-
-#if SKP_TIC_TOC
-
-int           SKP_Timer_nTimers = 0;
-int           SKP_Timer_depth_ctr = 0;
-char          SKP_Timer_tags[SKP_NUM_TIMERS_MAX][SKP_NUM_TIMERS_MAX_TAG_LEN];
-#ifdef WIN32
-LARGE_INTEGER SKP_Timer_start[SKP_NUM_TIMERS_MAX];
-#else
-unsigned long SKP_Timer_start[SKP_NUM_TIMERS_MAX];
-#endif  
-unsigned int  SKP_Timer_cnt[SKP_NUM_TIMERS_MAX];
-SKP_int64     SKP_Timer_min[SKP_NUM_TIMERS_MAX];
-SKP_int64     SKP_Timer_sum[SKP_NUM_TIMERS_MAX];
-SKP_int64     SKP_Timer_max[SKP_NUM_TIMERS_MAX];
-SKP_int64     SKP_Timer_depth[SKP_NUM_TIMERS_MAX];
-
-#ifdef WIN32
-void SKP_TimerSave(char *file_name)
-{
-    if( SKP_Timer_nTimers > 0 ) 
-    {
-        int k;
-        FILE *fp;
-        LARGE_INTEGER lpFrequency;
-        LARGE_INTEGER lpPerformanceCount1, lpPerformanceCount2;
-        int del = 0x7FFFFFFF;
-        double avg, sum_avg;
-        /* estimate overhead of calling performance counters */
-        for( k = 0; k < 1000; k++ ) {
-            QueryPerformanceCounter(&lpPerformanceCount1);
-            QueryPerformanceCounter(&lpPerformanceCount2);
-            lpPerformanceCount2.QuadPart -= lpPerformanceCount1.QuadPart;
-            if( (int)lpPerformanceCount2.LowPart < del )
-                del = lpPerformanceCount2.LowPart;
-        }
-        QueryPerformanceFrequency(&lpFrequency);
-        /* print results to file */
-        sum_avg = 0.0f;
-        for( k = 0; k < SKP_Timer_nTimers; k++ ) {
-            if (SKP_Timer_depth[k] == 0) {
-                sum_avg += (1e6 * SKP_Timer_sum[k] / SKP_Timer_cnt[k] - del) / lpFrequency.QuadPart * SKP_Timer_cnt[k];
-            }
-        }
-        fp = fopen(file_name, "w");
-        fprintf(fp, "                                min         avg     %%         max      count\n");
-        for( k = 0; k < SKP_Timer_nTimers; k++ ) {
-            if (SKP_Timer_depth[k] == 0) {
-                fprintf(fp, "%-28s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 1) {
-                fprintf(fp, " %-27s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 2) {
-                fprintf(fp, "  %-26s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 3) {
-                fprintf(fp, "   %-25s", SKP_Timer_tags[k]);
-            } else {
-                fprintf(fp, "    %-24s", SKP_Timer_tags[k]);
-            }
-            avg = (1e6 * SKP_Timer_sum[k] / SKP_Timer_cnt[k] - del) / lpFrequency.QuadPart;
-            fprintf(fp, "%8.2f", (1e6 * (SKP_max_64(SKP_Timer_min[k] - del, 0))) / lpFrequency.QuadPart);
-            fprintf(fp, "%12.2f %6.2f", avg, 100.0 * avg / sum_avg * SKP_Timer_cnt[k]);
-            fprintf(fp, "%12.2f", (1e6 * (SKP_max_64(SKP_Timer_max[k] - del, 0))) / lpFrequency.QuadPart);
-            fprintf(fp, "%10d\n", SKP_Timer_cnt[k]);
-        }
-        fprintf(fp, "                                microseconds\n");
-        fclose(fp);
-    }
-}
-#else
-void SKP_TimerSave(char *file_name)
-{
-    if( SKP_Timer_nTimers > 0 ) 
-    {
-        int k;
-        FILE *fp;
-        /* print results to file */
-        fp = fopen(file_name, "w");
-        fprintf(fp, "                                min         avg         max      count\n");
-        for( k = 0; k < SKP_Timer_nTimers; k++ )
-        {
-            if (SKP_Timer_depth[k] == 0) {
-                fprintf(fp, "%-28s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 1) {
-                fprintf(fp, " %-27s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 2) {
-                fprintf(fp, "  %-26s", SKP_Timer_tags[k]);
-            } else if (SKP_Timer_depth[k] == 3) {
-                fprintf(fp, "   %-25s", SKP_Timer_tags[k]);
-            } else {
-                fprintf(fp, "    %-24s", SKP_Timer_tags[k]);
-            }
-            fprintf(fp, "%d ", SKP_Timer_min[k]);
-            fprintf(fp, "%f ", (double)SKP_Timer_sum[k] / (double)SKP_Timer_cnt[k]);
-            fprintf(fp, "%d ", SKP_Timer_max[k]);
-            fprintf(fp, "%10d\n", SKP_Timer_cnt[k]);
-        }
-        fprintf(fp, "                                microseconds\n");
-        fclose(fp);
-    }
-}
-#endif
-
-#endif /* SKP_TIC_TOC */
--- a/test/SignalCompare.vcproj
+++ /dev/null
@@ -1,197 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="SignalCompare"
-	ProjectGUID="{7FE8F544-9175-40C3-A187-7F15CE9A75D8}"
-	RootNamespace="Test"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)_SigCmp"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\interface;..\src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="SignalCompare_debug.exe"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				IgnoreAllDefaultLibraries="false"
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)"
-			IntermediateDirectory="$(ConfigurationName)_SigCmp"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\interface;..\src_SigProc_FIX"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="0"
-				FloatingPointModel="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/fixed:no"
-				OutputFile="$(SolutionDir)SignalCompare.exe"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""
-				IgnoreDefaultLibraryNames=""
-				GenerateDebugInformation="false"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\signalCompare.c"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
--- /dev/null
+++ b/test_silk_dec/test_silk_dec.vcxproj
@@ -1,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8CA2DBCB-F28E-4022-ACD7-E2C23A15827F}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>test_silk_dec</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\test\Decoder.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\interface\SKP_Silk_SDK_API.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/test_silk_dec/test_silk_dec.vcxproj.filters
@@ -1,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\test\Decoder.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\interface\SKP_Silk_SDK_API.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/test_silk_enc/test_silk_enc.vcxproj
@@ -1,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{38945839-ADA4-40CA-9C43-092FD47960A0}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>test_silk_enc</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\test\Encoder.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/test_silk_enc/test_silk_enc.vcxproj.filters
@@ -1,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\test\Encoder.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file