summaryrefslogtreecommitdiff
path: root/silk
diff options
context:
space:
mode:
authorKoen Vos <koen.vos@skype.net>2011-05-02 10:01:10 -0400
committerJean-Marc Valin <jean-marc.valin@octasic.com>2011-05-02 10:01:10 -0400
commit494ce976e20d4854af2918ac8bae2b1bb10dc33f (patch)
tree2b575369923216c2ec3333e4f0840cbfe3a2e74f /silk
parentfe741259c1050baa5c828444dd5a968ed658d1fb (diff)
downloadopus-494ce976e20d4854af2918ac8bae2b1bb10dc33f.tar.gz
Squashed commit of the following:
commit dfe4d46f9abf6b0e96e66370d428da4e283204ce Author: Jean-Marc Valin <jean-marc.valin@octasic.com> Date: Mon May 2 09:59:45 2011 -0400 SILK file list update commit 5faf541d86445eb8ce1775ea206e88afe83c7107 Author: Jean-Marc Valin <jean-marc.valin@octasic.com> Date: Mon May 2 09:51:29 2011 -0400 Makefiles update commit f5d70b3ccbe209cc07a1a604fffca93ea34bc64b Author: Koen Vos <koen.vos@skype.net> Date: Mon May 2 09:50:33 2011 -0400 SILK stereo update and MSVC build update
Diffstat (limited to 'silk')
-rw-r--r--silk/SKP_Silk_Inlines.h2
-rw-r--r--silk/SKP_Silk_LPC_analysis_filter.c3
-rw-r--r--silk/SKP_Silk_LP_variable_cutoff.c3
-rw-r--r--silk/SKP_Silk_assembler_FLP.h42
-rw-r--r--silk/SKP_Silk_control_codec.c21
-rw-r--r--silk/SKP_Silk_dec_API.c10
-rw-r--r--silk/SKP_Silk_decode_core.c4
-rw-r--r--silk/SKP_Silk_define.h10
-rw-r--r--silk/SKP_Silk_enc_API.c20
-rw-r--r--silk/SKP_Silk_init_encoder.c6
-rw-r--r--silk/SKP_Silk_main.h23
-rw-r--r--silk/SKP_Silk_stereo_LR_to_MS.c91
-rw-r--r--silk/SKP_Silk_stereo_MS_to_LR.c58
-rw-r--r--silk/SKP_Silk_stereo_decode_pred.c59
-rw-r--r--silk/SKP_Silk_stereo_encode_pred.c80
-rw-r--r--silk/SKP_Silk_stereo_find_predictor.c54
-rw-r--r--silk/SKP_Silk_structs.h14
-rw-r--r--silk/SKP_Silk_tables.h27
-rw-r--r--silk/SKP_Silk_tables_other.c17
-rw-r--r--silk/fixed/SKP_Silk_encode_frame_FIX.c14
-rw-r--r--silk/fixed/SKP_Silk_find_pred_coefs_FIX.c4
-rw-r--r--silk/fixed/SKP_Silk_main_FIX.h (renamed from silk/SKP_Silk_main_FIX.h)3
-rw-r--r--silk/fixed/SKP_Silk_structs_FIX.h (renamed from silk/SKP_Silk_structs_FIX.h)0
-rw-r--r--silk/fixed/silk_fixed.vcxproj (renamed from silk/src_FIX.vcxproj)26
-rw-r--r--silk/fixed/silk_fixed.vcxproj.filters (renamed from silk/src_FIX.vcxproj.filters)48
-rw-r--r--silk/float/SKP_Silk_LPC_analysis_filter_FLP.c10
-rw-r--r--silk/float/SKP_Silk_LPC_inv_pred_gain_FLP.c (renamed from silk/SKP_Silk_LPC_inv_pred_gain_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_SigProc_FLP.h (renamed from silk/SKP_Silk_SigProc_FLP.h)0
-rw-r--r--silk/float/SKP_Silk_autocorrelation_FLP.c (renamed from silk/SKP_Silk_autocorrelation_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_burg_modified_FLP.c (renamed from silk/SKP_Silk_burg_modified_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_bwexpander_FLP.c (renamed from silk/SKP_Silk_bwexpander_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_encode_frame_FLP.c16
-rw-r--r--silk/float/SKP_Silk_energy_FLP.c (renamed from silk/SKP_Silk_energy_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_find_pred_coefs_FLP.c7
-rw-r--r--silk/float/SKP_Silk_inner_product_FLP.c (renamed from silk/SKP_Silk_inner_product_FLP.c)2
-rw-r--r--silk/float/SKP_Silk_k2a_FLP.c (renamed from silk/SKP_Silk_k2a_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_levinsondurbin_FLP.c (renamed from silk/SKP_Silk_levinsondurbin_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_main_FLP.h (renamed from silk/SKP_Silk_main_FLP.h)3
-rw-r--r--silk/float/SKP_Silk_pitch_analysis_core_FLP.c (renamed from silk/SKP_Silk_pitch_analysis_core_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_scale_copy_vector_FLP.c (renamed from silk/SKP_Silk_scale_copy_vector_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_scale_vector_FLP.c (renamed from silk/SKP_Silk_scale_vector_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_schur_FLP.c (renamed from silk/SKP_Silk_schur_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_sort_FLP.c (renamed from silk/SKP_Silk_sort_FLP.c)0
-rw-r--r--silk/float/SKP_Silk_structs_FLP.h (renamed from silk/SKP_Silk_structs_FLP.h)2
-rw-r--r--silk/float/silk_float.vcxproj (renamed from silk/src_FLP.vcxproj)42
-rw-r--r--silk/float/silk_float.vcxproj.filters (renamed from silk/src_FLP.vcxproj.filters)100
-rw-r--r--silk/silk_common.vcxproj (renamed from silk/src_SigProc_FIX.vcxproj)111
-rw-r--r--silk/silk_common.vcxproj.filters (renamed from silk/src_SigProc_FIX.vcxproj.filters)245
-rw-r--r--silk/src_SigProc_FLP.vcxproj97
-rw-r--r--silk/src_SigProc_FLP.vcxproj.filters66
-rw-r--r--silk/src_common.vcxproj136
-rw-r--r--silk/src_common.vcxproj.filters183
52 files changed, 855 insertions, 804 deletions
diff --git a/silk/SKP_Silk_Inlines.h b/silk/SKP_Silk_Inlines.h
index 43c9d0aa..49c69e58 100644
--- a/silk/SKP_Silk_Inlines.h
+++ b/silk/SKP_Silk_Inlines.h
@@ -151,7 +151,7 @@ SKP_INLINE SKP_int32 SKP_DIV32_varQ( /* O returns a good approximation of
/* Convert to Qres domain */
lshift = 29 + a_headrm - b_headrm - Qres;
- if( lshift <= 0 ) {
+ if( lshift < 0 ) {
return SKP_LSHIFT_SAT32(result, -lshift);
} else {
if( lshift < 32){
diff --git a/silk/SKP_Silk_LPC_analysis_filter.c b/silk/SKP_Silk_LPC_analysis_filter.c
index 6029ae60..ba9475b4 100644
--- a/silk/SKP_Silk_LPC_analysis_filter.c
+++ b/silk/SKP_Silk_LPC_analysis_filter.c
@@ -73,7 +73,4 @@ void SKP_Silk_LPC_analysis_filter(
/* Saturate output */
out[ ix ] = ( SKP_int16 )SKP_SAT16( out32 );
}
-
- /* Set first LPC d samples to zero instead of undefined */
- SKP_memset( out, 0, d * sizeof( SKP_int16 ) );
}
diff --git a/silk/SKP_Silk_LP_variable_cutoff.c b/silk/SKP_Silk_LP_variable_cutoff.c
index f95bbc91..7654c50b 100644
--- a/silk/SKP_Silk_LP_variable_cutoff.c
+++ b/silk/SKP_Silk_LP_variable_cutoff.c
@@ -63,7 +63,6 @@ SKP_INLINE void SKP_Silk_LP_interpolate_filter_taps(
fac_Q16 );
}
} else { /* ( fac_Q16 - ( 1 << 16 ) ) is in range of a 16-bit int */
-
SKP_assert( fac_Q16 - ( 1 << 16 ) == SKP_SAT16( fac_Q16 - ( 1 << 16 ) ) );
/* Piece-wise linear interpolation of B and A */
for( nb = 0; nb < TRANSITION_NB; nb++ ) {
@@ -106,7 +105,7 @@ void SKP_Silk_LP_variable_cutoff(
SKP_assert( psLP->transition_frame_no >= 0 && psLP->transition_frame_no <= TRANSITION_FRAMES );
- /* Interpolate filter coefficients if needed */
+ /* Run filter if needed */
if( psLP->mode != 0 ) {
/* Calculate index and interpolation factor for interpolation */
#if( TRANSITION_INT_STEPS == 64 )
diff --git a/silk/SKP_Silk_assembler_FLP.h b/silk/SKP_Silk_assembler_FLP.h
deleted file mode 100644
index e4129ad3..00000000
--- a/silk/SKP_Silk_assembler_FLP.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, 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_ASSEMBLER_FLP_H
-#define SKP_SILK_ASSEMBLER_FLP_H
-
-#include "SKP_Silk_typedef.h"
-
-/* Declaration of assembler functions */
-
-void SKP_Silk_LPC_ana_sse(
- float *r_LPC, /* O LPC residual signal */
- const float *coefs, /* I LPC coefficients */
- const float *speech, /* I Input signal */
- int len /* I Length of input signal */
-);
-
-#endif
diff --git a/silk/SKP_Silk_control_codec.c b/silk/SKP_Silk_control_codec.c
index 0beb2452..43563307 100644
--- a/silk/SKP_Silk_control_codec.c
+++ b/silk/SKP_Silk_control_codec.c
@@ -25,12 +25,8 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
***********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
#include "SKP_Silk_tuning_parameters.h"
-#if FIXED_POINT
+#ifdef FIXED_POINT
#include "SKP_Silk_main_FIX.h"
#define SKP_Silk_encoder_state_Fxx SKP_Silk_encoder_state_FIX
#else
@@ -64,8 +60,9 @@ SKP_INLINE SKP_int SKP_Silk_setup_LBRR(
SKP_int SKP_Silk_control_encoder(
SKP_Silk_encoder_state_Fxx *psEnc, /* I/O Pointer to Silk encoder state */
SKP_SILK_SDK_EncControlStruct *encControl, /* I: Control structure */
- const SKP_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const SKP_int allow_bw_switch /* I Flag to allow switching audio bandwidth */
+ const SKP_int32 TargetRate_bps, /* I Target max bitrate (bps) */
+ const SKP_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
+ const SKP_int channelNb /* I Channel number */
)
{
SKP_int fs_kHz, ret = 0;
@@ -77,7 +74,9 @@ SKP_int SKP_Silk_control_encoder(
psEnc->sCmn.minInternal_fs_Hz = encControl->minInternalSampleRate;
psEnc->sCmn.desiredInternal_fs_Hz = encControl->desiredInternalSampleRate;
psEnc->sCmn.useInBandFEC = encControl->useInBandFEC;
+ psEnc->sCmn.nChannels = encControl->nChannels;
psEnc->sCmn.allow_bandwidth_switch = allow_bw_switch;
+ psEnc->sCmn.channelNb = channelNb;
if( psEnc->sCmn.controlled_since_last_payload != 0 && psEnc->sCmn.prefillFlag == 0 ) {
if( psEnc->sCmn.API_fs_Hz != psEnc->sCmn.prev_API_fs_Hz && psEnc->sCmn.fs_kHz > 0 ) {
@@ -140,7 +139,7 @@ SKP_int SKP_Silk_setup_resamplers(
} else {
/* Allocate space for worst case temporary upsampling, 8 to 48 kHz, so a factor 6 */
SKP_int16 x_buf_API_fs_Hz[ ( 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ) * ( MAX_API_FS_KHZ / 8 ) ];
-#if FIXED_POINT
+#ifdef FIXED_POINT
SKP_int16 *x_bufFIX = psEnc->x_buf;
#else
SKP_int16 x_bufFIX[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];
@@ -148,7 +147,7 @@ SKP_int SKP_Silk_setup_resamplers(
nSamples_temp = SKP_LSHIFT( psEnc->sCmn.frame_length, 1 ) + LA_SHAPE_MS * psEnc->sCmn.fs_kHz;
-#if !FIXED_POINT
+#ifndef FIXED_POINT
SKP_float2short_array( x_bufFIX, psEnc->x_buf, nSamples_temp );
#endif
@@ -178,7 +177,7 @@ SKP_int SKP_Silk_setup_resamplers(
/* Correct resampler state (unless resampling by a factor 1) by resampling buffered data from API_fs_Hz to fs_kHz */
ret += SKP_Silk_resampler( &psEnc->sCmn.resampler_state, x_bufFIX, x_buf_API_fs_Hz, nSamples_temp );
}
-#if !FIXED_POINT
+#ifndef FIXED_POINT
SKP_short2float_array( psEnc->x_buf, x_bufFIX, ( 2 * MAX_FRAME_LENGTH_MS + LA_SHAPE_MS ) * fs_kHz );
#endif
}
@@ -235,7 +234,7 @@ SKP_int SKP_Silk_setup_fs(
SKP_assert( psEnc->sCmn.nb_subfr == 2 || psEnc->sCmn.nb_subfr == 4 );
if( psEnc->sCmn.fs_kHz != fs_kHz ) {
/* reset part of the state */
-#if FIXED_POINT
+#ifdef FIXED_POINT
SKP_memset( &psEnc->sShape, 0, sizeof( SKP_Silk_shape_state_FIX ) );
SKP_memset( &psEnc->sPrefilt, 0, sizeof( SKP_Silk_prefilter_state_FIX ) );
#else
diff --git a/silk/SKP_Silk_dec_API.c b/silk/SKP_Silk_dec_API.c
index 7d046f4c..6340f2d8 100644
--- a/silk/SKP_Silk_dec_API.c
+++ b/silk/SKP_Silk_dec_API.c
@@ -31,14 +31,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "SKP_Silk_SDK_API.h"
#include "SKP_Silk_main.h"
+/************************/
/* Decoder Super Struct */
+/************************/
typedef struct {
SKP_Silk_decoder_state channel_state[ DECODER_NUM_CHANNELS ];
stereo_state sStereo;
SKP_int nChannels;
} SKP_Silk_decoder;
-
/*********************/
/* Decoder functions */
/*********************/
@@ -78,10 +79,11 @@ SKP_int SKP_Silk_SDK_Decode(
SKP_int32 *nSamplesOut /* O: Number of samples decoded */
)
{
- SKP_int i, n, prev_fs_kHz, doResample, flags, nFlags, MS_predictorIx, ret = SKP_SILK_NO_ERROR;
+ SKP_int i, n, prev_fs_kHz, doResample, flags, nFlags, ret = SKP_SILK_NO_ERROR;
SKP_int32 nSamplesOutDec, LBRR_symbol;
SKP_int16 samplesOut1_tmp[ 2 * MAX_FS_KHZ * MAX_FRAME_LENGTH_MS ];
SKP_int16 samplesOut2_tmp[ MAX_API_FS_KHZ * MAX_FRAME_LENGTH_MS ];
+ SKP_int MS_pred_Q14[ 2 ] = { 0 };
SKP_int16 *dec_out_ptr, *resample_out_ptr;
SKP_Silk_decoder *psDec = ( SKP_Silk_decoder * )decState;
SKP_Silk_decoder_state *channel_state = psDec->channel_state;
@@ -200,7 +202,7 @@ SKP_int SKP_Silk_SDK_Decode(
/* Get MS predictor index */
if( decControl->nChannels == 2 ) {
- MS_predictorIx = ec_dec_icdf( psRangeDec, SKP_Silk_stereo_predictor_iCDF, 8 );
+ SKP_Silk_stereo_decode_pred( psRangeDec, MS_pred_Q14 );
}
/* Call decoder for one frame */
@@ -210,7 +212,7 @@ SKP_int SKP_Silk_SDK_Decode(
/* Convert Mid/Side to Left/Right */
if( decControl->nChannels == 2 ) {
- SKP_Silk_stereo_MS_to_LR( &psDec->sStereo, dec_out_ptr, &dec_out_ptr[ MAX_FS_KHZ * MAX_FRAME_LENGTH_MS ], MS_predictorIx, channel_state[ 0 ].fs_kHz, nSamplesOutDec );
+ SKP_Silk_stereo_MS_to_LR( &psDec->sStereo, dec_out_ptr, &dec_out_ptr[ MAX_FS_KHZ * MAX_FRAME_LENGTH_MS ], MS_pred_Q14, channel_state[ 0 ].fs_kHz, nSamplesOutDec );
}
/* Number of output samples */
diff --git a/silk/SKP_Silk_decode_core.c b/silk/SKP_Silk_decode_core.c
index ef8c57b3..3c795f56 100644
--- a/silk/SKP_Silk_decode_core.c
+++ b/silk/SKP_Silk_decode_core.c
@@ -164,7 +164,7 @@ void SKP_Silk_decode_core(
LTP_pred_Q14 = SKP_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -4 ], B_Q14[ 4 ] );
pred_lag_ptr++;
- /* Generate LPC residual */
+ /* Generate LPC excitation */
pres_Q10[ i ] = SKP_ADD32( pexc_Q10[ i ], SKP_RSHIFT_ROUND( LTP_pred_Q14, 4 ) );
/* Update states */
@@ -196,7 +196,7 @@ void SKP_Silk_decode_core(
LPC_pred_Q10 = SKP_SMLAWB( LPC_pred_Q10, psDec->sLPC_Q14[ MAX_LPC_ORDER + i - j - 1 ], A_Q12_tmp[ j ] );
}
- /* Add prediction to LPC residual */
+ /* Add prediction to LPC excitation */
vec_Q10[ i ] = SKP_ADD32( pres_Q10[ i ], LPC_pred_Q10 );
/* Update states */
diff --git a/silk/SKP_Silk_define.h b/silk/SKP_Silk_define.h
index adefef80..22917fa0 100644
--- a/silk/SKP_Silk_define.h
+++ b/silk/SKP_Silk_define.h
@@ -47,10 +47,6 @@ extern "C"
#define MAX_FRAMES_PER_PACKET 3
-#ifndef FIXED_POINT
-# define FIXED_POINT 0
-#endif
-
/* Limits on bitrate */
#define MIN_TARGET_RATE_BPS 5000
#define MAX_TARGET_RATE_BPS 80000
@@ -78,9 +74,9 @@ extern "C"
#define TYPE_VOICED 2
/* Setting for stereo processing */
-#define STEREO_QUANT_STEPS 15
-#define STEREO_QUANT_HYSTERESIS 0.25
-#define STEREO_INTERPOL_LENGTH_MS 10
+#define STEREO_QUANT_TAB_SIZE 16
+#define STEREO_QUANT_SUB_STEPS 5
+#define STEREO_INTERP_LEN_MS 8 /* must be even */
/* Range of pitch lag estimates */
#define PITCH_EST_MIN_LAG_MS 2 /* 2 ms -> 500 Hz */
diff --git a/silk/SKP_Silk_enc_API.c b/silk/SKP_Silk_enc_API.c
index 5c23d991..fd092c02 100644
--- a/silk/SKP_Silk_enc_API.c
+++ b/silk/SKP_Silk_enc_API.c
@@ -25,9 +25,6 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
***********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
#include "SKP_Silk_define.h"
#include "SKP_Silk_SDK_API.h"
@@ -35,7 +32,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "SKP_Silk_typedef.h"
#include "SKP_Silk_structs.h"
#include "SKP_Silk_tuning_parameters.h"
-#if FIXED_POINT
+#ifdef FIXED_POINT
#include "SKP_Silk_main_FIX.h"
#define SKP_Silk_encoder_state_Fxx SKP_Silk_encoder_state_FIX
#define SKP_Silk_encode_frame_Fxx SKP_Silk_encode_frame_FIX
@@ -142,11 +139,12 @@ SKP_int SKP_Silk_SDK_Encode(
const SKP_int prefillFlag /* I: Flag to indicate prefilling buffers; no coding */
)
{
- SKP_int n, i, nBits, flags, tmp_payloadSize_ms, tmp_complexity, MS_predictorIx = 0, ret = 0;
+ SKP_int n, i, nBits, flags, tmp_payloadSize_ms, tmp_complexity, ret = 0;
SKP_int nSamplesToBuffer, nBlocksOf10ms, nSamplesFromInput = 0;
SKP_int speech_act_thr_for_switch_Q8;
SKP_int32 TargetRate_bps, channelRate_bps, LBRR_symbol;
SKP_Silk_encoder *psEnc = ( SKP_Silk_encoder * )encState;
+ SKP_int MS_predictorIx[ 2 ] = { 0 };
SKP_int16 buf[ MAX_FRAME_LENGTH_MS * MAX_API_FS_KHZ ];
/* Check values in encoder control structure */
@@ -201,7 +199,7 @@ SKP_int SKP_Silk_SDK_Encode(
TargetRate_bps = SKP_RSHIFT32( encControl->bitRate, encControl->nChannels - 1 );
for( n = 0; n < encControl->nChannels; n++ ) {
- if( ( ret = SKP_Silk_control_encoder( &psEnc->state_Fxx[ n ], encControl, TargetRate_bps, psEnc->allowBandwidthSwitch ) ) != 0 ) {
+ if( ( ret = SKP_Silk_control_encoder( &psEnc->state_Fxx[ n ], encControl, TargetRate_bps, psEnc->allowBandwidthSwitch, n ) ) != 0 ) {
SKP_assert( 0 );
return ret;
}
@@ -287,9 +285,8 @@ SKP_int SKP_Silk_SDK_Encode(
/* Convert Left/Right to Mid/Side */
if( encControl->nChannels == 2 ) {
- SKP_Silk_stereo_LR_to_MS( &psEnc->sStereo, psEnc->state_Fxx[ 0 ].sCmn.inputBuf, psEnc->state_Fxx[ 1 ].sCmn.inputBuf,
- &MS_predictorIx, psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, psEnc->state_Fxx[ 0 ].sCmn.frame_length );
- ec_enc_icdf( psRangeEnc, MS_predictorIx, SKP_Silk_stereo_predictor_iCDF, 8 );
+ SKP_Silk_stereo_LR_to_MS( psRangeEnc, &psEnc->sStereo, psEnc->state_Fxx[ 0 ].sCmn.inputBuf, psEnc->state_Fxx[ 1 ].sCmn.inputBuf,
+ psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, psEnc->state_Fxx[ 0 ].sCmn.frame_length );
}
@@ -316,12 +313,11 @@ SKP_int SKP_Silk_SDK_Encode(
if( encControl->nChannels == 1 ) {
channelRate_bps = TargetRate_bps;
} else if( n == 0 ) {
- channelRate_bps = SKP_SMULWW( TargetRate_bps, SKP_FIX_CONST( 0.6, 16 ) );
+ channelRate_bps = SKP_RSHIFT( TargetRate_bps, 1 ) + 2000;
} else {
- channelRate_bps = SKP_SMULWB( TargetRate_bps, SKP_FIX_CONST( 0.4, 16 ) );
+ channelRate_bps = SKP_RSHIFT( TargetRate_bps, 1 ) - 2000;
}
SKP_Silk_control_SNR( &psEnc->state_Fxx[ n ].sCmn, channelRate_bps );
- //SKP_Silk_control_SNR( &psEnc->state_Fxx[ n ].sCmn, TargetRate_bps / 2 );
if( ( ret = SKP_Silk_encode_frame_Fxx( &psEnc->state_Fxx[ n ], nBytesOut, psRangeEnc ) ) != 0 ) {
SKP_assert( 0 );
}
diff --git a/silk/SKP_Silk_init_encoder.c b/silk/SKP_Silk_init_encoder.c
index 3baf672d..2e85ce76 100644
--- a/silk/SKP_Silk_init_encoder.c
+++ b/silk/SKP_Silk_init_encoder.c
@@ -25,11 +25,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
***********************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if FIXED_POINT
+#ifdef FIXED_POINT
#include "SKP_Silk_main_FIX.h"
#define SKP_Silk_encoder_state_Fxx SKP_Silk_encoder_state_FIX
#else
diff --git a/silk/SKP_Silk_main.h b/silk/SKP_Silk_main.h
index 3aff2dfe..f80cc805 100644
--- a/silk/SKP_Silk_main.h
+++ b/silk/SKP_Silk_main.h
@@ -52,10 +52,10 @@ extern "C"
/* Convert Left/Right stereo signal to adaptive Mid/Side representation */
void SKP_Silk_stereo_LR_to_MS(
+ ec_enc *psRangeEnc, /* I/O Compressor data structure */
stereo_state *state, /* I/O State */
SKP_int16 x1[], /* I/O Left input signal, becomes mid signal */
SKP_int16 x2[], /* I/O Right input signal, becomes side signal */
- SKP_int *predictorIx, /* O Index for predictor filter */
SKP_int fs_kHz, /* I Samples rate (kHz) */
SKP_int frame_length /* I Number of samples */
);
@@ -65,11 +65,30 @@ void SKP_Silk_stereo_MS_to_LR(
stereo_state *state, /* I/O State */
SKP_int16 x1[], /* I/O Left input signal, becomes mid signal */
SKP_int16 x2[], /* I/O Right input signal, becomes side signal */
- SKP_int predictorIx, /* I Index for predictor filter */
+ const SKP_int32 pred_Q13[], /* I Predictors */
SKP_int fs_kHz, /* I Samples rate (kHz) */
SKP_int frame_length /* I Number of samples */
);
+/* Find least-squares prediction gain for one signal based on another and quantize it */
+SKP_int32 SKP_Silk_stereo_find_predictor( /* O Returns predictor in Q13 */
+ const SKP_int16 x[], /* I Basis signal */
+ const SKP_int16 y[], /* I Target signal */
+ SKP_int length /* I Number of samples */
+);
+
+/* Quantize mid/side predictors and entropy code the quantization indices */
+void SKP_Silk_stereo_encode_pred(
+ ec_enc *psRangeEnc, /* I/O Compressor data structure */
+ SKP_int32 pred_Q13[] /* I/O Predictors (out: quantized) */
+);
+
+/* Decode mid/side predictors */
+void SKP_Silk_stereo_decode_pred(
+ ec_dec *psRangeDec, /* I/O Compressor data structure */
+ SKP_int32 pred_Q13[] /* O Predictors */
+);
+
/* Encodes signs of excitation */
void SKP_Silk_encode_signs(
ec_enc *psRangeEnc, /* I/O Compressor data structure */
diff --git a/silk/SKP_Silk_stereo_LR_to_MS.c b/silk/SKP_Silk_stereo_LR_to_MS.c
index e4a60ae1..190d95f4 100644
--- a/silk/SKP_Silk_stereo_LR_to_MS.c
+++ b/silk/SKP_Silk_stereo_LR_to_MS.c
@@ -29,66 +29,79 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/* Convert Left/Right stereo signal to adaptive Mid/Side representation */
void SKP_Silk_stereo_LR_to_MS(
+ ec_enc *psRangeEnc, /* I/O Compressor data structure */
stereo_state *state, /* I/O State */
SKP_int16 x1[], /* I/O Left input signal, becomes mid signal */
SKP_int16 x2[], /* I/O Right input signal, becomes side signal */
- SKP_int *predictorIx, /* O Index for predictor filter */
SKP_int fs_kHz, /* I Samples rate (kHz) */
SKP_int frame_length /* I Number of samples */
)
{
- SKP_int n, scale, scale1, scale2;
- SKP_int32 sum, diff, nrg1, nrg2, corr, predictor_Q16, pred_Q16, delta_Q16;
+ SKP_int n, denom_Q16, delta0_Q13, delta1_Q13;
+ SKP_int32 sum, diff, pred_Q13[ 2 ], pred0_Q13, pred1_Q13;
+ SKP_int16 mid[ MAX_FRAME_LENGTH + 2 ], side[ MAX_FRAME_LENGTH + 2 ];
+ SKP_int16 LP_mid[ MAX_FRAME_LENGTH ], HP_mid[ MAX_FRAME_LENGTH ];
+ SKP_int16 LP_side[ MAX_FRAME_LENGTH ], HP_side[ MAX_FRAME_LENGTH ];
/* Convert to basic mid/side signals */
for( n = 0; n < frame_length; n++ ) {
sum = x1[ n ] + (SKP_int32)x2[ n ];
diff = x1[ n ] - (SKP_int32)x2[ n ];
- x1[ n ] = (SKP_int16)SKP_RSHIFT32( sum + 1, 1 );
- x2[ n ] = (SKP_int16)SKP_RSHIFT32( diff, 1 );
+ mid[ n + 2 ] = (SKP_int16)SKP_RSHIFT_ROUND( sum, 1 );
+ side[ n + 2 ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( diff, 1 ) );
}
- /* Find predictor */
- SKP_Silk_sum_sqr_shift( &nrg1, &scale1, x1, frame_length );
- SKP_Silk_sum_sqr_shift( &nrg2, &scale2, x2, frame_length );
- if( scale1 > scale2 ) {
- scale = scale1;
- } else {
- scale = scale2;
- nrg1 = SKP_RSHIFT32( nrg1, scale2 - scale1 );
+ /* Buffering */
+ SKP_memcpy( mid, state->sMid, 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( side, state->sSide, 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( state->sMid, &mid[ frame_length ], 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( state->sSide, &side[ frame_length ], 2 * sizeof( SKP_int16 ) );
+
+ /* LP and HP filter mid signal */
+ for( n = 0; n < frame_length; n++ ) {
+ sum = SKP_RSHIFT_ROUND( SKP_ADD_LSHIFT( mid[ n ] + mid[ n + 2 ], mid[ n + 1 ], 1 ), 2 );
+ LP_mid[ n ] = sum;
+ HP_mid[ n ] = mid[ n + 1 ] - sum;
}
- corr = SKP_Silk_inner_prod_aligned_scale( x1, x2, scale, frame_length );
- predictor_Q16 = SKP_DIV32_varQ( corr, nrg1 + 1, 16 );
- /* Hysteresis */
- if( predictor_Q16 > state->predictor_prev_Q16 ) {
- predictor_Q16 -= SKP_FIX_CONST( STEREO_QUANT_HYSTERESIS / STEREO_QUANT_STEPS, 16 );
- } else {
- predictor_Q16 += SKP_FIX_CONST( STEREO_QUANT_HYSTERESIS / STEREO_QUANT_STEPS, 16 );
+ /* LP and HP filter side signal */
+ for( n = 0; n < frame_length; n++ ) {
+ sum = SKP_RSHIFT_ROUND( SKP_ADD_LSHIFT( side[ n ] + side[ n + 2 ], side[ n + 1 ], 1 ), 2 );
+ LP_side[ n ] = sum;
+ HP_side[ n ] = side[ n + 1 ] - sum;
}
- /* Quantize */
- *predictorIx = SKP_RSHIFT_ROUND( SKP_MUL( predictor_Q16 + 65536, STEREO_QUANT_STEPS - 1 ), 17 );
- *predictorIx = SKP_LIMIT( *predictorIx, 0, STEREO_QUANT_STEPS - 1 );
+ /* Find predictors */
+ pred_Q13[ 0 ] = SKP_Silk_stereo_find_predictor( LP_mid, LP_side, frame_length );
+ pred_Q13[ 1 ] = SKP_Silk_stereo_find_predictor( HP_mid, HP_side, frame_length );
- predictor_Q16 = SKP_SMLABB( -65536, *predictorIx, ( 1 << 17 ) / ( STEREO_QUANT_STEPS - 1 ) );
+ /* Quantize and encode predictors */
+ SKP_Silk_stereo_encode_pred( psRangeEnc, pred_Q13 );
- /* Subtract prediction from side channel */
- if( predictor_Q16 != state->predictor_prev_Q16 ) {
- /* Interpolate predictor */
- pred_Q16 = -state->predictor_prev_Q16;
- delta_Q16 = -SKP_DIV32_16( predictor_Q16 - state->predictor_prev_Q16, STEREO_INTERPOL_LENGTH_MS * fs_kHz );
- for( n = 0; n < STEREO_INTERPOL_LENGTH_MS * fs_kHz; n++ ) {
- pred_Q16 += delta_Q16;
- x2[ n ] = (SKP_int16)SKP_SAT16( SKP_SMLAWB( x2[ n ], pred_Q16, x1[ n ] ) );
- }
- } else {
- n = 0;
+ /* Interpolate predictors and subtract prediction from side channel */
+ pred0_Q13 = -state->pred_prev_Q13[ 0 ];
+ pred1_Q13 = -state->pred_prev_Q13[ 1 ];
+ denom_Q16 = SKP_DIV32_16( 1 << 16, STEREO_INTERP_LEN_MS * fs_kHz );
+ delta0_Q13 = -SKP_RSHIFT_ROUND( SKP_SMULBB( pred_Q13[ 0 ] - state->pred_prev_Q13[ 0 ], denom_Q16 ), 16 );
+ delta1_Q13 = -SKP_RSHIFT_ROUND( SKP_SMULBB( pred_Q13[ 1 ] - state->pred_prev_Q13[ 1 ], denom_Q16 ), 16 );
+ for( n = 0; n < STEREO_INTERP_LEN_MS * fs_kHz; n++ ) {
+ pred0_Q13 += delta0_Q13;
+ pred1_Q13 += delta1_Q13;
+ sum = SKP_LSHIFT( SKP_ADD_LSHIFT( mid[ n ] + mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
+ sum = SKP_SMLAWB( SKP_LSHIFT( ( SKP_int32 )side[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
+ sum = SKP_SMLAWB( sum, SKP_LSHIFT( ( SKP_int32 )mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
+ x2[ n ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( sum, 8 ) );
}
- pred_Q16 = -predictor_Q16;
- for( ; n < frame_length; n++ ) {
- x2[ n ] = (SKP_int16)SKP_SAT16( SKP_SMLAWB( x2[ n ], pred_Q16, x1[ n ] ) );
+ pred0_Q13 = -pred_Q13[ 0 ];
+ pred1_Q13 = -pred_Q13[ 1 ];
+ for( n = STEREO_INTERP_LEN_MS * fs_kHz; n < frame_length; n++ ) {
+ sum = SKP_LSHIFT( SKP_ADD_LSHIFT( mid[ n ] + mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
+ sum = SKP_SMLAWB( SKP_LSHIFT( ( SKP_int32 )side[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
+ sum = SKP_SMLAWB( sum, SKP_LSHIFT( ( SKP_int32 )mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
+ x2[ n ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( sum, 8 ) );
}
+ state->pred_prev_Q13[ 0 ] = pred_Q13[ 0 ];
+ state->pred_prev_Q13[ 1 ] = pred_Q13[ 1 ];
- state->predictor_prev_Q16 = predictor_Q16;
+ SKP_memcpy( x1, mid + 1, frame_length * sizeof( SKP_int16 ) );
}
diff --git a/silk/SKP_Silk_stereo_MS_to_LR.c b/silk/SKP_Silk_stereo_MS_to_LR.c
index ad3ed14c..b8ba55dc 100644
--- a/silk/SKP_Silk_stereo_MS_to_LR.c
+++ b/silk/SKP_Silk_stereo_MS_to_LR.c
@@ -32,40 +32,52 @@ void SKP_Silk_stereo_MS_to_LR(
stereo_state *state, /* I/O State */
SKP_int16 x1[], /* I/O Left input signal, becomes mid signal */
SKP_int16 x2[], /* I/O Right input signal, becomes side signal */
- SKP_int predictorIx, /* I Index for predictor filter */
+ const SKP_int32 pred_Q13[], /* I Predictors */
SKP_int fs_kHz, /* I Samples rate (kHz) */
SKP_int frame_length /* I Number of samples */
)
{
- SKP_int n;
- SKP_int32 sum, diff, predictor_Q16, pred_Q16, delta_Q16;
+ SKP_int n, denom_Q16, delta0_Q13, delta1_Q13;
+ SKP_int32 sum, diff, pred0_Q13, pred1_Q13;
+ SKP_int16 mid[ MAX_FRAME_LENGTH + 2 ], side[ MAX_FRAME_LENGTH + 2 ];
- /* Dequantize */
- predictor_Q16 = SKP_SMLABB( -65536, predictorIx, ( 1 << 17 ) / ( STEREO_QUANT_STEPS - 1 ) );
+ /* Buffering */
+ SKP_memcpy( mid, state->sMid, 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( side, state->sSide, 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( mid + 2, x1, frame_length * sizeof( SKP_int16 ) );
+ SKP_memcpy( side + 2, x2, frame_length * sizeof( SKP_int16 ) );
+ SKP_memcpy( state->sMid, &mid[ frame_length ], 2 * sizeof( SKP_int16 ) );
+ SKP_memcpy( state->sSide, &side[ frame_length ], 2 * sizeof( SKP_int16 ) );
- /* Add prediction to side channel */
- if( predictor_Q16 != state->predictor_prev_Q16 ) {
- /* Interpolate predictor */
- pred_Q16 = state->predictor_prev_Q16;
- delta_Q16 = SKP_DIV32_16( predictor_Q16 - state->predictor_prev_Q16, STEREO_INTERPOL_LENGTH_MS * fs_kHz );
- for( n = 0; n < STEREO_INTERPOL_LENGTH_MS * fs_kHz; n++ ) {
- pred_Q16 += delta_Q16;
- x2[ n ] = (SKP_int16)SKP_SAT16( SKP_SMLAWB( x2[ n ], pred_Q16, x1[ n ] ) );
- }
- } else {
- n = 0;
+ /* Interpolate predictors and add prediction to side channel */
+ pred0_Q13 = state->pred_prev_Q13[ 0 ];
+ pred1_Q13 = state->pred_prev_Q13[ 1 ];
+ denom_Q16 = SKP_DIV32_16( 1 << 16, STEREO_INTERP_LEN_MS * fs_kHz );
+ delta0_Q13 = SKP_RSHIFT_ROUND( SKP_SMULBB( pred_Q13[ 0 ] - state->pred_prev_Q13[ 0 ], denom_Q16 ), 16 );
+ delta1_Q13 = SKP_RSHIFT_ROUND( SKP_SMULBB( pred_Q13[ 1 ] - state->pred_prev_Q13[ 1 ], denom_Q16 ), 16 );
+ for( n = 0; n < STEREO_INTERP_LEN_MS * fs_kHz; n++ ) {
+ pred0_Q13 += delta0_Q13;
+ pred1_Q13 += delta1_Q13;
+ sum = SKP_LSHIFT( SKP_ADD_LSHIFT( mid[ n ] + mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
+ sum = SKP_SMLAWB( SKP_LSHIFT( ( SKP_int32 )side[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
+ sum = SKP_SMLAWB( sum, SKP_LSHIFT( ( SKP_int32 )mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
+ side[ n + 1 ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( sum, 8 ) );
}
- pred_Q16 = predictor_Q16;
- for( ; n < frame_length; n++ ) {
- x2[ n ] = (SKP_int16)SKP_SAT16( SKP_SMLAWB( x2[ n ], pred_Q16, x1[ n ] ) );
+ pred0_Q13 = pred_Q13[ 0 ];
+ pred1_Q13 = pred_Q13[ 1 ];
+ for( n = STEREO_INTERP_LEN_MS * fs_kHz; n < frame_length; n++ ) {
+ sum = SKP_LSHIFT( SKP_ADD_LSHIFT( mid[ n ] + mid[ n + 2 ], mid[ n + 1 ], 1 ), 9 ); /* Q11 */
+ sum = SKP_SMLAWB( SKP_LSHIFT( ( SKP_int32 )side[ n + 1 ], 8 ), sum, pred0_Q13 ); /* Q8 */
+ sum = SKP_SMLAWB( sum, SKP_LSHIFT( ( SKP_int32 )mid[ n + 1 ], 11 ), pred1_Q13 ); /* Q8 */
+ side[ n + 1 ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( sum, 8 ) );
}
-
- state->predictor_prev_Q16 = predictor_Q16;
+ state->pred_prev_Q13[ 0 ] = pred_Q13[ 0 ];
+ state->pred_prev_Q13[ 1 ] = pred_Q13[ 1 ];
/* Convert to left/right signals */
for( n = 0; n < frame_length; n++ ) {
- sum = x1[ n ] + (SKP_int32)x2[ n ];
- diff = x1[ n ] - (SKP_int32)x2[ n ];
+ sum = mid[ n + 1 ] + (SKP_int32)side[ n + 1 ];
+ diff = mid[ n + 1 ] - (SKP_int32)side[ n + 1 ];
x1[ n ] = (SKP_int16)SKP_SAT16( sum );
x2[ n ] = (SKP_int16)SKP_SAT16( diff );
}
diff --git a/silk/SKP_Silk_stereo_decode_pred.c b/silk/SKP_Silk_stereo_decode_pred.c
new file mode 100644
index 00000000..828b8bd9
--- /dev/null
+++ b/silk/SKP_Silk_stereo_decode_pred.c
@@ -0,0 +1,59 @@
+/***********************************************************************
+Copyright (c) 2006-2011, 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"
+
+/* Decode mid/side predictors */
+void SKP_Silk_stereo_decode_pred(
+ ec_dec *psRangeDec, /* I/O Compressor data structure */
+ SKP_int32 pred_Q13[] /* O Predictors */
+)
+{
+ SKP_int n, ibest[ 2 ] = { 0 }, jbest[ 2 ] = { 0 }, kbest[ 2 ];
+ SKP_int32 low_Q13, step_Q13;
+
+ /* Entropy decoding */
+ n = ec_dec_icdf( psRangeDec, SKP_Silk_stereo_pred_joint_iCDF, 8 );
+ kbest[ 0 ] = SKP_DIV32_16( n, 5 );
+ kbest[ 1 ] = n - 5 * kbest[ 0 ];
+ for( n = 0; n < 2; n++ ) {
+ ibest[ n ] = ec_dec_icdf( psRangeDec, SKP_Silk_uniform3_iCDF, 8 );
+ ibest[ n ] += 3 * kbest[ n ];
+ jbest[ n ] = ec_dec_icdf( psRangeDec, SKP_Silk_uniform5_iCDF, 8 );
+ }
+
+ /* Dequantize */
+ for( n = 0; n < 2; n++ ) {
+ low_Q13 = SKP_Silk_stereo_pred_quant_Q13[ ibest[ n ] ];
+ step_Q13 = SKP_SMULWB( SKP_Silk_stereo_pred_quant_Q13[ ibest[ n ] + 1 ] - low_Q13,
+ SKP_FIX_CONST( 0.5 / STEREO_QUANT_SUB_STEPS, 16 ) );
+ pred_Q13[ n ] = SKP_SMLABB( low_Q13, step_Q13, 2 * jbest[ n ] + 1 );
+ }
+
+ /* Subtract second from first predictor (helps when actually applying these) */
+ pred_Q13[ 0 ] -= pred_Q13[ 1 ];
+}
diff --git a/silk/SKP_Silk_stereo_encode_pred.c b/silk/SKP_Silk_stereo_encode_pred.c
new file mode 100644
index 00000000..4bc38ed3
--- /dev/null
+++ b/silk/SKP_Silk_stereo_encode_pred.c
@@ -0,0 +1,80 @@
+/***********************************************************************
+Copyright (c) 2006-2011, 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"
+
+/* Quantize mid/side predictors and entropy code the quantization indices */
+void SKP_Silk_stereo_encode_pred(
+ ec_enc *psRangeEnc, /* I/O Compressor data structure */
+ SKP_int32 pred_Q13[] /* I/O Predictors (out: quantized) */
+)
+{
+ SKP_int i, j, n, ibest[ 2 ] = { 0 }, jbest[ 2 ] = { 0 }, kbest[ 2 ];
+ SKP_int32 low_Q13, step_Q13, lvl_Q13, err_min_Q13, err_Q13, quant_pred_Q13 = 0;
+
+ /* Quantize */
+ for( n = 0; n < 2; n++ ) {
+ /* Brute-force search over quantization levels */
+ err_min_Q13 = SKP_int32_MAX;
+ for( i = 0; i < STEREO_QUANT_TAB_SIZE - 1; i++ ) {
+ low_Q13 = SKP_Silk_stereo_pred_quant_Q13[ i ];
+ step_Q13 = SKP_SMULWB( SKP_Silk_stereo_pred_quant_Q13[ i + 1 ] - low_Q13,
+ SKP_FIX_CONST( 0.5 / STEREO_QUANT_SUB_STEPS, 16 ) );
+ for( j = 0; j < STEREO_QUANT_SUB_STEPS; j++ ) {
+ lvl_Q13 = SKP_SMLABB( low_Q13, step_Q13, 2 * j + 1 );
+ err_Q13 = SKP_abs( pred_Q13[ n ] - lvl_Q13 );
+ if( err_Q13 < err_min_Q13 ) {
+ err_min_Q13 = err_Q13;
+ quant_pred_Q13 = lvl_Q13;
+ ibest[ n ] = i;
+ jbest[ n ] = j;
+ } else {
+ /* Error increasing, so we're past the optimum */
+ goto done;
+ }
+ }
+ }
+ done:
+ kbest[ n ] = SKP_DIV32_16( ibest[ n ], 3 );
+ ibest[ n ] -= kbest[ n ] * 3;
+ pred_Q13[ n ] = quant_pred_Q13;
+ }
+
+ /* Subtract second from first predictor (helps when actually applying these) */
+ pred_Q13[ 0 ] -= pred_Q13[ 1 ];
+
+ /* Entropy coding */
+ i = 5 * kbest[ 0 ] + kbest[ 1 ];
+ SKP_assert( i < 25 );
+ ec_enc_icdf( psRangeEnc, i, SKP_Silk_stereo_pred_joint_iCDF, 8 );
+ for( n = 0; n < 2; n++ ) {
+ SKP_assert( ibest[ n ] < 3 );
+ SKP_assert( jbest[ n ] < STEREO_QUANT_SUB_STEPS );
+ ec_enc_icdf( psRangeEnc, ibest[ n ], SKP_Silk_uniform3_iCDF, 8 );
+ ec_enc_icdf( psRangeEnc, jbest[ n ], SKP_Silk_uniform5_iCDF, 8 );
+ }
+}
diff --git a/silk/SKP_Silk_stereo_find_predictor.c b/silk/SKP_Silk_stereo_find_predictor.c
new file mode 100644
index 00000000..0fa373b6
--- /dev/null
+++ b/silk/SKP_Silk_stereo_find_predictor.c
@@ -0,0 +1,54 @@
+/***********************************************************************
+Copyright (c) 2006-2011, 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"
+
+/* Find least-squares prediction gain for one signal based on another and quantize it */
+SKP_int32 SKP_Silk_stereo_find_predictor( /* O Returns predictor in Q13 */
+ const SKP_int16 x[], /* I Basis signal */
+ const SKP_int16 y[], /* I Target signal */
+ SKP_int length /* I Number of samples */
+)
+{
+ SKP_int scale, scale1, scale2;
+ SKP_int32 nrg1, nrg2, corr, pred_Q13;
+
+ /* Find predictor */
+ SKP_Silk_sum_sqr_shift( &nrg1, &scale1, x, length );
+ SKP_Silk_sum_sqr_shift( &nrg2, &scale2, y, length );
+ if( scale1 > scale2 ) {
+ scale = scale1;
+ } else {
+ scale = scale2;
+ nrg1 = SKP_RSHIFT32( nrg1, scale2 - scale1 );
+ }
+ corr = SKP_Silk_inner_prod_aligned_scale( x, y, scale, length );
+ pred_Q13 = SKP_DIV32_varQ( corr, SKP_max( nrg1, 1 ), 13 );
+ pred_Q13 = SKP_LIMIT( pred_Q13, -SKP_FIX_CONST( 10, 13 ), SKP_FIX_CONST( 10, 13 ) );
+
+ return pred_Q13;
+}
diff --git a/silk/SKP_Silk_structs.h b/silk/SKP_Silk_structs.h
index fbd618d2..75f58d3f 100644
--- a/silk/SKP_Silk_structs.h
+++ b/silk/SKP_Silk_structs.h
@@ -28,9 +28,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef SKP_SILK_STRUCTS_H
#define SKP_SILK_STRUCTS_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include "SKP_Silk_typedef.h"
#include "SKP_Silk_SigProc_FIX.h"
@@ -99,7 +99,9 @@ typedef struct {
} SKP_Silk_NLSF_CB_struct;
typedef struct {
- SKP_int32 predictor_prev_Q16;
+ SKP_int32 pred_prev_Q13[ 2 ];
+ SKP_int16 sMid[ 2 ];
+ SKP_int16 sSide[ 2 ];
} stereo_state;
typedef struct {
@@ -187,6 +189,9 @@ typedef struct {
SKP_int nFramesPerPacket;
SKP_int nFramesAnalyzed; /* Number of frames analyzed in current packet */
+ SKP_int nChannels;
+ SKP_int channelNb;
+
/* Parameters For LTP scaling Control */
SKP_int frames_since_onset;
@@ -301,6 +306,7 @@ typedef struct {
SKP_int LTP_scale_Q14;
} SKP_Silk_decoder_control;
+
#ifdef __cplusplus
}
#endif
diff --git a/silk/SKP_Silk_tables.h b/silk/SKP_Silk_tables.h
index cb595707..7cb5ac95 100644
--- a/silk/SKP_Silk_tables.h
+++ b/silk/SKP_Silk_tables.h
@@ -44,8 +44,8 @@ extern const SKP_uint8 SKP_Silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PI
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_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_uint8 SKP_Silk_pulses_per_block_iCDF[ N_RATE_LEVELS ][ MAX_PULSES + 2 ]; /* 180 */
extern const SKP_uint8 SKP_Silk_pulses_per_block_BITS_Q5[ N_RATE_LEVELS - 1 ][ MAX_PULSES + 2 ]; /* 162 */
@@ -65,12 +65,14 @@ extern const SKP_uint8 SKP_Silk_lsb_iCDF[ 2 ];
extern const SKP_uint8 SKP_Silk_sign_iCDF[ 36 ]; /* 36 */
-extern const SKP_uint8 SKP_Silk_uniform2_iCDF[ 2 ]; /* 2 */
-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_uniform2_iCDF[ 2 ]; /* 2 */
+extern const SKP_uint8 SKP_Silk_uniform3_iCDF[ 3 ]; /* 3 */
+extern const SKP_uint8 SKP_Silk_uniform4_iCDF[ 4 ]; /* 4 */
+extern const SKP_uint8 SKP_Silk_uniform5_iCDF[ 5 ]; /* 5 */
+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_NLSF_EXT_iCDF[ 7 ]; /* 7 */
+extern const SKP_uint8 SKP_Silk_NLSF_EXT_iCDF[ 7 ]; /* 7 */
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 */
@@ -82,10 +84,11 @@ extern const SKP_int8 SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ];
extern const SKP_uint8 SKP_Silk_LTPscale_iCDF[ 3 ]; /* 4 */
extern const SKP_int16 SKP_Silk_LTPScales_table_Q14[ 3 ];
-extern const SKP_uint8 SKP_Silk_type_offset_VAD_iCDF[ 4 ]; /* 4 */
-extern const SKP_uint8 SKP_Silk_type_offset_no_VAD_iCDF[ 2 ]; /* 2 */
+extern const SKP_uint8 SKP_Silk_type_offset_VAD_iCDF[ 4 ]; /* 4 */
+extern const SKP_uint8 SKP_Silk_type_offset_no_VAD_iCDF[ 2 ]; /* 2 */
-extern const SKP_uint8 SKP_Silk_stereo_predictor_iCDF[ STEREO_QUANT_STEPS + 1 ];
+extern const SKP_int16 SKP_Silk_stereo_pred_quant_Q13[ STEREO_QUANT_TAB_SIZE ]; /* 32 */
+extern const SKP_uint8 SKP_Silk_stereo_pred_joint_iCDF[ 25 ]; /* 25 */
extern const SKP_uint8 * const SKP_Silk_LBRR_flags_iCDF_ptr[ 2 ]; /* 10 */
@@ -104,8 +107,8 @@ extern const SKP_int16 SNR_table_Q1[ TARGET_RATE_TAB_SZ ];
extern const SKP_int16 SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ];
/* Interpolation points for filter coefficients used in the bandwidth transition smoother */
-extern const SKP_int32 SKP_Silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NB ];
-extern const SKP_int32 SKP_Silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NA ];
+extern const SKP_int32 SKP_Silk_Transition_LP_B_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NB ];
+extern const SKP_int32 SKP_Silk_Transition_LP_A_Q28[ TRANSITION_INT_NUM ][ TRANSITION_NA ];
#ifdef __cplusplus
}
diff --git a/silk/SKP_Silk_tables_other.c b/silk/SKP_Silk_tables_other.c
index 442959e3..2cbf607e 100644
--- a/silk/SKP_Silk_tables_other.c
+++ b/silk/SKP_Silk_tables_other.c
@@ -48,9 +48,18 @@ const SKP_int16 SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = {
19, 29, 35, 39, 44, 50, 60, 80
};
-/* Table for stereo predictor coding */
-/* p = [2.^(-7:-1), 1, fliplr(2.^(-7:-1))]+2e-2; p = p/sum(p); fprintf('%d, ', round(256 - 256 * cumsum(p(1:end-1)))) */
-const SKP_uint8 SKP_Silk_stereo_predictor_iCDF[ STEREO_QUANT_STEPS + 1 ] = { 254, 251, 247, 241, 229, 208, 168, 88, 48, 27, 15, 9, 5, 2 };
+/* Tables for stereo predictor coding */
+const SKP_int16 SKP_Silk_stereo_pred_quant_Q13[ STEREO_QUANT_TAB_SIZE ] = {
+ -13732, -10050, -8266, -7526, -6500, -5000, -2950, -820,
+ 820, 2950, 5000, 6500, 7526, 8266, 10050, 13732
+};
+const SKP_uint8 SKP_Silk_stereo_pred_joint_iCDF[ 25 ] = {
+ 249, 247, 246, 245, 244,
+ 234, 210, 202, 201, 200,
+ 197, 174, 82, 59, 56,
+ 55, 54, 46, 22, 12,
+ 11, 10, 9, 7, 0
+};
/* Tables for LBRR flags */
const SKP_uint8 SKP_Silk_LBRR_flags_2_iCDF[ 3 ] = { 203, 150, 0 };
@@ -87,7 +96,9 @@ const SKP_int16 SKP_Silk_LTPScales_table_Q14[ 3 ] = { 15565, 12288, 8192 };
/* Uniform entropy tables */
const SKP_uint8 SKP_Silk_uniform2_iCDF[ 2 ] = { 128, 0 };
+const SKP_uint8 SKP_Silk_uniform3_iCDF[ 3 ] = { 171, 85, 0 };
const SKP_uint8 SKP_Silk_uniform4_iCDF[ 4 ] = { 192, 128, 64, 0 };
+const SKP_uint8 SKP_Silk_uniform5_iCDF[ 5 ] = { 205, 154, 102, 51, 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 };
diff --git a/silk/fixed/SKP_Silk_encode_frame_FIX.c b/silk/fixed/SKP_Silk_encode_frame_FIX.c
index e9003fcf..a1fbf1ed 100644
--- a/silk/fixed/SKP_Silk_encode_frame_FIX.c
+++ b/silk/fixed/SKP_Silk_encode_frame_FIX.c
@@ -108,13 +108,6 @@ TIC(NOISE_SHAPE_ANALYSIS)
SKP_Silk_noise_shape_analysis_FIX( psEnc, &sEncCtrl, res_pitch_frame, x_frame );
TOC(NOISE_SHAPE_ANALYSIS)
- /*****************************************/
- /* Prefiltering for noise shaper */
- /*****************************************/
-TIC(PREFILTER)
- SKP_Silk_prefilter_FIX( psEnc, &sEncCtrl, xfw, x_frame );
-TOC(PREFILTER)
-
/***************************************************/
/* Find linear prediction coefficients (LPC + LTP) */
/***************************************************/
@@ -137,6 +130,13 @@ TIC(LBRR)
TOC(LBRR)
/*****************************************/
+ /* Prefiltering for noise shaper */
+ /*****************************************/
+TIC(PREFILTER)
+ SKP_Silk_prefilter_FIX( psEnc, &sEncCtrl, xfw, x_frame );
+TOC(PREFILTER)
+
+ /*****************************************/
/* Noise shaping quantization */
/*****************************************/
TIC(NSQ)
diff --git a/silk/fixed/SKP_Silk_find_pred_coefs_FIX.c b/silk/fixed/SKP_Silk_find_pred_coefs_FIX.c
index 532a695b..033a5a09 100644
--- a/silk/fixed/SKP_Silk_find_pred_coefs_FIX.c
+++ b/silk/fixed/SKP_Silk_find_pred_coefs_FIX.c
@@ -85,8 +85,8 @@ void SKP_Silk_find_pred_coefs_FIX(
SKP_Silk_LTP_scale_ctrl_FIX( psEnc, psEncCtrl );
/* Create LTP residual */
- SKP_Silk_LTP_analysis_filter_FIX( LPC_in_pre, psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder,
- psEncCtrl->LTPCoef_Q14, psEncCtrl->pitchL, invGains_Q16, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
+ SKP_Silk_LTP_analysis_filter_FIX( LPC_in_pre, x - psEnc->sCmn.predictLPCOrder, psEncCtrl->LTPCoef_Q14,
+ psEncCtrl->pitchL, invGains_Q16, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
} else {
/************/
diff --git a/silk/SKP_Silk_main_FIX.h b/silk/fixed/SKP_Silk_main_FIX.h
index b72516b0..b65c78ff 100644
--- a/silk/SKP_Silk_main_FIX.h
+++ b/silk/fixed/SKP_Silk_main_FIX.h
@@ -71,7 +71,8 @@ SKP_int SKP_Silk_control_encoder(
SKP_Silk_encoder_state_FIX *psEnc, /* I/O Pointer to Silk encoder state */
SKP_SILK_SDK_EncControlStruct *encControl, /* I: Control structure */
const SKP_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const SKP_int allow_bw_switch /* I Flag to allow switching audio bandwidth */
+ const SKP_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
+ const SKP_int channelNb /* I Channel number */
);
/****************/
diff --git a/silk/SKP_Silk_structs_FIX.h b/silk/fixed/SKP_Silk_structs_FIX.h
index f7e91d2d..f7e91d2d 100644
--- a/silk/SKP_Silk_structs_FIX.h
+++ b/silk/fixed/SKP_Silk_structs_FIX.h
diff --git a/silk/src_FIX.vcxproj b/silk/fixed/silk_fixed.vcxproj
index 3b885a46..004b0329 100644
--- a/silk/src_FIX.vcxproj
+++ b/silk/fixed/silk_fixed.vcxproj
@@ -14,6 +14,7 @@
<ProjectGuid>{8484C90D-1561-402F-A91D-2DB10F8C5171}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>src_FIX</RootNamespace>
+ <ProjectName>silk_fixed</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -37,7 +38,12 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
- <PropertyGroup />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
@@ -45,12 +51,15 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/msvc;../../celt/libcelt</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../;../../win32;../../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -61,7 +70,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/msvc;../../celt/libcelt</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../;../../win32;../../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -69,15 +78,14 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</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_corrMatrix_FIX.c" />
<ClCompile Include="SKP_Silk_encode_frame_FIX.c" />
<ClCompile Include="SKP_Silk_find_LPC_FIX.c" />
@@ -95,6 +103,10 @@
<ClCompile Include="SKP_Silk_solve_LS_FIX.c" />
<ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c" />
</ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="SKP_Silk_main_FIX.h" />
+ <ClInclude Include="SKP_Silk_structs_FIX.h" />
+ </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/silk/src_FIX.vcxproj.filters b/silk/fixed/silk_fixed.vcxproj.filters
index d640244e..49c8f28d 100644
--- a/silk/src_FIX.vcxproj.filters
+++ b/silk/fixed/silk_fixed.vcxproj.filters
@@ -18,61 +18,61 @@
<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_corrMatrix_FIX.c">
+ <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_encode_frame_FIX.c">
+ <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_LPC_FIX.c">
+ <ClCompile Include="SKP_Silk_prefilter_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_LTP_FIX.c">
+ <ClCompile Include="SKP_Silk_process_gains_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c">
+ <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c">
+ <ClCompile Include="SKP_Silk_residual_energy_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c">
+ <ClCompile Include="SKP_Silk_residual_energy16_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c">
+ <ClCompile Include="SKP_Silk_solve_LS_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c">
+ <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_prefilter_FIX.c">
+ <ClCompile Include="SKP_Silk_corrMatrix_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_process_gains_FIX.c">
+ <ClCompile Include="SKP_Silk_encode_frame_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c">
+ <ClCompile Include="SKP_Silk_find_LPC_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_residual_energy_FIX.c">
+ <ClCompile Include="SKP_Silk_find_LTP_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_residual_energy16_FIX.c">
+ <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_solve_LS_FIX.c">
+ <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c">
+ <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c">
<Filter>Source Files</Filter>
</ClCompile>
</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>
</Project> \ No newline at end of file
diff --git a/silk/float/SKP_Silk_LPC_analysis_filter_FLP.c b/silk/float/SKP_Silk_LPC_analysis_filter_FLP.c
index b340f559..e8d7d6ba 100644
--- a/silk/float/SKP_Silk_LPC_analysis_filter_FLP.c
+++ b/silk/float/SKP_Silk_LPC_analysis_filter_FLP.c
@@ -233,6 +233,13 @@ void SKP_Silk_LPC_analysis_filter6_FLP(
}
}
+/*******************************************/
+/* LPC analysis filter */
+/* NB! State is kept internally and the */
+/* filter always starts with zero state */
+/* first Order output samples are not set */
+/*******************************************/
+
void SKP_Silk_LPC_analysis_filter_FLP(
SKP_float r_LPC[], /* O LPC residual signal */
const SKP_float PredCoef[], /* I LPC coefficients */
@@ -272,8 +279,5 @@ void SKP_Silk_LPC_analysis_filter_FLP(
SKP_assert( 0 );
break;
}
-
- /* Set first LPC Order samples to zero instead of undefined */
- SKP_memset( r_LPC, 0, Order * sizeof( SKP_float ) );
}
diff --git a/silk/SKP_Silk_LPC_inv_pred_gain_FLP.c b/silk/float/SKP_Silk_LPC_inv_pred_gain_FLP.c
index 4b2f2f2b..4b2f2f2b 100644
--- a/silk/SKP_Silk_LPC_inv_pred_gain_FLP.c
+++ b/silk/float/SKP_Silk_LPC_inv_pred_gain_FLP.c
diff --git a/silk/SKP_Silk_SigProc_FLP.h b/silk/float/SKP_Silk_SigProc_FLP.h
index 97067bd1..97067bd1 100644
--- a/silk/SKP_Silk_SigProc_FLP.h
+++ b/silk/float/SKP_Silk_SigProc_FLP.h
diff --git a/silk/SKP_Silk_autocorrelation_FLP.c b/silk/float/SKP_Silk_autocorrelation_FLP.c
index 2fa56b49..2fa56b49 100644
--- a/silk/SKP_Silk_autocorrelation_FLP.c
+++ b/silk/float/SKP_Silk_autocorrelation_FLP.c
diff --git a/silk/SKP_Silk_burg_modified_FLP.c b/silk/float/SKP_Silk_burg_modified_FLP.c
index 5b44c724..5b44c724 100644
--- a/silk/SKP_Silk_burg_modified_FLP.c
+++ b/silk/float/SKP_Silk_burg_modified_FLP.c
diff --git a/silk/SKP_Silk_bwexpander_FLP.c b/silk/float/SKP_Silk_bwexpander_FLP.c
index 3cf18090..3cf18090 100644
--- a/silk/SKP_Silk_bwexpander_FLP.c
+++ b/silk/float/SKP_Silk_bwexpander_FLP.c
diff --git a/silk/float/SKP_Silk_encode_frame_FLP.c b/silk/float/SKP_Silk_encode_frame_FLP.c
index 43b5283b..0a9fc0c5 100644
--- a/silk/float/SKP_Silk_encode_frame_FLP.c
+++ b/silk/float/SKP_Silk_encode_frame_FLP.c
@@ -119,13 +119,6 @@ TIC(NOISE_SHAPE_ANALYSIS)
SKP_Silk_noise_shape_analysis_FLP( psEnc, &sEncCtrl, res_pitch_frame, x_frame );
TOC(NOISE_SHAPE_ANALYSIS)
- /*****************************************/
- /* Prefiltering for noise shaper */
- /*****************************************/
-TIC(PREFILTER)
- SKP_Silk_prefilter_FLP( psEnc, &sEncCtrl, xfw, x_frame );
-TOC(PREFILTER)
-
/***************************************************/
/* Find linear prediction coefficients (LPC + LTP) */
/***************************************************/
@@ -139,7 +132,7 @@ TOC(FIND_PRED_COEF)
TIC(PROCESS_GAINS)
SKP_Silk_process_gains_FLP( psEnc, &sEncCtrl );
TOC(PROCESS_GAINS)
-
+
/****************************************/
/* Low Bitrate Redundant Encoding */
/****************************************/
@@ -148,6 +141,13 @@ TIC(LBRR)
TOC(LBRR)
/*****************************************/
+ /* Prefiltering for noise shaper */
+ /*****************************************/
+TIC(PREFILTER)
+ SKP_Silk_prefilter_FLP( psEnc, &sEncCtrl, xfw, x_frame );
+TOC(PREFILTER)
+
+ /*****************************************/
/* Noise shaping quantization */
/*****************************************/
TIC(NSQ)
diff --git a/silk/SKP_Silk_energy_FLP.c b/silk/float/SKP_Silk_energy_FLP.c
index 579364d2..579364d2 100644
--- a/silk/SKP_Silk_energy_FLP.c
+++ b/silk/float/SKP_Silk_energy_FLP.c
diff --git a/silk/float/SKP_Silk_find_pred_coefs_FLP.c b/silk/float/SKP_Silk_find_pred_coefs_FLP.c
index 00b1cead..4224402f 100644
--- a/silk/float/SKP_Silk_find_pred_coefs_FLP.c
+++ b/silk/float/SKP_Silk_find_pred_coefs_FLP.c
@@ -66,14 +66,14 @@ void SKP_Silk_find_pred_coefs_FLP(
/* Quantize LTP gain parameters */
SKP_Silk_quant_LTP_gains_FLP( psEncCtrl->LTPCoef, psEnc->sCmn.indices.LTPIndex, &psEnc->sCmn.indices.PERIndex,
- WLTP, psEnc->sCmn.mu_LTP_Q9, psEnc->sCmn.LTPQuantLowComplexity , psEnc->sCmn.nb_subfr );
+ WLTP, psEnc->sCmn.mu_LTP_Q9, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr );
/* Control LTP scaling */
SKP_Silk_LTP_scale_ctrl_FLP( psEnc, psEncCtrl );
/* Create LTP residual */
- SKP_Silk_LTP_analysis_filter_FLP( LPC_in_pre, psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder,
- psEncCtrl->LTPCoef, psEncCtrl->pitchL, invGains, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
+ SKP_Silk_LTP_analysis_filter_FLP( LPC_in_pre, x - psEnc->sCmn.predictLPCOrder, psEncCtrl->LTPCoef,
+ psEncCtrl->pitchL, invGains, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.predictLPCOrder );
} else {
/************/
@@ -98,7 +98,6 @@ void SKP_Silk_find_pred_coefs_FLP(
psEnc->sCmn.useInterpolatedNLSFs, psEnc->sCmn.first_frame_after_reset, psEnc->sCmn.predictLPCOrder,
LPC_in_pre, psEnc->sCmn.subfr_length + psEnc->sCmn.predictLPCOrder, psEnc->sCmn.nb_subfr );
-
/* Quantize LSFs */
TIC(LSF_quant);
SKP_Silk_process_NLSFs_FLP( &psEnc->sCmn, psEncCtrl->PredCoef, NLSF_Q15, psEnc->sCmn.prev_NLSFq_Q15 );
diff --git a/silk/SKP_Silk_inner_product_FLP.c b/silk/float/SKP_Silk_inner_product_FLP.c
index 05f5233a..d9012941 100644
--- a/silk/SKP_Silk_inner_product_FLP.c
+++ b/silk/float/SKP_Silk_inner_product_FLP.c
@@ -28,7 +28,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "SKP_Silk_SigProc_FLP.h"
/* inner product of two SKP_float arrays, with result as double */
-double SKP_Silk_inner_product_FLP( /* O result */
+double SKP_Silk_inner_product_FLP( /* O result */
const SKP_float *data1, /* I vector 1 */
const SKP_float *data2, /* I vector 2 */
SKP_int dataSize /* I length of vectors */
diff --git a/silk/SKP_Silk_k2a_FLP.c b/silk/float/SKP_Silk_k2a_FLP.c
index d6d4b165..d6d4b165 100644
--- a/silk/SKP_Silk_k2a_FLP.c
+++ b/silk/float/SKP_Silk_k2a_FLP.c
diff --git a/silk/SKP_Silk_levinsondurbin_FLP.c b/silk/float/SKP_Silk_levinsondurbin_FLP.c
index 6b09f02d..6b09f02d 100644
--- a/silk/SKP_Silk_levinsondurbin_FLP.c
+++ b/silk/float/SKP_Silk_levinsondurbin_FLP.c
diff --git a/silk/SKP_Silk_main_FLP.h b/silk/float/SKP_Silk_main_FLP.h
index c3f3072e..faa20c87 100644
--- a/silk/SKP_Silk_main_FLP.h
+++ b/silk/float/SKP_Silk_main_FLP.h
@@ -69,7 +69,8 @@ SKP_int SKP_Silk_control_encoder(
SKP_Silk_encoder_state_FLP *psEnc, /* I/O Pointer to Silk encoder state FLP */
SKP_SILK_SDK_EncControlStruct *encControl, /* I: Control structure */
const SKP_int32 TargetRate_bps, /* I Target max bitrate (bps) */
- const SKP_int allow_bw_switch /* I Flag to allow switching audio bandwidth */
+ const SKP_int allow_bw_switch, /* I Flag to allow switching audio bandwidth */
+ const SKP_int channelNb /* I Channel number */
);
/****************/
diff --git a/silk/SKP_Silk_pitch_analysis_core_FLP.c b/silk/float/SKP_Silk_pitch_analysis_core_FLP.c
index 244754c3..244754c3 100644
--- a/silk/SKP_Silk_pitch_analysis_core_FLP.c
+++ b/silk/float/SKP_Silk_pitch_analysis_core_FLP.c
diff --git a/silk/SKP_Silk_scale_copy_vector_FLP.c b/silk/float/SKP_Silk_scale_copy_vector_FLP.c
index 94274fd6..94274fd6 100644
--- a/silk/SKP_Silk_scale_copy_vector_FLP.c
+++ b/silk/float/SKP_Silk_scale_copy_vector_FLP.c
diff --git a/silk/SKP_Silk_scale_vector_FLP.c b/silk/float/SKP_Silk_scale_vector_FLP.c
index 69b47e67..69b47e67 100644
--- a/silk/SKP_Silk_scale_vector_FLP.c
+++ b/silk/float/SKP_Silk_scale_vector_FLP.c
diff --git a/silk/SKP_Silk_schur_FLP.c b/silk/float/SKP_Silk_schur_FLP.c
index a6dd24ca..a6dd24ca 100644
--- a/silk/SKP_Silk_schur_FLP.c
+++ b/silk/float/SKP_Silk_schur_FLP.c
diff --git a/silk/SKP_Silk_sort_FLP.c b/silk/float/SKP_Silk_sort_FLP.c
index 20d3f7d5..20d3f7d5 100644
--- a/silk/SKP_Silk_sort_FLP.c
+++ b/silk/float/SKP_Silk_sort_FLP.c
diff --git a/silk/SKP_Silk_structs_FLP.h b/silk/float/SKP_Silk_structs_FLP.h
index 2b57a02b..3c823fa9 100644
--- a/silk/SKP_Silk_structs_FLP.h
+++ b/silk/float/SKP_Silk_structs_FLP.h
@@ -83,7 +83,7 @@ typedef struct {
/************************/
typedef struct {
/* Prediction and coding parameters */
- SKP_float Gains[MAX_NB_SUBFR];
+ SKP_float Gains[ MAX_NB_SUBFR ];
SKP_float PredCoef[ 2 ][ MAX_LPC_ORDER ]; /* holds interpolated and final coefficients */
SKP_float LTPCoef[LTP_ORDER * MAX_NB_SUBFR];
SKP_float LTP_scale;
diff --git a/silk/src_FLP.vcxproj b/silk/float/silk_float.vcxproj
index 6310247e..313ba68c 100644
--- a/silk/src_FLP.vcxproj
+++ b/silk/float/silk_float.vcxproj
@@ -14,6 +14,7 @@
<ProjectGuid>{9C4961D2-5DDB-40C7-9BE8-CA918DC4E782}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>src_FLP</RootNamespace>
+ <ProjectName>silk_float</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -37,7 +38,12 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
- <PropertyGroup />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
@@ -45,12 +51,15 @@
<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/msvc;../../celt/libcelt</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../;../fixed;../../win32;../../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -61,7 +70,7 @@
<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/msvc;../../celt/libcelt</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../;../fixed;../../win32;../../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -69,35 +78,52 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</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_autocorrelation_FLP.c" />
+ <ClCompile Include="SKP_Silk_burg_modified_FLP.c" />
+ <ClCompile Include="SKP_Silk_bwexpander_FLP.c" />
<ClCompile Include="SKP_Silk_corrMatrix_FLP.c" />
<ClCompile Include="SKP_Silk_encode_frame_FLP.c" />
+ <ClCompile Include="SKP_Silk_energy_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_inner_product_FLP.c" />
+ <ClCompile Include="SKP_Silk_k2a_FLP.c" />
+ <ClCompile Include="SKP_Silk_levinsondurbin_FLP.c" />
<ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c" />
+ <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c" />
<ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c" />
<ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c" />
<ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c" />
+ <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c" />
<ClCompile Include="SKP_Silk_prefilter_FLP.c" />
<ClCompile Include="SKP_Silk_process_gains_FLP.c" />
<ClCompile Include="SKP_Silk_regularize_correlations_FLP.c" />
<ClCompile Include="SKP_Silk_residual_energy_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_solve_LS_FLP.c" />
+ <ClCompile Include="SKP_Silk_sort_FLP.c" />
<ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c" />
<ClCompile Include="SKP_Silk_wrappers_FLP.c" />
</ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\win32\config.h" />
+ <ClInclude Include="SKP_Silk_main_FLP.h" />
+ <ClInclude Include="SKP_Silk_SigProc_FLP.h" />
+ <ClInclude Include="SKP_Silk_structs_FLP.h" />
+ </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/silk/src_FLP.vcxproj.filters b/silk/float/silk_float.vcxproj.filters
index 92d93ea6..8c6efb0c 100644
--- a/silk/src_FLP.vcxproj.filters
+++ b/silk/float/silk_float.vcxproj.filters
@@ -18,63 +18,49 @@
<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_corrMatrix_FLP.c">
+ <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_encode_frame_FLP.c">
+ <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_LPC_FLP.c">
+ <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_LTP_FLP.c">
+ <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_pitch_lags_FLP.c">
+ <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_find_pred_coefs_FLP.c">
+ <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c">
+ <ClCompile Include="SKP_Silk_prefilter_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c">
+ <ClCompile Include="SKP_Silk_process_gains_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c">
+ <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c">
+ <ClCompile Include="SKP_Silk_residual_energy_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_prefilter_FLP.c">
+ <ClCompile Include="SKP_Silk_scale_copy_vector_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_process_gains_FLP.c">
+ <ClCompile Include="SKP_Silk_scale_vector_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c">
+ <ClCompile Include="SKP_Silk_schur_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_residual_energy_FLP.c">
+ <ClCompile Include="SKP_Silk_solve_LS_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_solve_LS_FLP.c">
+ <ClCompile Include="SKP_Silk_sort_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c">
@@ -83,5 +69,61 @@
<ClCompile Include="SKP_Silk_wrappers_FLP.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_apply_sine_window_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_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_energy_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_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>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="SKP_Silk_main_FLP.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_SigProc_FLP.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_structs_FLP.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\win32\config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/silk/src_SigProc_FIX.vcxproj b/silk/silk_common.vcxproj
index fb9df8d6..748da77d 100644
--- a/silk/src_SigProc_FIX.vcxproj
+++ b/silk/silk_common.vcxproj
@@ -11,9 +11,10 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{950F7176-3D29-4CBF-8C40-58B918EAEBB2}</ProjectGuid>
+ <ProjectGuid>{C303D2FC-FF97-49B8-9DDD-467B4C9A0B16}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
- <RootNamespace>src_SigProc_FIX</RootNamespace>
+ <RootNamespace>src_common</RootNamespace>
+ <ProjectName>silk_common</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -37,20 +38,28 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
- <PropertyGroup />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <TargetName>$(ProjectName)</TargetName>
+ </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../interface;..\..\celt\libcelt</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>fixed;float;../win32;../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -60,8 +69,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../interface;..\..\celt\libcelt</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>fixed;float;../win32;../libcelt</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -69,23 +78,14 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
+ <Lib>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
- <ClInclude Include="..\interface\SKP_debug.h" />
- <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_ana_filt_bank_1.c" />
<ClCompile Include="SKP_Silk_apply_sine_window.c" />
@@ -95,24 +95,57 @@
<ClCompile Include="SKP_Silk_burg_modified.c" />
<ClCompile Include="SKP_Silk_bwexpander.c" />
<ClCompile Include="SKP_Silk_bwexpander_32.c" />
+ <ClCompile Include="SKP_Silk_check_control_input.c" />
+ <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_control_codec.c" />
+ <ClCompile Include="SKP_Silk_control_SNR.c" />
+ <ClCompile Include="SKP_Silk_create_init_destroy.c" />
<ClCompile Include="SKP_Silk_debug.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_pitch.c" />
+ <ClCompile Include="SKP_Silk_decode_pulses.c" />
+ <ClCompile Include="SKP_Silk_dec_API.c" />
+ <ClCompile Include="SKP_Silk_encode_indices.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_HP_variable_cutoff.c" />
+ <ClCompile Include="SKP_Silk_init_encoder.c" />
<ClCompile Include="SKP_Silk_inner_prod_aligned.c" />
+ <ClCompile Include="SKP_Silk_interpolate.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_LPC_analysis_filter.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_LP_variable_cutoff.c" />
<ClCompile Include="SKP_Silk_LSF_cos_table.c" />
- <ClCompile Include="SKP_Silk_LPC_analysis_filter.c" />
<ClCompile Include="SKP_Silk_NLSF2A.c" />
+ <ClCompile Include="SKP_Silk_NLSF2A_stable.c" />
+ <ClCompile Include="SKP_Silk_NLSF_decode.c" />
+ <ClCompile Include="SKP_Silk_NLSF_del_dec_quant.c" />
+ <ClCompile Include="SKP_Silk_NLSF_encode.c" />
<ClCompile Include="SKP_Silk_NLSF_stabilize.c" />
+ <ClCompile Include="SKP_Silk_NLSF_unpack.c" />
+ <ClCompile Include="SKP_Silk_NLSF_VQ.c" />
<ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia.c" />
+ <ClCompile Include="SKP_Silk_NSQ.c" />
+ <ClCompile Include="SKP_Silk_NSQ_del_dec.c" />
<ClCompile Include="SKP_Silk_pitch_analysis_core.c" />
<ClCompile Include="SKP_Silk_pitch_est_tables.c" />
+ <ClCompile Include="SKP_Silk_PLC.c" />
+ <ClCompile Include="SKP_Silk_process_NLSFs.c" />
+ <ClCompile Include="SKP_Silk_quant_LTP_gains.c" />
<ClCompile Include="SKP_Silk_resampler.c" />
<ClCompile Include="SKP_Silk_resampler_down2.c" />
<ClCompile Include="SKP_Silk_resampler_down2_3.c" />
@@ -131,9 +164,47 @@
<ClCompile Include="SKP_Silk_scale_vector.c" />
<ClCompile Include="SKP_Silk_schur.c" />
<ClCompile Include="SKP_Silk_schur64.c" />
+ <ClCompile Include="SKP_Silk_shell_coder.c" />
<ClCompile Include="SKP_Silk_sigm_Q15.c" />
<ClCompile Include="SKP_Silk_sort.c" />
+ <ClCompile Include="SKP_Silk_stereo_decode_pred.c" />
+ <ClCompile Include="SKP_Silk_stereo_encode_pred.c" />
+ <ClCompile Include="SKP_Silk_stereo_find_predictor.c" />
+ <ClCompile Include="SKP_Silk_stereo_LR_to_MS.c" />
+ <ClCompile Include="SKP_Silk_stereo_MS_to_LR.c" />
<ClCompile Include="SKP_Silk_sum_sqr_shift.c" />
+ <ClCompile Include="SKP_Silk_tables_gain.c" />
+ <ClCompile Include="SKP_Silk_tables_LTP.c" />
+ <ClCompile Include="SKP_Silk_tables_NLSF_CB_NB_MB.c" />
+ <ClCompile Include="SKP_Silk_tables_NLSF_CB_WB.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_VAD.c" />
+ <ClCompile Include="SKP_Silk_VQ_WMat_EC.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\win32\config.h" />
+ <ClInclude Include="float\SKP_Silk_main_FLP.h" />
+ <ClInclude Include="SKP_Silk_control.h" />
+ <ClInclude Include="SKP_Silk_define.h" />
+ <ClInclude Include="SKP_Silk_errors.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_main.h" />
+ <ClInclude Include="SKP_Silk_pitch_est_defines.h" />
+ <ClInclude Include="SKP_Silk_PLC.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_SDK_API.h" />
+ <ClInclude Include="SKP_Silk_SigProc_FIX.h" />
+ <ClInclude Include="SKP_Silk_structs.h" />
+ <ClInclude Include="SKP_Silk_tables.h" />
+ <ClInclude Include="SKP_Silk_tuning_parameters.h" />
+ <ClInclude Include="SKP_Silk_typedef.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/silk/src_SigProc_FIX.vcxproj.filters b/silk/silk_common.vcxproj.filters
index 13a4e13e..561e1c0d 100644
--- a/silk/src_SigProc_FIX.vcxproj.filters
+++ b/silk/silk_common.vcxproj.filters
@@ -18,38 +18,6 @@
<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>
- <ClInclude Include="..\interface\SKP_debug.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
<ClCompile Include="SKP_Silk_A2NLSF.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -77,12 +45,78 @@
<ClCompile Include="SKP_Silk_bwexpander_32.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_check_control_input.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <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_control_audio_bandwidth.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_control_codec.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_control_SNR.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_create_init_destroy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_debug.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_dec_API.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_pitch.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_enc_API.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_encode_indices.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_HP_variable_cutoff.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_init_encoder.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="SKP_Silk_inner_prod_aligned.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_interpolate.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="SKP_Silk_k2a.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -95,6 +129,12 @@
<ClCompile Include="SKP_Silk_log2lin.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_LP_variable_cutoff.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_LPC_analysis_filter.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="SKP_Silk_LPC_inv_pred_gain.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -110,21 +150,54 @@
<ClCompile Include="SKP_Silk_LSF_cos_table.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_NLSF_decode.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_NLSF_del_dec_quant.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_NLSF_encode.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="SKP_Silk_NLSF_stabilize.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_NLSF_unpack.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_NLSF_VQ.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_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_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_PLC.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_process_NLSFs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_quant_LTP_gains.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="SKP_Silk_resampler.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -179,20 +252,124 @@
<ClCompile Include="SKP_Silk_schur64.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="SKP_Silk_shell_coder.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_stereo_decode_pred.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_stereo_encode_pred.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_stereo_find_predictor.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_stereo_LR_to_MS.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_stereo_MS_to_LR.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">
+ <ClCompile Include="SKP_Silk_tables_gain.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="SKP_Silk_LPC_analysis_filter.c">
+ <ClCompile Include="SKP_Silk_tables_LTP.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_tables_NLSF_CB_NB_MB.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_tables_NLSF_CB_WB.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_VAD.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SKP_Silk_VQ_WMat_EC.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="SKP_Silk_typedef.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_control.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_define.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_errors.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <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_main.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_pitch_est_defines.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_PLC.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_SDK_API.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SKP_Silk_SigProc_FIX.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="..\win32\config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="float\SKP_Silk_main_FLP.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/silk/src_SigProc_FLP.vcxproj b/silk/src_SigProc_FLP.vcxproj
deleted file mode 100644
index c5662435..00000000
--- a/silk/src_SigProc_FLP.vcxproj
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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>..\..\celt\libcelt;../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>..\..\celt\libcelt;../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_autocorrelation_FLP.c" />
- <ClCompile Include="SKP_Silk_burg_modified_FLP.c" />
- <ClCompile Include="SKP_Silk_bwexpander_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_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
diff --git a/silk/src_SigProc_FLP.vcxproj.filters b/silk/src_SigProc_FLP.vcxproj.filters
deleted file mode 100644
index 717b1c24..00000000
--- a/silk/src_SigProc_FLP.vcxproj.filters
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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_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_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_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
diff --git a/silk/src_common.vcxproj b/silk/src_common.vcxproj
deleted file mode 100644
index 3aa7e82f..00000000
--- a/silk/src_common.vcxproj
+++ /dev/null
@@ -1,136 +0,0 @@
-<?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;../../celt/msvc</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;../../celt/msvc</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="..\interface\SKP_Silk_control.h" />
- <ClInclude Include="..\interface\SKP_Silk_errors.h" />
- <ClInclude Include="SKP_Silk_define.h" />
- <ClInclude Include="SKP_Silk_main.h" />
- <ClInclude Include="SKP_Silk_PLC.h" />
- <ClInclude Include="SKP_Silk_structs.h" />
- <ClInclude Include="SKP_Silk_tables.h" />
- <ClInclude Include="SKP_Silk_tuning_parameters.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="SKP_Silk_check_control_input.c" />
- <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_control_codec.c" />
- <ClCompile Include="SKP_Silk_control_SNR.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_encode_indices.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_HP_variable_cutoff.c" />
- <ClCompile Include="SKP_Silk_init_encoder.c" />
- <ClCompile Include="SKP_Silk_interpolate.c" />
- <ClCompile Include="SKP_Silk_LP_variable_cutoff.c" />
- <ClCompile Include="SKP_Silk_NLSF2A_stable.c" />
- <ClCompile Include="SKP_Silk_NLSF_decode.c" />
- <ClCompile Include="SKP_Silk_NLSF_del_dec_quant.c" />
- <ClCompile Include="SKP_Silk_NLSF_encode.c" />
- <ClCompile Include="SKP_Silk_NLSF_unpack.c" />
- <ClCompile Include="SKP_Silk_NLSF_VQ.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_process_NLSFs.c" />
- <ClCompile Include="SKP_Silk_quant_LTP_gains.c" />
- <ClCompile Include="SKP_Silk_shell_coder.c" />
- <ClCompile Include="SKP_Silk_stereo_LR_to_MS.c" />
- <ClCompile Include="SKP_Silk_stereo_MS_to_LR.c" />
- <ClCompile Include="SKP_Silk_tables_gain.c" />
- <ClCompile Include="SKP_Silk_tables_LTP.c" />
- <ClCompile Include="SKP_Silk_tables_NLSF_CB_NB_MB.c" />
- <ClCompile Include="SKP_Silk_tables_NLSF_CB_WB.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_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
diff --git a/silk/src_common.vcxproj.filters b/silk/src_common.vcxproj.filters
deleted file mode 100644
index 20d6c176..00000000
--- a/silk/src_common.vcxproj.filters
+++ /dev/null
@@ -1,183 +0,0 @@
-<?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="..\interface\SKP_Silk_control.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\interface\SKP_Silk_errors.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_enc_API.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_LP_variable_cutoff.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_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_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_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>
- <ClCompile Include="SKP_Silk_encode_indices.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_process_NLSFs.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_HP_variable_cutoff.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_NLSF_encode.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_NLSF_decode.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_tables_NLSF_CB_WB.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_NLSF_unpack.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_tables_NLSF_CB_NB_MB.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_NLSF_VQ.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_NLSF_del_dec_quant.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_control_SNR.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_control_codec.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_check_control_input.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_init_encoder.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_stereo_LR_to_MS.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="SKP_Silk_stereo_MS_to_LR.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file